diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast')
7 files changed, 707 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/bower.json b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/bower.json new file mode 100644 index 00000000..b1509ed3 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/bower.json @@ -0,0 +1,8 @@ +{ + "name": "angular-material-toast", + "version": "1.1.2-master-a9ba340", + "dependencies": { + "angular-material-core": "1.1.2-master-a9ba340", + "angular-material-button": "1.1.2-master-a9ba340" + } +}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.css new file mode 100644 index 00000000..981dcf30 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.css @@ -0,0 +1,17 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +md-toast.md-THEME_NAME-theme .md-toast-content { + background-color: #323232; + color: '{{background-50}}'; } + md-toast.md-THEME_NAME-theme .md-toast-content .md-button { + color: '{{background-50}}'; } + md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight { + color: '{{accent-color}}'; } + md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary { + color: '{{primary-color}}'; } + md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn { + color: '{{warn-color}}'; } diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.min.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.min.css new file mode 100644 index 00000000..222474db --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast-default-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */md-toast.md-THEME_NAME-theme .md-toast-content{background-color:#323232;color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button{color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight{color:"{{accent-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary{color:"{{primary-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn{color:"{{warn-color}}"}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.css new file mode 100644 index 00000000..0e39ad4c --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.css @@ -0,0 +1,173 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +.md-toast-text { + padding: 0 6px; } + +md-toast { + position: absolute; + z-index: 105; + box-sizing: border-box; + cursor: default; + overflow: hidden; + padding: 8px; + opacity: 1; + -webkit-transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + /* Transition differently when swiping */ + /* + * When the toast doesn't take up the whole screen, + * make it rotate when the user swipes it away + */ } + md-toast .md-toast-content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + direction: row; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + max-height: 168px; + max-width: 100%; + min-height: 48px; + padding: 0 18px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + border-radius: 2px; + font-size: 14px; + overflow: hidden; + -webkit-transform: translate3d(0, 0, 0) rotateZ(0deg); + transform: translate3d(0, 0, 0) rotateZ(0deg); + -webkit-transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; } + md-toast .md-toast-content::before { + content: ''; + min-height: 48px; + visibility: hidden; + display: inline-block; } + [dir=rtl] md-toast .md-toast-content { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; } + md-toast .md-toast-content span { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0%; + flex: 1 1 0%; + box-sizing: border-box; + min-width: 0; } + md-toast.md-capsule { + border-radius: 24px; } + md-toast.md-capsule .md-toast-content { + border-radius: 24px; } + md-toast.ng-leave-active .md-toast-content { + -webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); } + md-toast.md-swipeleft .md-toast-content, md-toast.md-swiperight .md-toast-content, md-toast.md-swipeup .md-toast-content, md-toast.md-swipedown .md-toast-content { + -webkit-transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } + md-toast.ng-enter { + opacity: 0; } + md-toast.ng-enter .md-toast-content { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } + md-toast.ng-enter.md-top .md-toast-content { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } + md-toast.ng-enter.ng-enter-active { + opacity: 1; } + md-toast.ng-enter.ng-enter-active .md-toast-content { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + md-toast.ng-leave.ng-leave-active .md-toast-content { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } + md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content { + -webkit-transform: translate3d(0, -50%, 0); + transform: translate3d(0, -50%, 0); } + md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content { + -webkit-transform: translate3d(0, 50%, 0); + transform: translate3d(0, 50%, 0); } + md-toast.ng-leave.ng-leave-active.md-top .md-toast-content { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } + md-toast .md-action { + line-height: 19px; + margin-left: 24px; + margin-right: 0; + cursor: pointer; + text-transform: uppercase; + float: right; } + md-toast .md-button { + min-width: 0; + margin-right: 0; + margin-left: 12px; } + [dir=rtl] md-toast .md-button { + margin-right: 12px; } + [dir=rtl] md-toast .md-button { + margin-left: 0; } + +@media (max-width: 959px) { + md-toast { + left: 0; + right: 0; + width: 100%; + max-width: 100%; + min-width: 0; + border-radius: 0; + bottom: 0; + padding: 0; } + md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content { + -webkit-transform: translate3d(0, -50%, 0); + transform: translate3d(0, -50%, 0); } + md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content { + -webkit-transform: translate3d(0, 50%, 0); + transform: translate3d(0, 50%, 0); } } + +@media (min-width: 960px) { + md-toast { + min-width: 304px; + /* + * When the toast doesn't take up the whole screen, + * make it rotate when the user swipes it away + */ } + md-toast.md-bottom { + bottom: 0; } + md-toast.md-left { + left: 0; } + md-toast.md-right { + right: 0; } + md-toast.md-top { + top: 0; } + md-toast._md-start { + left: 0; } + [dir=rtl] md-toast._md-start { + left: auto; + right: 0; } + md-toast._md-end { + right: 0; } + [dir=rtl] md-toast._md-end { + right: auto; + left: 0; } + md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content { + -webkit-transform: translate3d(-50%, 0, 0); + transform: translate3d(-50%, 0, 0); } + md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content { + -webkit-transform: translate3d(50%, 0, 0); + transform: translate3d(50%, 0, 0); } } + +@media (min-width: 1920px) { + md-toast .md-toast-content { + max-width: 568px; } } + +@media screen and (-ms-high-contrast: active) { + md-toast { + border: 1px solid #fff; } } + +.md-toast-animating { + overflow: hidden !important; } diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.js b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.js new file mode 100644 index 00000000..3de26d6e --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.js @@ -0,0 +1,490 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +(function( window, angular, undefined ){ +"use strict"; + +/** + * @ngdoc module + * @name material.components.toast + * @description + * Toast + */ +MdToastDirective['$inject'] = ["$mdToast"]; +MdToastProvider['$inject'] = ["$$interimElementProvider"]; +angular.module('material.components.toast', [ + 'material.core', + 'material.components.button' +]) + .directive('mdToast', MdToastDirective) + .provider('$mdToast', MdToastProvider); + +/* ngInject */ +function MdToastDirective($mdToast) { + return { + restrict: 'E', + link: function postLink(scope, element) { + element.addClass('_md'); // private md component indicator for styling + + // When navigation force destroys an interimElement, then + // listen and $destroy() that interim instance... + scope.$on('$destroy', function() { + $mdToast.destroy(); + }); + } + }; +} + +/** + * @ngdoc service + * @name $mdToast + * @module material.components.toast + * + * @description + * `$mdToast` is a service to build a toast notification on any position + * on the screen with an optional duration, and provides a simple promise API. + * + * The toast will be always positioned at the `bottom`, when the screen size is + * between `600px` and `959px` (`sm` breakpoint) + * + * ## Restrictions on custom toasts + * - The toast's template must have an outer `<md-toast>` element. + * - For a toast action, use element with class `md-action`. + * - Add the class `md-capsule` for curved corners. + * + * ### Custom Presets + * Developers are also able to create their own preset, which can be easily used without repeating + * their options each time. + * + * <hljs lang="js"> + * $mdToastProvider.addPreset('testPreset', { + * options: function() { + * return { + * template: + * '<md-toast>' + + * '<div class="md-toast-content">' + + * 'This is a custom preset' + + * '</div>' + + * '</md-toast>', + * controllerAs: 'toast', + * bindToController: true + * }; + * } + * }); + * </hljs> + * + * After you created your preset at config phase, you can easily access it. + * + * <hljs lang="js"> + * $mdToast.show( + * $mdToast.testPreset() + * ); + * </hljs> + * + * ## Parent container notes + * + * The toast is positioned using absolute positioning relative to its first non-static parent + * container. Thus, if the requested parent container uses static positioning, we will temporarily + * set its positioning to `relative` while the toast is visible and reset it when the toast is + * hidden. + * + * Because of this, it is usually best to ensure that the parent container has a fixed height and + * prevents scrolling by setting the `overflow: hidden;` style. Since the position is based off of + * the parent's height, the toast may be mispositioned if you allow the parent to scroll. + * + * You can, however, have a scrollable element inside of the container; just make sure the + * container itself does not scroll. + * + * <hljs lang="html"> + * <div layout-fill id="toast-container"> + * <md-content> + * I can have lots of content and scroll! + * </md-content> + * </div> + * </hljs> + * + * @usage + * <hljs lang="html"> + * <div ng-controller="MyController"> + * <md-button ng-click="openToast()"> + * Open a Toast! + * </md-button> + * </div> + * </hljs> + * + * <hljs lang="js"> + * var app = angular.module('app', ['ngMaterial']); + * app.controller('MyController', function($scope, $mdToast) { + * $scope.openToast = function($event) { + * $mdToast.show($mdToast.simple().textContent('Hello!')); + * // Could also do $mdToast.showSimple('Hello'); + * }; + * }); + * </hljs> + */ + +/** + * @ngdoc method + * @name $mdToast#showSimple + * + * @param {string} message The message to display inside the toast + * @description + * Convenience method which builds and shows a simple toast. + * + * @returns {promise} A promise that can be resolved with `$mdToast.hide()` or + * rejected with `$mdToast.cancel()`. + * + */ + + /** + * @ngdoc method + * @name $mdToast#simple + * + * @description + * Builds a preconfigured toast. + * + * @returns {obj} a `$mdToastPreset` with the following chainable configuration methods. + * + * _**Note:** These configuration methods are provided in addition to the methods provided by + * the `build()` and `show()` methods below._ + * + * <table class="md-api-table methods"> + * <thead> + * <tr> + * <th>Method</th> + * <th>Description</th> + * </tr> + * </thead> + * <tbody> + * <tr> + * <td>`.textContent(string)`</td> + * <td>Sets the toast content to the specified string</td> + * </tr> + * <tr> + * <td>`.action(string)`</td> + * <td> + * Adds an action button. <br/> + * If clicked, the promise (returned from `show()`) + * will resolve with the value `'ok'`; otherwise, it is resolved with `true` after a `hideDelay` + * timeout + * </td> + * </tr> + * <tr> + * <td>`.highlightAction(boolean)`</td> + * <td> + * Whether or not the action button will have an additional highlight class.<br/> + * By default the `accent` color will be applied to the action button. + * </td> + * </tr> + * <tr> + * <td>`.highlightClass(string)`</td> + * <td> + * If set, the given class will be applied to the highlighted action button.<br/> + * This allows you to specify the highlight color easily. Highlight classes are `md-primary`, `md-warn` + * and `md-accent` + * </td> + * </tr> + * <tr> + * <td>`.capsule(boolean)`</td> + * <td>Whether or not to add the `md-capsule` class to the toast to provide rounded corners</td> + * </tr> + * <tr> + * <td>`.theme(string)`</td> + * <td>Sets the theme on the toast to the requested theme. Default is `$mdThemingProvider`'s default.</td> + * </tr> + * <tr> + * <td>`.toastClass(string)`</td> + * <td>Sets a class on the toast element</td> + * </tr> + * </tbody> + * </table> + * + */ + +/** + * @ngdoc method + * @name $mdToast#updateTextContent + * + * @description + * Updates the content of an existing toast. Useful for updating things like counts, etc. + * + */ + + /** + * @ngdoc method + * @name $mdToast#build + * + * @description + * Creates a custom `$mdToastPreset` that you can configure. + * + * @returns {obj} a `$mdToastPreset` with the chainable configuration methods for shows' options (see below). + */ + + /** + * @ngdoc method + * @name $mdToast#show + * + * @description Shows the toast. + * + * @param {object} optionsOrPreset Either provide an `$mdToastPreset` returned from `simple()` + * and `build()`, or an options object with the following properties: + * + * - `templateUrl` - `{string=}`: The url of an html template file that will + * be used as the content of the toast. Restrictions: the template must + * have an outer `md-toast` element. + * - `template` - `{string=}`: Same as templateUrl, except this is an actual + * template string. + * - `autoWrap` - `{boolean=}`: Whether or not to automatically wrap the template content with a + * `<div class="md-toast-content">` if one is not provided. Defaults to true. Can be disabled if you provide a + * custom toast directive. + * - `scope` - `{object=}`: the scope to link the template / controller to. If none is specified, it will create a new child scope. + * This scope will be destroyed when the toast is removed unless `preserveScope` is set to true. + * - `preserveScope` - `{boolean=}`: whether to preserve the scope when the element is removed. Default is false + * - `hideDelay` - `{number=}`: How many milliseconds the toast should stay + * active before automatically closing. Set to 0 or false to have the toast stay open until + * closed manually. Default: 3000. + * - `position` - `{string=}`: Sets the position of the toast. <br/> + * Available: any combination of `'bottom'`, `'left'`, `'top'`, `'right'`, `'end'` and `'start'`. + * The properties `'end'` and `'start'` are dynamic and can be used for RTL support.<br/> + * Default combination: `'bottom left'`. + * - `toastClass` - `{string=}`: A class to set on the toast element. + * - `controller` - `{string=}`: The controller to associate with this toast. + * The controller will be injected the local `$mdToast.hide( )`, which is a function + * used to hide the toast. + * - `locals` - `{string=}`: An object containing key/value pairs. The keys will + * be used as names of values to inject into the controller. For example, + * `locals: {three: 3}` would inject `three` into the controller with the value + * of 3. + * - `bindToController` - `bool`: bind the locals to the controller, instead of passing them in. + * - `resolve` - `{object=}`: Similar to locals, except it takes promises as values + * and the toast will not open until the promises resolve. + * - `controllerAs` - `{string=}`: An alias to assign the controller to on the scope. + * - `parent` - `{element=}`: The element to append the toast to. Defaults to appending + * to the root element of the application. + * + * @returns {promise} A promise that can be resolved with `$mdToast.hide()` or + * rejected with `$mdToast.cancel()`. `$mdToast.hide()` will resolve either with a Boolean + * value == 'true' or the value passed as an argument to `$mdToast.hide()`. + * And `$mdToast.cancel()` will resolve the promise with a Boolean value == 'false' + */ + +/** + * @ngdoc method + * @name $mdToast#hide + * + * @description + * Hide an existing toast and resolve the promise returned from `$mdToast.show()`. + * + * @param {*=} response An argument for the resolved promise. + * + * @returns {promise} a promise that is called when the existing element is removed from the DOM. + * The promise is resolved with either a Boolean value == 'true' or the value passed as the + * argument to `.hide()`. + * + */ + +/** + * @ngdoc method + * @name $mdToast#cancel + * + * @description + * `DEPRECATED` - The promise returned from opening a toast is used only to notify about the closing of the toast. + * As such, there isn't any reason to also allow that promise to be rejected, + * since it's not clear what the difference between resolve and reject would be. + * + * Hide the existing toast and reject the promise returned from + * `$mdToast.show()`. + * + * @param {*=} response An argument for the rejected promise. + * + * @returns {promise} a promise that is called when the existing element is removed from the DOM + * The promise is resolved with a Boolean value == 'false'. + * + */ + +function MdToastProvider($$interimElementProvider) { + // Differentiate promise resolves: hide timeout (value == true) and hide action clicks (value == ok). + toastDefaultOptions['$inject'] = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"]; + var ACTION_RESOLVE = 'ok'; + + var activeToastContent; + var $mdToast = $$interimElementProvider('$mdToast') + .setDefaults({ + methods: ['position', 'hideDelay', 'capsule', 'parent', 'position', 'toastClass'], + options: toastDefaultOptions + }) + .addPreset('simple', { + argOption: 'textContent', + methods: ['textContent', 'content', 'action', 'highlightAction', 'highlightClass', 'theme', 'parent' ], + options: /* ngInject */ ["$mdToast", "$mdTheming", function($mdToast, $mdTheming) { + return { + template: + '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}">' + + ' <div class="md-toast-content">' + + ' <span class="md-toast-text" role="alert" aria-relevant="all" aria-atomic="true">' + + ' {{ toast.content }}' + + ' </span>' + + ' <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ' + + ' ng-class="highlightClasses">' + + ' {{ toast.action }}' + + ' </md-button>' + + ' </div>' + + '</md-toast>', + controller: /* ngInject */ ["$scope", function mdToastCtrl($scope) { + var self = this; + + if (self.highlightAction) { + $scope.highlightClasses = [ + 'md-highlight', + self.highlightClass + ] + } + + $scope.$watch(function() { return activeToastContent; }, function() { + self.content = activeToastContent; + }); + + this.resolve = function() { + $mdToast.hide( ACTION_RESOLVE ); + }; + }], + theme: $mdTheming.defaultTheme(), + controllerAs: 'toast', + bindToController: true + }; + }] + }) + .addMethod('updateTextContent', updateTextContent) + .addMethod('updateContent', updateTextContent); + + function updateTextContent(newContent) { + activeToastContent = newContent; + } + + return $mdToast; + + /* ngInject */ + function toastDefaultOptions($animate, $mdToast, $mdUtil, $mdMedia) { + var SWIPE_EVENTS = '$md.swipeleft $md.swiperight $md.swipeup $md.swipedown'; + return { + onShow: onShow, + onRemove: onRemove, + toastClass: '', + position: 'bottom left', + themable: true, + hideDelay: 3000, + autoWrap: true, + transformTemplate: function(template, options) { + var shouldAddWrapper = options.autoWrap && template && !/md-toast-content/g.test(template); + + if (shouldAddWrapper) { + // Root element of template will be <md-toast>. We need to wrap all of its content inside of + // of <div class="md-toast-content">. All templates provided here should be static, developer-controlled + // content (meaning we're not attempting to guard against XSS). + var templateRoot = document.createElement('md-template'); + templateRoot.innerHTML = template; + + // Iterate through all root children, to detect possible md-toast directives. + for (var i = 0; i < templateRoot.children.length; i++) { + if (templateRoot.children[i].nodeName === 'MD-TOAST') { + var wrapper = angular.element('<div class="md-toast-content">'); + + // Wrap the children of the `md-toast` directive in jqLite, to be able to append multiple + // nodes with the same execution. + wrapper.append(angular.element(templateRoot.children[i].childNodes)); + + // Append the new wrapped element to the `md-toast` directive. + templateRoot.children[i].appendChild(wrapper[0]); + } + } + + // We have to return the innerHTMl, because we do not want to have the `md-template` element to be + // the root element of our interimElement. + return templateRoot.innerHTML; + } + + return template || ''; + } + }; + + function onShow(scope, element, options) { + activeToastContent = options.textContent || options.content; // support deprecated #content method + + var isSmScreen = !$mdMedia('gt-sm'); + + element = $mdUtil.extractElementByName(element, 'md-toast', true); + options.element = element; + + options.onSwipe = function(ev, gesture) { + //Add the relevant swipe class to the element so it can animate correctly + var swipe = ev.type.replace('$md.',''); + var direction = swipe.replace('swipe', ''); + + // If the swipe direction is down/up but the toast came from top/bottom don't fade away + // Unless the screen is small, then the toast always on bottom + if ((direction === 'down' && options.position.indexOf('top') != -1 && !isSmScreen) || + (direction === 'up' && (options.position.indexOf('bottom') != -1 || isSmScreen))) { + return; + } + + if ((direction === 'left' || direction === 'right') && isSmScreen) { + return; + } + + element.addClass('md-' + swipe); + $mdUtil.nextTick($mdToast.cancel); + }; + options.openClass = toastOpenClass(options.position); + + element.addClass(options.toastClass); + + // 'top left' -> 'md-top md-left' + options.parent.addClass(options.openClass); + + // static is the default position + if ($mdUtil.hasComputedStyle(options.parent, 'position', 'static')) { + options.parent.css('position', 'relative'); + } + + element.on(SWIPE_EVENTS, options.onSwipe); + element.addClass(isSmScreen ? 'md-bottom' : options.position.split(' ').map(function(pos) { + return 'md-' + pos; + }).join(' ')); + + if (options.parent) options.parent.addClass('md-toast-animating'); + return $animate.enter(element, options.parent).then(function() { + if (options.parent) options.parent.removeClass('md-toast-animating'); + }); + } + + function onRemove(scope, element, options) { + element.off(SWIPE_EVENTS, options.onSwipe); + if (options.parent) options.parent.addClass('md-toast-animating'); + if (options.openClass) options.parent.removeClass(options.openClass); + + return ((options.$destroy == true) ? element.remove() : $animate.leave(element)) + .then(function () { + if (options.parent) options.parent.removeClass('md-toast-animating'); + if ($mdUtil.hasComputedStyle(options.parent, 'position', 'static')) { + options.parent.css('position', ''); + } + }); + } + + function toastOpenClass(position) { + // For mobile, always open full-width on bottom + if (!$mdMedia('gt-xs')) { + return 'md-toast-open-bottom'; + } + + return 'md-toast-open-' + + (position.indexOf('top') > -1 ? 'top' : 'bottom'); + } + } + +} + +})(window, window.angular);
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.css new file mode 100644 index 00000000..1732a777 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.css @@ -0,0 +1,6 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;padding:8px;opacity:1}md-toast,md-toast .md-toast-content{overflow:hidden;-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:-webkit-box;display:-webkit-flex;display:flex;direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;-webkit-transform:translate3d(0,0,0) rotateZ(0deg);transform:translate3d(0,0,0) rotateZ(0deg);-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}md-toast .md-toast-content:before{content:"";min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}md-toast .md-toast-content span{-webkit-box-flex:1;-webkit-flex:1 1 0%;flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule,md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px;margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.js b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.js new file mode 100644 index 00000000..459442fb --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/toast/toast.min.js @@ -0,0 +1,7 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */ +!function(t,e,n){"use strict";function o(t){return{restrict:"E",link:function(e,n){n.addClass("_md"),e.$on("$destroy",function(){t.destroy()})}}}function a(t){function n(t){a=t}function o(t,n,o,s){function i(e,i,r){a=r.textContent||r.content;var m=!s("gt-sm");return i=o.extractElementByName(i,"md-toast",!0),r.element=i,r.onSwipe=function(t,e){var a=t.type.replace("$md.",""),s=a.replace("swipe","");"down"===s&&r.position.indexOf("top")!=-1&&!m||"up"===s&&(r.position.indexOf("bottom")!=-1||m)||("left"!==s&&"right"!==s||!m)&&(i.addClass("md-"+a),o.nextTick(n.cancel))},r.openClass=d(r.position),i.addClass(r.toastClass),r.parent.addClass(r.openClass),o.hasComputedStyle(r.parent,"position","static")&&r.parent.css("position","relative"),i.on(l,r.onSwipe),i.addClass(m?"md-bottom":r.position.split(" ").map(function(t){return"md-"+t}).join(" ")),r.parent&&r.parent.addClass("md-toast-animating"),t.enter(i,r.parent).then(function(){r.parent&&r.parent.removeClass("md-toast-animating")})}function r(e,n,a){return n.off(l,a.onSwipe),a.parent&&a.parent.addClass("md-toast-animating"),a.openClass&&a.parent.removeClass(a.openClass),(1==a.$destroy?n.remove():t.leave(n)).then(function(){a.parent&&a.parent.removeClass("md-toast-animating"),o.hasComputedStyle(a.parent,"position","static")&&a.parent.css("position","")})}function d(t){return s("gt-xs")?"md-toast-open-"+(t.indexOf("top")>-1?"top":"bottom"):"md-toast-open-bottom"}var l="$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";return{onShow:i,onRemove:r,toastClass:"",position:"bottom left",themable:!0,hideDelay:3e3,autoWrap:!0,transformTemplate:function(t,n){var o=n.autoWrap&&t&&!/md-toast-content/g.test(t);if(o){var a=document.createElement("md-template");a.innerHTML=t;for(var s=0;s<a.children.length;s++)if("MD-TOAST"===a.children[s].nodeName){var i=e.element('<div class="md-toast-content">');i.append(e.element(a.children[s].childNodes)),a.children[s].appendChild(i[0])}return a.innerHTML}return t||""}}}o.$inject=["$animate","$mdToast","$mdUtil","$mdMedia"];var a,s="ok",i=t("$mdToast").setDefaults({methods:["position","hideDelay","capsule","parent","position","toastClass"],options:o}).addPreset("simple",{argOption:"textContent",methods:["textContent","content","action","highlightAction","highlightClass","theme","parent"],options:["$mdToast","$mdTheming",function(t,e){return{template:'<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}"> <div class="md-toast-content"> <span class="md-toast-text" role="alert" aria-relevant="all" aria-atomic="true"> {{ toast.content }} </span> <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="highlightClasses"> {{ toast.action }} </md-button> </div></md-toast>',controller:["$scope",function(e){var n=this;n.highlightAction&&(e.highlightClasses=["md-highlight",n.highlightClass]),e.$watch(function(){return a},function(){n.content=a}),this.resolve=function(){t.hide(s)}}],theme:e.defaultTheme(),controllerAs:"toast",bindToController:!0}}]}).addMethod("updateTextContent",n).addMethod("updateContent",n);return i}o.$inject=["$mdToast"],a.$inject=["$$interimElementProvider"],e.module("material.components.toast",["material.core","material.components.button"]).directive("mdToast",o).provider("$mdToast",a)}(window,window.angular);
\ No newline at end of file |