angular-material
Version:
**[Support for legacy AngularJS ended on January 1st, 2022](https://goo.gle/angularjs-end-of-life). [See `@angular/core` for the actively supported Angular](https://npmjs.com/@angular/core).**
7 lines • 4.4 kB
JavaScript
/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.2.4-master-bfc8ae7
*/
function SidenavService(o,r,i,a){var l="SideNav '{0}' is not available! Did you use md-component-id='{0}'?",s={find:function(e,n){var t=o.get(e);return t||n?t:void a.error(r.supplant(l,[e||""]))},waitFor:d};return function(e,n){if(angular.isUndefined(e))return s;var t=!0===n,o=s.find(e,t);return!o&&t?s.waitFor(e):!o&&angular.isUndefined(n)?function(e,n){function t(){return!1}function o(){return i.when(r.supplant(l,[n||""]))}return angular.extend({isLockedOpen:t,isOpen:t,toggle:o,open:o,close:o,onClose:angular.noop,then:function(e){return d(n).then(e||angular.noop)}},e)}(s,e):o};function d(e){return o.when(e).catch(a.error)}}function SidenavDirective(o,$,h,C,y,O,e,S,b,w,k,D,T){return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){return e.addClass("md-closed").attr("tabIndex","-1"),n}};function n(r,i,e,n){var a,l,s,d,c,u=null,p=null,m=w.when(!0),t=S(e.mdIsLockedOpen),g=angular.element(D);function f(e){return e.keyCode===h.KEY_CODE.ESCAPE?v(e):w.when(!0)}function v(e){return e.preventDefault(),n.close()}e.mdDisableScrollTarget&&((u=k[0].querySelector(e.mdDisableScrollTarget))?u=angular.element(u):b.warn($.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.',{selector:e.mdDisableScrollTarget}))),u=u||i.parent(),e.hasOwnProperty("mdDisableBackdrop")||(l=$.createBackdrop(r,"md-sidenav-backdrop md-opaque ng-enter")),e.hasOwnProperty("mdDisableCloseEvents")&&(s=!0),i.addClass("_md"),C(i),l&&C.inherit(l,i),i.on("$destroy",function(){l&&l.remove(),n.destroy()}),r.$on("$destroy",function(){l&&l.remove()}),r.$watch(function(){return t(r.$parent,{$mdMedia:o})},function(e,n){(r.isLockedOpen=e)===n?i.toggleClass("md-locked-open",!!e):O[e?"addClass":"removeClass"](i,"md-locked-open");l&&l.toggleClass("md-locked-open",!!e)}),r.$watch("isOpen",function(e){var n,t=$.findFocusTarget(i)||i,o=i.parent();s||(o[e?"on":"off"]("keydown",f),l&&l[e?"on":"off"]("click",v));n=function(e,n){var t=i[0],o=e[0].scrollTop;if(n&&o){c={top:t.style.top,bottom:t.style.bottom,height:t.style.height};var r={top:o+"px",bottom:"auto",height:e[0].clientHeight+"px"};i.css(r),l.css(r)}if(!n&&c)return function(){t.style.top=c.top,t.style.bottom=c.bottom,t.style.height=c.height,l[0].style.top=null,l[0].style.bottom=null,l[0].style.height=null,c=null}}(o,e),e&&(p=k[0].activeElement,d=y.getLastInteractionType());return function(e){e&&!a?(a=u.css("overflow"),u.css("overflow","hidden")):angular.isDefined(a)&&(u.css("overflow",a),a=void 0)}(e),m=w.all([e&&l?O.enter(l,o):l?O.leave(l):w.when(!0),O[e?"removeClass":"addClass"](i,"md-closed")]).then(function(){r.isOpen&&(T(function(){g.triggerHandler("resize")}),t&&t.focus()),n&&n()})}),n.$toggleOpen=function(e){return r.isOpen===e?w.when(!0):(r.isOpen&&n.onCloseCb&&n.onCloseCb(),w(function(n){r.isOpen=e,$.nextTick(function(){m.then(function(e){!r.isOpen&&p&&"keyboard"===d&&(p.focus(),p=null),n(e)})})}))}}}function SidenavController(n,e,t,o,r){var i=this;i.isOpen=function(){return!!n.isOpen},i.isLockedOpen=function(){return!!n.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(!n.isOpen)},i.$toggleOpen=function(e){return o.when(n.isOpen=e)};var a=e.mdComponentId,l=a&&-1<a.indexOf(r.startSymbol()),s=l?r(a)(n.$parent):a;i.destroy=t.register(i,s),l&&e.$observe("mdComponentId",function(e){e&&e!==i.$$mdHandle&&(i.destroy(),i.destroy=t.register(i,e))})}goog.provide("ngmaterial.components.sidenav"),goog.require("ngmaterial.components.backdrop"),goog.require("ngmaterial.core"),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).controller("$mdSidenavController",SidenavController),ngmaterial.components.sidenav=angular.module("material.components.sidenav");