aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip
diff options
context:
space:
mode:
authorseshukm <seshu.kumar.m@huawei.com>2017-03-06 10:23:16 +0530
committerseshukm <seshu.kumar.m@huawei.com>2017-03-06 10:23:16 +0530
commit663394f188c4460ad889b70a82557db0f9754032 (patch)
tree09d5bea2b0684b5752f5cd8f74e1f3f4ffaa740a /vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip
parent194d6e19da729265130123b6638e0f57589c9367 (diff)
thirdparty files updated for the vnf market place
IssueId : CLIENT-4 Change-Id: Id58c2d11985bda35dc482b122dc404aea2e477da Signed-off-by: seshukm <seshu.kumar.m@huawei.com>
Diffstat (limited to 'vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip')
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.css9
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.min.css6
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.css67
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.js480
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.css6
-rw-r--r--vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.js7
6 files changed, 575 insertions, 0 deletions
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.css b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.css
new file mode 100644
index 00000000..160eb702
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.css
@@ -0,0 +1,9 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.3
+ */
+.md-panel.md-tooltip.md-THEME_NAME-theme {
+ color: '{{background-700-contrast}}';
+ background-color: '{{background-700}}'; }
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.min.css b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.min.css
new file mode 100644
index 00000000..154c3413
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip-default-theme.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.2-master-a9ba340
+ */.md-panel.md-tooltip.md-THEME_NAME-theme{color:"{{background-700-contrast}}";background-color:"{{background-700}}"} \ No newline at end of file
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.css b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.css
new file mode 100644
index 00000000..be50af67
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.css
@@ -0,0 +1,67 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.3
+ */
+.md-tooltip {
+ pointer-events: none;
+ border-radius: 4px;
+ overflow: hidden;
+ opacity: 0;
+ font-weight: 500;
+ font-size: 14px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ height: 32px;
+ line-height: 32px;
+ padding-right: 16px;
+ padding-left: 16px; }
+ .md-tooltip.md-origin-top {
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ margin-top: -24px; }
+ .md-tooltip.md-origin-right {
+ -webkit-transform-origin: left center;
+ transform-origin: left center;
+ margin-left: 24px; }
+ .md-tooltip.md-origin-bottom {
+ -webkit-transform-origin: center top;
+ transform-origin: center top;
+ margin-top: 24px; }
+ .md-tooltip.md-origin-left {
+ -webkit-transform-origin: right center;
+ transform-origin: right center;
+ margin-left: -24px; }
+ @media (min-width: 960px) {
+ .md-tooltip {
+ font-size: 10px;
+ height: 22px;
+ line-height: 22px;
+ padding-right: 8px;
+ padding-left: 8px; }
+ .md-tooltip.md-origin-top {
+ margin-top: -14px; }
+ .md-tooltip.md-origin-right {
+ margin-left: 14px; }
+ .md-tooltip.md-origin-bottom {
+ margin-top: 14px; }
+ .md-tooltip.md-origin-left {
+ margin-left: -14px; } }
+ .md-tooltip.md-show-add {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ .md-tooltip.md-show {
+ -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-transform: scale(1);
+ transform: scale(1);
+ opacity: 0.9; }
+ .md-tooltip.md-hide {
+ -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);
+ -webkit-transition-duration: .1s;
+ transition-duration: .1s;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0; }
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.js b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.js
new file mode 100644
index 00000000..86b07d34
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.js
@@ -0,0 +1,480 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.3
+ */
+goog.provide('ngmaterial.components.tooltip');
+goog.require('ngmaterial.components.panel');
+goog.require('ngmaterial.core');
+/**
+ * @ngdoc module
+ * @name material.components.tooltip
+ */
+MdTooltipDirective['$inject'] = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"];
+angular
+ .module('material.components.tooltip', [
+ 'material.core',
+ 'material.components.panel'
+ ])
+ .directive('mdTooltip', MdTooltipDirective)
+ .service('$$mdTooltipRegistry', MdTooltipRegistry);
+
+
+/**
+ * @ngdoc directive
+ * @name mdTooltip
+ * @module material.components.tooltip
+ * @description
+ * Tooltips are used to describe elements that are interactive and primarily
+ * graphical (not textual).
+ *
+ * Place a `<md-tooltip>` as a child of the element it describes.
+ *
+ * A tooltip will activate when the user hovers over, focuses, or touches the
+ * parent element.
+ *
+ * @usage
+ * <hljs lang="html">
+ * <md-button class="md-fab md-accent" aria-label="Play">
+ * <md-tooltip>Play Music</md-tooltip>
+ * <md-icon md-svg-src="img/icons/ic_play_arrow_24px.svg"></md-icon>
+ * </md-button>
+ * </hljs>
+ *
+ * @param {number=} md-z-index The visual level that the tooltip will appear
+ * in comparison with the rest of the elements of the application.
+ * @param {expression=} md-visible Boolean bound to whether the tooltip is
+ * currently visible.
+ * @param {number=} md-delay How many milliseconds to wait to show the tooltip
+ * after the user hovers over, focuses, or touches the parent element.
+ * Defaults to 0ms on non-touch devices and 75ms on touch.
+ * @param {boolean=} md-autohide If present or provided with a boolean value,
+ * the tooltip will hide on mouse leave, regardless of focus.
+ * @param {string=} md-direction The direction that the tooltip is shown,
+ * relative to the parent element. Supports top, right, bottom, and left.
+ * Defaults to bottom.
+ */
+function MdTooltipDirective($timeout, $window, $$rAF, $document, $interpolate,
+ $mdUtil, $mdPanel, $$mdTooltipRegistry) {
+
+ var ENTER_EVENTS = 'focus touchstart mouseenter';
+ var LEAVE_EVENTS = 'blur touchcancel mouseleave';
+ var TOOLTIP_DEFAULT_Z_INDEX = 100;
+ var TOOLTIP_DEFAULT_SHOW_DELAY = 0;
+ var TOOLTIP_DEFAULT_DIRECTION = 'bottom';
+ var TOOLTIP_DIRECTIONS = {
+ top: { x: $mdPanel.xPosition.CENTER, y: $mdPanel.yPosition.ABOVE },
+ right: { x: $mdPanel.xPosition.OFFSET_END, y: $mdPanel.yPosition.CENTER },
+ bottom: { x: $mdPanel.xPosition.CENTER, y: $mdPanel.yPosition.BELOW },
+ left: { x: $mdPanel.xPosition.OFFSET_START, y: $mdPanel.yPosition.CENTER }
+ };
+
+ return {
+ restrict: 'E',
+ priority: 210, // Before ngAria
+ scope: {
+ mdZIndex: '=?mdZIndex',
+ mdDelay: '=?mdDelay',
+ mdVisible: '=?mdVisible',
+ mdAutohide: '=?mdAutohide',
+ mdDirection: '@?mdDirection' // Do not expect expressions.
+ },
+ link: linkFunc
+ };
+
+ function linkFunc(scope, element, attr) {
+ // Set constants.
+ var parent = $mdUtil.getParentWithPointerEvents(element);
+ var debouncedOnResize = $$rAF.throttle(updatePosition);
+ var mouseActive = false;
+ var origin, position, panelPosition, panelRef, autohide, showTimeout,
+ elementFocusedOnWindowBlur = null;
+
+ // Set defaults
+ setDefaults();
+
+ // Set parent aria-label.
+ addAriaLabel();
+
+ // Remove the element from its current DOM position.
+ element.detach();
+
+ updatePosition();
+ bindEvents();
+ configureWatchers();
+
+ function setDefaults() {
+ scope.mdZIndex = scope.mdZIndex || TOOLTIP_DEFAULT_Z_INDEX;
+ scope.mdDelay = scope.mdDelay || TOOLTIP_DEFAULT_SHOW_DELAY;
+ if (!TOOLTIP_DIRECTIONS[scope.mdDirection]) {
+ scope.mdDirection = TOOLTIP_DEFAULT_DIRECTION;
+ }
+ }
+
+ function addAriaLabel(override) {
+ if (override || !parent.attr('aria-label')) {
+ // Only interpolate the text from the HTML element because otherwise the custom text
+ // could be interpolated twice and cause XSS violations.
+ var interpolatedText = override || $interpolate(element.text().trim())(scope.$parent);
+ parent.attr('aria-label', interpolatedText);
+ }
+ }
+
+ function updatePosition() {
+ setDefaults();
+
+ // If the panel has already been created, remove the current origin
+ // class from the panel element.
+ if (panelRef && panelRef.panelEl) {
+ panelRef.panelEl.removeClass(origin);
+ }
+
+ // Set the panel element origin class based off of the current
+ // mdDirection.
+ origin = 'md-origin-' + scope.mdDirection;
+
+ // Create the position of the panel based off of the mdDirection.
+ position = TOOLTIP_DIRECTIONS[scope.mdDirection];
+
+ // Using the newly created position object, use the MdPanel
+ // panelPosition API to build the panel's position.
+ panelPosition = $mdPanel.newPanelPosition()
+ .relativeTo(parent)
+ .addPanelPosition(position.x, position.y);
+
+ // If the panel has already been created, add the new origin class to
+ // the panel element and update it's position with the panelPosition.
+ if (panelRef && panelRef.panelEl) {
+ panelRef.panelEl.addClass(origin);
+ panelRef.updatePosition(panelPosition);
+ }
+ }
+
+ function bindEvents() {
+ // Add a mutationObserver where there is support for it and the need
+ // for it in the form of viable host(parent[0]).
+ if (parent[0] && 'MutationObserver' in $window) {
+ // Use a mutationObserver to tackle #2602.
+ var attributeObserver = new MutationObserver(function(mutations) {
+ if (isDisabledMutation(mutations)) {
+ $mdUtil.nextTick(function() {
+ setVisible(false);
+ });
+ }
+ });
+
+ attributeObserver.observe(parent[0], {
+ attributes: true
+ });
+ }
+
+ elementFocusedOnWindowBlur = false;
+
+ $$mdTooltipRegistry.register('scroll', windowScrollEventHandler, true);
+ $$mdTooltipRegistry.register('blur', windowBlurEventHandler);
+ $$mdTooltipRegistry.register('resize', debouncedOnResize);
+
+ scope.$on('$destroy', onDestroy);
+
+ // To avoid 'synthetic clicks', we listen to mousedown instead of
+ // 'click'.
+ parent.on('mousedown', mousedownEventHandler);
+ parent.on(ENTER_EVENTS, enterEventHandler);
+
+ function isDisabledMutation(mutations) {
+ mutations.some(function(mutation) {
+ return mutation.attributeName === 'disabled' && parent[0].disabled;
+ });
+ return false;
+ }
+
+ function windowScrollEventHandler() {
+ setVisible(false);
+ }
+
+ function windowBlurEventHandler() {
+ elementFocusedOnWindowBlur = document.activeElement === parent[0];
+ }
+
+ function enterEventHandler($event) {
+ // Prevent the tooltip from showing when the window is receiving
+ // focus.
+ if ($event.type === 'focus' && elementFocusedOnWindowBlur) {
+ elementFocusedOnWindowBlur = false;
+ } else if (!scope.mdVisible) {
+ parent.on(LEAVE_EVENTS, leaveEventHandler);
+ setVisible(true);
+
+ // If the user is on a touch device, we should bind the tap away
+ // after the 'touched' in order to prevent the tooltip being
+ // removed immediately.
+ if ($event.type === 'touchstart') {
+ parent.one('touchend', function() {
+ $mdUtil.nextTick(function() {
+ $document.one('touchend', leaveEventHandler);
+ }, false);
+ });
+ }
+ }
+ }
+
+ function leaveEventHandler() {
+ autohide = scope.hasOwnProperty('mdAutohide') ?
+ scope.mdAutohide :
+ attr.hasOwnProperty('mdAutohide');
+
+ if (autohide || mouseActive ||
+ $document[0].activeElement !== parent[0]) {
+ // When a show timeout is currently in progress, then we have
+ // to cancel it, otherwise the tooltip will remain showing
+ // without focus or hover.
+ if (showTimeout) {
+ $timeout.cancel(showTimeout);
+ setVisible.queued = false;
+ showTimeout = null;
+ }
+
+ parent.off(LEAVE_EVENTS, leaveEventHandler);
+ parent.triggerHandler('blur');
+ setVisible(false);
+ }
+ mouseActive = false;
+ }
+
+ function mousedownEventHandler() {
+ mouseActive = true;
+ }
+
+ function onDestroy() {
+ $$mdTooltipRegistry.deregister('scroll', windowScrollEventHandler, true);
+ $$mdTooltipRegistry.deregister('blur', windowBlurEventHandler);
+ $$mdTooltipRegistry.deregister('resize', debouncedOnResize);
+
+ parent
+ .off(ENTER_EVENTS, enterEventHandler)
+ .off(LEAVE_EVENTS, leaveEventHandler)
+ .off('mousedown', mousedownEventHandler);
+
+ // Trigger the handler in case any of the tooltips are
+ // still visible.
+ leaveEventHandler();
+ attributeObserver && attributeObserver.disconnect();
+ }
+ }
+
+ function configureWatchers() {
+ if (element[0] && 'MutationObserver' in $window) {
+ var attributeObserver = new MutationObserver(function(mutations) {
+ mutations.forEach(function(mutation) {
+ if (mutation.attributeName === 'md-visible' &&
+ !scope.visibleWatcher ) {
+ scope.visibleWatcher = scope.$watch('mdVisible',
+ onVisibleChanged);
+ }
+ });
+ });
+
+ attributeObserver.observe(element[0], {
+ attributes: true
+ });
+
+ // Build watcher only if mdVisible is being used.
+ if (attr.hasOwnProperty('mdVisible')) {
+ scope.visibleWatcher = scope.$watch('mdVisible',
+ onVisibleChanged);
+ }
+ } else {
+ // MutationObserver not supported
+ scope.visibleWatcher = scope.$watch('mdVisible', onVisibleChanged);
+ }
+
+ // Direction watcher
+ scope.$watch('mdDirection', updatePosition);
+
+ // Clean up if the element or parent was removed via jqLite's .remove.
+ // A couple of notes:
+ // - In these cases the scope might not have been destroyed, which
+ // is why we destroy it manually. An example of this can be having
+ // `md-visible="false"` and adding tooltips while they're
+ // invisible. If `md-visible` becomes true, at some point, you'd
+ // usually get a lot of tooltips.
+ // - We use `.one`, not `.on`, because this only needs to fire once.
+ // If we were using `.on`, it would get thrown into an infinite
+ // loop.
+ // - This kicks off the scope's `$destroy` event which finishes the
+ // cleanup.
+ element.one('$destroy', onElementDestroy);
+ parent.one('$destroy', onElementDestroy);
+ scope.$on('$destroy', function() {
+ setVisible(false);
+ panelRef && panelRef.destroy();
+ attributeObserver && attributeObserver.disconnect();
+ element.remove();
+ });
+
+ // Updates the aria-label when the element text changes. This watch
+ // doesn't need to be set up if the element doesn't have any data
+ // bindings.
+ if (element.text().indexOf($interpolate.startSymbol()) > -1) {
+ scope.$watch(function() {
+ return element.text().trim();
+ }, addAriaLabel);
+ }
+
+ function onElementDestroy() {
+ scope.$destroy();
+ }
+ }
+
+ function setVisible(value) {
+ // Break if passed value is already in queue or there is no queue and
+ // passed value is current in the controller.
+ if (setVisible.queued && setVisible.value === !!value ||
+ !setVisible.queued && scope.mdVisible === !!value) {
+ return;
+ }
+ setVisible.value = !!value;
+
+ if (!setVisible.queued) {
+ if (value) {
+ setVisible.queued = true;
+ showTimeout = $timeout(function() {
+ scope.mdVisible = setVisible.value;
+ setVisible.queued = false;
+ showTimeout = null;
+ if (!scope.visibleWatcher) {
+ onVisibleChanged(scope.mdVisible);
+ }
+ }, scope.mdDelay);
+ } else {
+ $mdUtil.nextTick(function() {
+ scope.mdVisible = false;
+ if (!scope.visibleWatcher) {
+ onVisibleChanged(false);
+ }
+ });
+ }
+ }
+ }
+
+ function onVisibleChanged(isVisible) {
+ isVisible ? showTooltip() : hideTooltip();
+ }
+
+ function showTooltip() {
+ // Do not show the tooltip if the text is empty.
+ if (!element[0].textContent.trim()) {
+ throw new Error('Text for the tooltip has not been provided. ' +
+ 'Please include text within the mdTooltip element.');
+ }
+
+ if (!panelRef) {
+ var id = 'tooltip-' + $mdUtil.nextUid();
+ var attachTo = angular.element(document.body);
+ var panelAnimation = $mdPanel.newPanelAnimation()
+ .openFrom(parent)
+ .closeTo(parent)
+ .withAnimation({
+ open: 'md-show',
+ close: 'md-hide'
+ });
+
+ var panelConfig = {
+ id: id,
+ attachTo: attachTo,
+ contentElement: element,
+ propagateContainerEvents: true,
+ panelClass: 'md-tooltip ' + origin,
+ animation: panelAnimation,
+ position: panelPosition,
+ zIndex: scope.mdZIndex,
+ focusOnOpen: false
+ };
+
+ panelRef = $mdPanel.create(panelConfig);
+ }
+
+ panelRef.open().then(function() {
+ panelRef.panelEl.attr('role', 'tooltip');
+ });
+ }
+
+ function hideTooltip() {
+ panelRef && panelRef.close();
+ }
+ }
+
+}
+
+
+/**
+ * Service that is used to reduce the amount of listeners that are being
+ * registered on the `window` by the tooltip component. Works by collecting
+ * the individual event handlers and dispatching them from a global handler.
+ *
+ * ngInject
+ */
+function MdTooltipRegistry() {
+ var listeners = {};
+ var ngWindow = angular.element(window);
+
+ return {
+ register: register,
+ deregister: deregister
+ };
+
+ /**
+ * Global event handler that dispatches the registered handlers in the
+ * service.
+ * @param {!Event} event Event object passed in by the browser
+ */
+ function globalEventHandler(event) {
+ if (listeners[event.type]) {
+ listeners[event.type].forEach(function(currentHandler) {
+ currentHandler.call(this, event);
+ }, this);
+ }
+ }
+
+ /**
+ * Registers a new handler with the service.
+ * @param {string} type Type of event to be registered.
+ * @param {!Function} handler Event handler.
+ * @param {boolean} useCapture Whether to use event capturing.
+ */
+ function register(type, handler, useCapture) {
+ var handlers = listeners[type] = listeners[type] || [];
+
+ if (!handlers.length) {
+ useCapture ? window.addEventListener(type, globalEventHandler, true) :
+ ngWindow.on(type, globalEventHandler);
+ }
+
+ if (handlers.indexOf(handler) === -1) {
+ handlers.push(handler);
+ }
+ }
+
+ /**
+ * Removes an event handler from the service.
+ * @param {string} type Type of event handler.
+ * @param {!Function} handler The event handler itself.
+ * @param {boolean} useCapture Whether the event handler used event capturing.
+ */
+ function deregister(type, handler, useCapture) {
+ var handlers = listeners[type];
+ var index = handlers ? handlers.indexOf(handler) : -1;
+
+ if (index > -1) {
+ handlers.splice(index, 1);
+
+ if (handlers.length === 0) {
+ useCapture ? window.removeEventListener(type, globalEventHandler, true) :
+ ngWindow.off(type, globalEventHandler);
+ }
+ }
+ }
+}
+
+ngmaterial.components.tooltip = angular.module("material.components.tooltip"); \ No newline at end of file
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.css b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.css
new file mode 100644
index 00000000..bf674a76
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.2-master-a9ba340
+ */.md-tooltip{pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{-webkit-transform-origin:center bottom;transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{-webkit-transform-origin:left center;transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{-webkit-transform-origin:center top;transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{-webkit-transform-origin:right center;transform-origin:right center;margin-left:-24px}@media (min-width:960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{-webkit-transform:scale(0);transform:scale(0)}.md-tooltip.md-show{-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1);-webkit-transform:scale(1);transform:scale(1);opacity:.9}.md-tooltip.md-hide{-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2);-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transform:scale(0);transform:scale(0);opacity:0} \ No newline at end of file
diff --git a/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.js b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.js
new file mode 100644
index 00000000..0c5c13a7
--- /dev/null
+++ b/vnfmarket/common/thirdparty/angular-material/modules/closure/tooltip/tooltip.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.2-master-a9ba340
+ */
+function MdTooltipDirective(e,t,i,n,o,r,l,a){function d(d,h,v){function b(){d.mdZIndex=d.mdZIndex||u,d.mdDelay=d.mdDelay||m,p[d.mdDirection]||(d.mdDirection=f)}function g(e){if(e||!R.attr("aria-label")){var t=e||o(h.text().trim())(d.$parent);R.attr("aria-label",t)}}function y(){b(),A&&A.panelEl&&A.panelEl.removeClass(D),D="md-origin-"+d.mdDirection,O=p[d.mdDirection],V=l.newPanelPosition().relativeTo(R).addPanelPosition(O.x,O.y),A&&A.panelEl&&(A.panelEl.addClass(D),A.updatePosition(V))}function E(){function i(e){return e.some(function(e){return"disabled"===e.attributeName&&R[0].disabled}),!1}function o(){w(!1)}function l(){N=document.activeElement===R[0]}function u(e){"focus"===e.type&&N?N=!1:d.mdVisible||(R.on(s,m),w(!0),"touchstart"===e.type&&R.one("touchend",function(){r.nextTick(function(){n.one("touchend",m)},!1)}))}function m(){C=d.hasOwnProperty("mdAutohide")?d.mdAutohide:v.hasOwnProperty("mdAutohide"),(C||W||n[0].activeElement!==R[0])&&(M&&(e.cancel(M),w.queued=!1,M=null),R.off(s,m),R.triggerHandler("blur"),w(!1)),W=!1}function f(){W=!0}function p(){a.deregister("scroll",o,!0),a.deregister("blur",l),a.deregister("resize",q),R.off(c,u).off(s,m).off("mousedown",f),m(),h&&h.disconnect()}if(R[0]&&"MutationObserver"in t){var h=new MutationObserver(function(e){i(e)&&r.nextTick(function(){w(!1)})});h.observe(R[0],{attributes:!0})}N=!1,a.register("scroll",o,!0),a.register("blur",l),a.register("resize",q),d.$on("$destroy",p),R.on("mousedown",f),R.on(c,u)}function x(){function e(){d.$destroy()}if(h[0]&&"MutationObserver"in t){var i=new MutationObserver(function(e){e.forEach(function(e){"md-visible"!==e.attributeName||d.visibleWatcher||(d.visibleWatcher=d.$watch("mdVisible",$))})});i.observe(h[0],{attributes:!0}),v.hasOwnProperty("mdVisible")&&(d.visibleWatcher=d.$watch("mdVisible",$))}else d.visibleWatcher=d.$watch("mdVisible",$);d.$watch("mdDirection",y),h.one("$destroy",e),R.one("$destroy",e),d.$on("$destroy",function(){w(!1),A&&A.destroy(),i&&i.disconnect(),h.remove()}),h.text().indexOf(o.startSymbol())>-1&&d.$watch(function(){return h.text().trim()},g)}function w(t){w.queued&&w.value===!!t||!w.queued&&d.mdVisible===!!t||(w.value=!!t,w.queued||(t?(w.queued=!0,M=e(function(){d.mdVisible=w.value,w.queued=!1,M=null,d.visibleWatcher||$(d.mdVisible)},d.mdDelay)):r.nextTick(function(){d.mdVisible=!1,d.visibleWatcher||$(!1)})))}function $(e){e?T():P()}function T(){if(!h[0].textContent.trim())throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");if(!A){var e="tooltip-"+r.nextUid(),t=angular.element(document.body),i=l.newPanelAnimation().openFrom(R).closeTo(R).withAnimation({open:"md-show",close:"md-hide"}),n={id:e,attachTo:t,contentElement:h,propagateContainerEvents:!0,panelClass:"md-tooltip "+D,animation:i,position:V,zIndex:d.mdZIndex,focusOnOpen:!1};A=l.create(n)}A.open().then(function(){A.panelEl.attr("role","tooltip")})}function P(){A&&A.close()}var D,O,V,A,C,M,R=r.getParentWithPointerEvents(h),q=i.throttle(y),W=!1,N=null;b(),g(),h.detach(),y(),E(),x()}var c="focus touchstart mouseenter",s="blur touchcancel mouseleave",u=100,m=0,f="bottom",p={top:{x:l.xPosition.CENTER,y:l.yPosition.ABOVE},right:{x:l.xPosition.OFFSET_END,y:l.yPosition.CENTER},bottom:{x:l.xPosition.CENTER,y:l.yPosition.BELOW},left:{x:l.xPosition.OFFSET_START,y:l.yPosition.CENTER}};return{restrict:"E",priority:210,scope:{mdZIndex:"=?mdZIndex",mdDelay:"=?mdDelay",mdVisible:"=?mdVisible",mdAutohide:"=?mdAutohide",mdDirection:"@?mdDirection"},link:d}}function MdTooltipRegistry(){function e(e){n[e.type]&&n[e.type].forEach(function(t){t.call(this,e)},this)}function t(t,i,r){var l=n[t]=n[t]||[];l.length||(r?window.addEventListener(t,e,!0):o.on(t,e)),l.indexOf(i)===-1&&l.push(i)}function i(t,i,r){var l=n[t],a=l?l.indexOf(i):-1;a>-1&&(l.splice(a,1),0===l.length&&(r?window.removeEventListener(t,e,!0):o.off(t,e)))}var n={},o=angular.element(window);return{register:t,deregister:i}}goog.provide("ngmaterial.components.tooltip"),goog.require("ngmaterial.components.panel"),goog.require("ngmaterial.core"),MdTooltipDirective.$inject=["$timeout","$window","$$rAF","$document","$interpolate","$mdUtil","$mdPanel","$$mdTooltipRegistry"],angular.module("material.components.tooltip",["material.core","material.components.panel"]).directive("mdTooltip",MdTooltipDirective).service("$$mdTooltipRegistry",MdTooltipRegistry),ngmaterial.components.tooltip=angular.module("material.components.tooltip"); \ No newline at end of file