diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav')
7 files changed, 705 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/bower.json b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/bower.json new file mode 100644 index 00000000..98a857d5 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/bower.json @@ -0,0 +1,8 @@ +{ + "name": "angular-material-sidenav", + "version": "1.1.2-master-a9ba340", + "dependencies": { + "angular-material-core": "1.1.2-master-a9ba340", + "angular-material-backdrop": "1.1.2-master-a9ba340" + } +}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.css new file mode 100644 index 00000000..bd1ba4d4 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.css @@ -0,0 +1,8 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +md-sidenav.md-THEME_NAME-theme, md-sidenav.md-THEME_NAME-theme md-content { + background-color: '{{background-hue-1}}'; } diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.min.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.min.css new file mode 100644 index 00000000..a70a77c1 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav-default-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.css new file mode 100644 index 00000000..9f44fd03 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.css @@ -0,0 +1,110 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +md-sidenav { + box-sizing: border-box; + position: absolute; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + z-index: 60; + width: 320px; + max-width: 320px; + bottom: 0; + overflow: auto; + -webkit-overflow-scrolling: touch; } + md-sidenav ul { + list-style: none; } + md-sidenav.md-closed { + display: none; } + md-sidenav.md-closed-add, md-sidenav.md-closed-remove { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transition: 0.2s ease-in all; + transition: 0.2s ease-in all; } + md-sidenav.md-closed-add.md-closed-add-active, md-sidenav.md-closed-remove.md-closed-remove-active { + -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-sidenav.md-locked-open-add, md-sidenav.md-locked-open-remove { + position: static; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + md-sidenav.md-locked-open, md-sidenav.md-locked-open.md-closed, md-sidenav.md-locked-open.md-closed.md-sidenav-left, md-sidenav.md-locked-open.md-closed, md-sidenav.md-locked-open.md-closed.md-sidenav-right { + position: static; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + md-sidenav.md-locked-open-remove.md-closed { + position: static; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + md-sidenav.md-closed.md-locked-open-add { + position: static; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active) { + -webkit-transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + width: 0 !important; + min-width: 0 !important; } + md-sidenav.md-closed.md-locked-open-add-active { + -webkit-transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); } + md-sidenav.md-locked-open-remove-active { + -webkit-transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); + width: 0 !important; + min-width: 0 !important; } + +.md-sidenav-backdrop.md-locked-open { + display: none; } + +.md-sidenav-left, md-sidenav { + left: 0; + top: 0; + -webkit-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + .md-sidenav-left.md-closed, md-sidenav.md-closed { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } + +.md-sidenav-right { + left: 100%; + top: 0; + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0); } + .md-sidenav-right.md-closed { + -webkit-transform: translate(0%, 0); + transform: translate(0%, 0); } + +@media (min-width: 600px) { + md-sidenav { + max-width: 400px; } } + +@media (max-width: 456px) { + md-sidenav { + width: calc(100% - 56px); + min-width: calc(100% - 56px); + max-width: calc(100% - 56px); } } + +@media screen and (-ms-high-contrast: active) { + .md-sidenav-left, md-sidenav { + border-right: 1px solid #fff; } + .md-sidenav-right { + border-left: 1px solid #fff; } } diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.js b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.js new file mode 100644 index 00000000..5ac429a7 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.js @@ -0,0 +1,560 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.3 + */ +(function( window, angular, undefined ){ +"use strict"; + +/** + * @ngdoc module + * @name material.components.sidenav + * + * @description + * A Sidenav QP component. + */ +SidenavService['$inject'] = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"]; +SidenavDirective['$inject'] = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"]; +SidenavController['$inject'] = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"]; +angular + .module('material.components.sidenav', [ + 'material.core', + 'material.components.backdrop' + ]) + .factory('$mdSidenav', SidenavService ) + .directive('mdSidenav', SidenavDirective) + .directive('mdSidenavFocus', SidenavFocusDirective) + .controller('$mdSidenavController', SidenavController); + + +/** + * @ngdoc service + * @name $mdSidenav + * @module material.components.sidenav + * + * @description + * `$mdSidenav` makes it easy to interact with multiple sidenavs + * in an app. When looking up a sidenav instance, you can either look + * it up synchronously or wait for it to be initializied asynchronously. + * This is done by passing the second argument to `$mdSidenav`. + * + * @usage + * <hljs lang="js"> + * // Async lookup for sidenav instance; will resolve when the instance is available + * $mdSidenav(componentId, true).then(function(instance) { + * $log.debug( componentId + "is now ready" ); + * }); + * // Sync lookup for sidenav instance; this will resolve immediately. + * $mdSidenav(componentId).then(function(instance) { + * $log.debug( componentId + "is now ready" ); + * }); + * // Async toggle the given sidenav; + * // when instance is known ready and lazy lookup is not needed. + * $mdSidenav(componentId) + * .toggle() + * .then(function(){ + * $log.debug('toggled'); + * }); + * // Async open the given sidenav + * $mdSidenav(componentId) + * .open() + * .then(function(){ + * $log.debug('opened'); + * }); + * // Async close the given sidenav + * $mdSidenav(componentId) + * .close() + * .then(function(){ + * $log.debug('closed'); + * }); + * // Sync check to see if the specified sidenav is set to be open + * $mdSidenav(componentId).isOpen(); + * // Sync check to whether given sidenav is locked open + * // If this is true, the sidenav will be open regardless of close() + * $mdSidenav(componentId).isLockedOpen(); + * // On close callback to handle close, backdrop click or escape key pressed + * // Callback happens BEFORE the close action occurs. + * $mdSidenav(componentId).onClose(function () { + * $log.debug('closing'); + * }); + * </hljs> + */ +function SidenavService($mdComponentRegistry, $mdUtil, $q, $log) { + var errorMsg = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?"; + var service = { + find : findInstance, // sync - returns proxy API + waitFor : waitForInstance // async - returns promise + }; + + /** + * Service API that supports three (3) usages: + * $mdSidenav().find("left") // sync (must already exist) or returns undefined + * $mdSidenav("left").toggle(); // sync (must already exist) or returns reject promise; + * $mdSidenav("left",true).then( function(left){ // async returns instance when available + * left.toggle(); + * }); + */ + return function(handle, enableWait) { + if ( angular.isUndefined(handle) ) return service; + + var shouldWait = enableWait === true; + var instance = service.find(handle, shouldWait); + return !instance && shouldWait ? service.waitFor(handle) : + !instance && angular.isUndefined(enableWait) ? addLegacyAPI(service, handle) : instance; + }; + + /** + * For failed instance/handle lookups, older-clients expect an response object with noops + * that include `rejected promise APIs` + */ + function addLegacyAPI(service, handle) { + var falseFn = function() { return false; }; + var rejectFn = function() { + return $q.when($mdUtil.supplant(errorMsg, [handle || ""])); + }; + + return angular.extend({ + isLockedOpen : falseFn, + isOpen : falseFn, + toggle : rejectFn, + open : rejectFn, + close : rejectFn, + onClose : angular.noop, + then : function(callback) { + return waitForInstance(handle) + .then(callback || angular.noop); + } + }, service); + } + /** + * Synchronously lookup the controller instance for the specified sidNav instance which has been + * registered with the markup `md-component-id` + */ + function findInstance(handle, shouldWait) { + var instance = $mdComponentRegistry.get(handle); + + if (!instance && !shouldWait) { + + // Report missing instance + $log.error( $mdUtil.supplant(errorMsg, [handle || ""]) ); + + // The component has not registered itself... most like NOT yet created + // return null to indicate that the Sidenav is not in the DOM + return undefined; + } + return instance; + } + + /** + * Asynchronously wait for the component instantiation, + * Deferred lookup of component instance using $component registry + */ + function waitForInstance(handle) { + return $mdComponentRegistry.when(handle).catch($log.error); + } +} +/** + * @ngdoc directive + * @name mdSidenavFocus + * @module material.components.sidenav + * + * @restrict A + * + * @description + * `mdSidenavFocus` provides a way to specify the focused element when a sidenav opens. + * This is completely optional, as the sidenav itself is focused by default. + * + * @usage + * <hljs lang="html"> + * <md-sidenav> + * <form> + * <md-input-container> + * <label for="testInput">Label</label> + * <input id="testInput" type="text" md-sidenav-focus> + * </md-input-container> + * </form> + * </md-sidenav> + * </hljs> + **/ +function SidenavFocusDirective() { + return { + restrict: 'A', + require: '^mdSidenav', + link: function(scope, element, attr, sidenavCtrl) { + // @see $mdUtil.findFocusTarget(...) + } + }; +} +/** + * @ngdoc directive + * @name mdSidenav + * @module material.components.sidenav + * @restrict E + * + * @description + * + * A Sidenav component that can be opened and closed programatically. + * + * By default, upon opening it will slide out on top of the main content area. + * + * For keyboard and screen reader accessibility, focus is sent to the sidenav wrapper by default. + * It can be overridden with the `md-autofocus` directive on the child element you want focused. + * + * @usage + * <hljs lang="html"> + * <div layout="row" ng-controller="MyController"> + * <md-sidenav md-component-id="left" class="md-sidenav-left"> + * Left Nav! + * </md-sidenav> + * + * <md-content> + * Center Content + * <md-button ng-click="openLeftMenu()"> + * Open Left Menu + * </md-button> + * </md-content> + * + * <md-sidenav md-component-id="right" + * md-is-locked-open="$mdMedia('min-width: 333px')" + * class="md-sidenav-right"> + * <form> + * <md-input-container> + * <label for="testInput">Test input</label> + * <input id="testInput" type="text" + * ng-model="data" md-autofocus> + * </md-input-container> + * </form> + * </md-sidenav> + * </div> + * </hljs> + * + * <hljs lang="js"> + * var app = angular.module('myApp', ['ngMaterial']); + * app.controller('MyController', function($scope, $mdSidenav) { + * $scope.openLeftMenu = function() { + * $mdSidenav('left').toggle(); + * }; + * }); + * </hljs> + * + * @param {expression=} md-is-open A model bound to whether the sidenav is opened. + * @param {boolean=} md-disable-backdrop When present in the markup, the sidenav will not show a backdrop. + * @param {string=} md-component-id componentId to use with $mdSidenav service. + * @param {expression=} md-is-locked-open When this expression evaluates to true, + * the sidenav 'locks open': it falls into the content's flow instead + * of appearing over it. This overrides the `md-is-open` attribute. + * @param {string=} md-disable-scroll-target Selector, pointing to an element, whose scrolling will + * be disabled when the sidenav is opened. By default this is the sidenav's direct parent. + * +* The $mdMedia() service is exposed to the is-locked-open attribute, which + * can be given a media query or one of the `sm`, `gt-sm`, `md`, `gt-md`, `lg` or `gt-lg` presets. + * Examples: + * + * - `<md-sidenav md-is-locked-open="shouldLockOpen"></md-sidenav>` + * - `<md-sidenav md-is-locked-open="$mdMedia('min-width: 1000px')"></md-sidenav>` + * - `<md-sidenav md-is-locked-open="$mdMedia('sm')"></md-sidenav>` (locks open on small screens) + */ +function SidenavDirective($mdMedia, $mdUtil, $mdConstant, $mdTheming, $mdInteraction, $animate, + $compile, $parse, $log, $q, $document, $window, $$rAF) { + return { + restrict: 'E', + scope: { + isOpen: '=?mdIsOpen' + }, + controller: '$mdSidenavController', + compile: function(element) { + element.addClass('md-closed').attr('tabIndex', '-1'); + return postLink; + } + }; + + /** + * Directive Post Link function... + */ + function postLink(scope, element, attr, sidenavCtrl) { + var lastParentOverFlow; + var backdrop; + var disableScrollTarget = null; + var triggeringInteractionType; + var triggeringElement = null; + var previousContainerStyles; + var promise = $q.when(true); + var isLockedOpenParsed = $parse(attr.mdIsLockedOpen); + var ngWindow = angular.element($window); + var isLocked = function() { + return isLockedOpenParsed(scope.$parent, { + $media: function(arg) { + $log.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."); + return $mdMedia(arg); + }, + $mdMedia: $mdMedia + }); + }; + + if (attr.mdDisableScrollTarget) { + disableScrollTarget = $document[0].querySelector(attr.mdDisableScrollTarget); + + if (disableScrollTarget) { + disableScrollTarget = angular.element(disableScrollTarget); + } else { + $log.warn($mdUtil.supplant('mdSidenav: couldn\'t find element matching ' + + 'selector "{selector}". Falling back to parent.', { selector: attr.mdDisableScrollTarget })); + } + } + + if (!disableScrollTarget) { + disableScrollTarget = element.parent(); + } + + // Only create the backdrop if the backdrop isn't disabled. + if (!attr.hasOwnProperty('mdDisableBackdrop')) { + backdrop = $mdUtil.createBackdrop(scope, "md-sidenav-backdrop md-opaque ng-enter"); + } + + element.addClass('_md'); // private md component indicator for styling + $mdTheming(element); + + // The backdrop should inherit the sidenavs theme, + // because the backdrop will take its parent theme by default. + if ( backdrop ) $mdTheming.inherit(backdrop, element); + + element.on('$destroy', function() { + backdrop && backdrop.remove(); + sidenavCtrl.destroy(); + }); + + scope.$on('$destroy', function(){ + backdrop && backdrop.remove(); + }); + + scope.$watch(isLocked, updateIsLocked); + scope.$watch('isOpen', updateIsOpen); + + + // Publish special accessor for the Controller instance + sidenavCtrl.$toggleOpen = toggleOpen; + + /** + * Toggle the DOM classes to indicate `locked` + * @param isLocked + */ + function updateIsLocked(isLocked, oldValue) { + scope.isLockedOpen = isLocked; + if (isLocked === oldValue) { + element.toggleClass('md-locked-open', !!isLocked); + } else { + $animate[isLocked ? 'addClass' : 'removeClass'](element, 'md-locked-open'); + } + if (backdrop) { + backdrop.toggleClass('md-locked-open', !!isLocked); + } + } + + /** + * Toggle the SideNav view and attach/detach listeners + * @param isOpen + */ + function updateIsOpen(isOpen) { + // Support deprecated md-sidenav-focus attribute as fallback + var focusEl = $mdUtil.findFocusTarget(element) || $mdUtil.findFocusTarget(element,'[md-sidenav-focus]') || element; + var parent = element.parent(); + + parent[isOpen ? 'on' : 'off']('keydown', onKeyDown); + if (backdrop) backdrop[isOpen ? 'on' : 'off']('click', close); + + var restorePositioning = updateContainerPositions(parent, isOpen); + + if ( isOpen ) { + // Capture upon opening.. + triggeringElement = $document[0].activeElement; + triggeringInteractionType = $mdInteraction.getLastInteractionType(); + } + + disableParentScroll(isOpen); + + return promise = $q.all([ + isOpen && backdrop ? $animate.enter(backdrop, parent) : backdrop ? + $animate.leave(backdrop) : $q.when(true), + $animate[isOpen ? 'removeClass' : 'addClass'](element, 'md-closed') + ]).then(function() { + // Perform focus when animations are ALL done... + if (scope.isOpen) { + $$rAF(function() { + // Notifies child components that the sidenav was opened. Should wait + // a frame in order to allow for the element height to be computed. + ngWindow.triggerHandler('resize'); + }); + + focusEl && focusEl.focus(); + } + + // Restores the positioning on the sidenav and backdrop. + restorePositioning && restorePositioning(); + }); + } + + function updateContainerPositions(parent, willOpen) { + var drawerEl = element[0]; + var scrollTop = parent[0].scrollTop; + + if (willOpen && scrollTop) { + previousContainerStyles = { + top: drawerEl.style.top, + bottom: drawerEl.style.bottom, + height: drawerEl.style.height + }; + + // When the parent is scrolled down, then we want to be able to show the sidenav at the current scroll + // position. We're moving the sidenav down to the correct scroll position and apply the height of the + // parent, to increase the performance. Using 100% as height, will impact the performance heavily. + var positionStyle = { + top: scrollTop + 'px', + bottom: 'auto', + height: parent[0].clientHeight + 'px' + }; + + // Apply the new position styles to the sidenav and backdrop. + element.css(positionStyle); + backdrop.css(positionStyle); + } + + // When the sidenav is closing and we have previous defined container styles, + // then we return a restore function, which resets the sidenav and backdrop. + if (!willOpen && previousContainerStyles) { + return function() { + drawerEl.style.top = previousContainerStyles.top; + drawerEl.style.bottom = previousContainerStyles.bottom; + drawerEl.style.height = previousContainerStyles.height; + + backdrop[0].style.top = null; + backdrop[0].style.bottom = null; + backdrop[0].style.height = null; + + previousContainerStyles = null; + }; + } + } + + /** + * Prevent parent scrolling (when the SideNav is open) + */ + function disableParentScroll(disabled) { + if ( disabled && !lastParentOverFlow ) { + lastParentOverFlow = disableScrollTarget.css('overflow'); + disableScrollTarget.css('overflow', 'hidden'); + } else if (angular.isDefined(lastParentOverFlow)) { + disableScrollTarget.css('overflow', lastParentOverFlow); + lastParentOverFlow = undefined; + } + } + + /** + * Toggle the sideNav view and publish a promise to be resolved when + * the view animation finishes. + * + * @param isOpen + * @returns {*} + */ + function toggleOpen( isOpen ) { + if (scope.isOpen == isOpen ) { + + return $q.when(true); + + } else { + if (scope.isOpen && sidenavCtrl.onCloseCb) sidenavCtrl.onCloseCb(); + + return $q(function(resolve){ + // Toggle value to force an async `updateIsOpen()` to run + scope.isOpen = isOpen; + + $mdUtil.nextTick(function() { + // When the current `updateIsOpen()` animation finishes + promise.then(function(result) { + + if ( !scope.isOpen && triggeringElement && triggeringInteractionType === 'keyboard') { + // reset focus to originating element (if available) upon close + triggeringElement.focus(); + triggeringElement = null; + } + + resolve(result); + }); + }); + + }); + + } + } + + /** + * Auto-close sideNav when the `escape` key is pressed. + * @param evt + */ + function onKeyDown(ev) { + var isEscape = (ev.keyCode === $mdConstant.KEY_CODE.ESCAPE); + return isEscape ? close(ev) : $q.when(true); + } + + /** + * With backdrop `clicks` or `escape` key-press, immediately + * apply the CSS close transition... Then notify the controller + * to close() and perform its own actions. + */ + function close(ev) { + ev.preventDefault(); + + return sidenavCtrl.close(); + } + + } +} + +/* + * @private + * @ngdoc controller + * @name SidenavController + * @module material.components.sidenav + */ +function SidenavController($scope, $attrs, $mdComponentRegistry, $q, $interpolate) { + + var self = this; + + // Use Default internal method until overridden by directive postLink + + // Synchronous getters + self.isOpen = function() { return !!$scope.isOpen; }; + self.isLockedOpen = function() { return !!$scope.isLockedOpen; }; + + // Synchronous setters + self.onClose = function (callback) { + self.onCloseCb = callback; + return self; + }; + + // Async actions + self.open = function() { return self.$toggleOpen( true ); }; + self.close = function() { return self.$toggleOpen( false ); }; + self.toggle = function() { return self.$toggleOpen( !$scope.isOpen ); }; + self.$toggleOpen = function(value) { return $q.when($scope.isOpen = value); }; + + // Evaluate the component id. + var rawId = $attrs.mdComponentId; + var hasDataBinding = rawId && rawId.indexOf($interpolate.startSymbol()) > -1; + var componentId = hasDataBinding ? $interpolate(rawId)($scope.$parent) : rawId; + + // Register the component. + self.destroy = $mdComponentRegistry.register(self, componentId); + + // Watch and update the component, if the id has changed. + if (hasDataBinding) { + $attrs.$observe('mdComponentId', function(id) { + if (id && id !== self.$$mdHandle) { + self.destroy(); // `destroy` only deregisters the old component id so we can add the new one. + self.destroy = $mdComponentRegistry.register(self, id); + } + }); + } +} + +})(window, window.angular);
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.css b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.css new file mode 100644 index 00000000..c5e96632 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.css @@ -0,0 +1,6 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */md-sidenav{box-sizing:border-box;position:absolute;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-closed.md-locked-open-add,md-sidenav.md-locked-open,md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add-active,md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active),md-sidenav.md-locked-open-remove-active{-webkit-transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2)}md-sidenav.md-locked-open-remove-active{width:0!important;min-width:0!important}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}.md-sidenav-right.md-closed{-webkit-transform:translate(0,0);transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}
\ No newline at end of file diff --git a/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.js b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.js new file mode 100644 index 00000000..66e43e53 --- /dev/null +++ b/vnfmarket/src/main/webapp/common/thirdparty/angular-material/modules/js/sidenav/sidenav.min.js @@ -0,0 +1,7 @@ +/*! + * Angular Material Design + * https://github.com/angular/material + * @license MIT + * v1.1.2-master-a9ba340 + */ +!function(e,n,t){"use strict";function o(e,o,r,i){function s(e,t){var i=function(){return!1},s=function(){return r.when(o.supplant(c,[t||""]))};return n.extend({isLockedOpen:i,isOpen:i,toggle:s,open:s,close:s,onClose:n.noop,then:function(e){return l(t).then(e||n.noop)}},e)}function d(n,r){var s=e.get(n);return s||r?s:(i.error(o.supplant(c,[n||""])),t)}function l(n){return e.when(n)["catch"](i.error)}var c="SideNav '{0}' is not available! Did you use md-component-id='{0}'?",a={find:d,waitFor:l};return function(e,t){if(n.isUndefined(e))return a;var o=t===!0,r=a.find(e,o);return!r&&o?a.waitFor(e):!r&&n.isUndefined(t)?s(a,e):r}}function r(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,o){}}}function i(e,o,r,i,s,d,l,c,a,u,p,m,f){function $(l,$,g,v){function h(e,n){l.isLockedOpen=e,e===n?$.toggleClass("md-locked-open",!!e):d[e?"addClass":"removeClass"]($,"md-locked-open"),T&&T.toggleClass("md-locked-open",!!e)}function y(e){var n=o.findFocusTarget($)||o.findFocusTarget($,"[md-sidenav-focus]")||$,t=$.parent();t[e?"on":"off"]("keydown",b),T&&T[e?"on":"off"]("click",k);var r=C(t,e);return e&&(q=p[0].activeElement,D=s.getLastInteractionType()),O(e),x=u.all([e&&T?d.enter(T,t):T?d.leave(T):u.when(!0),d[e?"removeClass":"addClass"]($,"md-closed")]).then(function(){l.isOpen&&(f(function(){L.triggerHandler("resize")}),n&&n.focus()),r&&r()})}function C(e,n){var t=$[0],o=e[0].scrollTop;if(n&&o){F={top:t.style.top,bottom:t.style.bottom,height:t.style.height};var r={top:o+"px",bottom:"auto",height:e[0].clientHeight+"px"};$.css(r),T.css(r)}if(!n&&F)return function(){t.style.top=F.top,t.style.bottom=F.bottom,t.style.height=F.height,T[0].style.top=null,T[0].style.bottom=null,T[0].style.height=null,F=null}}function O(e){e&&!S?(S=I.css("overflow"),I.css("overflow","hidden")):n.isDefined(S)&&(I.css("overflow",S),S=t)}function w(e){return l.isOpen==e?u.when(!0):(l.isOpen&&v.onCloseCb&&v.onCloseCb(),u(function(n){l.isOpen=e,o.nextTick(function(){x.then(function(e){!l.isOpen&&q&&"keyboard"===D&&(q.focus(),q=null),n(e)})})}))}function b(e){var n=e.keyCode===r.KEY_CODE.ESCAPE;return n?k(e):u.when(!0)}function k(e){return e.preventDefault(),v.close()}var S,T,D,F,I=null,q=null,x=u.when(!0),E=c(g.mdIsLockedOpen),L=n.element(m),U=function(){return E(l.$parent,{$media:function(n){return a.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."),e(n)},$mdMedia:e})};g.mdDisableScrollTarget&&(I=p[0].querySelector(g.mdDisableScrollTarget),I?I=n.element(I):a.warn(o.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.',{selector:g.mdDisableScrollTarget}))),I||(I=$.parent()),g.hasOwnProperty("mdDisableBackdrop")||(T=o.createBackdrop(l,"md-sidenav-backdrop md-opaque ng-enter")),$.addClass("_md"),i($),T&&i.inherit(T,$),$.on("$destroy",function(){T&&T.remove(),v.destroy()}),l.$on("$destroy",function(){T&&T.remove()}),l.$watch(U,h),l.$watch("isOpen",y),v.$toggleOpen=w}return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){return e.addClass("md-closed").attr("tabIndex","-1"),$}}}function s(e,n,t,o,r){var i=this;i.isOpen=function(){return!!e.isOpen},i.isLockedOpen=function(){return!!e.isLockedOpen},i.onClose=function(e){return i.onCloseCb=e,i},i.open=function(){return i.$toggleOpen(!0)},i.close=function(){return i.$toggleOpen(!1)},i.toggle=function(){return i.$toggleOpen(!e.isOpen)},i.$toggleOpen=function(n){return o.when(e.isOpen=n)};var s=n.mdComponentId,d=s&&s.indexOf(r.startSymbol())>-1,l=d?r(s)(e.$parent):s;i.destroy=t.register(i,l),d&&n.$observe("mdComponentId",function(e){e&&e!==i.$$mdHandle&&(i.destroy(),i.destroy=t.register(i,e))})}o.$inject=["$mdComponentRegistry","$mdUtil","$q","$log"],i.$inject=["$mdMedia","$mdUtil","$mdConstant","$mdTheming","$mdInteraction","$animate","$compile","$parse","$log","$q","$document","$window","$$rAF"],s.$inject=["$scope","$attrs","$mdComponentRegistry","$q","$interpolate"],n.module("material.components.sidenav",["material.core","material.components.backdrop"]).factory("$mdSidenav",o).directive("mdSidenav",i).directive("mdSidenavFocus",r).controller("$mdSidenavController",s)}(window,window.angular);
\ No newline at end of file |