@material/menu
Advanced tools
Comparing version 0.2.7 to 0.3.0
@@ -24,5 +24,5 @@ /*! | ||
/******/ // Check if module is in cache | ||
/******/ if(installedModules[moduleId]) | ||
/******/ if(installedModules[moduleId]) { | ||
/******/ return installedModules[moduleId].exports; | ||
/******/ | ||
/******/ } | ||
/******/ // Create a new module (and put it into the cache) | ||
@@ -82,3 +82,3 @@ /******/ var module = installedModules[moduleId] = { | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = 78); | ||
/******/ return __webpack_require__(__webpack_require__.s = 85); | ||
/******/ }) | ||
@@ -256,3 +256,4 @@ /************************************************************************/ | ||
SELECTED_EVENT: 'MDCSimpleMenu:selected', | ||
CANCEL_EVENT: 'MDCSimpleMenu:cancel' | ||
CANCEL_EVENT: 'MDCSimpleMenu:cancel', | ||
ARIA_DISABLED_ATTR: 'aria-disabled' | ||
}; | ||
@@ -348,2 +349,3 @@ | ||
}, | ||
getAttributeForEventTarget: function getAttributeForEventTarget() /* target: EventTarget, attributeName: string */{}, | ||
getInnerDimensions: function getInnerDimensions() { | ||
@@ -374,4 +376,4 @@ return (/* { width: number, height: number } */{} | ||
deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{}, | ||
registerDocumentClickHandler: function registerDocumentClickHandler() /* handler: EventListener */{}, | ||
deregisterDocumentClickHandler: function deregisterDocumentClickHandler() /* handler: EventListener */{}, | ||
registerBodyClickHandler: function registerBodyClickHandler() /* handler: EventListener */{}, | ||
deregisterBodyClickHandler: function deregisterBodyClickHandler() /* handler: EventListener */{}, | ||
getYParamsForItemAtIndex: function getYParamsForItemAtIndex() { | ||
@@ -428,5 +430,5 @@ return (/* index: number */ /* {top: number, height: number} */{} | ||
}; | ||
_this.documentClickHandler_ = function () { | ||
_this.documentClickHandler_ = function (evt) { | ||
_this.adapter_.notifyCancel(); | ||
_this.close(); | ||
_this.close(evt); | ||
}; | ||
@@ -478,3 +480,3 @@ _this.isOpen_ = false; | ||
this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_); | ||
this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_); | ||
this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_); | ||
} | ||
@@ -710,2 +712,5 @@ | ||
if (this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARIA_DISABLED_ATTR) === 'true') { | ||
return; | ||
} | ||
var targetIndex = this.adapter_.getIndexForEventTarget(evt.target); | ||
@@ -792,3 +797,3 @@ if (targetIndex < 0) { | ||
_this5.focusOnOpen_(focusIndex); | ||
_this5.adapter_.registerDocumentClickHandler(_this5.documentClickHandler_); | ||
_this5.adapter_.registerBodyClickHandler(_this5.documentClickHandler_); | ||
}); | ||
@@ -805,3 +810,11 @@ this.isOpen_ = true; | ||
this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_); | ||
var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; | ||
var targetIsDisabled = evt ? this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARIA_DISABLED_ATTR) === 'true' : false; | ||
if (targetIsDisabled) { | ||
return; | ||
} | ||
this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_); | ||
this.adapter_.addClass(MDCSimpleMenuFoundation.cssClasses.ANIMATING); | ||
@@ -834,2 +847,3 @@ requestAnimationFrame(function () { | ||
"use strict"; | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSimpleMenu; }); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base__ = __webpack_require__(0); | ||
@@ -839,3 +853,2 @@ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(13); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSimpleMenu; }); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
@@ -915,2 +928,5 @@ | ||
}, | ||
getAttributeForEventTarget: function getAttributeForEventTarget(target, attributeName) { | ||
return target.getAttribute(attributeName); | ||
}, | ||
getInnerDimensions: function getInnerDimensions() { | ||
@@ -945,7 +961,7 @@ var itemsContainer = _this2.itemsContainer_; | ||
}, | ||
registerDocumentClickHandler: function registerDocumentClickHandler(handler) { | ||
return document.addEventListener('click', handler); | ||
registerBodyClickHandler: function registerBodyClickHandler(handler) { | ||
return document.body.addEventListener('click', handler); | ||
}, | ||
deregisterDocumentClickHandler: function deregisterDocumentClickHandler(handler) { | ||
return document.removeEventListener('click', handler); | ||
deregisterBodyClickHandler: function deregisterBodyClickHandler(handler) { | ||
return document.body.removeEventListener('click', handler); | ||
}, | ||
@@ -1226,10 +1242,2 @@ getYParamsForItemAtIndex: function getYParamsForItemAtIndex(index) { | ||
/***/ 78: | ||
/***/ (function(module, exports, __webpack_require__) { | ||
module.exports = __webpack_require__(9); | ||
/***/ }), | ||
/***/ 8: | ||
@@ -1370,2 +1378,10 @@ /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
/***/ 85: | ||
/***/ (function(module, exports, __webpack_require__) { | ||
module.exports = __webpack_require__(9); | ||
/***/ }), | ||
/***/ 9: | ||
@@ -1372,0 +1388,0 @@ /***/ (function(module, __webpack_exports__, __webpack_require__) { |
@@ -6,2 +6,2 @@ /*! | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.menu=t():(e.mdc=e.mdc||{},e.mdc.menu=t())}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/assets/",t(t.s=78)}({0:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1);n.d(t,"MDCFoundation",function(){return i.a});var r=n(2);n.d(t,"MDCComponent",function(){return r.a})},1:function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this.adapter_=t}return r(e,null,[{key:"cssClasses",get:function(){return{}}},{key:"strings",get:function(){return{}}},{key:"numbers",get:function(){return{}}},{key:"defaultAdapter",get:function(){return{}}}]),r(e,[{key:"init",value:function(){}},{key:"destroy",value:function(){}}]),e}();t.a=o},12:function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return r}),n.d(t,"c",function(){return o});var i={ROOT:"mdc-simple-menu",OPEN:"mdc-simple-menu--open",ANIMATING:"mdc-simple-menu--animating",TOP_RIGHT:"mdc-simple-menu--open-from-top-right",BOTTOM_LEFT:"mdc-simple-menu--open-from-bottom-left",BOTTOM_RIGHT:"mdc-simple-menu--open-from-bottom-right"},r={ITEMS_SELECTOR:".mdc-simple-menu__items",SELECTED_EVENT:"MDCSimpleMenu:selected",CANCEL_EVENT:"MDCSimpleMenu:cancel"},o={SELECTED_TRIGGER_DELAY:50,TRANSITION_DURATION_MS:300,TRANSITION_SCALE_ADJUSTMENT_X:.5,TRANSITION_SCALE_ADJUSTMENT_Y:.2,TRANSITION_X1:0,TRANSITION_Y1:0,TRANSITION_X2:.2,TRANSITION_Y2:1}},13:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),u=n(12),c=n(8),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=function(e){function t(e){r(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l(t.defaultAdapter,e)));return n.clickHandler_=function(e){return n.handlePossibleSelected_(e)},n.keydownHandler_=function(e){return n.handleKeyboardDown_(e)},n.keyupHandler_=function(e){return n.handleKeyboardUp_(e)},n.documentClickHandler_=function(){n.adapter_.notifyCancel(),n.close()},n.isOpen_=!1,n.startScaleX_=0,n.startScaleY_=0,n.targetScale_=1,n.scaleX_=0,n.scaleY_=0,n.running_=!1,n.selectedTriggerTimerId_=0,n.animationRequestId_=0,n}return a(t,e),f(t,null,[{key:"cssClasses",get:function(){return u.a}},{key:"strings",get:function(){return u.b}},{key:"numbers",get:function(){return u.c}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},hasClass:function(){},hasNecessaryDom:function(){return!1},getInnerDimensions:function(){return{}},hasAnchor:function(){return!1},getAnchorDimensions:function(){return{}},getWindowDimensions:function(){return{}},setScale:function(){},setInnerScale:function(){},getNumberOfItems:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerDocumentClickHandler:function(){},deregisterDocumentClickHandler:function(){},getYParamsForItemAtIndex:function(){return{}},setTransitionDelayForItemAtIndex:function(){},getIndexForEventTarget:function(){return 0},notifySelected:function(){},notifyCancel:function(){},saveFocus:function(){},restoreFocus:function(){},isFocused:function(){return!1},focus:function(){},getFocusedItemIndex:function(){return-1},focusItemAtIndex:function(){},isRtl:function(){return!1},setTransformOrigin:function(){},setPosition:function(){},getAccurateTime:function(){return 0}}}}]),f(t,[{key:"init",value:function(){var e=t.cssClasses,n=e.ROOT,i=e.OPEN;if(!this.adapter_.hasClass(n))throw new Error(n+" class required in root element.");if(!this.adapter_.hasNecessaryDom())throw new Error("Required DOM nodes missing in "+n+" component.");this.adapter_.hasClass(i)&&(this.isOpen_=!0),this.adapter_.registerInteractionHandler("click",this.clickHandler_),this.adapter_.registerInteractionHandler("keyup",this.keyupHandler_),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_)}},{key:"destroy",value:function(){clearTimeout(this.selectedTriggerTimerId_),cancelAnimationFrame(this.animationRequestId_),this.adapter_.deregisterInteractionHandler("click",this.clickHandler_),this.adapter_.deregisterInteractionHandler("keyup",this.keyupHandler_),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_),this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_)}},{key:"applyTransitionDelays_",value:function(){for(var e=t.cssClasses,n=e.BOTTOM_LEFT,i=e.BOTTOM_RIGHT,r=this.adapter_.getNumberOfItems(),o=this.dimensions_.height,a=t.numbers.TRANSITION_DURATION_MS/1e3,s=t.numbers.TRANSITION_SCALE_ADJUSTMENT_Y,u=0;u<r;u++){var c=this.adapter_.getYParamsForItemAtIndex(u),l=c.top,f=c.height;this.itemHeight_=f;var d=l/o;(this.adapter_.hasClass(n)||this.adapter_.hasClass(i))&&(d=(o-l-f)/o);var h=(s+d*(1-s))*a;this.adapter_.setTransitionDelayForItemAtIndex(u,h.toFixed(3)+"s")}}},{key:"removeTransitionDelays_",value:function(){for(var e=this.adapter_.getNumberOfItems(),t=0;t<e;t++)this.adapter_.setTransitionDelayForItemAtIndex(t,null)}},{key:"animationLoop_",value:function(){var e=this,i=this.adapter_.getAccurateTime(),r=t.numbers,o=r.TRANSITION_DURATION_MS,a=r.TRANSITION_X1,s=r.TRANSITION_Y1,u=r.TRANSITION_X2,l=r.TRANSITION_Y2,f=r.TRANSITION_SCALE_ADJUSTMENT_X,d=r.TRANSITION_SCALE_ADJUSTMENT_Y,h=n.i(c.b)((i-this.startTime_)/o),_=n.i(c.b)((h-f)/(1-f)),m=h,p=this.startScaleY_;1===this.targetScale_&&(this.itemHeight_&&(p=Math.max(this.itemHeight_/this.dimensions_.height,p)),_=n.i(c.b)(h+f),m=n.i(c.b)((h-d)/(1-d)));var y=n.i(c.c)(_,a,s,u,l),v=n.i(c.c)(m,a,s,u,l);this.scaleX_=this.startScaleX_+(this.targetScale_-this.startScaleX_)*y;var g=1/(0===this.scaleX_?1:this.scaleX_);this.scaleY_=p+(this.targetScale_-p)*v;var I=1/(0===this.scaleY_?1:this.scaleY_);this.adapter_.setScale(this.scaleX_,this.scaleY_),this.adapter_.setInnerScale(g,I),h<1?this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}):(this.animationRequestId_=0,this.running_=!1,this.adapter_.removeClass(t.cssClasses.ANIMATING))}},{key:"animateMenu_",value:function(){var e=this;this.startTime_=this.adapter_.getAccurateTime(),this.startScaleX_=this.scaleX_,this.startScaleY_=this.scaleY_,this.targetScale_=this.isOpen_?1:0,this.running_||(this.running_=!0,this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}))}},{key:"focusOnOpen_",value:function(e){null===e?(this.adapter_.focus(),this.adapter_.isFocused()||this.adapter_.focusItemAtIndex(0)):this.adapter_.focusItemAtIndex(e)}},{key:"handleKeyboardDown_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,i=e.shiftKey,r="Tab"===n||9===t,o="ArrowUp"===n||38===t,a="ArrowDown"===n||40===t,s="Space"===n||32===t,u=this.adapter_.getFocusedItemIndex(),c=this.adapter_.getNumberOfItems()-1;return i&&r&&0===u?(this.adapter_.focusItemAtIndex(c),e.preventDefault(),!1):!i&&r&&u===c?(this.adapter_.focusItemAtIndex(0),e.preventDefault(),!1):((o||a||s)&&e.preventDefault(),o?0===u||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(c):this.adapter_.focusItemAtIndex(u-1):a&&(u===c||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(0):this.adapter_.focusItemAtIndex(u+1)),!0)}},{key:"handleKeyboardUp_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,i="Enter"===n||13===t,r="Space"===n||32===t,o="Escape"===n||27===t;return(i||r)&&this.handlePossibleSelected_(e),o&&(this.adapter_.notifyCancel(),this.close()),!0}},{key:"handlePossibleSelected_",value:function(e){var t=this,n=this.adapter_.getIndexForEventTarget(e.target);n<0||this.selectedTriggerTimerId_||(this.selectedTriggerTimerId_=setTimeout(function(){t.selectedTriggerTimerId_=0,t.close(),t.adapter_.notifySelected({index:n})},u.c.SELECTED_TRIGGER_DELAY))}},{key:"autoPosition_",value:function(){var e;if(this.adapter_.hasAnchor()){var t="top",n="left",r=this.adapter_.getAnchorDimensions(),o=this.adapter_.getWindowDimensions(),a=r.top+this.dimensions_.height-o.height,s=this.dimensions_.height-r.bottom;a>0&&s<a&&(t="bottom");var u=r.left+this.dimensions_.width-o.width,c=this.dimensions_.width-r.right,l=u>0,f=c>0;this.adapter_.isRtl()?(n="right",f&&u<c&&(n="left")):l&&c<u&&(n="right");var d=(e={},i(e,n,"0"),i(e,t,"0"),e);this.adapter_.setTransformOrigin(t+" "+n),this.adapter_.setPosition(d)}}},{key:"open",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=n.focusIndex,r=void 0===i?null:i;this.adapter_.saveFocus(),this.adapter_.addClass(t.cssClasses.ANIMATING),this.animationRequestId_=requestAnimationFrame(function(){e.dimensions_=e.adapter_.getInnerDimensions(),e.applyTransitionDelays_(),e.autoPosition_(),e.animateMenu_(),e.adapter_.addClass(t.cssClasses.OPEN),e.focusOnOpen_(r),e.adapter_.registerDocumentClickHandler(e.documentClickHandler_)}),this.isOpen_=!0}},{key:"close",value:function(){var e=this;this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_),this.adapter_.addClass(t.cssClasses.ANIMATING),requestAnimationFrame(function(){e.removeTransitionDelays_(),e.animateMenu_(),e.adapter_.removeClass(t.cssClasses.OPEN)}),this.isOpen_=!1,this.adapter_.restoreFocus()}},{key:"isOpen",value:function(){return this.isOpen_}}]),t}(s.MDCFoundation);t.a=d},14:function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(0),s=n(13),u=n(8);n.d(t,"b",function(){return s.a}),n.d(t,"a",function(){return l});var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=function(e){function t(){return i(this,t),r(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),c(t,[{key:"show",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.focusIndex,n=void 0===t?null:t;this.foundation_.open({focusIndex:n})}},{key:"hide",value:function(){this.foundation_.close()}},{key:"getDefaultFoundation",value:function(){var e=this;return new s.a({addClass:function(t){return e.root_.classList.add(t)},removeClass:function(t){return e.root_.classList.remove(t)},hasClass:function(t){return e.root_.classList.contains(t)},hasNecessaryDom:function(){return Boolean(e.itemsContainer_)},getInnerDimensions:function(){var t=e.itemsContainer_;return{width:t.offsetWidth,height:t.offsetHeight}},hasAnchor:function(){return e.root_.parentElement&&e.root_.parentElement.classList.contains("mdc-menu-anchor")},getAnchorDimensions:function(){return e.root_.parentElement.getBoundingClientRect()},getWindowDimensions:function(){return{width:window.innerWidth,height:window.innerHeight}},setScale:function(t,i){e.root_.style[n.i(u.a)(window)]="scale("+t+", "+i+")"},setInnerScale:function(t,i){e.itemsContainer_.style[n.i(u.a)(window)]="scale("+t+", "+i+")"},getNumberOfItems:function(){return e.items.length},registerInteractionHandler:function(t,n){return e.root_.addEventListener(t,n)},deregisterInteractionHandler:function(t,n){return e.root_.removeEventListener(t,n)},registerDocumentClickHandler:function(e){return document.addEventListener("click",e)},deregisterDocumentClickHandler:function(e){return document.removeEventListener("click",e)},getYParamsForItemAtIndex:function(t){var n=e.items[t];return{top:n.offsetTop,height:n.offsetHeight}},setTransitionDelayForItemAtIndex:function(t,n){return e.items[t].style.setProperty("transition-delay",n)},getIndexForEventTarget:function(t){return e.items.indexOf(t)},notifySelected:function(t){return e.emit(s.a.strings.SELECTED_EVENT,{index:t.index,item:e.items[t.index]})},notifyCancel:function(){return e.emit(s.a.strings.CANCEL_EVENT)},saveFocus:function(){e.previousFocus_=document.activeElement},restoreFocus:function(){e.previousFocus_&&e.previousFocus_.focus()},isFocused:function(){return document.activeElement===e.root_},focus:function(){return e.root_.focus()},getFocusedItemIndex:function(){return e.items.indexOf(document.activeElement)},focusItemAtIndex:function(t){return e.items[t].focus()},isRtl:function(){return"rtl"===getComputedStyle(e.root_).getPropertyValue("direction")},setTransformOrigin:function(t){e.root_.style[n.i(u.a)(window)+"-origin"]=t},setPosition:function(t){e.root_.style.left="left"in t?t.left:null,e.root_.style.right="right"in t?t.right:null,e.root_.style.top="top"in t?t.top:null,e.root_.style.bottom="bottom"in t?t.bottom:null},getAccurateTime:function(){return window.performance.now()}})}},{key:"open",get:function(){return this.foundation_.isOpen()},set:function(e){e?this.foundation_.open():this.foundation_.close()}},{key:"itemsContainer_",get:function(){return this.root_.querySelector(s.a.strings.ITEMS_SELECTOR)}},{key:"items",get:function(){var e=this.itemsContainer_;return[].slice.call(e.querySelectorAll(".mdc-list-item[role]"))}}],[{key:"attachTo",value:function(e){return new t(e)}}]),t}(a.MDCComponent)},2:function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=n(1),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;i(this,e),this.root_=t;for(var r=arguments.length,o=Array(r>2?r-2:0),a=2;a<r;a++)o[a-2]=arguments[a];this.initialize.apply(this,o),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return o(e,null,[{key:"attachTo",value:function(t){return new e(t,new r.a)}}]),o(e,[{key:"initialize",value:function(){}},{key:"getDefaultFoundation",value:function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")}},{key:"initialSyncWithDOM",value:function(){}},{key:"destroy",value:function(){this.foundation_.destroy()}},{key:"listen",value:function(e,t){this.root_.addEventListener(e,t)}},{key:"unlisten",value:function(e,t){this.root_.removeEventListener(e,t)}},{key:"emit",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=void 0;"function"==typeof CustomEvent?i=new CustomEvent(e,{detail:t,bubbles:n}):(i=document.createEvent("CustomEvent"),i.initCustomEvent(e,n,!1,t)),this.root_.dispatchEvent(i)}}]),e}();t.a=a},78:function(e,t,n){e.exports=n(9)},8:function(e,t,n){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(void 0===u||t){var n=e.document.createElement("div"),i="transform"in n.style?"transform":"webkitTransform";u=i}return u}function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(n,Math.max(t,e))}function o(e,t,n,i,r){return a(s(e,t,i),n,r)}function a(e,t,n){if(0===e||1===e)return e;var i=e*t,r=t+e*(n-t),o=n+e*(1-n);return i+=e*(r-i),r+=e*(o-r),i+e*(r-i)}function s(e,t,n){if(e<=0)return 0;if(e>=1)return 1;for(var i=e,r=0,o=1,s=0,u=0;u<8;u++){s=a(i,t,n);var c=(a(i+1e-6,t,n)-s)/1e-6;if(Math.abs(s-e)<1e-6)return i;if(Math.abs(c)<1e-6)break;s<e?r=i:o=i,i-=(s-e)/c}for(var l=0;Math.abs(s-e)>1e-6&&l<8;l++)s<e?(r=i,i=(i+o)/2):(o=i,i=(i+r)/2),s=a(i,t,n);return i}t.a=i,t.b=r,t.c=o;var u=void 0},9:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(14);n.d(t,"MDCSimpleMenu",function(){return i.a}),n.d(t,"MDCSimpleMenuFoundation",function(){return i.b})}})}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.menu=t():(e.mdc=e.mdc||{},e.mdc.menu=t())}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/assets/",t(t.s=85)}({0:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);n.d(t,"MDCFoundation",function(){return r.a});var i=n(2);n.d(t,"MDCComponent",function(){return i.a})},1:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),this.adapter_=t}return i(e,null,[{key:"cssClasses",get:function(){return{}}},{key:"strings",get:function(){return{}}},{key:"numbers",get:function(){return{}}},{key:"defaultAdapter",get:function(){return{}}}]),i(e,[{key:"init",value:function(){}},{key:"destroy",value:function(){}}]),e}();t.a=o},12:function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return o});var r={ROOT:"mdc-simple-menu",OPEN:"mdc-simple-menu--open",ANIMATING:"mdc-simple-menu--animating",TOP_RIGHT:"mdc-simple-menu--open-from-top-right",BOTTOM_LEFT:"mdc-simple-menu--open-from-bottom-left",BOTTOM_RIGHT:"mdc-simple-menu--open-from-bottom-right"},i={ITEMS_SELECTOR:".mdc-simple-menu__items",SELECTED_EVENT:"MDCSimpleMenu:selected",CANCEL_EVENT:"MDCSimpleMenu:cancel",ARIA_DISABLED_ATTR:"aria-disabled"},o={SELECTED_TRIGGER_DELAY:50,TRANSITION_DURATION_MS:300,TRANSITION_SCALE_ADJUSTMENT_X:.5,TRANSITION_SCALE_ADJUSTMENT_Y:.2,TRANSITION_X1:0,TRANSITION_Y1:0,TRANSITION_X2:.2,TRANSITION_Y2:1}},13:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),u=n(12),c=n(8),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=function(e){function t(e){i(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l(t.defaultAdapter,e)));return n.clickHandler_=function(e){return n.handlePossibleSelected_(e)},n.keydownHandler_=function(e){return n.handleKeyboardDown_(e)},n.keyupHandler_=function(e){return n.handleKeyboardUp_(e)},n.documentClickHandler_=function(e){n.adapter_.notifyCancel(),n.close(e)},n.isOpen_=!1,n.startScaleX_=0,n.startScaleY_=0,n.targetScale_=1,n.scaleX_=0,n.scaleY_=0,n.running_=!1,n.selectedTriggerTimerId_=0,n.animationRequestId_=0,n}return a(t,e),f(t,null,[{key:"cssClasses",get:function(){return u.a}},{key:"strings",get:function(){return u.b}},{key:"numbers",get:function(){return u.c}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},hasClass:function(){},hasNecessaryDom:function(){return!1},getAttributeForEventTarget:function(){},getInnerDimensions:function(){return{}},hasAnchor:function(){return!1},getAnchorDimensions:function(){return{}},getWindowDimensions:function(){return{}},setScale:function(){},setInnerScale:function(){},getNumberOfItems:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerBodyClickHandler:function(){},deregisterBodyClickHandler:function(){},getYParamsForItemAtIndex:function(){return{}},setTransitionDelayForItemAtIndex:function(){},getIndexForEventTarget:function(){return 0},notifySelected:function(){},notifyCancel:function(){},saveFocus:function(){},restoreFocus:function(){},isFocused:function(){return!1},focus:function(){},getFocusedItemIndex:function(){return-1},focusItemAtIndex:function(){},isRtl:function(){return!1},setTransformOrigin:function(){},setPosition:function(){},getAccurateTime:function(){return 0}}}}]),f(t,[{key:"init",value:function(){var e=t.cssClasses,n=e.ROOT,r=e.OPEN;if(!this.adapter_.hasClass(n))throw new Error(n+" class required in root element.");if(!this.adapter_.hasNecessaryDom())throw new Error("Required DOM nodes missing in "+n+" component.");this.adapter_.hasClass(r)&&(this.isOpen_=!0),this.adapter_.registerInteractionHandler("click",this.clickHandler_),this.adapter_.registerInteractionHandler("keyup",this.keyupHandler_),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_)}},{key:"destroy",value:function(){clearTimeout(this.selectedTriggerTimerId_),cancelAnimationFrame(this.animationRequestId_),this.adapter_.deregisterInteractionHandler("click",this.clickHandler_),this.adapter_.deregisterInteractionHandler("keyup",this.keyupHandler_),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_),this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_)}},{key:"applyTransitionDelays_",value:function(){for(var e=t.cssClasses,n=e.BOTTOM_LEFT,r=e.BOTTOM_RIGHT,i=this.adapter_.getNumberOfItems(),o=this.dimensions_.height,a=t.numbers.TRANSITION_DURATION_MS/1e3,s=t.numbers.TRANSITION_SCALE_ADJUSTMENT_Y,u=0;u<i;u++){var c=this.adapter_.getYParamsForItemAtIndex(u),l=c.top,f=c.height;this.itemHeight_=f;var d=l/o;(this.adapter_.hasClass(n)||this.adapter_.hasClass(r))&&(d=(o-l-f)/o);var _=(s+d*(1-s))*a;this.adapter_.setTransitionDelayForItemAtIndex(u,_.toFixed(3)+"s")}}},{key:"removeTransitionDelays_",value:function(){for(var e=this.adapter_.getNumberOfItems(),t=0;t<e;t++)this.adapter_.setTransitionDelayForItemAtIndex(t,null)}},{key:"animationLoop_",value:function(){var e=this,r=this.adapter_.getAccurateTime(),i=t.numbers,o=i.TRANSITION_DURATION_MS,a=i.TRANSITION_X1,s=i.TRANSITION_Y1,u=i.TRANSITION_X2,l=i.TRANSITION_Y2,f=i.TRANSITION_SCALE_ADJUSTMENT_X,d=i.TRANSITION_SCALE_ADJUSTMENT_Y,_=n.i(c.b)((r-this.startTime_)/o),h=n.i(c.b)((_-f)/(1-f)),m=_,p=this.startScaleY_;1===this.targetScale_&&(this.itemHeight_&&(p=Math.max(this.itemHeight_/this.dimensions_.height,p)),h=n.i(c.b)(_+f),m=n.i(c.b)((_-d)/(1-d)));var y=n.i(c.c)(h,a,s,u,l),g=n.i(c.c)(m,a,s,u,l);this.scaleX_=this.startScaleX_+(this.targetScale_-this.startScaleX_)*y;var v=1/(0===this.scaleX_?1:this.scaleX_);this.scaleY_=p+(this.targetScale_-p)*g;var I=1/(0===this.scaleY_?1:this.scaleY_);this.adapter_.setScale(this.scaleX_,this.scaleY_),this.adapter_.setInnerScale(v,I),_<1?this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}):(this.animationRequestId_=0,this.running_=!1,this.adapter_.removeClass(t.cssClasses.ANIMATING))}},{key:"animateMenu_",value:function(){var e=this;this.startTime_=this.adapter_.getAccurateTime(),this.startScaleX_=this.scaleX_,this.startScaleY_=this.scaleY_,this.targetScale_=this.isOpen_?1:0,this.running_||(this.running_=!0,this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}))}},{key:"focusOnOpen_",value:function(e){null===e?(this.adapter_.focus(),this.adapter_.isFocused()||this.adapter_.focusItemAtIndex(0)):this.adapter_.focusItemAtIndex(e)}},{key:"handleKeyboardDown_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r=e.shiftKey,i="Tab"===n||9===t,o="ArrowUp"===n||38===t,a="ArrowDown"===n||40===t,s="Space"===n||32===t,u=this.adapter_.getFocusedItemIndex(),c=this.adapter_.getNumberOfItems()-1;return r&&i&&0===u?(this.adapter_.focusItemAtIndex(c),e.preventDefault(),!1):!r&&i&&u===c?(this.adapter_.focusItemAtIndex(0),e.preventDefault(),!1):((o||a||s)&&e.preventDefault(),o?0===u||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(c):this.adapter_.focusItemAtIndex(u-1):a&&(u===c||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(0):this.adapter_.focusItemAtIndex(u+1)),!0)}},{key:"handleKeyboardUp_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r="Enter"===n||13===t,i="Space"===n||32===t,o="Escape"===n||27===t;return(r||i)&&this.handlePossibleSelected_(e),o&&(this.adapter_.notifyCancel(),this.close()),!0}},{key:"handlePossibleSelected_",value:function(e){var t=this;if("true"!==this.adapter_.getAttributeForEventTarget(e.target,u.b.ARIA_DISABLED_ATTR)){var n=this.adapter_.getIndexForEventTarget(e.target);n<0||this.selectedTriggerTimerId_||(this.selectedTriggerTimerId_=setTimeout(function(){t.selectedTriggerTimerId_=0,t.close(),t.adapter_.notifySelected({index:n})},u.c.SELECTED_TRIGGER_DELAY))}}},{key:"autoPosition_",value:function(){var e;if(this.adapter_.hasAnchor()){var t="top",n="left",i=this.adapter_.getAnchorDimensions(),o=this.adapter_.getWindowDimensions(),a=i.top+this.dimensions_.height-o.height,s=this.dimensions_.height-i.bottom;a>0&&s<a&&(t="bottom");var u=i.left+this.dimensions_.width-o.width,c=this.dimensions_.width-i.right,l=u>0,f=c>0;this.adapter_.isRtl()?(n="right",f&&u<c&&(n="left")):l&&c<u&&(n="right");var d=(e={},r(e,n,"0"),r(e,t,"0"),e);this.adapter_.setTransformOrigin(t+" "+n),this.adapter_.setPosition(d)}}},{key:"open",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.focusIndex,i=void 0===r?null:r;this.adapter_.saveFocus(),this.adapter_.addClass(t.cssClasses.ANIMATING),this.animationRequestId_=requestAnimationFrame(function(){e.dimensions_=e.adapter_.getInnerDimensions(),e.applyTransitionDelays_(),e.autoPosition_(),e.animateMenu_(),e.adapter_.addClass(t.cssClasses.OPEN),e.focusOnOpen_(i),e.adapter_.registerBodyClickHandler(e.documentClickHandler_)}),this.isOpen_=!0}},{key:"close",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;!!n&&"true"===this.adapter_.getAttributeForEventTarget(n.target,u.b.ARIA_DISABLED_ATTR)||(this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_),this.adapter_.addClass(t.cssClasses.ANIMATING),requestAnimationFrame(function(){e.removeTransitionDelays_(),e.animateMenu_(),e.adapter_.removeClass(t.cssClasses.OPEN)}),this.isOpen_=!1,this.adapter_.restoreFocus())}},{key:"isOpen",value:function(){return this.isOpen_}}]),t}(s.MDCFoundation);t.a=d},14:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.d(t,"a",function(){return l});var a=n(0),s=n(13),u=n(8);n.d(t,"b",function(){return s.a});var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=function(e){function t(){return r(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),c(t,[{key:"show",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.focusIndex,n=void 0===t?null:t;this.foundation_.open({focusIndex:n})}},{key:"hide",value:function(){this.foundation_.close()}},{key:"getDefaultFoundation",value:function(){var e=this;return new s.a({addClass:function(t){return e.root_.classList.add(t)},removeClass:function(t){return e.root_.classList.remove(t)},hasClass:function(t){return e.root_.classList.contains(t)},hasNecessaryDom:function(){return Boolean(e.itemsContainer_)},getAttributeForEventTarget:function(e,t){return e.getAttribute(t)},getInnerDimensions:function(){var t=e.itemsContainer_;return{width:t.offsetWidth,height:t.offsetHeight}},hasAnchor:function(){return e.root_.parentElement&&e.root_.parentElement.classList.contains("mdc-menu-anchor")},getAnchorDimensions:function(){return e.root_.parentElement.getBoundingClientRect()},getWindowDimensions:function(){return{width:window.innerWidth,height:window.innerHeight}},setScale:function(t,r){e.root_.style[n.i(u.a)(window)]="scale("+t+", "+r+")"},setInnerScale:function(t,r){e.itemsContainer_.style[n.i(u.a)(window)]="scale("+t+", "+r+")"},getNumberOfItems:function(){return e.items.length},registerInteractionHandler:function(t,n){return e.root_.addEventListener(t,n)},deregisterInteractionHandler:function(t,n){return e.root_.removeEventListener(t,n)},registerBodyClickHandler:function(e){return document.body.addEventListener("click",e)},deregisterBodyClickHandler:function(e){return document.body.removeEventListener("click",e)},getYParamsForItemAtIndex:function(t){var n=e.items[t];return{top:n.offsetTop,height:n.offsetHeight}},setTransitionDelayForItemAtIndex:function(t,n){return e.items[t].style.setProperty("transition-delay",n)},getIndexForEventTarget:function(t){return e.items.indexOf(t)},notifySelected:function(t){return e.emit(s.a.strings.SELECTED_EVENT,{index:t.index,item:e.items[t.index]})},notifyCancel:function(){return e.emit(s.a.strings.CANCEL_EVENT)},saveFocus:function(){e.previousFocus_=document.activeElement},restoreFocus:function(){e.previousFocus_&&e.previousFocus_.focus()},isFocused:function(){return document.activeElement===e.root_},focus:function(){return e.root_.focus()},getFocusedItemIndex:function(){return e.items.indexOf(document.activeElement)},focusItemAtIndex:function(t){return e.items[t].focus()},isRtl:function(){return"rtl"===getComputedStyle(e.root_).getPropertyValue("direction")},setTransformOrigin:function(t){e.root_.style[n.i(u.a)(window)+"-origin"]=t},setPosition:function(t){e.root_.style.left="left"in t?t.left:null,e.root_.style.right="right"in t?t.right:null,e.root_.style.top="top"in t?t.top:null,e.root_.style.bottom="bottom"in t?t.bottom:null},getAccurateTime:function(){return window.performance.now()}})}},{key:"open",get:function(){return this.foundation_.isOpen()},set:function(e){e?this.foundation_.open():this.foundation_.close()}},{key:"itemsContainer_",get:function(){return this.root_.querySelector(s.a.strings.ITEMS_SELECTOR)}},{key:"items",get:function(){var e=this.itemsContainer_;return[].slice.call(e.querySelectorAll(".mdc-list-item[role]"))}}],[{key:"attachTo",value:function(e){return new t(e)}}]),t}(a.MDCComponent)},2:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(1),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;r(this,e),this.root_=t;for(var i=arguments.length,o=Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];this.initialize.apply(this,o),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return o(e,null,[{key:"attachTo",value:function(t){return new e(t,new i.a)}}]),o(e,[{key:"initialize",value:function(){}},{key:"getDefaultFoundation",value:function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")}},{key:"initialSyncWithDOM",value:function(){}},{key:"destroy",value:function(){this.foundation_.destroy()}},{key:"listen",value:function(e,t){this.root_.addEventListener(e,t)}},{key:"unlisten",value:function(e,t){this.root_.removeEventListener(e,t)}},{key:"emit",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=void 0;"function"==typeof CustomEvent?r=new CustomEvent(e,{detail:t,bubbles:n}):(r=document.createEvent("CustomEvent"),r.initCustomEvent(e,n,!1,t)),this.root_.dispatchEvent(r)}}]),e}();t.a=a},8:function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(void 0===u||t){var n=e.document.createElement("div"),r="transform"in n.style?"transform":"webkitTransform";u=r}return u}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(n,Math.max(t,e))}function o(e,t,n,r,i){return a(s(e,t,r),n,i)}function a(e,t,n){if(0===e||1===e)return e;var r=e*t,i=t+e*(n-t),o=n+e*(1-n);return r+=e*(i-r),i+=e*(o-i),r+e*(i-r)}function s(e,t,n){if(e<=0)return 0;if(e>=1)return 1;for(var r=e,i=0,o=1,s=0,u=0;u<8;u++){s=a(r,t,n);var c=(a(r+1e-6,t,n)-s)/1e-6;if(Math.abs(s-e)<1e-6)return r;if(Math.abs(c)<1e-6)break;s<e?i=r:o=r,r-=(s-e)/c}for(var l=0;Math.abs(s-e)>1e-6&&l<8;l++)s<e?(i=r,r=(r+o)/2):(o=r,r=(r+i)/2),s=a(r,t,n);return r}t.a=r,t.b=i,t.c=o;var u=void 0},85:function(e,t,n){e.exports=n(9)},9:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(14);n.d(t,"MDCSimpleMenu",function(){return r.a}),n.d(t,"MDCSimpleMenuFoundation",function(){return r.b})}})}); |
{ | ||
"name": "@material/menu", | ||
"version": "0.2.7", | ||
"version": "0.3.0", | ||
"description": "The Material Components for the web menu component", | ||
@@ -5,0 +5,0 @@ "license": "Apache-2.0", |
@@ -139,2 +139,20 @@ <!--docs: | ||
#### Disabled menu items | ||
When used in components such as MDC Menu, `mdc-list-item`'s can be disabled. | ||
To disable a list item, set `aria-disabled` to `"true"`, and set `tabindex` to `"-1"`. | ||
```html | ||
<div class="mdc-simple-menu" tabindex="-1"> | ||
<ul class="mdc-simple-menu__items mdc-list" role="menu" aria-hidden="true"> | ||
<li class="mdc-list-item" role="menuitem" tabindex="0"> | ||
A Menu Item | ||
</li> | ||
<li class="mdc-list-item" role="menuitem" tabindex="-1" aria-disabled="true"> | ||
Disabled Menu Item | ||
</li> | ||
</ul> | ||
</div> | ||
``` | ||
### Using the JS Component | ||
@@ -251,2 +269,3 @@ | ||
| `hasNecessaryDom() => boolean` | Returns boolean indicating whether the necessary DOM is present (namely, the `mdc-simple-menu__items` container). | | ||
| `getAttributeForEventTarget(target: EventTarget, attributeName: string) => string` | Returns the value of a given attribute on an event target. | | ||
| `getInnerDimensions() => {width: number, height: number}` | Returns an object with the items container width and height | | ||
@@ -261,4 +280,4 @@ | `hasAnchor: () => boolean` | Returns whether the menu has an anchor for positioning. | | ||
| `deregisterInteractionHandler(type: string, handler: EventListener) => void` | Removes an event listener `handler` for event type `type`. | | ||
| `registerDocumentClickHandler(handler: EventListener) => void` | Adds an event listener `handler` for event type 'click'. | | ||
| `deregisterDocumentClickHandler(handler: EventListener) => void` | Removes an event listener `handler` for event type 'click'. | | ||
| `registerBodyClickHandler(handler: EventListener) => void` | Adds an event listener `handler` for event type 'click'. | | ||
| `deregisterBodyClickHandler(handler: EventListener) => void` | Removes an event listener `handler` for event type 'click'. | | ||
| `getYParamsForItemAtIndex(index: number) => {top: number, height: number}` | Returns an object with the offset top and offset height values for the _item_ element inside the items container at the provided index. Note that this is an index into the list of _item_ elements, and not necessarily every child element of the list. | | ||
@@ -265,0 +284,0 @@ | `setTransitionDelayForItemAtIndex(index: number, value: string) => void` | Sets the transition delay on the element inside the items container at the provided index to the provided value. The same notice for `index` applies here as above. | |
@@ -29,2 +29,3 @@ /** | ||
CANCEL_EVENT: 'MDCSimpleMenu:cancel', | ||
ARIA_DISABLED_ATTR: 'aria-disabled', | ||
}; | ||
@@ -31,0 +32,0 @@ |
@@ -40,2 +40,3 @@ /** | ||
hasNecessaryDom: () => /* boolean */ false, | ||
getAttributeForEventTarget: (/* target: EventTarget, attributeName: string */) => {}, | ||
getInnerDimensions: () => /* { width: number, height: number } */ ({}), | ||
@@ -51,4 +52,4 @@ hasAnchor: () => /* boolean */ false, | ||
deregisterInteractionHandler: (/* type: string, handler: EventListener */) => {}, | ||
registerDocumentClickHandler: (/* handler: EventListener */) => {}, | ||
deregisterDocumentClickHandler: (/* handler: EventListener */) => {}, | ||
registerBodyClickHandler: (/* handler: EventListener */) => {}, | ||
deregisterBodyClickHandler: (/* handler: EventListener */) => {}, | ||
getYParamsForItemAtIndex: (/* index: number */) => /* {top: number, height: number} */ ({}), | ||
@@ -77,5 +78,5 @@ setTransitionDelayForItemAtIndex: (/* index: number, value: string */) => {}, | ||
this.keyupHandler_ = (evt) => this.handleKeyboardUp_(evt); | ||
this.documentClickHandler_ = () => { | ||
this.documentClickHandler_ = (evt) => { | ||
this.adapter_.notifyCancel(); | ||
this.close(); | ||
this.close(evt); | ||
}; | ||
@@ -120,3 +121,3 @@ this.isOpen_ = false; | ||
this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_); | ||
this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_); | ||
this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_); | ||
} | ||
@@ -307,2 +308,5 @@ | ||
handlePossibleSelected_(evt) { | ||
if (this.adapter_.getAttributeForEventTarget(evt.target, strings.ARIA_DISABLED_ATTR) === 'true') { | ||
return; | ||
} | ||
const targetIndex = this.adapter_.getIndexForEventTarget(evt.target); | ||
@@ -380,3 +384,3 @@ if (targetIndex < 0) { | ||
this.focusOnOpen_(focusIndex); | ||
this.adapter_.registerDocumentClickHandler(this.documentClickHandler_); | ||
this.adapter_.registerBodyClickHandler(this.documentClickHandler_); | ||
}); | ||
@@ -387,4 +391,12 @@ this.isOpen_ = true; | ||
// Close the menu. | ||
close() { | ||
this.adapter_.deregisterDocumentClickHandler(this.documentClickHandler_); | ||
close(evt = null) { | ||
const targetIsDisabled = evt ? | ||
this.adapter_.getAttributeForEventTarget(evt.target, strings.ARIA_DISABLED_ATTR) === 'true' : | ||
false; | ||
if (targetIsDisabled) { | ||
return; | ||
} | ||
this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_); | ||
this.adapter_.addClass(MDCSimpleMenuFoundation.cssClasses.ANIMATING); | ||
@@ -391,0 +403,0 @@ requestAnimationFrame(() => { |
@@ -68,2 +68,3 @@ /** | ||
hasNecessaryDom: () => Boolean(this.itemsContainer_), | ||
getAttributeForEventTarget: (target, attributeName) => target.getAttribute(attributeName), | ||
getInnerDimensions: () => { | ||
@@ -87,4 +88,4 @@ const {itemsContainer_: itemsContainer} = this; | ||
deregisterInteractionHandler: (type, handler) => this.root_.removeEventListener(type, handler), | ||
registerDocumentClickHandler: (handler) => document.addEventListener('click', handler), | ||
deregisterDocumentClickHandler: (handler) => document.removeEventListener('click', handler), | ||
registerBodyClickHandler: (handler) => document.body.addEventListener('click', handler), | ||
deregisterBodyClickHandler: (handler) => document.body.removeEventListener('click', handler), | ||
getYParamsForItemAtIndex: (index) => { | ||
@@ -91,0 +92,0 @@ const {offsetTop: top, offsetHeight: height} = this.items[index]; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
134256
2110
309
0