-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathng-material-dropmenu.min.js
1 lines (1 loc) · 11.9 KB
/
ng-material-dropmenu.min.js
1
(function(){"use strict";var a=8;var b=0;var c={};var d={};var e={};var f=null;var g=['primary','accent','warn','background'];var h='primary';var i=l('rgba(0,0,0,0.87)');var j=l('rgba(255,255,255,0.87');var k=l('rgb(255,255,255)');function l(a){if(angular.isArray(a)&&a.length==3)return a;if(/^rgb/.test(a))return a.replace(/(^\s*rgba?\(|\)\s*$)/g,'').split(',').map(function(a,b){return b==3?parseFloat(a,10):parseInt(a,10);});if(a.charAt(0)=='#')a=a.substring(1);if(!/^([a-fA-F0-9]{3}){1,2}$/g.test(a))return;var b=a.length/3;var c=a.substr(0,b);var d=a.substr(b,b);var e=a.substr(b*2);if(b===1){c+=c;d+=d;e+=e;}return [parseInt(c,16),parseInt(d,16),parseInt(e,16)];}angular.module('ngMaterialDropmenu',['material.core','material.components.backdrop']).directive('mdDropmenu',o).directive('mdDropMenu',p).directive('mdDropOption',q).directive('mdDropOptgroup',r).provider('$mdDropmenu',s).config(m).run(n).constant("$MD_DROPMENU_THEME_CSS","md-drop-menu.md-THEME_NAME-theme md-drop-optgroup { color: '{{foreground-2}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-optgroup md-drop-option { color: '{{foreground-1}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-option[selected] { color: '{{primary-500}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-option[selected]:focus { color: '{{primary-600}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-option[selected].md-accent { color: '{{accent-500}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-option[selected].md-accent:focus { color: '{{accent-600}}'; } md-drop-menu.md-THEME_NAME-theme md-drop-option:focus:not([selected]) { background: '{{background-200}}'; }");function m(a){c=a._PALETTES;d=a._THEMES;f=a._parseRules;}m.$inject=['$mdThemingProvider'];function n(a){var b=document.getElementsByTagName('head')[0];if(!b)return;var m=b.firstElementChild;if(!m)return;var n=a.has('$MD_DROPMENU_THEME_CSS')?a.get('$MD_DROPMENU_THEME_CSS'):'';angular.forEach(c,r);var o={};var p=n.split(/\}(?!(\}|'|"|;))/).filter(function(a){return a&&a.length;}).map(function(a){return a.trim()+'}';});var q=new RegExp('md-('+g.join('|')+')','g');g.forEach(function(a){o[a]='';});p.forEach(function(a){var b=a.match(q);for(var c=0,d;d=g[c];c++)if(a.indexOf('.md-'+d)>-1)return o[d]+=a;for(c=0;d=g[c];c++)if(a.indexOf(d)>-1)return o[d]+=a;return o[h]+=a;});angular.forEach(d,function(a){if(!e[a.name]){g.forEach(function(c){var d=f(a,c,o[c]);while(d.length){var e=document.createElement('style');e.setAttribute('type','text/css');e.appendChild(document.createTextNode(d.shift()));b.insertBefore(e,m);}});if(a.colors.primary.name==a.colors.accent.name)console.warn("$mdThemingProvider: Using the same palette for primary and"+" accent. This violates the material design spec.");e[a.name]=true;}});function r(a){var b=a.contrastDefaultColor;var c=a.contrastLightColors||[];var d=a.contrastStrongLightColors||[];var e=a.contrastDarkColors||[];if(typeof c==='string')c=c.split(' ');if(typeof d==='string')d=d.split(' ');if(typeof e==='string')e=e.split(' ');delete a.contrastDefaultColor;delete a.contrastLightColors;delete a.contrastStrongLightColors;delete a.contrastDarkColors;angular.forEach(a,function(f,g){if(angular.isObject(f))return;var h=l(f);if(!h)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace('%1',f).replace('%2',a.name).replace('%3',g));a[g]={value:h,contrast:m()};function m(){if(b==='light')if(e.indexOf(g)>-1)return i;else return d.indexOf(g)>-1?k:j;else if(c.indexOf(g)>-1)return d.indexOf(g)>-1?k:j;else return i;}});}}n.$inject=["$injector"];function o(a,b,c,d,e,f,g){return{restrict:'E',require:['mdDropmenu'],compile:h,controller:function(){}};function h(d,e){var g=d.find('md-drop-label').remove();if(!g.length)g=angular.element('<md-drop-label><span></span></md-drop-label>');else if(!g[0].firstElementChild){var h=angular.element('<span>');h.append(g.contents());g.append(h);}g.addClass('md-drop-label');g.attr('id','drop_label_'+b.nextUid());if(!d.find('md-content').length)d.append(angular.element('<md-content>').append(d.contents()));var i='<div class="md-drop-menu-container">'+'<md-drop-menu '+(angular.isDefined(e.multiple)?'multiple':'')+'>'+d.html()+'</md-drop-menu></div>';d.empty().append(g);e.tabindex=e.tabindex||'-1';return function j(d,e,g,h){var j;var k;var l=h[0];var m,n;o();c(e);g.$observe('disabled',function(a){if(typeof a=="string")a=true;if(k!==undefined&&k===a)return;k=a;if(a){e.attr({'tabindex':-1,'aria-disabled':'true'});e.off('click',q);e.off('keydown',p);}else{e.attr({'tabindex':g.tabindex,'aria-disabled':'false'});e.on('click',q);e.on('keydown',p);}});if(!g.disabled&&!g.ngDisabled){e.attr({'tabindex':g.tabindex,'aria-disabled':'false'});e.on('click',q);e.on('keydown',p);}e.attr({'role':'combobox','id':'dropmenu_'+b.nextUid(),'aria-expanded':'false'});d.$on('$destroy',function(){if(j)a.cancel().then(function(){m.remove();});else m.remove();});function o(){m=angular.element(i);n=d.$new();m=f(m)(n);}function p(a){var b=[32,13,38,40];if(b.indexOf(a.keyCode)!=-1){a.preventDefault();q(a);}}function q(b){d.$evalAsync(function(){var b,c;j=true;b=g.mdOnOpen?d.$eval(g.mdOnOpen)||true:false;c=angular.isDefined(g.disabledAutoFocus)?false:true;a.show({scope:n,preserveScope:true,skipCompile:true,element:m,target:e[0],hasBackdrop:true,loadingAsync:b,autoFocus:c}).then(function(a){j=false;});});b.preventDefault();}};}}o.$inject=["$mdDropmenu","$mdUtil","$mdTheming","$mdAria","$interpolate","$compile","$parse"];function p(a,b,c){return{restrict:'E',link:{pre:d}};function d(a,d,e,f){c(d);g();function g(){d.attr({'id':'drop_menu_'+b.nextUid(),'role':'listbox'});}}function e(a,b,c){}}p.$inject=["$parse","$mdUtil","$mdTheming"];function q(a,b){e.$inject=["$element"];return{restrict:'E',require:['mdDropOption'],controller:e,compile:c,link:d};function c(a,b){a.append(angular.element('<div class="md-text">').append(a.contents()));a.attr('tabindex',b.tabindex||'0');return d;}function d(c,d,e,f){a.attach(c,d);g();function g(){d.attr({'role':'option','aria-selected':'false','id':'drop_option_'+b.nextUid()});}}function e(a){this.selected=false;this.setSelected=function(b){if(b&&!this.selected)a.attr({'selected':'selected','aria-selected':'true'});else if(!b&&this.selected){a.removeAttr('selected');a.attr('aria-selected','false');}this.selected=b;};}}q.$inject=["$mdButtonInkRipple","$mdUtil"];function r(){return{restrict:'E',compile:a};function a(a,b){var c=a.find('label');if(!c.length){c=angular.element('<label>');a.prepend(c);}if(b.label)c.text(b.label);}}function s(b){c.$inject=["$mdDropmenu","$mdConstant","$$rAF","$mdUtil","$mdTheming","$timeout","$window"];return b('$mdDropmenu').setDefaults({methods:['target'],options:c});function c(b,c,f,g,h,i,j){return{parent:'body',onShow:k,onRemove:l,hasBackdrop:true,disableParentScroll:true,themable:true};function k(a,d,e){if(!e.target)throw new Error('$mdDropmenu.show() expected a target element in '+'options.target but got "'+e.target+'"!');angular.extend(e,{isRemoved:false,target:angular.element(e.target),parent:angular.element(e.parent),selectEl:d.find('md-drop-menu'),contentEl:d.find('md-content'),backdrop:e.hasBackdrop&&angular.element('<md-backdrop class="md-dropmenu-backdrop md-click-catcher">')});e.resizeFn=function(){f(function(){f(function(){m(a,d,e);});});};angular.element(j).on('resize',e.resizeFn);angular.element(j).on('orientationchange',e.resizeFn);o();d.removeClass('md-leave');var k=e.selectEl[0].getElementsByTagName('md-drop-option');if(!e.autoFocus&&k.length>0&&!k[0].getAttribute("fake")){var l=document.createElement("md-drop-option");var n=k[0].parentElement;l.style.height="1px";l.style.width="0";l.style.maxHeight="1px";l.style.maxWidth="0";l.style.opacity="0";l.setAttribute("tabindex","0");l.setAttribute("fake",true);n.insertBefore(l,k[0]);k=e.selectEl[0].getElementsByTagName('md-drop-option');}if(e.loadingAsync&&e.loadingAsync.then){e.loadingAsync.then(function(){a.$$loadingAsyncDone=true;f(function(){f(function(){if(e.isRemoved)return;m(a,d,e);});});});}else if(e.loadingAsync)a.$$loadingAsyncDone=true;if(e.disableParentScroll&&!g.getClosest(e.target,'MD-DIALOG'))e.restoreScroll=g.disableScrollAround(e.target);else e.disableParentScroll=false;i(p,75,false);if(e.backdrop){h.inherit(e.backdrop,e.parent);e.parent.append(e.backdrop);}e.parent.append(d);f(function(){f(function(){if(e.isRemoved)return;m(a,d,e);});});return g.transitionEndPromise(e.selectEl,{timeout:350});function o(){e.target.attr('aria-expanded','true');}function p(){if(e.isRemoved)return;d.addClass('md-clickable');e.backdrop&&e.backdrop.on('click',function(c){c.preventDefault();c.stopPropagation();e.restoreFocus=false;a.$apply(b.cancel);});e.selectEl.on('keydown',function(d){switch(d.keyCode){case c.KEY_CODE.SPACE:case c.KEY_CODE.ENTER:break;case c.KEY_CODE.TAB:case c.KEY_CODE.ESCAPE:d.preventDefault();e.restoreFocus=true;a.$apply(b.cancel);}});e.selectEl.on('keydown',function(a){switch(a.keyCode){case c.KEY_CODE.UP_ARROW:return h();case c.KEY_CODE.DOWN_ARROW:return g();}});function f(a){var b=t(k);var c=b.indexOf(e.focusedNode);if(c===-1)c=0;else if(a==='next'&&c<b.length-1)c++;else if(a==='prev'&&c>0)c--;var d=e.focusedNode=b[c];d&&d.focus();}function g(){f('next');}function h(){f('prev');}e.selectEl.on('click',i);e.selectEl.on('keydown',function(a){if(a.keyCode==32||a.keyCode==13)i();});function i(){e.restoreFocus=true;a.$evalAsync(function(){b.hide();});}}}function l(a,b,c){c.isRemoved=true;b.addClass('md-leave').removeClass('md-clickable');c.target.attr('aria-expanded','false');angular.element(j).off('resize',c.resizeFn);angular.element(j).off('orientationchange',c.resizefn);c.resizeFn=undefined;return g.transitionEndPromise(b,{timeout:350}).then(function(){b.removeClass('md-active');c.backdrop&&c.backdrop.remove();if(b[0].parentNode===c.parent[0])c.parent[0].removeChild(b[0]);if(c.disableParentScroll)c.restoreScroll();if(c.restoreFocus)c.target.focus();});}function m(b,h,i){var k=h[0],l=i.target[0].firstElementChild.firstElementChild,m=i.parent[0],n=i.selectEl[0],o=i.contentEl[0],p=m.getBoundingClientRect(),q=l.getBoundingClientRect(),r=false,s=(g.floatingScrollbars()?16:0),t={left:p.left+a,top:a,bottom:p.height-a,right:p.width-a-s},u={top:q.top-t.top,left:q.left-t.left,right:t.right-(q.left+q.width),bottom:t.bottom-(q.top+q.height)},v=p.width-a*2,w=o.scrollHeight>o.offsetHeight,x=n.querySelector('md-drop-option[selected]'),y=n.getElementsByTagName('md-drop-option'),z=n.getElementsByTagName('md-drop-optgroup');var A;if(x)A=x;else if(z.length)A=z[0];else if(y.length)A=y[0];else A=o.firstElementChild||o;if(o.offsetWidth>v)o.style['max-width']=v+'px';if(r)o.style['min-width']=q.width+'px';if(w)n.classList.add('md-overflow');var B=n.getBoundingClientRect();var C=e(A);if(A){var D=j.getComputedStyle(A);C.paddingLeft=parseInt(D.paddingLeft,10)||0;C.paddingRight=parseInt(D.paddingRight,10)||0;}var E=A;if((E.tagName||'').toUpperCase()==='MD-DROP-OPTGROUP')E=y[0]||o.firstElementChild||o;if(w){var F=o.offsetHeight/2;o.scrollTop=C.top+C.height/2-F;if(u.top<F)o.scrollTop=Math.min(C.top,o.scrollTop+F-u.top);else if(u.bottom<F)o.scrollTop=Math.max(C.top+C.height-B.height,o.scrollTop-F+u.bottom);}var G,H,I;if(r){G=q.left;H=q.top+q.height;I='50% 0';if(H+B.height>t.bottom){H=q.top-B.height;I='50% 100%';}}else{G=q.left+C.left-C.paddingLeft;H=Math.floor(q.top+q.height/2-C.height/2-C.top+o.scrollTop);I=(C.left+q.width/2)+'px '+(C.top+C.height/2-o.scrollTop)+'px 0px';k.style.minWidth=q.width+C.paddingLeft+C.paddingRight+'px';}var J=k.getBoundingClientRect();k.style.left=d(t.left,G,t.right-J.width)+'px';k.style.top=d(t.top,H,t.bottom-J.height)+'px';n.style[c.CSS.TRANSFORM_ORIGIN]=I;n.style[c.CSS.TRANSFORM]='scale('+Math.min(q.width/B.width,1.0)+','+Math.min(q.height/B.height,1.0)+')';f(function(){h.addClass('md-active');n.style[c.CSS.TRANSFORM]='';if(E){i.focusedNode=E;E.focus();}});}}function d(a,b,c){return Math.max(a,Math.min(b,c));}function e(a){return a?{left:a.offsetLeft,top:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}:{left:0,top:0,width:0,height:0};}}s.$inject=["$$interimElementProvider"];function t(a){var b=[];for(var c=0;c<a.length;++c)b.push(a.item(c));return b;}})();