/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/material-components/material-components-web/blob/master/LICENSE */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["mdc"] = factory(); else root["mdc"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./packages/material-components-web/index.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./packages/material-components-web/index.ts": /*!***************************************************!*\ !*** ./packages/material-components-web/index.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __importDefault(__webpack_require__(/*! @material/auto-init/index */ "./packages/mdc-auto-init/index.ts")); exports.autoInit = index_1.default; var base = __importStar(__webpack_require__(/*! @material/base/index */ "./packages/mdc-base/index.ts")); exports.base = base; var checkbox = __importStar(__webpack_require__(/*! @material/checkbox/index */ "./packages/mdc-checkbox/index.ts")); exports.checkbox = checkbox; var chips = __importStar(__webpack_require__(/*! @material/chips/index */ "./packages/mdc-chips/index.ts")); exports.chips = chips; var dataTable = __importStar(__webpack_require__(/*! @material/data-table/index */ "./packages/mdc-data-table/index.ts")); exports.dataTable = dataTable; var dialog = __importStar(__webpack_require__(/*! @material/dialog/index */ "./packages/mdc-dialog/index.ts")); exports.dialog = dialog; var dom = __importStar(__webpack_require__(/*! @material/dom/index */ "./packages/mdc-dom/index.ts")); exports.dom = dom; var drawer = __importStar(__webpack_require__(/*! @material/drawer/index */ "./packages/mdc-drawer/index.ts")); exports.drawer = drawer; var floatingLabel = __importStar(__webpack_require__(/*! @material/floating-label/index */ "./packages/mdc-floating-label/index.ts")); exports.floatingLabel = floatingLabel; var formField = __importStar(__webpack_require__(/*! @material/form-field/index */ "./packages/mdc-form-field/index.ts")); exports.formField = formField; var gridList = __importStar(__webpack_require__(/*! @material/grid-list/index */ "./packages/mdc-grid-list/index.ts")); exports.gridList = gridList; var iconButton = __importStar(__webpack_require__(/*! @material/icon-button/index */ "./packages/mdc-icon-button/index.ts")); exports.iconButton = iconButton; var lineRipple = __importStar(__webpack_require__(/*! @material/line-ripple/index */ "./packages/mdc-line-ripple/index.ts")); exports.lineRipple = lineRipple; var linearProgress = __importStar(__webpack_require__(/*! @material/linear-progress/index */ "./packages/mdc-linear-progress/index.ts")); exports.linearProgress = linearProgress; var list = __importStar(__webpack_require__(/*! @material/list/index */ "./packages/mdc-list/index.ts")); exports.list = list; var menuSurface = __importStar(__webpack_require__(/*! @material/menu-surface/index */ "./packages/mdc-menu-surface/index.ts")); exports.menuSurface = menuSurface; var menu = __importStar(__webpack_require__(/*! @material/menu/index */ "./packages/mdc-menu/index.ts")); exports.menu = menu; var notchedOutline = __importStar(__webpack_require__(/*! @material/notched-outline/index */ "./packages/mdc-notched-outline/index.ts")); exports.notchedOutline = notchedOutline; var radio = __importStar(__webpack_require__(/*! @material/radio/index */ "./packages/mdc-radio/index.ts")); exports.radio = radio; var ripple = __importStar(__webpack_require__(/*! @material/ripple/index */ "./packages/mdc-ripple/index.ts")); exports.ripple = ripple; var select = __importStar(__webpack_require__(/*! @material/select/index */ "./packages/mdc-select/index.ts")); exports.select = select; var slider = __importStar(__webpack_require__(/*! @material/slider/index */ "./packages/mdc-slider/index.ts")); exports.slider = slider; var snackbar = __importStar(__webpack_require__(/*! @material/snackbar/index */ "./packages/mdc-snackbar/index.ts")); exports.snackbar = snackbar; var switchControl = __importStar(__webpack_require__(/*! @material/switch/index */ "./packages/mdc-switch/index.ts")); exports.switchControl = switchControl; var tabBar = __importStar(__webpack_require__(/*! @material/tab-bar/index */ "./packages/mdc-tab-bar/index.ts")); exports.tabBar = tabBar; var tabIndicator = __importStar(__webpack_require__(/*! @material/tab-indicator/index */ "./packages/mdc-tab-indicator/index.ts")); exports.tabIndicator = tabIndicator; var tabScroller = __importStar(__webpack_require__(/*! @material/tab-scroller/index */ "./packages/mdc-tab-scroller/index.ts")); exports.tabScroller = tabScroller; var tab = __importStar(__webpack_require__(/*! @material/tab/index */ "./packages/mdc-tab/index.ts")); exports.tab = tab; var textField = __importStar(__webpack_require__(/*! @material/textfield/index */ "./packages/mdc-textfield/index.ts")); exports.textField = textField; var topAppBar = __importStar(__webpack_require__(/*! @material/top-app-bar/index */ "./packages/mdc-top-app-bar/index.ts")); exports.topAppBar = topAppBar; // Register all components index_1.default.register('MDCCheckbox', checkbox.MDCCheckbox); index_1.default.register('MDCChip', chips.MDCChip); index_1.default.register('MDCChipSet', chips.MDCChipSet); index_1.default.register('MDCDataTable', dataTable.MDCDataTable); index_1.default.register('MDCDialog', dialog.MDCDialog); index_1.default.register('MDCDrawer', drawer.MDCDrawer); index_1.default.register('MDCFloatingLabel', floatingLabel.MDCFloatingLabel); index_1.default.register('MDCFormField', formField.MDCFormField); index_1.default.register('MDCGridList', gridList.MDCGridList); index_1.default.register('MDCIconButtonToggle', iconButton.MDCIconButtonToggle); index_1.default.register('MDCLineRipple', lineRipple.MDCLineRipple); index_1.default.register('MDCLinearProgress', linearProgress.MDCLinearProgress); index_1.default.register('MDCList', list.MDCList); index_1.default.register('MDCMenu', menu.MDCMenu); index_1.default.register('MDCMenuSurface', menuSurface.MDCMenuSurface); index_1.default.register('MDCNotchedOutline', notchedOutline.MDCNotchedOutline); index_1.default.register('MDCRadio', radio.MDCRadio); index_1.default.register('MDCRipple', ripple.MDCRipple); index_1.default.register('MDCSelect', select.MDCSelect); index_1.default.register('MDCSlider', slider.MDCSlider); index_1.default.register('MDCSnackbar', snackbar.MDCSnackbar); index_1.default.register('MDCSwitch', switchControl.MDCSwitch); index_1.default.register('MDCTabBar', tabBar.MDCTabBar); index_1.default.register('MDCTextField', textField.MDCTextField); index_1.default.register('MDCTopAppBar', topAppBar.MDCTopAppBar); /***/ }), /***/ "./packages/mdc-animation/util.ts": /*!****************************************!*\ !*** ./packages/mdc-animation/util.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssPropertyNameMap = { animation: { prefixed: '-webkit-animation', standard: 'animation' }, transform: { prefixed: '-webkit-transform', standard: 'transform' }, transition: { prefixed: '-webkit-transition', standard: 'transition' } }; var jsEventTypeMap = { animationend: { cssProperty: 'animation', prefixed: 'webkitAnimationEnd', standard: 'animationend' }, animationiteration: { cssProperty: 'animation', prefixed: 'webkitAnimationIteration', standard: 'animationiteration' }, animationstart: { cssProperty: 'animation', prefixed: 'webkitAnimationStart', standard: 'animationstart' }, transitionend: { cssProperty: 'transition', prefixed: 'webkitTransitionEnd', standard: 'transitionend' } }; function isWindow(windowObj) { return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function'; } function getCorrectPropertyName(windowObj, cssProperty) { if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) { var el = windowObj.document.createElement('div'); var _a = cssPropertyNameMap[cssProperty], standard = _a.standard, prefixed = _a.prefixed; var isStandard = standard in el.style; return isStandard ? standard : prefixed; } return cssProperty; } exports.getCorrectPropertyName = getCorrectPropertyName; function getCorrectEventName(windowObj, eventType) { if (isWindow(windowObj) && eventType in jsEventTypeMap) { var el = windowObj.document.createElement('div'); var _a = jsEventTypeMap[eventType], standard = _a.standard, prefixed = _a.prefixed, cssProperty = _a.cssProperty; var isStandard = cssProperty in el.style; return isStandard ? standard : prefixed; } return eventType; } exports.getCorrectEventName = getCorrectEventName; /***/ }), /***/ "./packages/mdc-auto-init/constants.ts": /*!*********************************************!*\ !*** ./packages/mdc-auto-init/constants.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.strings = { AUTO_INIT_ATTR: 'data-mdc-auto-init', AUTO_INIT_STATE_ATTR: 'data-mdc-auto-init-state', INITIALIZED_STATE: 'initialized' }; /***/ }), /***/ "./packages/mdc-auto-init/index.ts": /*!*****************************************!*\ !*** ./packages/mdc-auto-init/index.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __values = this && this.__values || function (o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function next() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; }; Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-auto-init/constants.ts"); var AUTO_INIT_ATTR = constants_1.strings.AUTO_INIT_ATTR, AUTO_INIT_STATE_ATTR = constants_1.strings.AUTO_INIT_STATE_ATTR, INITIALIZED_STATE = constants_1.strings.INITIALIZED_STATE; var registry = {}; var CONSOLE_WARN = console.warn.bind(console); // tslint:disable-line:no-console function emit(evtType, evtData, shouldBubble) { if (shouldBubble === void 0) { shouldBubble = false; } var evt; if (typeof CustomEvent === 'function') { evt = new CustomEvent(evtType, { bubbles: shouldBubble, detail: evtData }); } else { evt = document.createEvent('CustomEvent'); evt.initCustomEvent(evtType, shouldBubble, false, evtData); } document.dispatchEvent(evt); } /* istanbul ignore next: optional argument is not a branch statement */ /** * Auto-initializes all MDC components on a page. */ function mdcAutoInit(root) { var e_1, _a; if (root === void 0) { root = document; } var components = []; var nodes = [].slice.call(root.querySelectorAll("[" + AUTO_INIT_ATTR + "]")); nodes = nodes.filter(function (node) { return node.getAttribute(AUTO_INIT_STATE_ATTR) !== INITIALIZED_STATE; }); try { for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) { var node = nodes_1_1.value; var ctorName = node.getAttribute(AUTO_INIT_ATTR); if (!ctorName) { throw new Error('(mdc-auto-init) Constructor name must be given.'); } var Constructor = registry[ctorName]; // tslint:disable-line:variable-name if (typeof Constructor !== 'function') { throw new Error("(mdc-auto-init) Could not find constructor in registry for " + ctorName); } // TODO: Should we make an eslint rule for an attachTo() static method? // See https://github.com/Microsoft/TypeScript/issues/14600 for discussion of static interface support in TS var component = Constructor.attachTo(node); Object.defineProperty(node, ctorName, { configurable: true, enumerable: false, value: component, writable: false }); components.push(component); node.setAttribute(AUTO_INIT_STATE_ATTR, INITIALIZED_STATE); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1); } finally { if (e_1) throw e_1.error; } } emit('MDCAutoInit:End', {}); return components; } exports.mdcAutoInit = mdcAutoInit; // Constructor is PascalCased because it is a direct reference to a class, rather than an instance of a class. // tslint:disable-next-line:variable-name mdcAutoInit.register = function (componentName, Constructor, warn) { if (warn === void 0) { warn = CONSOLE_WARN; } if (typeof Constructor !== 'function') { throw new Error("(mdc-auto-init) Invalid Constructor value: " + Constructor + ". Expected function."); } var registryValue = registry[componentName]; if (registryValue) { warn("(mdc-auto-init) Overriding registration for " + componentName + " with " + Constructor + ". Was: " + registryValue); } registry[componentName] = Constructor; }; mdcAutoInit.deregister = function (componentName) { delete registry[componentName]; }; mdcAutoInit.deregisterAll = function () { var keys = Object.keys(registry); keys.forEach(this.deregister, this); }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = mdcAutoInit; /***/ }), /***/ "./packages/mdc-base/component.ts": /*!****************************************!*\ !*** ./packages/mdc-base/component.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = this && this.__spread || function () { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); }return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-base/foundation.ts"); var MDCComponent = /** @class */function () { function MDCComponent(root, foundation) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } this.root_ = root; this.initialize.apply(this, __spread(args)); // Note that we initialize foundation here and not within the constructor's default param so that // this.root_ is defined and can be used within the foundation class. this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation; this.foundation_.init(); this.initialSyncWithDOM(); } MDCComponent.attachTo = function (root) { // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and // returns an instantiated component with its root set to that element. Also note that in the cases of // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized // from getDefaultFoundation(). return new MDCComponent(root, new foundation_1.MDCFoundation({})); }; /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */ MDCComponent.prototype.initialize = function () { var _args = []; for (var _i = 0; _i < arguments.length; _i++) { _args[_i] = arguments[_i]; } // Subclasses can override this to do any additional setup work that would be considered part of a // "constructor". Essentially, it is a hook into the parent constructor before the foundation is // initialized. Any additional arguments besides root and foundation will be passed in here. }; MDCComponent.prototype.getDefaultFoundation = function () { // Subclasses must override this method to return a properly configured foundation class for the // component. throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class'); }; MDCComponent.prototype.initialSyncWithDOM = function () { // Subclasses should override this method if they need to perform work to synchronize with a host DOM // object. An example of this would be a form control wrapper that needs to synchronize its internal state // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor. }; MDCComponent.prototype.destroy = function () { // Subclasses may implement this method to release any resources / deregister any listeners they have // attached. An example of this might be deregistering a resize event from the window object. this.foundation_.destroy(); }; MDCComponent.prototype.listen = function (evtType, handler, options) { this.root_.addEventListener(evtType, handler, options); }; MDCComponent.prototype.unlisten = function (evtType, handler, options) { this.root_.removeEventListener(evtType, handler, options); }; /** * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data. */ MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) { if (shouldBubble === void 0) { shouldBubble = false; } var evt; if (typeof CustomEvent === 'function') { evt = new CustomEvent(evtType, { bubbles: shouldBubble, detail: evtData }); } else { evt = document.createEvent('CustomEvent'); evt.initCustomEvent(evtType, shouldBubble, false, evtData); } this.root_.dispatchEvent(evt); }; return MDCComponent; }(); exports.MDCComponent = MDCComponent; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCComponent; /***/ }), /***/ "./packages/mdc-base/foundation.ts": /*!*****************************************!*\ !*** ./packages/mdc-base/foundation.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var MDCFoundation = /** @class */function () { function MDCFoundation(adapter) { if (adapter === void 0) { adapter = {}; } this.adapter_ = adapter; } Object.defineProperty(MDCFoundation, "cssClasses", { get: function get() { // Classes extending MDCFoundation should implement this method to return an object which exports every // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'} return {}; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFoundation, "strings", { get: function get() { // Classes extending MDCFoundation should implement this method to return an object which exports all // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'} return {}; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFoundation, "numbers", { get: function get() { // Classes extending MDCFoundation should implement this method to return an object which exports all // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350} return {}; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFoundation, "defaultAdapter", { get: function get() { // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter // validation. return {}; }, enumerable: true, configurable: true }); MDCFoundation.prototype.init = function () { // Subclasses should override this method to perform initialization routines (registering events, etc.) }; MDCFoundation.prototype.destroy = function () { // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.) }; return MDCFoundation; }(); exports.MDCFoundation = MDCFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCFoundation; /***/ }), /***/ "./packages/mdc-base/index.ts": /*!************************************!*\ !*** ./packages/mdc-base/index.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-base/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-base/foundation.ts")); /***/ }), /***/ "./packages/mdc-checkbox/component.ts": /*!********************************************!*\ !*** ./packages/mdc-checkbox/component.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(/*! @material/animation/util */ "./packages/mdc-animation/util.ts"); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-checkbox/foundation.ts"); var CB_PROTO_PROPS = ['checked', 'indeterminate']; var MDCCheckbox = /** @class */function (_super) { __extends(MDCCheckbox, _super); function MDCCheckbox() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.ripple_ = _this.createRipple_(); return _this; } MDCCheckbox.attachTo = function (root) { return new MDCCheckbox(root); }; Object.defineProperty(MDCCheckbox.prototype, "ripple", { get: function get() { return this.ripple_; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckbox.prototype, "checked", { get: function get() { return this.nativeControl_.checked; }, set: function set(checked) { this.nativeControl_.checked = checked; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckbox.prototype, "indeterminate", { get: function get() { return this.nativeControl_.indeterminate; }, set: function set(indeterminate) { this.nativeControl_.indeterminate = indeterminate; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckbox.prototype, "disabled", { get: function get() { return this.nativeControl_.disabled; }, set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckbox.prototype, "value", { get: function get() { return this.nativeControl_.value; }, set: function set(value) { this.nativeControl_.value = value; }, enumerable: true, configurable: true }); MDCCheckbox.prototype.initialSyncWithDOM = function () { var _this = this; this.handleChange_ = function () { return _this.foundation_.handleChange(); }; this.handleAnimationEnd_ = function () { return _this.foundation_.handleAnimationEnd(); }; this.nativeControl_.addEventListener('change', this.handleChange_); this.listen(util_1.getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_); this.installPropertyChangeHooks_(); }; MDCCheckbox.prototype.destroy = function () { this.ripple_.destroy(); this.nativeControl_.removeEventListener('change', this.handleChange_); this.unlisten(util_1.getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_); this.uninstallPropertyChangeHooks_(); _super.prototype.destroy.call(this); }; MDCCheckbox.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, forceLayout: function forceLayout() { return _this.root_.offsetWidth; }, hasNativeControl: function hasNativeControl() { return !!_this.nativeControl_; }, isAttachedToDOM: function isAttachedToDOM() { return Boolean(_this.root_.parentNode); }, isChecked: function isChecked() { return _this.checked; }, isIndeterminate: function isIndeterminate() { return _this.indeterminate; }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, removeNativeControlAttr: function removeNativeControlAttr(attr) { return _this.nativeControl_.removeAttribute(attr); }, setNativeControlAttr: function setNativeControlAttr(attr, value) { return _this.nativeControl_.setAttribute(attr, value); }, setNativeControlDisabled: function setNativeControlDisabled(disabled) { return _this.nativeControl_.disabled = disabled; } }; return new foundation_2.MDCCheckboxFoundation(adapter); }; MDCCheckbox.prototype.createRipple_ = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), { deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.nativeControl_.removeEventListener(evtType, handler, events_1.applyPassive()); }, isSurfaceActive: function isSurfaceActive() { return ponyfill_1.matches(_this.nativeControl_, ':active'); }, isUnbounded: function isUnbounded() { return true; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.nativeControl_.addEventListener(evtType, handler, events_1.applyPassive()); } }); return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter)); }; MDCCheckbox.prototype.installPropertyChangeHooks_ = function () { var _this = this; var nativeCb = this.nativeControl_; var cbProto = Object.getPrototypeOf(nativeCb); CB_PROTO_PROPS.forEach(function (controlState) { var desc = Object.getOwnPropertyDescriptor(cbProto, controlState); // We have to check for this descriptor, since some browsers (Safari) don't support its return. // See: https://bugs.webkit.org/show_bug.cgi?id=49739 if (!validDescriptor(desc)) { return; } // Type cast is needed for compatibility with Closure Compiler. var nativeGetter = desc.get; var nativeCbDesc = { configurable: desc.configurable, enumerable: desc.enumerable, get: nativeGetter, set: function set(state) { desc.set.call(nativeCb, state); _this.foundation_.handleChange(); } }; Object.defineProperty(nativeCb, controlState, nativeCbDesc); }); }; MDCCheckbox.prototype.uninstallPropertyChangeHooks_ = function () { var nativeCb = this.nativeControl_; var cbProto = Object.getPrototypeOf(nativeCb); CB_PROTO_PROPS.forEach(function (controlState) { var desc = Object.getOwnPropertyDescriptor(cbProto, controlState); if (!validDescriptor(desc)) { return; } Object.defineProperty(nativeCb, controlState, desc); }); }; Object.defineProperty(MDCCheckbox.prototype, "nativeControl_", { get: function get() { var NATIVE_CONTROL_SELECTOR = foundation_2.MDCCheckboxFoundation.strings.NATIVE_CONTROL_SELECTOR; var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR); if (!el) { throw new Error("Checkbox component requires a " + NATIVE_CONTROL_SELECTOR + " element"); } return el; }, enumerable: true, configurable: true }); return MDCCheckbox; }(component_1.MDCComponent); exports.MDCCheckbox = MDCCheckbox; function validDescriptor(inputPropDesc) { return !!inputPropDesc && typeof inputPropDesc.set === 'function'; } /***/ }), /***/ "./packages/mdc-checkbox/constants.ts": /*!********************************************!*\ !*** ./packages/mdc-checkbox/constants.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate', ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked', ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked', ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked', ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked', ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate', BACKGROUND: 'mdc-checkbox__background', CHECKED: 'mdc-checkbox--checked', CHECKMARK: 'mdc-checkbox__checkmark', CHECKMARK_PATH: 'mdc-checkbox__checkmark-path', DISABLED: 'mdc-checkbox--disabled', INDETERMINATE: 'mdc-checkbox--indeterminate', MIXEDMARK: 'mdc-checkbox__mixedmark', NATIVE_CONTROL: 'mdc-checkbox__native-control', ROOT: 'mdc-checkbox', SELECTED: 'mdc-checkbox--selected', UPGRADED: 'mdc-checkbox--upgraded' }; exports.strings = { ARIA_CHECKED_ATTR: 'aria-checked', ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed', NATIVE_CONTROL_SELECTOR: '.mdc-checkbox__native-control', TRANSITION_STATE_CHECKED: 'checked', TRANSITION_STATE_INDETERMINATE: 'indeterminate', TRANSITION_STATE_INIT: 'init', TRANSITION_STATE_UNCHECKED: 'unchecked' }; exports.numbers = { ANIM_END_LATCH_MS: 250 }; /***/ }), /***/ "./packages/mdc-checkbox/foundation.ts": /*!*********************************************!*\ !*** ./packages/mdc-checkbox/foundation.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-checkbox/constants.ts"); var MDCCheckboxFoundation = /** @class */function (_super) { __extends(MDCCheckboxFoundation, _super); function MDCCheckboxFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCCheckboxFoundation.defaultAdapter, adapter)) || this; _this.currentCheckState_ = constants_1.strings.TRANSITION_STATE_INIT; _this.currentAnimationClass_ = ''; _this.animEndLatchTimer_ = 0; _this.enableAnimationEndHandler_ = false; return _this; } Object.defineProperty(MDCCheckboxFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckboxFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckboxFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCCheckboxFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, forceLayout: function forceLayout() { return undefined; }, hasNativeControl: function hasNativeControl() { return false; }, isAttachedToDOM: function isAttachedToDOM() { return false; }, isChecked: function isChecked() { return false; }, isIndeterminate: function isIndeterminate() { return false; }, removeClass: function removeClass() { return undefined; }, removeNativeControlAttr: function removeNativeControlAttr() { return undefined; }, setNativeControlAttr: function setNativeControlAttr() { return undefined; }, setNativeControlDisabled: function setNativeControlDisabled() { return undefined; } }; }, enumerable: true, configurable: true }); MDCCheckboxFoundation.prototype.init = function () { this.currentCheckState_ = this.determineCheckState_(); this.updateAriaChecked_(); this.adapter_.addClass(constants_1.cssClasses.UPGRADED); }; MDCCheckboxFoundation.prototype.destroy = function () { clearTimeout(this.animEndLatchTimer_); }; MDCCheckboxFoundation.prototype.setDisabled = function (disabled) { this.adapter_.setNativeControlDisabled(disabled); if (disabled) { this.adapter_.addClass(constants_1.cssClasses.DISABLED); } else { this.adapter_.removeClass(constants_1.cssClasses.DISABLED); } }; /** * Handles the animationend event for the checkbox */ MDCCheckboxFoundation.prototype.handleAnimationEnd = function () { var _this = this; if (!this.enableAnimationEndHandler_) { return; } clearTimeout(this.animEndLatchTimer_); this.animEndLatchTimer_ = setTimeout(function () { _this.adapter_.removeClass(_this.currentAnimationClass_); _this.enableAnimationEndHandler_ = false; }, constants_1.numbers.ANIM_END_LATCH_MS); }; /** * Handles the change event for the checkbox */ MDCCheckboxFoundation.prototype.handleChange = function () { this.transitionCheckState_(); }; MDCCheckboxFoundation.prototype.transitionCheckState_ = function () { if (!this.adapter_.hasNativeControl()) { return; } var oldState = this.currentCheckState_; var newState = this.determineCheckState_(); if (oldState === newState) { return; } this.updateAriaChecked_(); var TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED; var SELECTED = constants_1.cssClasses.SELECTED; if (newState === TRANSITION_STATE_UNCHECKED) { this.adapter_.removeClass(SELECTED); } else { this.adapter_.addClass(SELECTED); } // Check to ensure that there isn't a previously existing animation class, in case for example // the user interacted with the checkbox before the animation was finished. if (this.currentAnimationClass_.length > 0) { clearTimeout(this.animEndLatchTimer_); this.adapter_.forceLayout(); this.adapter_.removeClass(this.currentAnimationClass_); } this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState); this.currentCheckState_ = newState; // Check for parentNode so that animations are only run when the element is attached // to the DOM. if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) { this.adapter_.addClass(this.currentAnimationClass_); this.enableAnimationEndHandler_ = true; } }; MDCCheckboxFoundation.prototype.determineCheckState_ = function () { var TRANSITION_STATE_INDETERMINATE = constants_1.strings.TRANSITION_STATE_INDETERMINATE, TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED; if (this.adapter_.isIndeterminate()) { return TRANSITION_STATE_INDETERMINATE; } return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED; }; MDCCheckboxFoundation.prototype.getTransitionAnimationClass_ = function (oldState, newState) { var TRANSITION_STATE_INIT = constants_1.strings.TRANSITION_STATE_INIT, TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED; var _a = MDCCheckboxFoundation.cssClasses, ANIM_UNCHECKED_CHECKED = _a.ANIM_UNCHECKED_CHECKED, ANIM_UNCHECKED_INDETERMINATE = _a.ANIM_UNCHECKED_INDETERMINATE, ANIM_CHECKED_UNCHECKED = _a.ANIM_CHECKED_UNCHECKED, ANIM_CHECKED_INDETERMINATE = _a.ANIM_CHECKED_INDETERMINATE, ANIM_INDETERMINATE_CHECKED = _a.ANIM_INDETERMINATE_CHECKED, ANIM_INDETERMINATE_UNCHECKED = _a.ANIM_INDETERMINATE_UNCHECKED; switch (oldState) { case TRANSITION_STATE_INIT: if (newState === TRANSITION_STATE_UNCHECKED) { return ''; } return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED; case TRANSITION_STATE_UNCHECKED: return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE; case TRANSITION_STATE_CHECKED: return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE; default: // TRANSITION_STATE_INDETERMINATE return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED; } }; MDCCheckboxFoundation.prototype.updateAriaChecked_ = function () { // Ensure aria-checked is set to mixed if checkbox is in indeterminate state. if (this.adapter_.isIndeterminate()) { this.adapter_.setNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR, constants_1.strings.ARIA_CHECKED_INDETERMINATE_VALUE); } else { // The on/off state does not need to keep track of aria-checked, since // the screenreader uses the checked property on the checkbox element. this.adapter_.removeNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR); } }; return MDCCheckboxFoundation; }(foundation_1.MDCFoundation); exports.MDCCheckboxFoundation = MDCCheckboxFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCCheckboxFoundation; /***/ }), /***/ "./packages/mdc-checkbox/index.ts": /*!****************************************!*\ !*** ./packages/mdc-checkbox/index.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-checkbox/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-checkbox/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-checkbox/foundation.ts")); /***/ }), /***/ "./packages/mdc-chips/chip-set/component.ts": /*!**************************************************!*\ !*** ./packages/mdc-chips/chip-set/component.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! ../chip/component */ "./packages/mdc-chips/chip/component.ts"); var foundation_1 = __webpack_require__(/*! ../chip/foundation */ "./packages/mdc-chips/chip/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-chips/chip-set/foundation.ts"); var _a = foundation_1.MDCChipFoundation.strings, INTERACTION_EVENT = _a.INTERACTION_EVENT, SELECTION_EVENT = _a.SELECTION_EVENT, REMOVAL_EVENT = _a.REMOVAL_EVENT; var CHIP_SELECTOR = foundation_2.MDCChipSetFoundation.strings.CHIP_SELECTOR; var idCounter = 0; var MDCChipSet = /** @class */function (_super) { __extends(MDCChipSet, _super); function MDCChipSet() { return _super !== null && _super.apply(this, arguments) || this; } MDCChipSet.attachTo = function (root) { return new MDCChipSet(root); }; Object.defineProperty(MDCChipSet.prototype, "chips", { get: function get() { return this.chips_.slice(); }, enumerable: true, configurable: true }); Object.defineProperty(MDCChipSet.prototype, "selectedChipIds", { /** * @return An array of the IDs of all selected chips. */ get: function get() { return this.foundation_.getSelectedChipIds(); }, enumerable: true, configurable: true }); /** * @param chipFactory A function which creates a new MDCChip. */ MDCChipSet.prototype.initialize = function (chipFactory) { if (chipFactory === void 0) { chipFactory = function chipFactory(el) { return new component_2.MDCChip(el); }; } this.chipFactory_ = chipFactory; this.chips_ = this.instantiateChips_(this.chipFactory_); }; MDCChipSet.prototype.initialSyncWithDOM = function () { var _this = this; this.chips_.forEach(function (chip) { if (chip.id && chip.selected) { _this.foundation_.select(chip.id); } }); this.handleChipInteraction_ = function (evt) { return _this.foundation_.handleChipInteraction(evt.detail.chipId); }; this.handleChipSelection_ = function (evt) { return _this.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected); }; this.handleChipRemoval_ = function (evt) { return _this.foundation_.handleChipRemoval(evt.detail.chipId); }; this.listen(INTERACTION_EVENT, this.handleChipInteraction_); this.listen(SELECTION_EVENT, this.handleChipSelection_); this.listen(REMOVAL_EVENT, this.handleChipRemoval_); }; MDCChipSet.prototype.destroy = function () { this.chips_.forEach(function (chip) { chip.destroy(); }); this.unlisten(INTERACTION_EVENT, this.handleChipInteraction_); this.unlisten(SELECTION_EVENT, this.handleChipSelection_); this.unlisten(REMOVAL_EVENT, this.handleChipRemoval_); _super.prototype.destroy.call(this); }; /** * Adds a new chip object to the chip set from the given chip element. */ MDCChipSet.prototype.addChip = function (chipEl) { chipEl.id = chipEl.id || "mdc-chip-" + ++idCounter; this.chips_.push(this.chipFactory_(chipEl)); }; MDCChipSet.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, removeChip: function removeChip(chipId) { var index = _this.findChipIndex_(chipId); if (index >= 0) { _this.chips_[index].destroy(); _this.chips_.splice(index, 1); } }, setSelected: function setSelected(chipId, selected) { var index = _this.findChipIndex_(chipId); if (index >= 0) { _this.chips_[index].selected = selected; } } }; return new foundation_2.MDCChipSetFoundation(adapter); }; /** * Instantiates chip components on all of the chip set's child chip elements. */ MDCChipSet.prototype.instantiateChips_ = function (chipFactory) { var chipElements = [].slice.call(this.root_.querySelectorAll(CHIP_SELECTOR)); return chipElements.map(function (el) { el.id = el.id || "mdc-chip-" + ++idCounter; return chipFactory(el); }); }; /** * Returns the index of the chip with the given id, or -1 if the chip does not exist. */ MDCChipSet.prototype.findChipIndex_ = function (chipId) { for (var i = 0; i < this.chips_.length; i++) { if (this.chips_[i].id === chipId) { return i; } } return -1; }; return MDCChipSet; }(component_1.MDCComponent); exports.MDCChipSet = MDCChipSet; /***/ }), /***/ "./packages/mdc-chips/chip-set/constants.ts": /*!**************************************************!*\ !*** ./packages/mdc-chips/chip-set/constants.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.strings = { CHIP_SELECTOR: '.mdc-chip' }; exports.cssClasses = { CHOICE: 'mdc-chip-set--choice', FILTER: 'mdc-chip-set--filter' }; /***/ }), /***/ "./packages/mdc-chips/chip-set/foundation.ts": /*!***************************************************!*\ !*** ./packages/mdc-chips/chip-set/foundation.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-chips/chip-set/constants.ts"); var MDCChipSetFoundation = /** @class */function (_super) { __extends(MDCChipSetFoundation, _super); function MDCChipSetFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCChipSetFoundation.defaultAdapter, adapter)) || this; /** * The ids of the selected chips in the set. Only used for choice chip set or filter chip set. */ _this.selectedChipIds_ = []; return _this; } Object.defineProperty(MDCChipSetFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCChipSetFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCChipSetFoundation, "defaultAdapter", { get: function get() { return { hasClass: function hasClass() { return false; }, removeChip: function removeChip() { return undefined; }, setSelected: function setSelected() { return undefined; } }; }, enumerable: true, configurable: true }); /** * Returns an array of the IDs of all selected chips. */ MDCChipSetFoundation.prototype.getSelectedChipIds = function () { return this.selectedChipIds_.slice(); }; /** * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant. */ MDCChipSetFoundation.prototype.select = function (chipId) { if (this.selectedChipIds_.indexOf(chipId) >= 0) { return; } if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) && this.selectedChipIds_.length > 0) { var previouslySelectedChip = this.selectedChipIds_[0]; this.selectedChipIds_.length = 0; this.adapter_.setSelected(previouslySelectedChip, false); } this.selectedChipIds_.push(chipId); this.adapter_.setSelected(chipId, true); }; /** * Handles a chip interaction event */ MDCChipSetFoundation.prototype.handleChipInteraction = function (chipId) { if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) || this.adapter_.hasClass(constants_1.cssClasses.FILTER)) { this.toggleSelect_(chipId); } }; /** * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip. */ MDCChipSetFoundation.prototype.handleChipSelection = function (chipId, selected) { var chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0; if (selected && !chipIsSelected) { this.select(chipId); } else if (!selected && chipIsSelected) { this.deselect_(chipId); } }; /** * Handles the event when a chip is removed. */ MDCChipSetFoundation.prototype.handleChipRemoval = function (chipId) { this.deselect_(chipId); this.adapter_.removeChip(chipId); }; /** * Deselects the chip with the given id. */ MDCChipSetFoundation.prototype.deselect_ = function (chipId) { var index = this.selectedChipIds_.indexOf(chipId); if (index >= 0) { this.selectedChipIds_.splice(index, 1); this.adapter_.setSelected(chipId, false); } }; /** * Toggles selection of the chip with the given id. */ MDCChipSetFoundation.prototype.toggleSelect_ = function (chipId) { if (this.selectedChipIds_.indexOf(chipId) >= 0) { this.deselect_(chipId); } else { this.select(chipId); } }; return MDCChipSetFoundation; }(foundation_1.MDCFoundation); exports.MDCChipSetFoundation = MDCChipSetFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCChipSetFoundation; /***/ }), /***/ "./packages/mdc-chips/chip-set/index.ts": /*!**********************************************!*\ !*** ./packages/mdc-chips/chip-set/index.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-chips/chip-set/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-chips/chip-set/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-chips/chip-set/constants.ts"); exports.chipSetCssClasses = constants_1.cssClasses; exports.chipSetStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-chips/chip/component.ts": /*!**********************************************!*\ !*** ./packages/mdc-chips/chip/component.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-chips/chip/constants.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-chips/chip/foundation.ts"); var INTERACTION_EVENTS = ['click', 'keydown']; var MDCChip = /** @class */function (_super) { __extends(MDCChip, _super); function MDCChip() { return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(MDCChip.prototype, "selected", { /** * @return Whether the chip is selected. */ get: function get() { return this.foundation_.isSelected(); }, /** * Sets selected state on the chip. */ set: function set(selected) { this.foundation_.setSelected(selected); }, enumerable: true, configurable: true }); Object.defineProperty(MDCChip.prototype, "shouldRemoveOnTrailingIconClick", { /** * @return Whether a trailing icon click should trigger exit/removal of the chip. */ get: function get() { return this.foundation_.getShouldRemoveOnTrailingIconClick(); }, /** * Sets whether a trailing icon click should trigger exit/removal of the chip. */ set: function set(shouldRemove) { this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove); }, enumerable: true, configurable: true }); Object.defineProperty(MDCChip.prototype, "ripple", { get: function get() { return this.ripple_; }, enumerable: true, configurable: true }); Object.defineProperty(MDCChip.prototype, "id", { get: function get() { return this.root_.id; }, enumerable: true, configurable: true }); MDCChip.attachTo = function (root) { return new MDCChip(root); }; MDCChip.prototype.initialize = function (rippleFactory) { var _this = this; if (rippleFactory === void 0) { rippleFactory = function rippleFactory(el, foundation) { return new component_2.MDCRipple(el, foundation); }; } this.leadingIcon_ = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR); this.trailingIcon_ = this.root_.querySelector(constants_1.strings.TRAILING_ICON_SELECTOR); this.checkmark_ = this.root_.querySelector(constants_1.strings.CHECKMARK_SELECTOR); // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var rippleAdapter = __assign({}, component_2.MDCRipple.createAdapter(this), { computeBoundingRect: function computeBoundingRect() { return _this.foundation_.getDimensions(); } }); this.ripple_ = rippleFactory(this.root_, new foundation_1.MDCRippleFoundation(rippleAdapter)); }; MDCChip.prototype.initialSyncWithDOM = function () { var _this = this; this.handleInteraction_ = function (evt) { return _this.foundation_.handleInteraction(evt); }; this.handleTransitionEnd_ = function (evt) { return _this.foundation_.handleTransitionEnd(evt); }; this.handleTrailingIconInteraction_ = function (evt) { return _this.foundation_.handleTrailingIconInteraction(evt); }; INTERACTION_EVENTS.forEach(function (evtType) { _this.listen(evtType, _this.handleInteraction_); }); this.listen('transitionend', this.handleTransitionEnd_); if (this.trailingIcon_) { INTERACTION_EVENTS.forEach(function (evtType) { _this.trailingIcon_.addEventListener(evtType, _this.handleTrailingIconInteraction_); }); } }; MDCChip.prototype.destroy = function () { var _this = this; this.ripple_.destroy(); INTERACTION_EVENTS.forEach(function (evtType) { _this.unlisten(evtType, _this.handleInteraction_); }); this.unlisten('transitionend', this.handleTransitionEnd_); if (this.trailingIcon_) { INTERACTION_EVENTS.forEach(function (evtType) { _this.trailingIcon_.removeEventListener(evtType, _this.handleTrailingIconInteraction_); }); } _super.prototype.destroy.call(this); }; /** * Begins the exit animation which leads to removal of the chip. */ MDCChip.prototype.beginExit = function () { this.foundation_.beginExit(); }; MDCChip.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, addClassToLeadingIcon: function addClassToLeadingIcon(className) { if (_this.leadingIcon_) { _this.leadingIcon_.classList.add(className); } }, eventTargetHasClass: function eventTargetHasClass(target, className) { return target ? target.classList.contains(className) : false; }, getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() { return _this.checkmark_ ? _this.checkmark_.getBoundingClientRect() : null; }, getComputedStyleValue: function getComputedStyleValue(propertyName) { return window.getComputedStyle(_this.root_).getPropertyValue(propertyName); }, getRootBoundingClientRect: function getRootBoundingClientRect() { return _this.root_.getBoundingClientRect(); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, hasLeadingIcon: function hasLeadingIcon() { return !!_this.leadingIcon_; }, notifyInteraction: function notifyInteraction() { return _this.emit(constants_1.strings.INTERACTION_EVENT, { chipId: _this.id }, true /* shouldBubble */); }, notifyRemoval: function notifyRemoval() { return _this.emit(constants_1.strings.REMOVAL_EVENT, { chipId: _this.id, root: _this.root_ }, true /* shouldBubble */); }, notifySelection: function notifySelection(selected) { return _this.emit(constants_1.strings.SELECTION_EVENT, { chipId: _this.id, selected: selected }, true /* shouldBubble */); }, notifyTrailingIconInteraction: function notifyTrailingIconInteraction() { return _this.emit(constants_1.strings.TRAILING_ICON_INTERACTION_EVENT, { chipId: _this.id }, true /* shouldBubble */); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) { if (_this.leadingIcon_) { _this.leadingIcon_.classList.remove(className); } }, setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, setStyleProperty: function setStyleProperty(propertyName, value) { return _this.root_.style.setProperty(propertyName, value); } }; return new foundation_2.MDCChipFoundation(adapter); }; return MDCChip; }(component_1.MDCComponent); exports.MDCChip = MDCChip; /***/ }), /***/ "./packages/mdc-chips/chip/constants.ts": /*!**********************************************!*\ !*** ./packages/mdc-chips/chip/constants.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.strings = { ARIA_CHECKED: 'aria-checked', CHECKMARK_SELECTOR: '.mdc-chip__checkmark', ENTRY_ANIMATION_NAME: 'mdc-chip-entry', INTERACTION_EVENT: 'MDCChip:interaction', LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading', REMOVAL_EVENT: 'MDCChip:removal', SELECTION_EVENT: 'MDCChip:selection', TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction', TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing' }; exports.cssClasses = { CHECKMARK: 'mdc-chip__checkmark', CHIP_EXIT: 'mdc-chip--exit', HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden', LEADING_ICON: 'mdc-chip__icon--leading', SELECTED: 'mdc-chip--selected', TRAILING_ICON: 'mdc-chip__icon--trailing' }; /***/ }), /***/ "./packages/mdc-chips/chip/foundation.ts": /*!***********************************************!*\ !*** ./packages/mdc-chips/chip/foundation.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-chips/chip/constants.ts"); var emptyClientRect = { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0 }; var MDCChipFoundation = /** @class */function (_super) { __extends(MDCChipFoundation, _super); function MDCChipFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCChipFoundation.defaultAdapter, adapter)) || this; /** * Whether a trailing icon click should immediately trigger exit/removal of the chip. */ _this.shouldRemoveOnTrailingIconClick_ = true; return _this; } Object.defineProperty(MDCChipFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCChipFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCChipFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, addClassToLeadingIcon: function addClassToLeadingIcon() { return undefined; }, eventTargetHasClass: function eventTargetHasClass() { return false; }, getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() { return emptyClientRect; }, getComputedStyleValue: function getComputedStyleValue() { return ''; }, getRootBoundingClientRect: function getRootBoundingClientRect() { return emptyClientRect; }, hasClass: function hasClass() { return false; }, hasLeadingIcon: function hasLeadingIcon() { return false; }, notifyInteraction: function notifyInteraction() { return undefined; }, notifyRemoval: function notifyRemoval() { return undefined; }, notifySelection: function notifySelection() { return undefined; }, notifyTrailingIconInteraction: function notifyTrailingIconInteraction() { return undefined; }, removeClass: function removeClass() { return undefined; }, removeClassFromLeadingIcon: function removeClassFromLeadingIcon() { return undefined; }, setAttr: function setAttr() { return undefined; }, setStyleProperty: function setStyleProperty() { return undefined; } }; }, enumerable: true, configurable: true }); MDCChipFoundation.prototype.isSelected = function () { return this.adapter_.hasClass(constants_1.cssClasses.SELECTED); }; MDCChipFoundation.prototype.setSelected = function (selected) { if (selected) { this.adapter_.addClass(constants_1.cssClasses.SELECTED); this.adapter_.setAttr(constants_1.strings.ARIA_CHECKED, 'true'); } else { this.adapter_.removeClass(constants_1.cssClasses.SELECTED); this.adapter_.setAttr(constants_1.strings.ARIA_CHECKED, 'false'); } this.adapter_.notifySelection(selected); }; MDCChipFoundation.prototype.getShouldRemoveOnTrailingIconClick = function () { return this.shouldRemoveOnTrailingIconClick_; }; MDCChipFoundation.prototype.setShouldRemoveOnTrailingIconClick = function (shouldRemove) { this.shouldRemoveOnTrailingIconClick_ = shouldRemove; }; MDCChipFoundation.prototype.getDimensions = function () { var _this = this; var getRootRect = function getRootRect() { return _this.adapter_.getRootBoundingClientRect(); }; var getCheckmarkRect = function getCheckmarkRect() { return _this.adapter_.getCheckmarkBoundingClientRect(); }; // When a chip has a checkmark and not a leading icon, the bounding rect changes in size depending on the current // size of the checkmark. if (!this.adapter_.hasLeadingIcon()) { var checkmarkRect = getCheckmarkRect(); if (checkmarkRect) { var rootRect = getRootRect(); // Checkmark is a square, meaning the client rect's width and height are identical once the animation completes. // However, the checkbox is initially hidden by setting the width to 0. // To account for an initial width of 0, we use the checkbox's height instead (which equals the end-state width) // when adding it to the root client rect's width. return { bottom: rootRect.bottom, height: rootRect.height, left: rootRect.left, right: rootRect.right, top: rootRect.top, width: rootRect.width + checkmarkRect.height }; } } return getRootRect(); }; /** * Begins the exit animation which leads to removal of the chip. */ MDCChipFoundation.prototype.beginExit = function () { this.adapter_.addClass(constants_1.cssClasses.CHIP_EXIT); }; /** * Handles an interaction event on the root element. */ MDCChipFoundation.prototype.handleInteraction = function (evt) { var isEnter = evt.key === 'Enter' || evt.keyCode === 13; if (evt.type === 'click' || isEnter) { this.adapter_.notifyInteraction(); } }; /** * Handles a transition end event on the root element. */ MDCChipFoundation.prototype.handleTransitionEnd = function (evt) { var _this = this; // Handle transition end event on the chip when it is about to be removed. if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHIP_EXIT)) { if (evt.propertyName === 'width') { this.adapter_.notifyRemoval(); } else if (evt.propertyName === 'opacity') { // See: https://css-tricks.com/using-css-transitions-auto-dimensions/#article-header-id-5 var chipWidth_1 = this.adapter_.getComputedStyleValue('width'); // On the next frame (once we get the computed width), explicitly set the chip's width // to its current pixel width, so we aren't transitioning out of 'auto'. requestAnimationFrame(function () { _this.adapter_.setStyleProperty('width', chipWidth_1); // To mitigate jitter, start transitioning padding and margin before width. _this.adapter_.setStyleProperty('padding', '0'); _this.adapter_.setStyleProperty('margin', '0'); // On the next frame (once width is explicitly set), transition width to 0. requestAnimationFrame(function () { _this.adapter_.setStyleProperty('width', '0'); }); }); } return; } // Handle a transition end event on the leading icon or checkmark, since the transition end event bubbles. if (evt.propertyName !== 'opacity') { return; } if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.LEADING_ICON) && this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) { this.adapter_.addClassToLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON); } else if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHECKMARK) && !this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) { this.adapter_.removeClassFromLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON); } }; /** * Handles an interaction event on the trailing icon element. This is used to * prevent the ripple from activating on interaction with the trailing icon. */ MDCChipFoundation.prototype.handleTrailingIconInteraction = function (evt) { var isEnter = evt.key === 'Enter' || evt.keyCode === 13; evt.stopPropagation(); if (evt.type === 'click' || isEnter) { this.adapter_.notifyTrailingIconInteraction(); if (this.shouldRemoveOnTrailingIconClick_) { this.beginExit(); } } }; return MDCChipFoundation; }(foundation_1.MDCFoundation); exports.MDCChipFoundation = MDCChipFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCChipFoundation; /***/ }), /***/ "./packages/mdc-chips/chip/index.ts": /*!******************************************!*\ !*** ./packages/mdc-chips/chip/index.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-chips/chip/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-chips/chip/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-chips/chip/constants.ts"); exports.chipCssClasses = constants_1.cssClasses; exports.chipStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-chips/index.ts": /*!*************************************!*\ !*** ./packages/mdc-chips/index.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./chip/index */ "./packages/mdc-chips/chip/index.ts")); __export(__webpack_require__(/*! ./chip-set/index */ "./packages/mdc-chips/chip-set/index.ts")); /***/ }), /***/ "./packages/mdc-data-table/component.ts": /*!**********************************************!*\ !*** ./packages/mdc-data-table/component.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/checkbox/component */ "./packages/mdc-checkbox/component.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-data-table/constants.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-data-table/foundation.ts"); var MDCDataTable = /** @class */function (_super) { __extends(MDCDataTable, _super); function MDCDataTable() { return _super !== null && _super.apply(this, arguments) || this; } MDCDataTable.attachTo = function (root) { return new MDCDataTable(root); }; MDCDataTable.prototype.initialize = function (checkboxFactory) { if (checkboxFactory === void 0) { checkboxFactory = function checkboxFactory(el) { return new component_2.MDCCheckbox(el); }; } this.checkboxFactory_ = checkboxFactory; }; MDCDataTable.prototype.initialSyncWithDOM = function () { var _this = this; this.headerRow_ = this.root_.querySelector("." + constants_1.cssClasses.HEADER_ROW); this.handleHeaderRowCheckboxChange_ = function () { return _this.foundation_.handleHeaderRowCheckboxChange(); }; this.headerRow_.addEventListener('change', this.handleHeaderRowCheckboxChange_); this.content_ = this.root_.querySelector("." + constants_1.cssClasses.CONTENT); this.handleRowCheckboxChange_ = function (event) { return _this.foundation_.handleRowCheckboxChange(event); }; this.content_.addEventListener('change', this.handleRowCheckboxChange_); this.layout(); }; /** * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table. */ MDCDataTable.prototype.layout = function () { this.foundation_.layout(); }; /** * @return Returns array of row elements. */ MDCDataTable.prototype.getRows = function () { return this.foundation_.getRows(); }; /** * @return Returns array of selected row ids. */ MDCDataTable.prototype.getSelectedRowIds = function () { return this.foundation_.getSelectedRowIds(); }; /** * Sets selected row ids. Overwrites previously selected rows. * @param rowIds Array of row ids that needs to be selected. */ MDCDataTable.prototype.setSelectedRowIds = function (rowIds) { this.foundation_.setSelectedRowIds(rowIds); }; MDCDataTable.prototype.destroy = function () { this.headerRow_.removeEventListener('change', this.handleHeaderRowCheckboxChange_); this.content_.removeEventListener('change', this.handleRowCheckboxChange_); this.headerRowCheckbox_.destroy(); this.rowCheckboxList_.forEach(function (checkbox) { return checkbox.destroy(); }); }; MDCDataTable.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClassAtRowIndex: function addClassAtRowIndex(rowIndex, className) { return _this.getRows()[rowIndex].classList.add(className); }, getRowCount: function getRowCount() { return _this.getRows().length; }, getRowElements: function getRowElements() { return [].slice.call(_this.root_.querySelectorAll(constants_1.strings.ROW_SELECTOR)); }, getRowIdAtIndex: function getRowIdAtIndex(rowIndex) { return _this.getRows()[rowIndex].getAttribute(constants_1.strings.DATA_ROW_ID_ATTR); }, getRowIndexByChildElement: function getRowIndexByChildElement(el) { return _this.getRows().indexOf(ponyfill_1.closest(el, constants_1.strings.ROW_SELECTOR)); }, getSelectedRowCount: function getSelectedRowCount() { return _this.root_.querySelectorAll(constants_1.strings.ROW_SELECTED_SELECTOR).length; }, isCheckboxAtRowIndexChecked: function isCheckboxAtRowIndexChecked(rowIndex) { return _this.rowCheckboxList_[rowIndex].checked; }, isHeaderRowCheckboxChecked: function isHeaderRowCheckboxChecked() { return _this.headerRowCheckbox_.checked; }, isRowsSelectable: function isRowsSelectable() { return !!_this.root_.querySelector(constants_1.strings.ROW_CHECKBOX_SELECTOR); }, notifyRowSelectionChanged: function notifyRowSelectionChanged(data) { _this.emit(constants_1.events.ROW_SELECTION_CHANGED, { row: _this.getRowByIndex_(data.rowIndex), rowId: _this.getRowIdByIndex_(data.rowIndex), rowIndex: data.rowIndex, selected: data.selected }, /** shouldBubble */true); }, notifySelectedAll: function notifySelectedAll() { return _this.emit(constants_1.events.SELECTED_ALL, {}, /** shouldBubble */true); }, notifyUnselectedAll: function notifyUnselectedAll() { return _this.emit(constants_1.events.UNSELECTED_ALL, {}, /** shouldBubble */true); }, registerHeaderRowCheckbox: function registerHeaderRowCheckbox() { if (_this.headerRowCheckbox_) { _this.headerRowCheckbox_.destroy(); } var checkboxEl = _this.root_.querySelector(constants_1.strings.HEADER_ROW_CHECKBOX_SELECTOR); _this.headerRowCheckbox_ = _this.checkboxFactory_(checkboxEl); }, registerRowCheckboxes: function registerRowCheckboxes() { if (_this.rowCheckboxList_) { _this.rowCheckboxList_.forEach(function (checkbox) { return checkbox.destroy(); }); } _this.rowCheckboxList_ = []; _this.getRows().forEach(function (rowEl) { var checkbox = _this.checkboxFactory_(rowEl.querySelector(constants_1.strings.ROW_CHECKBOX_SELECTOR)); _this.rowCheckboxList_.push(checkbox); }); }, removeClassAtRowIndex: function removeClassAtRowIndex(rowIndex, className) { _this.getRows()[rowIndex].classList.remove(className); }, setAttributeAtRowIndex: function setAttributeAtRowIndex(rowIndex, attr, value) { _this.getRows()[rowIndex].setAttribute(attr, value); }, setHeaderRowCheckboxChecked: function setHeaderRowCheckboxChecked(checked) { _this.headerRowCheckbox_.checked = checked; }, setHeaderRowCheckboxIndeterminate: function setHeaderRowCheckboxIndeterminate(indeterminate) { _this.headerRowCheckbox_.indeterminate = indeterminate; }, setRowCheckboxCheckedAtIndex: function setRowCheckboxCheckedAtIndex(rowIndex, checked) { _this.rowCheckboxList_[rowIndex].checked = checked; } }; return new foundation_1.MDCDataTableFoundation(adapter); }; MDCDataTable.prototype.getRowByIndex_ = function (index) { return this.getRows()[index]; }; MDCDataTable.prototype.getRowIdByIndex_ = function (index) { return this.getRowByIndex_(index).getAttribute(constants_1.strings.DATA_ROW_ID_ATTR); }; return MDCDataTable; }(component_1.MDCComponent); exports.MDCDataTable = MDCDataTable; /***/ }), /***/ "./packages/mdc-data-table/constants.ts": /*!**********************************************!*\ !*** ./packages/mdc-data-table/constants.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { CELL: 'mdc-data-table__cell', CELL_NUMERIC: 'mdc-data-table__cell--numeric', CONTENT: 'mdc-data-table__content', HEADER_ROW: 'mdc-data-table__header-row', HEADER_ROW_CHECKBOX: 'mdc-data-table__header-row-checkbox', ROOT: 'mdc-data-table', ROW: 'mdc-data-table__row', ROW_CHECKBOX: 'mdc-data-table__row-checkbox', ROW_SELECTED: 'mdc-data-table__row--selected' }; exports.strings = { ARIA_SELECTED: 'aria-selected', DATA_ROW_ID_ATTR: 'data-row-id', HEADER_ROW_CHECKBOX_SELECTOR: "." + exports.cssClasses.HEADER_ROW_CHECKBOX, ROW_CHECKBOX_SELECTOR: "." + exports.cssClasses.ROW_CHECKBOX, ROW_SELECTED_SELECTOR: "." + exports.cssClasses.ROW_SELECTED, ROW_SELECTOR: "." + exports.cssClasses.ROW }; exports.events = { ROW_SELECTION_CHANGED: 'MDCDataTable:rowSelectionChanged', SELECTED_ALL: 'MDCDataTable:selectedAll', UNSELECTED_ALL: 'MDCDataTable:unselectedAll' }; /***/ }), /***/ "./packages/mdc-data-table/foundation.ts": /*!***********************************************!*\ !*** ./packages/mdc-data-table/foundation.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = this && this.__generator || function (thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1];return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0:case 1: t = op;break; case 4: _.label++;return { value: op[1], done: false }; case 5: _.label++;y = op[1];op = [0];continue; case 7: op = _.ops.pop();_.trys.pop();continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0;continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1];break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1];t = op;break; } if (t && _.label < t[2]) { _.label = t[2];_.ops.push(op);break; } if (t[2]) _.ops.pop(); _.trys.pop();continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e];y = 0; } finally { f = t = 0; } }if (op[0] & 5) throw op[1];return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-data-table/constants.ts"); var MDCDataTableFoundation = /** @class */function (_super) { __extends(MDCDataTableFoundation, _super); function MDCDataTableFoundation(adapter) { return _super.call(this, __assign({}, MDCDataTableFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCDataTableFoundation, "defaultAdapter", { get: function get() { return { addClassAtRowIndex: function addClassAtRowIndex() { return undefined; }, getRowCount: function getRowCount() { return 0; }, getRowElements: function getRowElements() { return []; }, getRowIdAtIndex: function getRowIdAtIndex() { return ''; }, getRowIndexByChildElement: function getRowIndexByChildElement() { return 0; }, getSelectedRowCount: function getSelectedRowCount() { return 0; }, isCheckboxAtRowIndexChecked: function isCheckboxAtRowIndexChecked() { return false; }, isHeaderRowCheckboxChecked: function isHeaderRowCheckboxChecked() { return false; }, isRowsSelectable: function isRowsSelectable() { return false; }, notifyRowSelectionChanged: function notifyRowSelectionChanged() { return undefined; }, notifySelectedAll: function notifySelectedAll() { return undefined; }, notifyUnselectedAll: function notifyUnselectedAll() { return undefined; }, registerHeaderRowCheckbox: function registerHeaderRowCheckbox() { return undefined; }, registerRowCheckboxes: function registerRowCheckboxes() { return undefined; }, removeClassAtRowIndex: function removeClassAtRowIndex() { return undefined; }, setAttributeAtRowIndex: function setAttributeAtRowIndex() { return undefined; }, setHeaderRowCheckboxChecked: function setHeaderRowCheckboxChecked() { return undefined; }, setHeaderRowCheckboxIndeterminate: function setHeaderRowCheckboxIndeterminate() { return undefined; }, setRowCheckboxCheckedAtIndex: function setRowCheckboxCheckedAtIndex() { return undefined; } }; }, enumerable: true, configurable: true }); /** * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table. * Use this if registering checkbox is synchronous. */ MDCDataTableFoundation.prototype.layout = function () { if (this.adapter_.isRowsSelectable()) { this.adapter_.registerHeaderRowCheckbox(); this.adapter_.registerRowCheckboxes(); this.setHeaderRowCheckboxState_(); } }; /** * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table. * Use this if registering checkbox is asynchronous. */ MDCDataTableFoundation.prototype.layoutAsync = function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!this.adapter_.isRowsSelectable()) return [3 /*break*/, 3]; return [4 /*yield*/, this.adapter_.registerHeaderRowCheckbox()]; case 1: _a.sent(); return [4 /*yield*/, this.adapter_.registerRowCheckboxes()]; case 2: _a.sent(); this.setHeaderRowCheckboxState_(); _a.label = 3; case 3: return [2 /*return*/]; } }); }); }; /** * @return Returns array of row elements. */ MDCDataTableFoundation.prototype.getRows = function () { return this.adapter_.getRowElements(); }; /** * Sets selected row ids. Overwrites previously selected rows. * @param rowIds Array of row ids that needs to be selected. */ MDCDataTableFoundation.prototype.setSelectedRowIds = function (rowIds) { for (var rowIndex = 0; rowIndex < this.adapter_.getRowCount(); rowIndex++) { var rowId = this.adapter_.getRowIdAtIndex(rowIndex); var isSelected = false; if (rowId && rowIds.indexOf(rowId) >= 0) { isSelected = true; } this.adapter_.setRowCheckboxCheckedAtIndex(rowIndex, isSelected); this.selectRowAtIndex_(rowIndex, isSelected); } this.setHeaderRowCheckboxState_(); }; /** * @return Returns array of selected row ids. */ MDCDataTableFoundation.prototype.getSelectedRowIds = function () { var selectedRowIds = []; for (var rowIndex = 0; rowIndex < this.adapter_.getRowCount(); rowIndex++) { if (this.adapter_.isCheckboxAtRowIndexChecked(rowIndex)) { selectedRowIds.push(this.adapter_.getRowIdAtIndex(rowIndex)); } } return selectedRowIds; }; /** * Handles header row checkbox change event. */ MDCDataTableFoundation.prototype.handleHeaderRowCheckboxChange = function () { var isHeaderChecked = this.adapter_.isHeaderRowCheckboxChecked(); for (var rowIndex = 0; rowIndex < this.adapter_.getRowCount(); rowIndex++) { this.adapter_.setRowCheckboxCheckedAtIndex(rowIndex, isHeaderChecked); this.selectRowAtIndex_(rowIndex, isHeaderChecked); } if (isHeaderChecked) { this.adapter_.notifySelectedAll(); } else { this.adapter_.notifyUnselectedAll(); } }; /** * Handles change event originated from row checkboxes. */ MDCDataTableFoundation.prototype.handleRowCheckboxChange = function (event) { var rowIndex = this.adapter_.getRowIndexByChildElement(event.target); if (rowIndex === -1) { return; } var selected = this.adapter_.isCheckboxAtRowIndexChecked(rowIndex); this.selectRowAtIndex_(rowIndex, selected); this.setHeaderRowCheckboxState_(); var rowId = this.adapter_.getRowIdAtIndex(rowIndex); this.adapter_.notifyRowSelectionChanged({ rowId: rowId, rowIndex: rowIndex, selected: selected }); }; /** * Updates header row checkbox state based on number of rows selected. */ MDCDataTableFoundation.prototype.setHeaderRowCheckboxState_ = function () { if (this.adapter_.getSelectedRowCount() === this.adapter_.getRowCount()) { this.adapter_.setHeaderRowCheckboxChecked(true); this.adapter_.setHeaderRowCheckboxIndeterminate(false); } else if (this.adapter_.getSelectedRowCount() === 0) { this.adapter_.setHeaderRowCheckboxIndeterminate(false); this.adapter_.setHeaderRowCheckboxChecked(false); } else { this.adapter_.setHeaderRowCheckboxIndeterminate(true); this.adapter_.setHeaderRowCheckboxChecked(false); } }; /** * Sets the attributes of row element based on selection state. */ MDCDataTableFoundation.prototype.selectRowAtIndex_ = function (rowIndex, selected) { if (selected) { this.adapter_.addClassAtRowIndex(rowIndex, constants_1.cssClasses.ROW_SELECTED); this.adapter_.setAttributeAtRowIndex(rowIndex, constants_1.strings.ARIA_SELECTED, 'true'); } else { this.adapter_.removeClassAtRowIndex(rowIndex, constants_1.cssClasses.ROW_SELECTED); this.adapter_.setAttributeAtRowIndex(rowIndex, constants_1.strings.ARIA_SELECTED, 'false'); } }; return MDCDataTableFoundation; }(foundation_1.MDCFoundation); exports.MDCDataTableFoundation = MDCDataTableFoundation; /***/ }), /***/ "./packages/mdc-data-table/index.ts": /*!******************************************!*\ !*** ./packages/mdc-data-table/index.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-data-table/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-data-table/foundation.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-data-table/constants.ts")); /***/ }), /***/ "./packages/mdc-dialog/component.ts": /*!******************************************!*\ !*** ./packages/mdc-dialog/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __values = this && this.__values || function (o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function next() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; }; var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-dialog/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-dialog/util.ts")); var strings = foundation_1.MDCDialogFoundation.strings; var MDCDialog = /** @class */function (_super) { __extends(MDCDialog, _super); function MDCDialog() { return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(MDCDialog.prototype, "isOpen", { get: function get() { return this.foundation_.isOpen(); }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialog.prototype, "escapeKeyAction", { get: function get() { return this.foundation_.getEscapeKeyAction(); }, set: function set(action) { this.foundation_.setEscapeKeyAction(action); }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialog.prototype, "scrimClickAction", { get: function get() { return this.foundation_.getScrimClickAction(); }, set: function set(action) { this.foundation_.setScrimClickAction(action); }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialog.prototype, "autoStackButtons", { get: function get() { return this.foundation_.getAutoStackButtons(); }, set: function set(autoStack) { this.foundation_.setAutoStackButtons(autoStack); }, enumerable: true, configurable: true }); MDCDialog.attachTo = function (root) { return new MDCDialog(root); }; MDCDialog.prototype.initialize = function (focusTrapFactory) { var e_1, _a; var container = this.root_.querySelector(strings.CONTAINER_SELECTOR); if (!container) { throw new Error("Dialog component requires a " + strings.CONTAINER_SELECTOR + " container element"); } this.container_ = container; this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR); this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR)); this.defaultButton_ = this.root_.querySelector("[" + strings.BUTTON_DEFAULT_ATTRIBUTE + "]"); this.focusTrapFactory_ = focusTrapFactory; this.buttonRipples_ = []; try { for (var _b = __values(this.buttons_), _c = _b.next(); !_c.done; _c = _b.next()) { var buttonEl = _c.value; this.buttonRipples_.push(new component_2.MDCRipple(buttonEl)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } }; MDCDialog.prototype.initialSyncWithDOM = function () { var _this = this; this.focusTrap_ = util.createFocusTrapInstance(this.container_, this.focusTrapFactory_, this.getInitialFocusEl_() || undefined); this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_); this.handleKeydown_ = this.foundation_.handleKeydown.bind(this.foundation_); this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_); this.handleLayout_ = this.layout.bind(this); var LAYOUT_EVENTS = ['resize', 'orientationchange']; this.handleOpening_ = function () { LAYOUT_EVENTS.forEach(function (evtType) { return window.addEventListener(evtType, _this.handleLayout_); }); document.addEventListener('keydown', _this.handleDocumentKeydown_); }; this.handleClosing_ = function () { LAYOUT_EVENTS.forEach(function (evtType) { return window.removeEventListener(evtType, _this.handleLayout_); }); document.removeEventListener('keydown', _this.handleDocumentKeydown_); }; this.listen('click', this.handleClick_); this.listen('keydown', this.handleKeydown_); this.listen(strings.OPENING_EVENT, this.handleOpening_); this.listen(strings.CLOSING_EVENT, this.handleClosing_); }; MDCDialog.prototype.destroy = function () { this.unlisten('click', this.handleClick_); this.unlisten('keydown', this.handleKeydown_); this.unlisten(strings.OPENING_EVENT, this.handleOpening_); this.unlisten(strings.CLOSING_EVENT, this.handleClosing_); this.handleClosing_(); this.buttonRipples_.forEach(function (ripple) { return ripple.destroy(); }); _super.prototype.destroy.call(this); }; MDCDialog.prototype.layout = function () { this.foundation_.layout(); }; MDCDialog.prototype.open = function () { this.foundation_.open(); }; MDCDialog.prototype.close = function (action) { if (action === void 0) { action = ''; } this.foundation_.close(action); }; MDCDialog.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addBodyClass: function addBodyClass(className) { return document.body.classList.add(className); }, addClass: function addClass(className) { return _this.root_.classList.add(className); }, areButtonsStacked: function areButtonsStacked() { return util.areTopsMisaligned(_this.buttons_); }, clickDefaultButton: function clickDefaultButton() { return _this.defaultButton_ && _this.defaultButton_.click(); }, eventTargetMatches: function eventTargetMatches(target, selector) { return target ? ponyfill_1.matches(target, selector) : false; }, getActionFromEvent: function getActionFromEvent(evt) { if (!evt.target) { return ''; } var element = ponyfill_1.closest(evt.target, "[" + strings.ACTION_ATTRIBUTE + "]"); return element && element.getAttribute(strings.ACTION_ATTRIBUTE); }, getInitialFocusEl: function getInitialFocusEl() { return _this.getInitialFocusEl_(); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, isContentScrollable: function isContentScrollable() { return util.isScrollable(_this.content_); }, notifyClosed: function notifyClosed(action) { return _this.emit(strings.CLOSED_EVENT, action ? { action: action } : {}); }, notifyClosing: function notifyClosing(action) { return _this.emit(strings.CLOSING_EVENT, action ? { action: action } : {}); }, notifyOpened: function notifyOpened() { return _this.emit(strings.OPENED_EVENT, {}); }, notifyOpening: function notifyOpening() { return _this.emit(strings.OPENING_EVENT, {}); }, releaseFocus: function releaseFocus() { return _this.focusTrap_.deactivate(); }, removeBodyClass: function removeBodyClass(className) { return document.body.classList.remove(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, reverseButtons: function reverseButtons() { _this.buttons_.reverse(); _this.buttons_.forEach(function (button) { button.parentElement.appendChild(button); }); }, trapFocus: function trapFocus() { return _this.focusTrap_.activate(); } }; return new foundation_1.MDCDialogFoundation(adapter); }; MDCDialog.prototype.getInitialFocusEl_ = function () { return document.querySelector("[" + strings.INITIAL_FOCUS_ATTRIBUTE + "]"); }; return MDCDialog; }(component_1.MDCComponent); exports.MDCDialog = MDCDialog; /***/ }), /***/ "./packages/mdc-dialog/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-dialog/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { CLOSING: 'mdc-dialog--closing', OPEN: 'mdc-dialog--open', OPENING: 'mdc-dialog--opening', SCROLLABLE: 'mdc-dialog--scrollable', SCROLL_LOCK: 'mdc-dialog-scroll-lock', STACKED: 'mdc-dialog--stacked' }; exports.strings = { ACTION_ATTRIBUTE: 'data-mdc-dialog-action', BUTTON_DEFAULT_ATTRIBUTE: 'data-mdc-dialog-button-default', BUTTON_SELECTOR: '.mdc-dialog__button', CLOSED_EVENT: 'MDCDialog:closed', CLOSE_ACTION: 'close', CLOSING_EVENT: 'MDCDialog:closing', CONTAINER_SELECTOR: '.mdc-dialog__container', CONTENT_SELECTOR: '.mdc-dialog__content', DESTROY_ACTION: 'destroy', INITIAL_FOCUS_ATTRIBUTE: 'data-mdc-dialog-initial-focus', OPENED_EVENT: 'MDCDialog:opened', OPENING_EVENT: 'MDCDialog:opening', SCRIM_SELECTOR: '.mdc-dialog__scrim', SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '), SURFACE_SELECTOR: '.mdc-dialog__surface' }; exports.numbers = { DIALOG_ANIMATION_CLOSE_TIME_MS: 75, DIALOG_ANIMATION_OPEN_TIME_MS: 150 }; /***/ }), /***/ "./packages/mdc-dialog/foundation.ts": /*!*******************************************!*\ !*** ./packages/mdc-dialog/foundation.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-dialog/constants.ts"); var MDCDialogFoundation = /** @class */function (_super) { __extends(MDCDialogFoundation, _super); function MDCDialogFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCDialogFoundation.defaultAdapter, adapter)) || this; _this.isOpen_ = false; _this.animationFrame_ = 0; _this.animationTimer_ = 0; _this.layoutFrame_ = 0; _this.escapeKeyAction_ = constants_1.strings.CLOSE_ACTION; _this.scrimClickAction_ = constants_1.strings.CLOSE_ACTION; _this.autoStackButtons_ = true; _this.areButtonsStacked_ = false; return _this; } Object.defineProperty(MDCDialogFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialogFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialogFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCDialogFoundation, "defaultAdapter", { get: function get() { return { addBodyClass: function addBodyClass() { return undefined; }, addClass: function addClass() { return undefined; }, areButtonsStacked: function areButtonsStacked() { return false; }, clickDefaultButton: function clickDefaultButton() { return undefined; }, eventTargetMatches: function eventTargetMatches() { return false; }, getActionFromEvent: function getActionFromEvent() { return ''; }, getInitialFocusEl: function getInitialFocusEl() { return null; }, hasClass: function hasClass() { return false; }, isContentScrollable: function isContentScrollable() { return false; }, notifyClosed: function notifyClosed() { return undefined; }, notifyClosing: function notifyClosing() { return undefined; }, notifyOpened: function notifyOpened() { return undefined; }, notifyOpening: function notifyOpening() { return undefined; }, releaseFocus: function releaseFocus() { return undefined; }, removeBodyClass: function removeBodyClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, reverseButtons: function reverseButtons() { return undefined; }, trapFocus: function trapFocus() { return undefined; } }; }, enumerable: true, configurable: true }); MDCDialogFoundation.prototype.init = function () { if (this.adapter_.hasClass(constants_1.cssClasses.STACKED)) { this.setAutoStackButtons(false); } }; MDCDialogFoundation.prototype.destroy = function () { if (this.isOpen_) { this.close(constants_1.strings.DESTROY_ACTION); } if (this.animationTimer_) { clearTimeout(this.animationTimer_); this.handleAnimationTimerEnd_(); } if (this.layoutFrame_) { cancelAnimationFrame(this.layoutFrame_); this.layoutFrame_ = 0; } }; MDCDialogFoundation.prototype.open = function () { var _this = this; this.isOpen_ = true; this.adapter_.notifyOpening(); this.adapter_.addClass(constants_1.cssClasses.OPENING); // Wait a frame once display is no longer "none", to establish basis for animation this.runNextAnimationFrame_(function () { _this.adapter_.addClass(constants_1.cssClasses.OPEN); _this.adapter_.addBodyClass(constants_1.cssClasses.SCROLL_LOCK); _this.layout(); _this.animationTimer_ = setTimeout(function () { _this.handleAnimationTimerEnd_(); _this.adapter_.trapFocus(_this.adapter_.getInitialFocusEl()); _this.adapter_.notifyOpened(); }, constants_1.numbers.DIALOG_ANIMATION_OPEN_TIME_MS); }); }; MDCDialogFoundation.prototype.close = function (action) { var _this = this; if (action === void 0) { action = ''; } if (!this.isOpen_) { // Avoid redundant close calls (and events), e.g. from keydown on elements that inherently emit click return; } this.isOpen_ = false; this.adapter_.notifyClosing(action); this.adapter_.addClass(constants_1.cssClasses.CLOSING); this.adapter_.removeClass(constants_1.cssClasses.OPEN); this.adapter_.removeBodyClass(constants_1.cssClasses.SCROLL_LOCK); cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = 0; clearTimeout(this.animationTimer_); this.animationTimer_ = setTimeout(function () { _this.adapter_.releaseFocus(); _this.handleAnimationTimerEnd_(); _this.adapter_.notifyClosed(action); }, constants_1.numbers.DIALOG_ANIMATION_CLOSE_TIME_MS); }; MDCDialogFoundation.prototype.isOpen = function () { return this.isOpen_; }; MDCDialogFoundation.prototype.getEscapeKeyAction = function () { return this.escapeKeyAction_; }; MDCDialogFoundation.prototype.setEscapeKeyAction = function (action) { this.escapeKeyAction_ = action; }; MDCDialogFoundation.prototype.getScrimClickAction = function () { return this.scrimClickAction_; }; MDCDialogFoundation.prototype.setScrimClickAction = function (action) { this.scrimClickAction_ = action; }; MDCDialogFoundation.prototype.getAutoStackButtons = function () { return this.autoStackButtons_; }; MDCDialogFoundation.prototype.setAutoStackButtons = function (autoStack) { this.autoStackButtons_ = autoStack; }; MDCDialogFoundation.prototype.layout = function () { var _this = this; if (this.layoutFrame_) { cancelAnimationFrame(this.layoutFrame_); } this.layoutFrame_ = requestAnimationFrame(function () { _this.layoutInternal_(); _this.layoutFrame_ = 0; }); }; /** Handles click on the dialog root element. */ MDCDialogFoundation.prototype.handleClick = function (evt) { var isScrim = this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SCRIM_SELECTOR); // Check for scrim click first since it doesn't require querying ancestors. if (isScrim && this.scrimClickAction_ !== '') { this.close(this.scrimClickAction_); } else { var action = this.adapter_.getActionFromEvent(evt); if (action) { this.close(action); } } }; /** Handles keydown on the dialog root element. */ MDCDialogFoundation.prototype.handleKeydown = function (evt) { var isEnter = evt.key === 'Enter' || evt.keyCode === 13; if (!isEnter) { return; } var action = this.adapter_.getActionFromEvent(evt); if (action) { // Action button callback is handled in `handleClick`, // since space/enter keydowns on buttons trigger click events. return; } var isDefault = !this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SUPPRESS_DEFAULT_PRESS_SELECTOR); if (isEnter && isDefault) { this.adapter_.clickDefaultButton(); } }; /** Handles keydown on the document. */ MDCDialogFoundation.prototype.handleDocumentKeydown = function (evt) { var isEscape = evt.key === 'Escape' || evt.keyCode === 27; if (isEscape && this.escapeKeyAction_ !== '') { this.close(this.escapeKeyAction_); } }; MDCDialogFoundation.prototype.layoutInternal_ = function () { if (this.autoStackButtons_) { this.detectStackedButtons_(); } this.detectScrollableContent_(); }; MDCDialogFoundation.prototype.handleAnimationTimerEnd_ = function () { this.animationTimer_ = 0; this.adapter_.removeClass(constants_1.cssClasses.OPENING); this.adapter_.removeClass(constants_1.cssClasses.CLOSING); }; /** * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior. */ MDCDialogFoundation.prototype.runNextAnimationFrame_ = function (callback) { var _this = this; cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = requestAnimationFrame(function () { _this.animationFrame_ = 0; clearTimeout(_this.animationTimer_); _this.animationTimer_ = setTimeout(callback, 0); }); }; MDCDialogFoundation.prototype.detectStackedButtons_ = function () { // Remove the class first to let us measure the buttons' natural positions. this.adapter_.removeClass(constants_1.cssClasses.STACKED); var areButtonsStacked = this.adapter_.areButtonsStacked(); if (areButtonsStacked) { this.adapter_.addClass(constants_1.cssClasses.STACKED); } if (areButtonsStacked !== this.areButtonsStacked_) { this.adapter_.reverseButtons(); this.areButtonsStacked_ = areButtonsStacked; } }; MDCDialogFoundation.prototype.detectScrollableContent_ = function () { // Remove the class first to let us measure the natural height of the content. this.adapter_.removeClass(constants_1.cssClasses.SCROLLABLE); if (this.adapter_.isContentScrollable()) { this.adapter_.addClass(constants_1.cssClasses.SCROLLABLE); } }; return MDCDialogFoundation; }(foundation_1.MDCFoundation); exports.MDCDialogFoundation = MDCDialogFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCDialogFoundation; /***/ }), /***/ "./packages/mdc-dialog/index.ts": /*!**************************************!*\ !*** ./packages/mdc-dialog/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-dialog/util.ts")); exports.util = util; __export(__webpack_require__(/*! ./component */ "./packages/mdc-dialog/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-dialog/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-dialog/foundation.ts")); /***/ }), /***/ "./packages/mdc-dialog/node_modules/focus-trap/index.js": /*!**************************************************************!*\ !*** ./packages/mdc-dialog/node_modules/focus-trap/index.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var tabbable = __webpack_require__(/*! tabbable */ "./packages/mdc-dialog/node_modules/tabbable/index.js"); var xtend = __webpack_require__(/*! xtend */ "./packages/mdc-dialog/node_modules/xtend/immutable.js"); var activeFocusTraps = (function() { var trapQueue = []; return { activateTrap: function(trap) { if (trapQueue.length > 0) { var activeTrap = trapQueue[trapQueue.length - 1]; if (activeTrap !== trap) { activeTrap.pause(); } } var trapIndex = trapQueue.indexOf(trap); if (trapIndex === -1) { trapQueue.push(trap); } else { // move this existing trap to the front of the queue trapQueue.splice(trapIndex, 1); trapQueue.push(trap); } }, deactivateTrap: function(trap) { var trapIndex = trapQueue.indexOf(trap); if (trapIndex !== -1) { trapQueue.splice(trapIndex, 1); } if (trapQueue.length > 0) { trapQueue[trapQueue.length - 1].unpause(); } } }; })(); function focusTrap(element, userOptions) { var doc = document; var container = typeof element === 'string' ? doc.querySelector(element) : element; var config = xtend( { returnFocusOnDeactivate: true, escapeDeactivates: true }, userOptions ); var state = { firstTabbableNode: null, lastTabbableNode: null, nodeFocusedBeforeActivation: null, mostRecentlyFocusedNode: null, active: false, paused: false }; var trap = { activate: activate, deactivate: deactivate, pause: pause, unpause: unpause }; return trap; function activate(activateOptions) { if (state.active) return; updateTabbableNodes(); state.active = true; state.paused = false; state.nodeFocusedBeforeActivation = doc.activeElement; var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate; if (onActivate) { onActivate(); } addListeners(); return trap; } function deactivate(deactivateOptions) { if (!state.active) return; removeListeners(); state.active = false; state.paused = false; activeFocusTraps.deactivateTrap(trap); var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate; if (onDeactivate) { onDeactivate(); } var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate; if (returnFocus) { delay(function() { tryFocus(state.nodeFocusedBeforeActivation); }); } return trap; } function pause() { if (state.paused || !state.active) return; state.paused = true; removeListeners(); } function unpause() { if (!state.paused || !state.active) return; state.paused = false; updateTabbableNodes(); addListeners(); } function addListeners() { if (!state.active) return; // There can be only one listening focus trap at a time activeFocusTraps.activateTrap(trap); // Delay ensures that the focused element doesn't capture the event // that caused the focus trap activation. delay(function() { tryFocus(getInitialFocusNode()); }); doc.addEventListener('focusin', checkFocusIn, true); doc.addEventListener('mousedown', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('touchstart', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('click', checkClick, { capture: true, passive: false }); doc.addEventListener('keydown', checkKey, { capture: true, passive: false }); return trap; } function removeListeners() { if (!state.active) return; doc.removeEventListener('focusin', checkFocusIn, true); doc.removeEventListener('mousedown', checkPointerDown, true); doc.removeEventListener('touchstart', checkPointerDown, true); doc.removeEventListener('click', checkClick, true); doc.removeEventListener('keydown', checkKey, true); return trap; } function getNodeForOption(optionName) { var optionValue = config[optionName]; var node = optionValue; if (!optionValue) { return null; } if (typeof optionValue === 'string') { node = doc.querySelector(optionValue); if (!node) { throw new Error('`' + optionName + '` refers to no known node'); } } if (typeof optionValue === 'function') { node = optionValue(); if (!node) { throw new Error('`' + optionName + '` did not return a node'); } } return node; } function getInitialFocusNode() { var node; if (getNodeForOption('initialFocus') !== null) { node = getNodeForOption('initialFocus'); } else if (container.contains(doc.activeElement)) { node = doc.activeElement; } else { node = state.firstTabbableNode || getNodeForOption('fallbackFocus'); } if (!node) { throw new Error( "You can't have a focus-trap without at least one focusable element" ); } return node; } // This needs to be done on mousedown and touchstart instead of click // so that it precedes the focus event. function checkPointerDown(e) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ returnFocus: !tabbable.isFocusable(e.target) }); } else { e.preventDefault(); } } // In case focus escapes the trap for some strange reason, pull it back in. function checkFocusIn(e) { // In Firefox when you Tab out of an iframe the Document is briefly focused. if (container.contains(e.target) || e.target instanceof Document) { return; } e.stopImmediatePropagation(); tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); } function checkKey(e) { if (config.escapeDeactivates !== false && isEscapeEvent(e)) { e.preventDefault(); deactivate(); return; } if (isTabEvent(e)) { checkTab(e); return; } } // Hijack Tab events on the first and last focusable nodes of the trap, // in order to prevent focus from escaping. If it escapes for even a // moment it can end up scrolling the page and causing confusion so we // kind of need to capture the action at the keydown phase. function checkTab(e) { updateTabbableNodes(); if (e.shiftKey && e.target === state.firstTabbableNode) { e.preventDefault(); tryFocus(state.lastTabbableNode); return; } if (!e.shiftKey && e.target === state.lastTabbableNode) { e.preventDefault(); tryFocus(state.firstTabbableNode); return; } } function checkClick(e) { if (config.clickOutsideDeactivates) return; if (container.contains(e.target)) return; e.preventDefault(); e.stopImmediatePropagation(); } function updateTabbableNodes() { var tabbableNodes = tabbable(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); } function tryFocus(node) { if (node === doc.activeElement) return; if (!node || !node.focus) { tryFocus(getInitialFocusNode()); return; } node.focus(); state.mostRecentlyFocusedNode = node; if (isSelectableInput(node)) { node.select(); } } } function isSelectableInput(node) { return ( node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function' ); } function isEscapeEvent(e) { return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27; } function isTabEvent(e) { return e.key === 'Tab' || e.keyCode === 9; } function delay(fn) { return setTimeout(fn, 0); } module.exports = focusTrap; /***/ }), /***/ "./packages/mdc-dialog/node_modules/tabbable/index.js": /*!************************************************************!*\ !*** ./packages/mdc-dialog/node_modules/tabbable/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { var candidateSelectors = [ 'input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', ]; var candidateSelector = candidateSelectors.join(','); var matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; function tabbable(el, options) { options = options || {}; var regularTabbables = []; var orderedTabbables = []; var candidates = el.querySelectorAll(candidateSelector); if (options.includeContainer) { if (matches.call(el, candidateSelector)) { candidates = Array.prototype.slice.apply(candidates); candidates.unshift(el); } } var i, candidate, candidateTabindex; for (i = 0; i < candidates.length; i++) { candidate = candidates[i]; if (!isNodeMatchingSelectorTabbable(candidate)) continue; candidateTabindex = getTabindex(candidate); if (candidateTabindex === 0) { regularTabbables.push(candidate); } else { orderedTabbables.push({ documentOrder: i, tabIndex: candidateTabindex, node: candidate, }); } } var tabbableNodes = orderedTabbables .sort(sortOrderedTabbables) .map(function(a) { return a.node }) .concat(regularTabbables); return tabbableNodes; } tabbable.isTabbable = isTabbable; tabbable.isFocusable = isFocusable; function isNodeMatchingSelectorTabbable(node) { if ( !isNodeMatchingSelectorFocusable(node) || isNonTabbableRadio(node) || getTabindex(node) < 0 ) { return false; } return true; } function isTabbable(node) { if (!node) throw new Error('No node provided'); if (matches.call(node, candidateSelector) === false) return false; return isNodeMatchingSelectorTabbable(node); } function isNodeMatchingSelectorFocusable(node) { if ( node.disabled || isHiddenInput(node) || isHidden(node) ) { return false; } return true; } var focusableCandidateSelector = candidateSelectors.concat('iframe').join(','); function isFocusable(node) { if (!node) throw new Error('No node provided'); if (matches.call(node, focusableCandidateSelector) === false) return false; return isNodeMatchingSelectorFocusable(node); } function getTabindex(node) { var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10); if (!isNaN(tabindexAttr)) return tabindexAttr; // Browsers do not return `tabIndex` correctly for contentEditable nodes; // so if they don't have a tabindex attribute specifically set, assume it's 0. if (isContentEditable(node)) return 0; return node.tabIndex; } function sortOrderedTabbables(a, b) { return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex; } function isContentEditable(node) { return node.contentEditable === 'true'; } function isInput(node) { return node.tagName === 'INPUT'; } function isHiddenInput(node) { return isInput(node) && node.type === 'hidden'; } function isRadio(node) { return isInput(node) && node.type === 'radio'; } function isNonTabbableRadio(node) { return isRadio(node) && !isTabbableRadio(node); } function getCheckedRadio(nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i].checked) { return nodes[i]; } } } function isTabbableRadio(node) { if (!node.name) return true; // This won't account for the edge case where you have radio groups with the same // in separate forms on the same page. var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]'); var checked = getCheckedRadio(radioSet); return !checked || checked === node; } function isHidden(node) { // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element, // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well. return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden'; } module.exports = tabbable; /***/ }), /***/ "./packages/mdc-dialog/node_modules/xtend/immutable.js": /*!*************************************************************!*\ !*** ./packages/mdc-dialog/node_modules/xtend/immutable.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = extend var hasOwnProperty = Object.prototype.hasOwnProperty; function extend() { var target = {} for (var i = 0; i < arguments.length; i++) { var source = arguments[i] for (var key in source) { if (hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target } /***/ }), /***/ "./packages/mdc-dialog/util.ts": /*!*************************************!*\ !*** ./packages/mdc-dialog/util.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var focus_trap_1 = __importDefault(__webpack_require__(/*! focus-trap */ "./packages/mdc-dialog/node_modules/focus-trap/index.js")); function createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) { if (focusTrapFactory === void 0) { focusTrapFactory = focus_trap_1.default; } return focusTrapFactory(surfaceEl, { clickOutsideDeactivates: true, escapeDeactivates: false, initialFocus: initialFocusEl }); } exports.createFocusTrapInstance = createFocusTrapInstance; function isScrollable(el) { return el ? el.scrollHeight > el.offsetHeight : false; } exports.isScrollable = isScrollable; function areTopsMisaligned(els) { var tops = new Set(); [].forEach.call(els, function (el) { return tops.add(el.offsetTop); }); return tops.size > 1; } exports.areTopsMisaligned = areTopsMisaligned; /***/ }), /***/ "./packages/mdc-dom/events.ts": /*!************************************!*\ !*** ./packages/mdc-dom/events.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * Stores result from applyPassive to avoid redundant processing to detect * passive event listener support. */ var supportsPassive_; /** * Determine whether the current browser supports passive event listeners, and * if so, use them. */ function applyPassive(globalObj, forceRefresh) { if (globalObj === void 0) { globalObj = window; } if (forceRefresh === void 0) { forceRefresh = false; } if (supportsPassive_ === undefined || forceRefresh) { var isSupported_1 = false; try { globalObj.document.addEventListener('test', function () { return undefined; }, { get passive() { isSupported_1 = true; return isSupported_1; } }); } catch (e) {} // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log. supportsPassive_ = isSupported_1; } return supportsPassive_ ? { passive: true } : false; } exports.applyPassive = applyPassive; /***/ }), /***/ "./packages/mdc-dom/index.ts": /*!***********************************!*\ !*** ./packages/mdc-dom/index.ts ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var events = __importStar(__webpack_require__(/*! ./events */ "./packages/mdc-dom/events.ts")); exports.events = events; var ponyfill = __importStar(__webpack_require__(/*! ./ponyfill */ "./packages/mdc-dom/ponyfill.ts")); exports.ponyfill = ponyfill; /***/ }), /***/ "./packages/mdc-dom/ponyfill.ts": /*!**************************************!*\ !*** ./packages/mdc-dom/ponyfill.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * @fileoverview A "ponyfill" is a polyfill that doesn't modify the global prototype chain. * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC. */ function closest(element, selector) { if (element.closest) { return element.closest(selector); } var el = element; while (el) { if (matches(el, selector)) { return el; } el = el.parentElement; } return null; } exports.closest = closest; function matches(element, selector) { var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector; return nativeMatches.call(element, selector); } exports.matches = matches; /***/ }), /***/ "./packages/mdc-drawer/component.ts": /*!******************************************!*\ !*** ./packages/mdc-drawer/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/list/component */ "./packages/mdc-list/component.ts"); var foundation_1 = __webpack_require__(/*! @material/list/foundation */ "./packages/mdc-list/foundation.ts"); var focus_trap_1 = __importDefault(__webpack_require__(/*! focus-trap */ "./packages/mdc-drawer/node_modules/focus-trap/index.js")); var foundation_2 = __webpack_require__(/*! ./dismissible/foundation */ "./packages/mdc-drawer/dismissible/foundation.ts"); var foundation_3 = __webpack_require__(/*! ./modal/foundation */ "./packages/mdc-drawer/modal/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-drawer/util.ts")); var cssClasses = foundation_2.MDCDismissibleDrawerFoundation.cssClasses, strings = foundation_2.MDCDismissibleDrawerFoundation.strings; /** * @events `MDCDrawer:closed {}` Emits when the navigation drawer has closed. * @events `MDCDrawer:opened {}` Emits when the navigation drawer has opened. */ var MDCDrawer = /** @class */function (_super) { __extends(MDCDrawer, _super); function MDCDrawer() { return _super !== null && _super.apply(this, arguments) || this; } MDCDrawer.attachTo = function (root) { return new MDCDrawer(root); }; Object.defineProperty(MDCDrawer.prototype, "open", { /** * @return boolean Proxies to the foundation's `open`/`close` methods. * Also returns true if drawer is in the open position. */ get: function get() { return this.foundation_.isOpen(); }, /** * Toggles the drawer open and closed. */ set: function set(isOpen) { if (isOpen) { this.foundation_.open(); } else { this.foundation_.close(); } }, enumerable: true, configurable: true }); Object.defineProperty(MDCDrawer.prototype, "list", { get: function get() { return this.list_; }, enumerable: true, configurable: true }); MDCDrawer.prototype.initialize = function (focusTrapFactory, listFactory) { if (focusTrapFactory === void 0) { focusTrapFactory = focus_trap_1.default; } if (listFactory === void 0) { listFactory = function listFactory(el) { return new component_2.MDCList(el); }; } var listEl = this.root_.querySelector("." + foundation_1.MDCListFoundation.cssClasses.ROOT); if (listEl) { this.list_ = listFactory(listEl); this.list_.wrapFocus = true; } this.focusTrapFactory_ = focusTrapFactory; }; MDCDrawer.prototype.initialSyncWithDOM = function () { var _this = this; var MODAL = cssClasses.MODAL; var SCRIM_SELECTOR = strings.SCRIM_SELECTOR; this.scrim_ = this.root_.parentNode.querySelector(SCRIM_SELECTOR); if (this.scrim_ && this.root_.classList.contains(MODAL)) { this.handleScrimClick_ = function () { return _this.foundation_.handleScrimClick(); }; this.scrim_.addEventListener('click', this.handleScrimClick_); this.focusTrap_ = util.createFocusTrapInstance(this.root_, this.focusTrapFactory_); } this.handleKeydown_ = function (evt) { return _this.foundation_.handleKeydown(evt); }; this.handleTransitionEnd_ = function (evt) { return _this.foundation_.handleTransitionEnd(evt); }; this.listen('keydown', this.handleKeydown_); this.listen('transitionend', this.handleTransitionEnd_); }; MDCDrawer.prototype.destroy = function () { this.unlisten('keydown', this.handleKeydown_); this.unlisten('transitionend', this.handleTransitionEnd_); if (this.list_) { this.list_.destroy(); } var MODAL = cssClasses.MODAL; if (this.scrim_ && this.handleScrimClick_ && this.root_.classList.contains(MODAL)) { this.scrim_.removeEventListener('click', this.handleScrimClick_); // Ensure drawer is closed to hide scrim and release focus this.open = false; } }; MDCDrawer.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, elementHasClass: function elementHasClass(element, className) { return element.classList.contains(className); }, saveFocus: function saveFocus() { return _this.previousFocus_ = document.activeElement; }, restoreFocus: function restoreFocus() { var previousFocus = _this.previousFocus_; if (previousFocus && previousFocus.focus && _this.root_.contains(document.activeElement)) { previousFocus.focus(); } }, focusActiveNavigationItem: function focusActiveNavigationItem() { var activeNavItemEl = _this.root_.querySelector("." + foundation_1.MDCListFoundation.cssClasses.LIST_ITEM_ACTIVATED_CLASS); if (activeNavItemEl) { activeNavItemEl.focus(); } }, notifyClose: function notifyClose() { return _this.emit(strings.CLOSE_EVENT, {}, true /* shouldBubble */); }, notifyOpen: function notifyOpen() { return _this.emit(strings.OPEN_EVENT, {}, true /* shouldBubble */); }, trapFocus: function trapFocus() { return _this.focusTrap_.activate(); }, releaseFocus: function releaseFocus() { return _this.focusTrap_.deactivate(); } }; // tslint:enable:object-literal-sort-keys var DISMISSIBLE = cssClasses.DISMISSIBLE, MODAL = cssClasses.MODAL; if (this.root_.classList.contains(DISMISSIBLE)) { return new foundation_2.MDCDismissibleDrawerFoundation(adapter); } else if (this.root_.classList.contains(MODAL)) { return new foundation_3.MDCModalDrawerFoundation(adapter); } else { throw new Error("MDCDrawer: Failed to instantiate component. Supported variants are " + DISMISSIBLE + " and " + MODAL + "."); } }; return MDCDrawer; }(component_1.MDCComponent); exports.MDCDrawer = MDCDrawer; /***/ }), /***/ "./packages/mdc-drawer/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-drawer/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ANIMATE: 'mdc-drawer--animate', CLOSING: 'mdc-drawer--closing', DISMISSIBLE: 'mdc-drawer--dismissible', MODAL: 'mdc-drawer--modal', OPEN: 'mdc-drawer--open', OPENING: 'mdc-drawer--opening', ROOT: 'mdc-drawer' }; exports.cssClasses = cssClasses; var strings = { APP_CONTENT_SELECTOR: '.mdc-drawer-app-content', CLOSE_EVENT: 'MDCDrawer:closed', OPEN_EVENT: 'MDCDrawer:opened', SCRIM_SELECTOR: '.mdc-drawer-scrim' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-drawer/dismissible/foundation.ts": /*!*******************************************************!*\ !*** ./packages/mdc-drawer/dismissible/foundation.ts ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ../constants */ "./packages/mdc-drawer/constants.ts"); var MDCDismissibleDrawerFoundation = /** @class */function (_super) { __extends(MDCDismissibleDrawerFoundation, _super); function MDCDismissibleDrawerFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCDismissibleDrawerFoundation.defaultAdapter, adapter)) || this; _this.animationFrame_ = 0; _this.animationTimer_ = 0; return _this; } Object.defineProperty(MDCDismissibleDrawerFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCDismissibleDrawerFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCDismissibleDrawerFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, elementHasClass: function elementHasClass() { return false; }, notifyClose: function notifyClose() { return undefined; }, notifyOpen: function notifyOpen() { return undefined; }, saveFocus: function saveFocus() { return undefined; }, restoreFocus: function restoreFocus() { return undefined; }, focusActiveNavigationItem: function focusActiveNavigationItem() { return undefined; }, trapFocus: function trapFocus() { return undefined; }, releaseFocus: function releaseFocus() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCDismissibleDrawerFoundation.prototype.destroy = function () { if (this.animationFrame_) { cancelAnimationFrame(this.animationFrame_); } if (this.animationTimer_) { clearTimeout(this.animationTimer_); } }; /** * Opens the drawer from the closed state. */ MDCDismissibleDrawerFoundation.prototype.open = function () { var _this = this; if (this.isOpen() || this.isOpening() || this.isClosing()) { return; } this.adapter_.addClass(constants_1.cssClasses.OPEN); this.adapter_.addClass(constants_1.cssClasses.ANIMATE); // Wait a frame once display is no longer "none", to establish basis for animation this.runNextAnimationFrame_(function () { _this.adapter_.addClass(constants_1.cssClasses.OPENING); }); this.adapter_.saveFocus(); }; /** * Closes the drawer from the open state. */ MDCDismissibleDrawerFoundation.prototype.close = function () { if (!this.isOpen() || this.isOpening() || this.isClosing()) { return; } this.adapter_.addClass(constants_1.cssClasses.CLOSING); }; /** * Returns true if the drawer is in the open position. * @return true if drawer is in open state. */ MDCDismissibleDrawerFoundation.prototype.isOpen = function () { return this.adapter_.hasClass(constants_1.cssClasses.OPEN); }; /** * Returns true if the drawer is animating open. * @return true if drawer is animating open. */ MDCDismissibleDrawerFoundation.prototype.isOpening = function () { return this.adapter_.hasClass(constants_1.cssClasses.OPENING) || this.adapter_.hasClass(constants_1.cssClasses.ANIMATE); }; /** * Returns true if the drawer is animating closed. * @return true if drawer is animating closed. */ MDCDismissibleDrawerFoundation.prototype.isClosing = function () { return this.adapter_.hasClass(constants_1.cssClasses.CLOSING); }; /** * Keydown handler to close drawer when key is escape. */ MDCDismissibleDrawerFoundation.prototype.handleKeydown = function (evt) { var keyCode = evt.keyCode, key = evt.key; var isEscape = key === 'Escape' || keyCode === 27; if (isEscape) { this.close(); } }; /** * Handles the `transitionend` event when the drawer finishes opening/closing. */ MDCDismissibleDrawerFoundation.prototype.handleTransitionEnd = function (evt) { var OPENING = constants_1.cssClasses.OPENING, CLOSING = constants_1.cssClasses.CLOSING, OPEN = constants_1.cssClasses.OPEN, ANIMATE = constants_1.cssClasses.ANIMATE, ROOT = constants_1.cssClasses.ROOT; // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first. var isRootElement = this.isElement_(evt.target) && this.adapter_.elementHasClass(evt.target, ROOT); if (!isRootElement) { return; } if (this.isClosing()) { this.adapter_.removeClass(OPEN); this.closed_(); this.adapter_.restoreFocus(); this.adapter_.notifyClose(); } else { this.adapter_.focusActiveNavigationItem(); this.opened_(); this.adapter_.notifyOpen(); } this.adapter_.removeClass(ANIMATE); this.adapter_.removeClass(OPENING); this.adapter_.removeClass(CLOSING); }; /** * Extension point for when drawer finishes open animation. */ MDCDismissibleDrawerFoundation.prototype.opened_ = function () {}; // tslint:disable-line:no-empty /** * Extension point for when drawer finishes close animation. */ MDCDismissibleDrawerFoundation.prototype.closed_ = function () {}; // tslint:disable-line:no-empty /** * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior. */ MDCDismissibleDrawerFoundation.prototype.runNextAnimationFrame_ = function (callback) { var _this = this; cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = requestAnimationFrame(function () { _this.animationFrame_ = 0; clearTimeout(_this.animationTimer_); _this.animationTimer_ = setTimeout(callback, 0); }); }; MDCDismissibleDrawerFoundation.prototype.isElement_ = function (element) { // In Edge, transitionend on ripple pseudo-elements yields a target without classList. return Boolean(element.classList); }; return MDCDismissibleDrawerFoundation; }(foundation_1.MDCFoundation); exports.MDCDismissibleDrawerFoundation = MDCDismissibleDrawerFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCDismissibleDrawerFoundation; /***/ }), /***/ "./packages/mdc-drawer/index.ts": /*!**************************************!*\ !*** ./packages/mdc-drawer/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-drawer/util.ts")); exports.util = util; __export(__webpack_require__(/*! ./component */ "./packages/mdc-drawer/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-drawer/constants.ts")); __export(__webpack_require__(/*! ./dismissible/foundation */ "./packages/mdc-drawer/dismissible/foundation.ts")); __export(__webpack_require__(/*! ./modal/foundation */ "./packages/mdc-drawer/modal/foundation.ts")); /***/ }), /***/ "./packages/mdc-drawer/modal/foundation.ts": /*!*************************************************!*\ !*** ./packages/mdc-drawer/modal/foundation.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! ../dismissible/foundation */ "./packages/mdc-drawer/dismissible/foundation.ts"); /* istanbul ignore next: subclass is not a branch statement */ var MDCModalDrawerFoundation = /** @class */function (_super) { __extends(MDCModalDrawerFoundation, _super); function MDCModalDrawerFoundation() { return _super !== null && _super.apply(this, arguments) || this; } /** * Handles click event on scrim. */ MDCModalDrawerFoundation.prototype.handleScrimClick = function () { this.close(); }; /** * Called when drawer finishes open animation. */ MDCModalDrawerFoundation.prototype.opened_ = function () { this.adapter_.trapFocus(); }; /** * Called when drawer finishes close animation. */ MDCModalDrawerFoundation.prototype.closed_ = function () { this.adapter_.releaseFocus(); }; return MDCModalDrawerFoundation; }(foundation_1.MDCDismissibleDrawerFoundation); exports.MDCModalDrawerFoundation = MDCModalDrawerFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCModalDrawerFoundation; /***/ }), /***/ "./packages/mdc-drawer/node_modules/focus-trap/index.js": /*!**************************************************************!*\ !*** ./packages/mdc-drawer/node_modules/focus-trap/index.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var tabbable = __webpack_require__(/*! tabbable */ "./packages/mdc-drawer/node_modules/tabbable/index.js"); var xtend = __webpack_require__(/*! xtend */ "./packages/mdc-drawer/node_modules/xtend/immutable.js"); var activeFocusTraps = (function() { var trapQueue = []; return { activateTrap: function(trap) { if (trapQueue.length > 0) { var activeTrap = trapQueue[trapQueue.length - 1]; if (activeTrap !== trap) { activeTrap.pause(); } } var trapIndex = trapQueue.indexOf(trap); if (trapIndex === -1) { trapQueue.push(trap); } else { // move this existing trap to the front of the queue trapQueue.splice(trapIndex, 1); trapQueue.push(trap); } }, deactivateTrap: function(trap) { var trapIndex = trapQueue.indexOf(trap); if (trapIndex !== -1) { trapQueue.splice(trapIndex, 1); } if (trapQueue.length > 0) { trapQueue[trapQueue.length - 1].unpause(); } } }; })(); function focusTrap(element, userOptions) { var doc = document; var container = typeof element === 'string' ? doc.querySelector(element) : element; var config = xtend( { returnFocusOnDeactivate: true, escapeDeactivates: true }, userOptions ); var state = { firstTabbableNode: null, lastTabbableNode: null, nodeFocusedBeforeActivation: null, mostRecentlyFocusedNode: null, active: false, paused: false }; var trap = { activate: activate, deactivate: deactivate, pause: pause, unpause: unpause }; return trap; function activate(activateOptions) { if (state.active) return; updateTabbableNodes(); state.active = true; state.paused = false; state.nodeFocusedBeforeActivation = doc.activeElement; var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate; if (onActivate) { onActivate(); } addListeners(); return trap; } function deactivate(deactivateOptions) { if (!state.active) return; removeListeners(); state.active = false; state.paused = false; activeFocusTraps.deactivateTrap(trap); var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate; if (onDeactivate) { onDeactivate(); } var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate; if (returnFocus) { delay(function() { tryFocus(state.nodeFocusedBeforeActivation); }); } return trap; } function pause() { if (state.paused || !state.active) return; state.paused = true; removeListeners(); } function unpause() { if (!state.paused || !state.active) return; state.paused = false; updateTabbableNodes(); addListeners(); } function addListeners() { if (!state.active) return; // There can be only one listening focus trap at a time activeFocusTraps.activateTrap(trap); // Delay ensures that the focused element doesn't capture the event // that caused the focus trap activation. delay(function() { tryFocus(getInitialFocusNode()); }); doc.addEventListener('focusin', checkFocusIn, true); doc.addEventListener('mousedown', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('touchstart', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('click', checkClick, { capture: true, passive: false }); doc.addEventListener('keydown', checkKey, { capture: true, passive: false }); return trap; } function removeListeners() { if (!state.active) return; doc.removeEventListener('focusin', checkFocusIn, true); doc.removeEventListener('mousedown', checkPointerDown, true); doc.removeEventListener('touchstart', checkPointerDown, true); doc.removeEventListener('click', checkClick, true); doc.removeEventListener('keydown', checkKey, true); return trap; } function getNodeForOption(optionName) { var optionValue = config[optionName]; var node = optionValue; if (!optionValue) { return null; } if (typeof optionValue === 'string') { node = doc.querySelector(optionValue); if (!node) { throw new Error('`' + optionName + '` refers to no known node'); } } if (typeof optionValue === 'function') { node = optionValue(); if (!node) { throw new Error('`' + optionName + '` did not return a node'); } } return node; } function getInitialFocusNode() { var node; if (getNodeForOption('initialFocus') !== null) { node = getNodeForOption('initialFocus'); } else if (container.contains(doc.activeElement)) { node = doc.activeElement; } else { node = state.firstTabbableNode || getNodeForOption('fallbackFocus'); } if (!node) { throw new Error( "You can't have a focus-trap without at least one focusable element" ); } return node; } // This needs to be done on mousedown and touchstart instead of click // so that it precedes the focus event. function checkPointerDown(e) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ returnFocus: !tabbable.isFocusable(e.target) }); } else { e.preventDefault(); } } // In case focus escapes the trap for some strange reason, pull it back in. function checkFocusIn(e) { // In Firefox when you Tab out of an iframe the Document is briefly focused. if (container.contains(e.target) || e.target instanceof Document) { return; } e.stopImmediatePropagation(); tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); } function checkKey(e) { if (config.escapeDeactivates !== false && isEscapeEvent(e)) { e.preventDefault(); deactivate(); return; } if (isTabEvent(e)) { checkTab(e); return; } } // Hijack Tab events on the first and last focusable nodes of the trap, // in order to prevent focus from escaping. If it escapes for even a // moment it can end up scrolling the page and causing confusion so we // kind of need to capture the action at the keydown phase. function checkTab(e) { updateTabbableNodes(); if (e.shiftKey && e.target === state.firstTabbableNode) { e.preventDefault(); tryFocus(state.lastTabbableNode); return; } if (!e.shiftKey && e.target === state.lastTabbableNode) { e.preventDefault(); tryFocus(state.firstTabbableNode); return; } } function checkClick(e) { if (config.clickOutsideDeactivates) return; if (container.contains(e.target)) return; e.preventDefault(); e.stopImmediatePropagation(); } function updateTabbableNodes() { var tabbableNodes = tabbable(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); } function tryFocus(node) { if (node === doc.activeElement) return; if (!node || !node.focus) { tryFocus(getInitialFocusNode()); return; } node.focus(); state.mostRecentlyFocusedNode = node; if (isSelectableInput(node)) { node.select(); } } } function isSelectableInput(node) { return ( node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function' ); } function isEscapeEvent(e) { return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27; } function isTabEvent(e) { return e.key === 'Tab' || e.keyCode === 9; } function delay(fn) { return setTimeout(fn, 0); } module.exports = focusTrap; /***/ }), /***/ "./packages/mdc-drawer/node_modules/tabbable/index.js": /*!************************************************************!*\ !*** ./packages/mdc-drawer/node_modules/tabbable/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { var candidateSelectors = [ 'input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', ]; var candidateSelector = candidateSelectors.join(','); var matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; function tabbable(el, options) { options = options || {}; var regularTabbables = []; var orderedTabbables = []; var candidates = el.querySelectorAll(candidateSelector); if (options.includeContainer) { if (matches.call(el, candidateSelector)) { candidates = Array.prototype.slice.apply(candidates); candidates.unshift(el); } } var i, candidate, candidateTabindex; for (i = 0; i < candidates.length; i++) { candidate = candidates[i]; if (!isNodeMatchingSelectorTabbable(candidate)) continue; candidateTabindex = getTabindex(candidate); if (candidateTabindex === 0) { regularTabbables.push(candidate); } else { orderedTabbables.push({ documentOrder: i, tabIndex: candidateTabindex, node: candidate, }); } } var tabbableNodes = orderedTabbables .sort(sortOrderedTabbables) .map(function(a) { return a.node }) .concat(regularTabbables); return tabbableNodes; } tabbable.isTabbable = isTabbable; tabbable.isFocusable = isFocusable; function isNodeMatchingSelectorTabbable(node) { if ( !isNodeMatchingSelectorFocusable(node) || isNonTabbableRadio(node) || getTabindex(node) < 0 ) { return false; } return true; } function isTabbable(node) { if (!node) throw new Error('No node provided'); if (matches.call(node, candidateSelector) === false) return false; return isNodeMatchingSelectorTabbable(node); } function isNodeMatchingSelectorFocusable(node) { if ( node.disabled || isHiddenInput(node) || isHidden(node) ) { return false; } return true; } var focusableCandidateSelector = candidateSelectors.concat('iframe').join(','); function isFocusable(node) { if (!node) throw new Error('No node provided'); if (matches.call(node, focusableCandidateSelector) === false) return false; return isNodeMatchingSelectorFocusable(node); } function getTabindex(node) { var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10); if (!isNaN(tabindexAttr)) return tabindexAttr; // Browsers do not return `tabIndex` correctly for contentEditable nodes; // so if they don't have a tabindex attribute specifically set, assume it's 0. if (isContentEditable(node)) return 0; return node.tabIndex; } function sortOrderedTabbables(a, b) { return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex; } function isContentEditable(node) { return node.contentEditable === 'true'; } function isInput(node) { return node.tagName === 'INPUT'; } function isHiddenInput(node) { return isInput(node) && node.type === 'hidden'; } function isRadio(node) { return isInput(node) && node.type === 'radio'; } function isNonTabbableRadio(node) { return isRadio(node) && !isTabbableRadio(node); } function getCheckedRadio(nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i].checked) { return nodes[i]; } } } function isTabbableRadio(node) { if (!node.name) return true; // This won't account for the edge case where you have radio groups with the same // in separate forms on the same page. var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]'); var checked = getCheckedRadio(radioSet); return !checked || checked === node; } function isHidden(node) { // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element, // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well. return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden'; } module.exports = tabbable; /***/ }), /***/ "./packages/mdc-drawer/node_modules/xtend/immutable.js": /*!*************************************************************!*\ !*** ./packages/mdc-drawer/node_modules/xtend/immutable.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = extend var hasOwnProperty = Object.prototype.hasOwnProperty; function extend() { var target = {} for (var i = 0; i < arguments.length; i++) { var source = arguments[i] for (var key in source) { if (hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target } /***/ }), /***/ "./packages/mdc-drawer/util.ts": /*!*************************************!*\ !*** ./packages/mdc-drawer/util.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var focus_trap_1 = __importDefault(__webpack_require__(/*! focus-trap */ "./packages/mdc-drawer/node_modules/focus-trap/index.js")); function createFocusTrapInstance(surfaceEl, focusTrapFactory) { if (focusTrapFactory === void 0) { focusTrapFactory = focus_trap_1.default; } return focusTrapFactory(surfaceEl, { clickOutsideDeactivates: true, escapeDeactivates: false, initialFocus: undefined, returnFocusOnDeactivate: false }); } exports.createFocusTrapInstance = createFocusTrapInstance; /***/ }), /***/ "./packages/mdc-floating-label/component.ts": /*!**************************************************!*\ !*** ./packages/mdc-floating-label/component.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-floating-label/foundation.ts"); var MDCFloatingLabel = /** @class */function (_super) { __extends(MDCFloatingLabel, _super); function MDCFloatingLabel() { return _super !== null && _super.apply(this, arguments) || this; } MDCFloatingLabel.attachTo = function (root) { return new MDCFloatingLabel(root); }; /** * Styles the label to produce the label shake for errors. * @param shouldShake If true, shakes the label by adding a CSS class; otherwise, stops shaking by removing the class. */ MDCFloatingLabel.prototype.shake = function (shouldShake) { this.foundation_.shake(shouldShake); }; /** * Styles the label to float/dock. * @param shouldFloat If true, floats the label by adding a CSS class; otherwise, docks it by removing the class. */ MDCFloatingLabel.prototype.float = function (shouldFloat) { this.foundation_.float(shouldFloat); }; MDCFloatingLabel.prototype.getWidth = function () { return this.foundation_.getWidth(); }; MDCFloatingLabel.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, getWidth: function getWidth() { return _this.root_.scrollWidth; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.listen(evtType, handler); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.unlisten(evtType, handler); } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCFloatingLabelFoundation(adapter); }; return MDCFloatingLabel; }(component_1.MDCComponent); exports.MDCFloatingLabel = MDCFloatingLabel; /***/ }), /***/ "./packages/mdc-floating-label/constants.ts": /*!**************************************************!*\ !*** ./packages/mdc-floating-label/constants.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above', LABEL_SHAKE: 'mdc-floating-label--shake', ROOT: 'mdc-floating-label' }; /***/ }), /***/ "./packages/mdc-floating-label/foundation.ts": /*!***************************************************!*\ !*** ./packages/mdc-floating-label/foundation.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-floating-label/constants.ts"); var MDCFloatingLabelFoundation = /** @class */function (_super) { __extends(MDCFloatingLabelFoundation, _super); function MDCFloatingLabelFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCFloatingLabelFoundation.defaultAdapter, adapter)) || this; _this.shakeAnimationEndHandler_ = function () { return _this.handleShakeAnimationEnd_(); }; return _this; } Object.defineProperty(MDCFloatingLabelFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFloatingLabelFoundation, "defaultAdapter", { /** * See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, getWidth: function getWidth() { return 0; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCFloatingLabelFoundation.prototype.init = function () { this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_); }; MDCFloatingLabelFoundation.prototype.destroy = function () { this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_); }; /** * Returns the width of the label element. */ MDCFloatingLabelFoundation.prototype.getWidth = function () { return this.adapter_.getWidth(); }; /** * Styles the label to produce a shake animation to indicate an error. * @param shouldShake If true, adds the shake CSS class; otherwise, removes shake class. */ MDCFloatingLabelFoundation.prototype.shake = function (shouldShake) { var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE; if (shouldShake) { this.adapter_.addClass(LABEL_SHAKE); } else { this.adapter_.removeClass(LABEL_SHAKE); } }; /** * Styles the label to float or dock. * @param shouldFloat If true, adds the float CSS class; otherwise, removes float and shake classes to dock the label. */ MDCFloatingLabelFoundation.prototype.float = function (shouldFloat) { var _a = MDCFloatingLabelFoundation.cssClasses, LABEL_FLOAT_ABOVE = _a.LABEL_FLOAT_ABOVE, LABEL_SHAKE = _a.LABEL_SHAKE; if (shouldFloat) { this.adapter_.addClass(LABEL_FLOAT_ABOVE); } else { this.adapter_.removeClass(LABEL_FLOAT_ABOVE); this.adapter_.removeClass(LABEL_SHAKE); } }; MDCFloatingLabelFoundation.prototype.handleShakeAnimationEnd_ = function () { var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE; this.adapter_.removeClass(LABEL_SHAKE); }; return MDCFloatingLabelFoundation; }(foundation_1.MDCFoundation); exports.MDCFloatingLabelFoundation = MDCFloatingLabelFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCFloatingLabelFoundation; /***/ }), /***/ "./packages/mdc-floating-label/index.ts": /*!**********************************************!*\ !*** ./packages/mdc-floating-label/index.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-floating-label/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-floating-label/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-floating-label/foundation.ts")); /***/ }), /***/ "./packages/mdc-form-field/component.ts": /*!**********************************************!*\ !*** ./packages/mdc-form-field/component.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-form-field/foundation.ts"); var MDCFormField = /** @class */function (_super) { __extends(MDCFormField, _super); function MDCFormField() { return _super !== null && _super.apply(this, arguments) || this; } MDCFormField.attachTo = function (root) { return new MDCFormField(root); }; Object.defineProperty(MDCFormField.prototype, "input", { get: function get() { return this.input_; }, set: function set(input) { this.input_ = input; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFormField.prototype, "label_", { get: function get() { var LABEL_SELECTOR = foundation_1.MDCFormFieldFoundation.strings.LABEL_SELECTOR; return this.root_.querySelector(LABEL_SELECTOR); }, enumerable: true, configurable: true }); MDCFormField.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { activateInputRipple: function activateInputRipple() { if (_this.input_ && _this.input_.ripple) { _this.input_.ripple.activate(); } }, deactivateInputRipple: function deactivateInputRipple() { if (_this.input_ && _this.input_.ripple) { _this.input_.ripple.deactivate(); } }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { if (_this.label_) { _this.label_.removeEventListener(evtType, handler); } }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { if (_this.label_) { _this.label_.addEventListener(evtType, handler); } } }; return new foundation_1.MDCFormFieldFoundation(adapter); }; return MDCFormField; }(component_1.MDCComponent); exports.MDCFormField = MDCFormField; /***/ }), /***/ "./packages/mdc-form-field/constants.ts": /*!**********************************************!*\ !*** ./packages/mdc-form-field/constants.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { ROOT: 'mdc-form-field' }; exports.strings = { LABEL_SELECTOR: '.mdc-form-field > label' }; /***/ }), /***/ "./packages/mdc-form-field/foundation.ts": /*!***********************************************!*\ !*** ./packages/mdc-form-field/foundation.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-form-field/constants.ts"); var MDCFormFieldFoundation = /** @class */function (_super) { __extends(MDCFormFieldFoundation, _super); function MDCFormFieldFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCFormFieldFoundation.defaultAdapter, adapter)) || this; _this.clickHandler_ = function () { return _this.handleClick_(); }; return _this; } Object.defineProperty(MDCFormFieldFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFormFieldFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCFormFieldFoundation, "defaultAdapter", { get: function get() { return { activateInputRipple: function activateInputRipple() { return undefined; }, deactivateInputRipple: function deactivateInputRipple() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; } }; }, enumerable: true, configurable: true }); MDCFormFieldFoundation.prototype.init = function () { this.adapter_.registerInteractionHandler('click', this.clickHandler_); }; MDCFormFieldFoundation.prototype.destroy = function () { this.adapter_.deregisterInteractionHandler('click', this.clickHandler_); }; MDCFormFieldFoundation.prototype.handleClick_ = function () { var _this = this; this.adapter_.activateInputRipple(); requestAnimationFrame(function () { return _this.adapter_.deactivateInputRipple(); }); }; return MDCFormFieldFoundation; }(foundation_1.MDCFoundation); exports.MDCFormFieldFoundation = MDCFormFieldFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCFormFieldFoundation; /***/ }), /***/ "./packages/mdc-form-field/index.ts": /*!******************************************!*\ !*** ./packages/mdc-form-field/index.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-form-field/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-form-field/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-form-field/foundation.ts")); /***/ }), /***/ "./packages/mdc-grid-list/component.ts": /*!*********************************************!*\ !*** ./packages/mdc-grid-list/component.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-grid-list/foundation.ts"); var MDCGridList = /** @class */function (_super) { __extends(MDCGridList, _super); function MDCGridList() { return _super !== null && _super.apply(this, arguments) || this; } MDCGridList.attachTo = function (root) { return new MDCGridList(root); }; MDCGridList.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { deregisterResizeHandler: function deregisterResizeHandler(handler) { return window.removeEventListener('resize', handler); }, getNumberOfTiles: function getNumberOfTiles() { return _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR).length; }, getOffsetWidth: function getOffsetWidth() { return _this.root_.offsetWidth; }, getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) { var tileEl = _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR)[index]; return tileEl.offsetWidth; }, registerResizeHandler: function registerResizeHandler(handler) { return window.addEventListener('resize', handler); }, setStyleForTilesElement: function setStyleForTilesElement(property, value) { var tilesEl = _this.root_.querySelector(foundation_1.MDCGridListFoundation.strings.TILES_SELECTOR); tilesEl.style[property] = value; } }; return new foundation_1.MDCGridListFoundation(adapter); }; return MDCGridList; }(component_1.MDCComponent); exports.MDCGridList = MDCGridList; /***/ }), /***/ "./packages/mdc-grid-list/constants.ts": /*!*********************************************!*\ !*** ./packages/mdc-grid-list/constants.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.strings = { TILES_SELECTOR: '.mdc-grid-list__tiles', TILE_SELECTOR: '.mdc-grid-tile' }; /***/ }), /***/ "./packages/mdc-grid-list/foundation.ts": /*!**********************************************!*\ !*** ./packages/mdc-grid-list/foundation.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-grid-list/constants.ts"); var MDCGridListFoundation = /** @class */function (_super) { __extends(MDCGridListFoundation, _super); /* istanbul ignore next: optional argument is not a branch statement */ function MDCGridListFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCGridListFoundation.defaultAdapter, adapter)) || this; _this.resizeFrame_ = 0; _this.resizeHandler_ = _this.alignCenter.bind(_this); return _this; } Object.defineProperty(MDCGridListFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCGridListFoundation, "defaultAdapter", { get: function get() { return { deregisterResizeHandler: function deregisterResizeHandler() { return undefined; }, getNumberOfTiles: function getNumberOfTiles() { return 0; }, getOffsetWidth: function getOffsetWidth() { return 0; }, getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() { return 0; }, registerResizeHandler: function registerResizeHandler() { return undefined; }, setStyleForTilesElement: function setStyleForTilesElement() { return undefined; } }; }, enumerable: true, configurable: true }); MDCGridListFoundation.prototype.init = function () { this.alignCenter(); this.adapter_.registerResizeHandler(this.resizeHandler_); }; MDCGridListFoundation.prototype.destroy = function () { this.adapter_.deregisterResizeHandler(this.resizeHandler_); }; MDCGridListFoundation.prototype.alignCenter = function () { var _this = this; cancelAnimationFrame(this.resizeFrame_); this.resizeFrame_ = requestAnimationFrame(function () { _this.alignCenter_(); _this.resizeFrame_ = 0; }); }; MDCGridListFoundation.prototype.alignCenter_ = function () { if (this.adapter_.getNumberOfTiles() === 0) { return; } var gridWidth = this.adapter_.getOffsetWidth(); var itemWidth = this.adapter_.getOffsetWidthForTileAtIndex(0); var tilesWidth = itemWidth * Math.floor(gridWidth / itemWidth); this.adapter_.setStyleForTilesElement('width', tilesWidth + "px"); }; return MDCGridListFoundation; }(foundation_1.MDCFoundation); exports.MDCGridListFoundation = MDCGridListFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCGridListFoundation; /***/ }), /***/ "./packages/mdc-grid-list/index.ts": /*!*****************************************!*\ !*** ./packages/mdc-grid-list/index.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-grid-list/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-grid-list/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-grid-list/foundation.ts")); /***/ }), /***/ "./packages/mdc-icon-button/component.ts": /*!***********************************************!*\ !*** ./packages/mdc-icon-button/component.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-icon-button/foundation.ts"); var strings = foundation_1.MDCIconButtonToggleFoundation.strings; var MDCIconButtonToggle = /** @class */function (_super) { __extends(MDCIconButtonToggle, _super); function MDCIconButtonToggle() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.ripple_ = _this.createRipple_(); return _this; } MDCIconButtonToggle.attachTo = function (root) { return new MDCIconButtonToggle(root); }; MDCIconButtonToggle.prototype.initialSyncWithDOM = function () { var _this = this; this.handleClick_ = function () { return _this.foundation_.handleClick(); }; this.listen('click', this.handleClick_); }; MDCIconButtonToggle.prototype.destroy = function () { this.unlisten('click', this.handleClick_); this.ripple_.destroy(); _super.prototype.destroy.call(this); }; MDCIconButtonToggle.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, notifyChange: function notifyChange(evtData) { return _this.emit(strings.CHANGE_EVENT, evtData); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setAttr: function setAttr(attrName, attrValue) { return _this.root_.setAttribute(attrName, attrValue); } }; return new foundation_1.MDCIconButtonToggleFoundation(adapter); }; Object.defineProperty(MDCIconButtonToggle.prototype, "ripple", { get: function get() { return this.ripple_; }, enumerable: true, configurable: true }); Object.defineProperty(MDCIconButtonToggle.prototype, "on", { get: function get() { return this.foundation_.isOn(); }, set: function set(isOn) { this.foundation_.toggle(isOn); }, enumerable: true, configurable: true }); MDCIconButtonToggle.prototype.createRipple_ = function () { var ripple = new component_2.MDCRipple(this.root_); ripple.unbounded = true; return ripple; }; return MDCIconButtonToggle; }(component_1.MDCComponent); exports.MDCIconButtonToggle = MDCIconButtonToggle; /***/ }), /***/ "./packages/mdc-icon-button/constants.ts": /*!***********************************************!*\ !*** ./packages/mdc-icon-button/constants.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { ICON_BUTTON_ON: 'mdc-icon-button--on', ROOT: 'mdc-icon-button' }; exports.strings = { ARIA_PRESSED: 'aria-pressed', CHANGE_EVENT: 'MDCIconButtonToggle:change' }; /***/ }), /***/ "./packages/mdc-icon-button/foundation.ts": /*!************************************************!*\ !*** ./packages/mdc-icon-button/foundation.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-icon-button/constants.ts"); var MDCIconButtonToggleFoundation = /** @class */function (_super) { __extends(MDCIconButtonToggleFoundation, _super); function MDCIconButtonToggleFoundation(adapter) { return _super.call(this, __assign({}, MDCIconButtonToggleFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCIconButtonToggleFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCIconButtonToggleFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCIconButtonToggleFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, hasClass: function hasClass() { return false; }, notifyChange: function notifyChange() { return undefined; }, removeClass: function removeClass() { return undefined; }, setAttr: function setAttr() { return undefined; } }; }, enumerable: true, configurable: true }); MDCIconButtonToggleFoundation.prototype.init = function () { this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, "" + this.isOn()); }; MDCIconButtonToggleFoundation.prototype.handleClick = function () { this.toggle(); this.adapter_.notifyChange({ isOn: this.isOn() }); }; MDCIconButtonToggleFoundation.prototype.isOn = function () { return this.adapter_.hasClass(constants_1.cssClasses.ICON_BUTTON_ON); }; MDCIconButtonToggleFoundation.prototype.toggle = function (isOn) { if (isOn === void 0) { isOn = !this.isOn(); } if (isOn) { this.adapter_.addClass(constants_1.cssClasses.ICON_BUTTON_ON); } else { this.adapter_.removeClass(constants_1.cssClasses.ICON_BUTTON_ON); } this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, "" + isOn); }; return MDCIconButtonToggleFoundation; }(foundation_1.MDCFoundation); exports.MDCIconButtonToggleFoundation = MDCIconButtonToggleFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCIconButtonToggleFoundation; /***/ }), /***/ "./packages/mdc-icon-button/index.ts": /*!*******************************************!*\ !*** ./packages/mdc-icon-button/index.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-icon-button/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-icon-button/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-icon-button/foundation.ts")); /***/ }), /***/ "./packages/mdc-line-ripple/component.ts": /*!***********************************************!*\ !*** ./packages/mdc-line-ripple/component.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-line-ripple/foundation.ts"); var MDCLineRipple = /** @class */function (_super) { __extends(MDCLineRipple, _super); function MDCLineRipple() { return _super !== null && _super.apply(this, arguments) || this; } MDCLineRipple.attachTo = function (root) { return new MDCLineRipple(root); }; /** * Activates the line ripple */ MDCLineRipple.prototype.activate = function () { this.foundation_.activate(); }; /** * Deactivates the line ripple */ MDCLineRipple.prototype.deactivate = function () { this.foundation_.deactivate(); }; /** * Sets the transform origin given a user's click location. * The `rippleCenter` is the x-coordinate of the middle of the ripple. */ MDCLineRipple.prototype.setRippleCenter = function (xCoordinate) { this.foundation_.setRippleCenter(xCoordinate); }; MDCLineRipple.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, setStyle: function setStyle(propertyName, value) { return _this.root_.style.setProperty(propertyName, value); }, registerEventHandler: function registerEventHandler(evtType, handler) { return _this.listen(evtType, handler); }, deregisterEventHandler: function deregisterEventHandler(evtType, handler) { return _this.unlisten(evtType, handler); } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCLineRippleFoundation(adapter); }; return MDCLineRipple; }(component_1.MDCComponent); exports.MDCLineRipple = MDCLineRipple; /***/ }), /***/ "./packages/mdc-line-ripple/constants.ts": /*!***********************************************!*\ !*** ./packages/mdc-line-ripple/constants.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active', LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating' }; exports.cssClasses = cssClasses; /***/ }), /***/ "./packages/mdc-line-ripple/foundation.ts": /*!************************************************!*\ !*** ./packages/mdc-line-ripple/foundation.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-line-ripple/constants.ts"); var MDCLineRippleFoundation = /** @class */function (_super) { __extends(MDCLineRippleFoundation, _super); function MDCLineRippleFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCLineRippleFoundation.defaultAdapter, adapter)) || this; _this.transitionEndHandler_ = function (evt) { return _this.handleTransitionEnd(evt); }; return _this; } Object.defineProperty(MDCLineRippleFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCLineRippleFoundation, "defaultAdapter", { /** * See {@link MDCLineRippleAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, setStyle: function setStyle() { return undefined; }, registerEventHandler: function registerEventHandler() { return undefined; }, deregisterEventHandler: function deregisterEventHandler() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCLineRippleFoundation.prototype.init = function () { this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_); }; MDCLineRippleFoundation.prototype.destroy = function () { this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_); }; MDCLineRippleFoundation.prototype.activate = function () { this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING); this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE); }; MDCLineRippleFoundation.prototype.setRippleCenter = function (xCoordinate) { this.adapter_.setStyle('transform-origin', xCoordinate + "px center"); }; MDCLineRippleFoundation.prototype.deactivate = function () { this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING); }; MDCLineRippleFoundation.prototype.handleTransitionEnd = function (evt) { // Wait for the line ripple to be either transparent or opaque // before emitting the animation end event var isDeactivating = this.adapter_.hasClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING); if (evt.propertyName === 'opacity') { if (isDeactivating) { this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE); this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING); } } }; return MDCLineRippleFoundation; }(foundation_1.MDCFoundation); exports.MDCLineRippleFoundation = MDCLineRippleFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCLineRippleFoundation; /***/ }), /***/ "./packages/mdc-line-ripple/index.ts": /*!*******************************************!*\ !*** ./packages/mdc-line-ripple/index.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-line-ripple/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-line-ripple/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-line-ripple/foundation.ts")); /***/ }), /***/ "./packages/mdc-linear-progress/component.ts": /*!***************************************************!*\ !*** ./packages/mdc-linear-progress/component.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-linear-progress/foundation.ts"); var MDCLinearProgress = /** @class */function (_super) { __extends(MDCLinearProgress, _super); function MDCLinearProgress() { return _super !== null && _super.apply(this, arguments) || this; } MDCLinearProgress.attachTo = function (root) { return new MDCLinearProgress(root); }; Object.defineProperty(MDCLinearProgress.prototype, "determinate", { set: function set(value) { this.foundation_.setDeterminate(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCLinearProgress.prototype, "progress", { set: function set(value) { this.foundation_.setProgress(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCLinearProgress.prototype, "buffer", { set: function set(value) { this.foundation_.setBuffer(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCLinearProgress.prototype, "reverse", { set: function set(value) { this.foundation_.setReverse(value); }, enumerable: true, configurable: true }); MDCLinearProgress.prototype.open = function () { this.foundation_.open(); }; MDCLinearProgress.prototype.close = function () { this.foundation_.close(); }; MDCLinearProgress.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, getBuffer: function getBuffer() { return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.BUFFER_SELECTOR); }, getPrimaryBar: function getPrimaryBar() { return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.PRIMARY_BAR_SELECTOR); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setStyle: function setStyle(el, styleProperty, value) { return el.style.setProperty(styleProperty, value); } }; return new foundation_1.MDCLinearProgressFoundation(adapter); }; return MDCLinearProgress; }(component_1.MDCComponent); exports.MDCLinearProgress = MDCLinearProgress; /***/ }), /***/ "./packages/mdc-linear-progress/constants.ts": /*!***************************************************!*\ !*** ./packages/mdc-linear-progress/constants.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { CLOSED_CLASS: 'mdc-linear-progress--closed', INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate', REVERSED_CLASS: 'mdc-linear-progress--reversed' }; exports.strings = { BUFFER_SELECTOR: '.mdc-linear-progress__buffer', PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar' }; /***/ }), /***/ "./packages/mdc-linear-progress/foundation.ts": /*!****************************************************!*\ !*** ./packages/mdc-linear-progress/foundation.ts ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(/*! @material/animation/util */ "./packages/mdc-animation/util.ts"); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-linear-progress/constants.ts"); var MDCLinearProgressFoundation = /** @class */function (_super) { __extends(MDCLinearProgressFoundation, _super); function MDCLinearProgressFoundation(adapter) { return _super.call(this, __assign({}, MDCLinearProgressFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCLinearProgressFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCLinearProgressFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCLinearProgressFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, getBuffer: function getBuffer() { return null; }, getPrimaryBar: function getPrimaryBar() { return null; }, hasClass: function hasClass() { return false; }, removeClass: function removeClass() { return undefined; }, setStyle: function setStyle() { return undefined; } }; }, enumerable: true, configurable: true }); MDCLinearProgressFoundation.prototype.init = function () { this.isDeterminate_ = !this.adapter_.hasClass(constants_1.cssClasses.INDETERMINATE_CLASS); this.isReversed_ = this.adapter_.hasClass(constants_1.cssClasses.REVERSED_CLASS); this.progress_ = 0; }; MDCLinearProgressFoundation.prototype.setDeterminate = function (isDeterminate) { this.isDeterminate_ = isDeterminate; if (this.isDeterminate_) { this.adapter_.removeClass(constants_1.cssClasses.INDETERMINATE_CLASS); this.setScale_(this.adapter_.getPrimaryBar(), this.progress_); } else { this.adapter_.addClass(constants_1.cssClasses.INDETERMINATE_CLASS); this.setScale_(this.adapter_.getPrimaryBar(), 1); this.setScale_(this.adapter_.getBuffer(), 1); } }; MDCLinearProgressFoundation.prototype.setProgress = function (value) { this.progress_ = value; if (this.isDeterminate_) { this.setScale_(this.adapter_.getPrimaryBar(), value); } }; MDCLinearProgressFoundation.prototype.setBuffer = function (value) { if (this.isDeterminate_) { this.setScale_(this.adapter_.getBuffer(), value); } }; MDCLinearProgressFoundation.prototype.setReverse = function (isReversed) { this.isReversed_ = isReversed; if (this.isReversed_) { this.adapter_.addClass(constants_1.cssClasses.REVERSED_CLASS); } else { this.adapter_.removeClass(constants_1.cssClasses.REVERSED_CLASS); } }; MDCLinearProgressFoundation.prototype.open = function () { this.adapter_.removeClass(constants_1.cssClasses.CLOSED_CLASS); }; MDCLinearProgressFoundation.prototype.close = function () { this.adapter_.addClass(constants_1.cssClasses.CLOSED_CLASS); }; MDCLinearProgressFoundation.prototype.setScale_ = function (el, scaleValue) { if (!el) { return; } var value = "scaleX(" + scaleValue + ")"; this.adapter_.setStyle(el, util_1.getCorrectPropertyName(window, 'transform'), value); }; return MDCLinearProgressFoundation; }(foundation_1.MDCFoundation); exports.MDCLinearProgressFoundation = MDCLinearProgressFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCLinearProgressFoundation; /***/ }), /***/ "./packages/mdc-linear-progress/index.ts": /*!***********************************************!*\ !*** ./packages/mdc-linear-progress/index.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-linear-progress/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-linear-progress/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-linear-progress/foundation.ts")); /***/ }), /***/ "./packages/mdc-list/component.ts": /*!****************************************!*\ !*** ./packages/mdc-list/component.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-list/constants.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-list/foundation.ts"); var MDCList = /** @class */function (_super) { __extends(MDCList, _super); function MDCList() { return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(MDCList.prototype, "vertical", { set: function set(value) { this.foundation_.setVerticalOrientation(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCList.prototype, "listElements", { get: function get() { return [].slice.call(this.root_.querySelectorAll("." + constants_1.cssClasses.LIST_ITEM_CLASS)); }, enumerable: true, configurable: true }); Object.defineProperty(MDCList.prototype, "wrapFocus", { set: function set(value) { this.foundation_.setWrapFocus(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCList.prototype, "singleSelection", { set: function set(isSingleSelectionList) { this.foundation_.setSingleSelection(isSingleSelectionList); }, enumerable: true, configurable: true }); Object.defineProperty(MDCList.prototype, "selectedIndex", { get: function get() { return this.foundation_.getSelectedIndex(); }, set: function set(index) { this.foundation_.setSelectedIndex(index); }, enumerable: true, configurable: true }); MDCList.attachTo = function (root) { return new MDCList(root); }; MDCList.prototype.initialSyncWithDOM = function () { this.handleClick_ = this.handleClickEvent_.bind(this); this.handleKeydown_ = this.handleKeydownEvent_.bind(this); this.focusInEventListener_ = this.handleFocusInEvent_.bind(this); this.focusOutEventListener_ = this.handleFocusOutEvent_.bind(this); this.listen('keydown', this.handleKeydown_); this.listen('click', this.handleClick_); this.listen('focusin', this.focusInEventListener_); this.listen('focusout', this.focusOutEventListener_); this.layout(); this.initializeListType(); }; MDCList.prototype.destroy = function () { this.unlisten('keydown', this.handleKeydown_); this.unlisten('click', this.handleClick_); this.unlisten('focusin', this.focusInEventListener_); this.unlisten('focusout', this.focusOutEventListener_); }; MDCList.prototype.layout = function () { var direction = this.root_.getAttribute(constants_1.strings.ARIA_ORIENTATION); this.vertical = direction !== constants_1.strings.ARIA_ORIENTATION_HORIZONTAL; // List items need to have at least tabindex=-1 to be focusable. [].slice.call(this.root_.querySelectorAll('.mdc-list-item:not([tabindex])')).forEach(function (el) { el.setAttribute('tabindex', '-1'); }); // Child button/a elements are not tabbable until the list item is focused. [].slice.call(this.root_.querySelectorAll(constants_1.strings.FOCUSABLE_CHILD_ELEMENTS)).forEach(function (el) { return el.setAttribute('tabindex', '-1'); }); this.foundation_.layout(); }; /** * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio. */ MDCList.prototype.initializeListType = function () { var _this = this; var checkboxListItems = this.root_.querySelectorAll(constants_1.strings.ARIA_ROLE_CHECKBOX_SELECTOR); var singleSelectedListItem = this.root_.querySelector("\n ." + constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS + ",\n ." + constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS + "\n "); var radioSelectedListItem = this.root_.querySelector(constants_1.strings.ARIA_CHECKED_RADIO_SELECTOR); if (checkboxListItems.length) { var preselectedItems = this.root_.querySelectorAll(constants_1.strings.ARIA_CHECKED_CHECKBOX_SELECTOR); this.selectedIndex = [].map.call(preselectedItems, function (listItem) { return _this.listElements.indexOf(listItem); }); } else if (singleSelectedListItem) { if (singleSelectedListItem.classList.contains(constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS)) { this.foundation_.setUseActivatedClass(true); } this.singleSelection = true; this.selectedIndex = this.listElements.indexOf(singleSelectedListItem); } else if (radioSelectedListItem) { this.selectedIndex = this.listElements.indexOf(radioSelectedListItem); } }; /** * Updates the list item at itemIndex to the desired isEnabled state. * @param itemIndex Index of the list item * @param isEnabled Sets the list item to enabled or disabled. */ MDCList.prototype.setEnabled = function (itemIndex, isEnabled) { this.foundation_.setEnabled(itemIndex, isEnabled); }; MDCList.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClassForElementIndex: function addClassForElementIndex(index, className) { var element = _this.listElements[index]; if (element) { element.classList.add(className); } }, focusItemAtIndex: function focusItemAtIndex(index) { var element = _this.listElements[index]; if (element) { element.focus(); } }, getAttributeForElementIndex: function getAttributeForElementIndex(index, attr) { return _this.listElements[index].getAttribute(attr); }, getFocusedElementIndex: function getFocusedElementIndex() { return _this.listElements.indexOf(document.activeElement); }, getListItemCount: function getListItemCount() { return _this.listElements.length; }, hasCheckboxAtIndex: function hasCheckboxAtIndex(index) { var listItem = _this.listElements[index]; return !!listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR); }, hasRadioAtIndex: function hasRadioAtIndex(index) { var listItem = _this.listElements[index]; return !!listItem.querySelector(constants_1.strings.RADIO_SELECTOR); }, isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex(index) { var listItem = _this.listElements[index]; var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR); return toggleEl.checked; }, isFocusInsideList: function isFocusInsideList() { return _this.root_.contains(document.activeElement); }, isRootFocused: function isRootFocused() { return document.activeElement === _this.root_; }, notifyAction: function notifyAction(index) { _this.emit(constants_1.strings.ACTION_EVENT, { index: index }, /** shouldBubble */true); }, removeClassForElementIndex: function removeClassForElementIndex(index, className) { var element = _this.listElements[index]; if (element) { element.classList.remove(className); } }, setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) { var element = _this.listElements[index]; if (element) { element.setAttribute(attr, value); } }, setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) { var listItem = _this.listElements[index]; var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_RADIO_SELECTOR); toggleEl.checked = isChecked; var event = document.createEvent('Event'); event.initEvent('change', true, true); toggleEl.dispatchEvent(event); }, setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) { var element = _this.listElements[listItemIndex]; var listItemChildren = [].slice.call(element.querySelectorAll(constants_1.strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX)); listItemChildren.forEach(function (el) { return el.setAttribute('tabindex', tabIndexValue); }); } }; return new foundation_1.MDCListFoundation(adapter); }; /** * Used to figure out which list item this event is targetting. Or returns -1 if * there is no list item */ MDCList.prototype.getListItemIndex_ = function (evt) { var eventTarget = evt.target; var nearestParent = ponyfill_1.closest(eventTarget, "." + constants_1.cssClasses.LIST_ITEM_CLASS + ", ." + constants_1.cssClasses.ROOT); // Get the index of the element if it is a list item. if (nearestParent && ponyfill_1.matches(nearestParent, "." + constants_1.cssClasses.LIST_ITEM_CLASS)) { return this.listElements.indexOf(nearestParent); } return -1; }; /** * Used to figure out which element was clicked before sending the event to the foundation. */ MDCList.prototype.handleFocusInEvent_ = function (evt) { var index = this.getListItemIndex_(evt); this.foundation_.handleFocusIn(evt, index); }; /** * Used to figure out which element was clicked before sending the event to the foundation. */ MDCList.prototype.handleFocusOutEvent_ = function (evt) { var index = this.getListItemIndex_(evt); this.foundation_.handleFocusOut(evt, index); }; /** * Used to figure out which element was focused when keydown event occurred before sending the event to the * foundation. */ MDCList.prototype.handleKeydownEvent_ = function (evt) { var index = this.getListItemIndex_(evt); var target = evt.target; this.foundation_.handleKeydown(evt, target.classList.contains(constants_1.cssClasses.LIST_ITEM_CLASS), index); }; /** * Used to figure out which element was clicked before sending the event to the foundation. */ MDCList.prototype.handleClickEvent_ = function (evt) { var index = this.getListItemIndex_(evt); var target = evt.target; // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events. var toggleCheckbox = !ponyfill_1.matches(target, constants_1.strings.CHECKBOX_RADIO_SELECTOR); this.foundation_.handleClick(index, toggleCheckbox); }; return MDCList; }(component_1.MDCComponent); exports.MDCList = MDCList; /***/ }), /***/ "./packages/mdc-list/constants.ts": /*!****************************************!*\ !*** ./packages/mdc-list/constants.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated', LIST_ITEM_CLASS: 'mdc-list-item', LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled', LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected', ROOT: 'mdc-list' }; exports.cssClasses = cssClasses; var strings = { ACTION_EVENT: 'MDCList:action', ARIA_CHECKED: 'aria-checked', ARIA_CHECKED_CHECKBOX_SELECTOR: '[role="checkbox"][aria-checked="true"]', ARIA_CHECKED_RADIO_SELECTOR: '[role="radio"][aria-checked="true"]', ARIA_CURRENT: 'aria-current', ARIA_DISABLED: 'aria-disabled', ARIA_ORIENTATION: 'aria-orientation', ARIA_ORIENTATION_HORIZONTAL: 'horizontal', ARIA_ROLE_CHECKBOX_SELECTOR: '[role="checkbox"]', ARIA_SELECTED: 'aria-selected', CHECKBOX_RADIO_SELECTOR: 'input[type="checkbox"]:not(:disabled), input[type="radio"]:not(:disabled)', CHECKBOX_SELECTOR: 'input[type="checkbox"]:not(:disabled)', CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: "\n ." + cssClasses.LIST_ITEM_CLASS + " button:not(:disabled),\n ." + cssClasses.LIST_ITEM_CLASS + " a\n ", FOCUSABLE_CHILD_ELEMENTS: "\n ." + cssClasses.LIST_ITEM_CLASS + " button:not(:disabled),\n ." + cssClasses.LIST_ITEM_CLASS + " a,\n ." + cssClasses.LIST_ITEM_CLASS + " input[type=\"radio\"]:not(:disabled),\n ." + cssClasses.LIST_ITEM_CLASS + " input[type=\"checkbox\"]:not(:disabled)\n ", RADIO_SELECTOR: 'input[type="radio"]:not(:disabled)' }; exports.strings = strings; var numbers = { UNSET_INDEX: -1 }; exports.numbers = numbers; /***/ }), /***/ "./packages/mdc-list/foundation.ts": /*!*****************************************!*\ !*** ./packages/mdc-list/foundation.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-list/constants.ts"); var ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select']; function isNumberArray(selectedIndex) { return selectedIndex instanceof Array; } var MDCListFoundation = /** @class */function (_super) { __extends(MDCListFoundation, _super); function MDCListFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCListFoundation.defaultAdapter, adapter)) || this; _this.wrapFocus_ = false; _this.isVertical_ = true; _this.isSingleSelectionList_ = false; _this.selectedIndex_ = constants_1.numbers.UNSET_INDEX; _this.focusedItemIndex_ = constants_1.numbers.UNSET_INDEX; _this.useActivatedClass_ = false; _this.ariaCurrentAttrValue_ = null; _this.isCheckboxList_ = false; _this.isRadioList_ = false; return _this; } Object.defineProperty(MDCListFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCListFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCListFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCListFoundation, "defaultAdapter", { get: function get() { return { addClassForElementIndex: function addClassForElementIndex() { return undefined; }, focusItemAtIndex: function focusItemAtIndex() { return undefined; }, getAttributeForElementIndex: function getAttributeForElementIndex() { return null; }, getFocusedElementIndex: function getFocusedElementIndex() { return 0; }, getListItemCount: function getListItemCount() { return 0; }, hasCheckboxAtIndex: function hasCheckboxAtIndex() { return false; }, hasRadioAtIndex: function hasRadioAtIndex() { return false; }, isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex() { return false; }, isFocusInsideList: function isFocusInsideList() { return false; }, isRootFocused: function isRootFocused() { return false; }, notifyAction: function notifyAction() { return undefined; }, removeClassForElementIndex: function removeClassForElementIndex() { return undefined; }, setAttributeForElementIndex: function setAttributeForElementIndex() { return undefined; }, setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex() { return undefined; }, setTabIndexForListItemChildren: function setTabIndexForListItemChildren() { return undefined; } }; }, enumerable: true, configurable: true }); MDCListFoundation.prototype.layout = function () { if (this.adapter_.getListItemCount() === 0) { return; } if (this.adapter_.hasCheckboxAtIndex(0)) { this.isCheckboxList_ = true; } else if (this.adapter_.hasRadioAtIndex(0)) { this.isRadioList_ = true; } }; /** * Sets the private wrapFocus_ variable. */ MDCListFoundation.prototype.setWrapFocus = function (value) { this.wrapFocus_ = value; }; /** * Sets the isVertical_ private variable. */ MDCListFoundation.prototype.setVerticalOrientation = function (value) { this.isVertical_ = value; }; /** * Sets the isSingleSelectionList_ private variable. */ MDCListFoundation.prototype.setSingleSelection = function (value) { this.isSingleSelectionList_ = value; }; /** * Sets the useActivatedClass_ private variable. */ MDCListFoundation.prototype.setUseActivatedClass = function (useActivated) { this.useActivatedClass_ = useActivated; }; MDCListFoundation.prototype.getSelectedIndex = function () { return this.selectedIndex_; }; MDCListFoundation.prototype.setSelectedIndex = function (index) { if (!this.isIndexValid_(index)) { return; } if (this.isCheckboxList_) { this.setCheckboxAtIndex_(index); } else if (this.isRadioList_) { this.setRadioAtIndex_(index); } else { this.setSingleSelectionAtIndex_(index); } }; /** * Focus in handler for the list items. */ MDCListFoundation.prototype.handleFocusIn = function (_, listItemIndex) { if (listItemIndex >= 0) { this.adapter_.setTabIndexForListItemChildren(listItemIndex, '0'); } }; /** * Focus out handler for the list items. */ MDCListFoundation.prototype.handleFocusOut = function (_, listItemIndex) { var _this = this; if (listItemIndex >= 0) { this.adapter_.setTabIndexForListItemChildren(listItemIndex, '-1'); } /** * Between Focusout & Focusin some browsers do not have focus on any element. Setting a delay to wait till the focus * is moved to next element. */ setTimeout(function () { if (!_this.adapter_.isFocusInsideList()) { _this.setTabindexToFirstSelectedItem_(); } }, 0); }; /** * Key handler for the list. */ MDCListFoundation.prototype.handleKeydown = function (evt, isRootListItem, listItemIndex) { var isArrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37; var isArrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38; var isArrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39; var isArrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40; var isHome = evt.key === 'Home' || evt.keyCode === 36; var isEnd = evt.key === 'End' || evt.keyCode === 35; var isEnter = evt.key === 'Enter' || evt.keyCode === 13; var isSpace = evt.key === 'Space' || evt.keyCode === 32; if (this.adapter_.isRootFocused()) { if (isArrowUp || isEnd) { evt.preventDefault(); this.focusLastElement(); } else if (isArrowDown || isHome) { evt.preventDefault(); this.focusFirstElement(); } return; } var currentIndex = this.adapter_.getFocusedElementIndex(); if (currentIndex === -1) { currentIndex = listItemIndex; if (currentIndex < 0) { // If this event doesn't have a mdc-list-item ancestor from the // current list (not from a sublist), return early. return; } } var nextIndex; if (this.isVertical_ && isArrowDown || !this.isVertical_ && isArrowRight) { this.preventDefaultEvent_(evt); nextIndex = this.focusNextElement(currentIndex); } else if (this.isVertical_ && isArrowUp || !this.isVertical_ && isArrowLeft) { this.preventDefaultEvent_(evt); nextIndex = this.focusPrevElement(currentIndex); } else if (isHome) { this.preventDefaultEvent_(evt); nextIndex = this.focusFirstElement(); } else if (isEnd) { this.preventDefaultEvent_(evt); nextIndex = this.focusLastElement(); } else if (isEnter || isSpace) { if (isRootListItem) { // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event. var target = evt.target; if (target && target.tagName === 'A' && isEnter) { return; } this.preventDefaultEvent_(evt); if (this.isSelectableList_()) { this.setSelectedIndexOnAction_(currentIndex); } this.adapter_.notifyAction(currentIndex); } } this.focusedItemIndex_ = currentIndex; if (nextIndex !== undefined) { this.setTabindexAtIndex_(nextIndex); this.focusedItemIndex_ = nextIndex; } }; /** * Click handler for the list. */ MDCListFoundation.prototype.handleClick = function (index, toggleCheckbox) { if (index === constants_1.numbers.UNSET_INDEX) { return; } if (this.isSelectableList_()) { this.setSelectedIndexOnAction_(index, toggleCheckbox); } this.adapter_.notifyAction(index); this.setTabindexAtIndex_(index); this.focusedItemIndex_ = index; }; /** * Focuses the next element on the list. */ MDCListFoundation.prototype.focusNextElement = function (index) { var count = this.adapter_.getListItemCount(); var nextIndex = index + 1; if (nextIndex >= count) { if (this.wrapFocus_) { nextIndex = 0; } else { // Return early because last item is already focused. return index; } } this.adapter_.focusItemAtIndex(nextIndex); return nextIndex; }; /** * Focuses the previous element on the list. */ MDCListFoundation.prototype.focusPrevElement = function (index) { var prevIndex = index - 1; if (prevIndex < 0) { if (this.wrapFocus_) { prevIndex = this.adapter_.getListItemCount() - 1; } else { // Return early because first item is already focused. return index; } } this.adapter_.focusItemAtIndex(prevIndex); return prevIndex; }; MDCListFoundation.prototype.focusFirstElement = function () { this.adapter_.focusItemAtIndex(0); return 0; }; MDCListFoundation.prototype.focusLastElement = function () { var lastIndex = this.adapter_.getListItemCount() - 1; this.adapter_.focusItemAtIndex(lastIndex); return lastIndex; }; /** * @param itemIndex Index of the list item * @param isEnabled Sets the list item to enabled or disabled. */ MDCListFoundation.prototype.setEnabled = function (itemIndex, isEnabled) { if (!this.isIndexValid_(itemIndex)) { return; } if (isEnabled) { this.adapter_.removeClassForElementIndex(itemIndex, constants_1.cssClasses.LIST_ITEM_DISABLED_CLASS); this.adapter_.setAttributeForElementIndex(itemIndex, constants_1.strings.ARIA_DISABLED, 'false'); } else { this.adapter_.addClassForElementIndex(itemIndex, constants_1.cssClasses.LIST_ITEM_DISABLED_CLASS); this.adapter_.setAttributeForElementIndex(itemIndex, constants_1.strings.ARIA_DISABLED, 'true'); } }; /** * Ensures that preventDefault is only called if the containing element doesn't * consume the event, and it will cause an unintended scroll. */ MDCListFoundation.prototype.preventDefaultEvent_ = function (evt) { var target = evt.target; var tagName = ("" + target.tagName).toLowerCase(); if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) { evt.preventDefault(); } }; MDCListFoundation.prototype.setSingleSelectionAtIndex_ = function (index) { if (this.selectedIndex_ === index) { return; } var selectedClassName = constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS; if (this.useActivatedClass_) { selectedClassName = constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS; } if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) { this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName); } this.adapter_.addClassForElementIndex(index, selectedClassName); this.setAriaForSingleSelectionAtIndex_(index); this.selectedIndex_ = index; }; /** * Sets aria attribute for single selection at given index. */ MDCListFoundation.prototype.setAriaForSingleSelectionAtIndex_ = function (index) { // Detect the presence of aria-current and get the value only during list initialization when it is in unset state. if (this.selectedIndex_ === constants_1.numbers.UNSET_INDEX) { this.ariaCurrentAttrValue_ = this.adapter_.getAttributeForElementIndex(index, constants_1.strings.ARIA_CURRENT); } var isAriaCurrent = this.ariaCurrentAttrValue_ !== null; var ariaAttribute = isAriaCurrent ? constants_1.strings.ARIA_CURRENT : constants_1.strings.ARIA_SELECTED; if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) { this.adapter_.setAttributeForElementIndex(this.selectedIndex_, ariaAttribute, 'false'); } var ariaAttributeValue = isAriaCurrent ? this.ariaCurrentAttrValue_ : 'true'; this.adapter_.setAttributeForElementIndex(index, ariaAttribute, ariaAttributeValue); }; /** * Toggles radio at give index. Radio doesn't change the checked state if it is already checked. */ MDCListFoundation.prototype.setRadioAtIndex_ = function (index) { this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true); if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) { this.adapter_.setAttributeForElementIndex(this.selectedIndex_, constants_1.strings.ARIA_CHECKED, 'false'); } this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, 'true'); this.selectedIndex_ = index; }; MDCListFoundation.prototype.setCheckboxAtIndex_ = function (index) { for (var i = 0; i < this.adapter_.getListItemCount(); i++) { var isChecked = false; if (index.indexOf(i) >= 0) { isChecked = true; } this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked); this.adapter_.setAttributeForElementIndex(i, constants_1.strings.ARIA_CHECKED, isChecked ? 'true' : 'false'); } this.selectedIndex_ = index; }; MDCListFoundation.prototype.setTabindexAtIndex_ = function (index) { if (this.focusedItemIndex_ === constants_1.numbers.UNSET_INDEX && index !== 0) { // If no list item was selected set first list item's tabindex to -1. // Generally, tabindex is set to 0 on first list item of list that has no preselected items. this.adapter_.setAttributeForElementIndex(0, 'tabindex', '-1'); } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) { this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', '-1'); } this.adapter_.setAttributeForElementIndex(index, 'tabindex', '0'); }; /** * @return Return true if it is single selectin list, checkbox list or radio list. */ MDCListFoundation.prototype.isSelectableList_ = function () { return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_; }; MDCListFoundation.prototype.setTabindexToFirstSelectedItem_ = function () { var targetIndex = 0; if (this.isSelectableList_()) { if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) { targetIndex = this.selectedIndex_; } else if (isNumberArray(this.selectedIndex_) && this.selectedIndex_.length > 0) { targetIndex = this.selectedIndex_.reduce(function (currentIndex, minIndex) { return Math.min(currentIndex, minIndex); }); } } this.setTabindexAtIndex_(targetIndex); }; MDCListFoundation.prototype.isIndexValid_ = function (index) { var _this = this; if (index instanceof Array) { if (!this.isCheckboxList_) { throw new Error('MDCListFoundation: Array of index is only supported for checkbox based list'); } if (index.length === 0) { return true; } else { return index.some(function (i) { return _this.isIndexInRange_(i); }); } } else if (typeof index === 'number') { if (this.isCheckboxList_) { throw new Error('MDCListFoundation: Expected array of index for checkbox based list but got number: ' + index); } return this.isIndexInRange_(index); } else { return false; } }; MDCListFoundation.prototype.isIndexInRange_ = function (index) { var listSize = this.adapter_.getListItemCount(); return index >= 0 && index < listSize; }; MDCListFoundation.prototype.setSelectedIndexOnAction_ = function (index, toggleCheckbox) { if (toggleCheckbox === void 0) { toggleCheckbox = true; } if (this.isCheckboxList_) { this.toggleCheckboxAtIndex_(index, toggleCheckbox); } else { this.setSelectedIndex(index); } }; MDCListFoundation.prototype.toggleCheckboxAtIndex_ = function (index, toggleCheckbox) { var isChecked = this.adapter_.isCheckboxCheckedAtIndex(index); if (toggleCheckbox) { isChecked = !isChecked; this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, isChecked); } this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, isChecked ? 'true' : 'false'); // If none of the checkbox items are selected and selectedIndex is not initialized then provide a default value. var selectedIndexes = this.selectedIndex_ === constants_1.numbers.UNSET_INDEX ? [] : this.selectedIndex_.slice(); if (isChecked) { selectedIndexes.push(index); } else { selectedIndexes = selectedIndexes.filter(function (i) { return i !== index; }); } this.selectedIndex_ = selectedIndexes; }; return MDCListFoundation; }(foundation_1.MDCFoundation); exports.MDCListFoundation = MDCListFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCListFoundation; /***/ }), /***/ "./packages/mdc-list/index.ts": /*!************************************!*\ !*** ./packages/mdc-list/index.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-list/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-list/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-list/foundation.ts")); /***/ }), /***/ "./packages/mdc-menu-surface/component.ts": /*!************************************************!*\ !*** ./packages/mdc-menu-surface/component.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-menu-surface/constants.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-menu-surface/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-menu-surface/util.ts")); var MDCMenuSurface = /** @class */function (_super) { __extends(MDCMenuSurface, _super); function MDCMenuSurface() { return _super !== null && _super.apply(this, arguments) || this; } MDCMenuSurface.attachTo = function (root) { return new MDCMenuSurface(root); }; MDCMenuSurface.prototype.initialSyncWithDOM = function () { var _this = this; var parentEl = this.root_.parentElement; this.anchorElement = parentEl && parentEl.classList.contains(constants_1.cssClasses.ANCHOR) ? parentEl : null; if (this.root_.classList.contains(constants_1.cssClasses.FIXED)) { this.setFixedPosition(true); } this.handleKeydown_ = function (evt) { return _this.foundation_.handleKeydown(evt); }; this.handleBodyClick_ = function (evt) { return _this.foundation_.handleBodyClick(evt); }; this.registerBodyClickListener_ = function () { return document.body.addEventListener('click', _this.handleBodyClick_); }; this.deregisterBodyClickListener_ = function () { return document.body.removeEventListener('click', _this.handleBodyClick_); }; this.listen('keydown', this.handleKeydown_); this.listen(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_); this.listen(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_); }; MDCMenuSurface.prototype.destroy = function () { this.unlisten('keydown', this.handleKeydown_); this.unlisten(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_); this.unlisten(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_); _super.prototype.destroy.call(this); }; MDCMenuSurface.prototype.isOpen = function () { return this.foundation_.isOpen(); }; MDCMenuSurface.prototype.open = function () { this.foundation_.open(); }; MDCMenuSurface.prototype.close = function (skipRestoreFocus) { if (skipRestoreFocus === void 0) { skipRestoreFocus = false; } this.foundation_.close(skipRestoreFocus); }; Object.defineProperty(MDCMenuSurface.prototype, "quickOpen", { set: function set(quickOpen) { this.foundation_.setQuickOpen(quickOpen); }, enumerable: true, configurable: true }); /** * Removes the menu-surface from it's current location and appends it to the * body to overcome any overflow:hidden issues. */ MDCMenuSurface.prototype.hoistMenuToBody = function () { document.body.appendChild(this.root_); this.setIsHoisted(true); }; /** Sets the foundation to use page offsets for an positioning when the menu is hoisted to the body. */ MDCMenuSurface.prototype.setIsHoisted = function (isHoisted) { this.foundation_.setIsHoisted(isHoisted); }; /** Sets the element that the menu-surface is anchored to. */ MDCMenuSurface.prototype.setMenuSurfaceAnchorElement = function (element) { this.anchorElement = element; }; /** Sets the menu-surface to position: fixed. */ MDCMenuSurface.prototype.setFixedPosition = function (isFixed) { if (isFixed) { this.root_.classList.add(constants_1.cssClasses.FIXED); } else { this.root_.classList.remove(constants_1.cssClasses.FIXED); } this.foundation_.setFixedPosition(isFixed); }; /** Sets the absolute x/y position to position based on. Requires the menu to be hoisted. */ MDCMenuSurface.prototype.setAbsolutePosition = function (x, y) { this.foundation_.setAbsolutePosition(x, y); this.setIsHoisted(true); }; /** * @param corner Default anchor corner alignment of top-left surface corner. */ MDCMenuSurface.prototype.setAnchorCorner = function (corner) { this.foundation_.setAnchorCorner(corner); }; MDCMenuSurface.prototype.setAnchorMargin = function (margin) { this.foundation_.setAnchorMargin(margin); }; MDCMenuSurface.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, hasAnchor: function hasAnchor() { return !!_this.anchorElement; }, notifyClose: function notifyClose() { return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.CLOSED_EVENT, {}); }, notifyOpen: function notifyOpen() { return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, {}); }, isElementInContainer: function isElementInContainer(el) { return _this.root_.contains(el); }, isRtl: function isRtl() { return getComputedStyle(_this.root_).getPropertyValue('direction') === 'rtl'; }, setTransformOrigin: function setTransformOrigin(origin) { var propertyName = util.getTransformPropertyName(window) + "-origin"; _this.root_.style.setProperty(propertyName, origin); }, isFocused: function isFocused() { return document.activeElement === _this.root_; }, saveFocus: function saveFocus() { _this.previousFocus_ = document.activeElement; }, restoreFocus: function restoreFocus() { if (_this.root_.contains(document.activeElement)) { if (_this.previousFocus_ && _this.previousFocus_.focus) { _this.previousFocus_.focus(); } } }, getInnerDimensions: function getInnerDimensions() { return { width: _this.root_.offsetWidth, height: _this.root_.offsetHeight }; }, getAnchorDimensions: function getAnchorDimensions() { return _this.anchorElement ? _this.anchorElement.getBoundingClientRect() : null; }, getWindowDimensions: function getWindowDimensions() { return { width: window.innerWidth, height: window.innerHeight }; }, getBodyDimensions: function getBodyDimensions() { return { width: document.body.clientWidth, height: document.body.clientHeight }; }, getWindowScroll: function getWindowScroll() { return { x: window.pageXOffset, y: window.pageYOffset }; }, setPosition: function setPosition(position) { _this.root_.style.left = 'left' in position ? position.left + "px" : ''; _this.root_.style.right = 'right' in position ? position.right + "px" : ''; _this.root_.style.top = 'top' in position ? position.top + "px" : ''; _this.root_.style.bottom = 'bottom' in position ? position.bottom + "px" : ''; }, setMaxHeight: function setMaxHeight(height) { _this.root_.style.maxHeight = height; } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCMenuSurfaceFoundation(adapter); }; return MDCMenuSurface; }(component_1.MDCComponent); exports.MDCMenuSurface = MDCMenuSurface; /***/ }), /***/ "./packages/mdc-menu-surface/constants.ts": /*!************************************************!*\ !*** ./packages/mdc-menu-surface/constants.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ANCHOR: 'mdc-menu-surface--anchor', ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed', ANIMATING_OPEN: 'mdc-menu-surface--animating-open', FIXED: 'mdc-menu-surface--fixed', OPEN: 'mdc-menu-surface--open', ROOT: 'mdc-menu-surface' }; exports.cssClasses = cssClasses; // tslint:disable:object-literal-sort-keys var strings = { CLOSED_EVENT: 'MDCMenuSurface:closed', OPENED_EVENT: 'MDCMenuSurface:opened', FOCUSABLE_ELEMENTS: ['button:not(:disabled)', '[href]:not([aria-disabled="true"])', 'input:not(:disabled)', 'select:not(:disabled)', 'textarea:not(:disabled)', '[tabindex]:not([tabindex="-1"]):not([aria-disabled="true"])'].join(', ') }; exports.strings = strings; // tslint:enable:object-literal-sort-keys var numbers = { /** Total duration of menu-surface open animation. */ TRANSITION_OPEN_DURATION: 120, /** Total duration of menu-surface close animation. */ TRANSITION_CLOSE_DURATION: 75, /** Margin left to the edge of the viewport when menu-surface is at maximum possible height. */ MARGIN_TO_EDGE: 32, /** Ratio of anchor width to menu-surface width for switching from corner positioning to center positioning. */ ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67 }; exports.numbers = numbers; /** * Enum for bits in the {@see Corner) bitmap. */ var CornerBit; (function (CornerBit) { CornerBit[CornerBit["BOTTOM"] = 1] = "BOTTOM"; CornerBit[CornerBit["CENTER"] = 2] = "CENTER"; CornerBit[CornerBit["RIGHT"] = 4] = "RIGHT"; CornerBit[CornerBit["FLIP_RTL"] = 8] = "FLIP_RTL"; })(CornerBit || (CornerBit = {})); exports.CornerBit = CornerBit; /** * Enum for representing an element corner for positioning the menu-surface. * * The START constants map to LEFT if element directionality is left * to right and RIGHT if the directionality is right to left. * Likewise END maps to RIGHT or LEFT depending on the directionality. */ var Corner; (function (Corner) { Corner[Corner["TOP_LEFT"] = 0] = "TOP_LEFT"; Corner[Corner["TOP_RIGHT"] = 4] = "TOP_RIGHT"; Corner[Corner["BOTTOM_LEFT"] = 1] = "BOTTOM_LEFT"; Corner[Corner["BOTTOM_RIGHT"] = 5] = "BOTTOM_RIGHT"; Corner[Corner["TOP_START"] = 8] = "TOP_START"; Corner[Corner["TOP_END"] = 12] = "TOP_END"; Corner[Corner["BOTTOM_START"] = 9] = "BOTTOM_START"; Corner[Corner["BOTTOM_END"] = 13] = "BOTTOM_END"; })(Corner || (Corner = {})); exports.Corner = Corner; /***/ }), /***/ "./packages/mdc-menu-surface/foundation.ts": /*!*************************************************!*\ !*** ./packages/mdc-menu-surface/foundation.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __values = this && this.__values || function (o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function next() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-menu-surface/constants.ts"); var MDCMenuSurfaceFoundation = /** @class */function (_super) { __extends(MDCMenuSurfaceFoundation, _super); function MDCMenuSurfaceFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCMenuSurfaceFoundation.defaultAdapter, adapter)) || this; _this.isOpen_ = false; _this.isQuickOpen_ = false; _this.isHoistedElement_ = false; _this.isFixedPosition_ = false; _this.openAnimationEndTimerId_ = 0; _this.closeAnimationEndTimerId_ = 0; _this.animationRequestId_ = 0; _this.anchorCorner_ = constants_1.Corner.TOP_START; _this.anchorMargin_ = { top: 0, right: 0, bottom: 0, left: 0 }; _this.position_ = { x: 0, y: 0 }; return _this; } Object.defineProperty(MDCMenuSurfaceFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuSurfaceFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuSurfaceFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuSurfaceFoundation, "Corner", { get: function get() { return constants_1.Corner; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuSurfaceFoundation, "defaultAdapter", { /** * @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, hasAnchor: function hasAnchor() { return false; }, isElementInContainer: function isElementInContainer() { return false; }, isFocused: function isFocused() { return false; }, isRtl: function isRtl() { return false; }, getInnerDimensions: function getInnerDimensions() { return { height: 0, width: 0 }; }, getAnchorDimensions: function getAnchorDimensions() { return null; }, getWindowDimensions: function getWindowDimensions() { return { height: 0, width: 0 }; }, getBodyDimensions: function getBodyDimensions() { return { height: 0, width: 0 }; }, getWindowScroll: function getWindowScroll() { return { x: 0, y: 0 }; }, setPosition: function setPosition() { return undefined; }, setMaxHeight: function setMaxHeight() { return undefined; }, setTransformOrigin: function setTransformOrigin() { return undefined; }, saveFocus: function saveFocus() { return undefined; }, restoreFocus: function restoreFocus() { return undefined; }, notifyClose: function notifyClose() { return undefined; }, notifyOpen: function notifyOpen() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCMenuSurfaceFoundation.prototype.init = function () { var _a = MDCMenuSurfaceFoundation.cssClasses, ROOT = _a.ROOT, OPEN = _a.OPEN; if (!this.adapter_.hasClass(ROOT)) { throw new Error(ROOT + " class required in root element."); } if (this.adapter_.hasClass(OPEN)) { this.isOpen_ = true; } }; MDCMenuSurfaceFoundation.prototype.destroy = function () { clearTimeout(this.openAnimationEndTimerId_); clearTimeout(this.closeAnimationEndTimerId_); // Cancel any currently running animations. cancelAnimationFrame(this.animationRequestId_); }; /** * @param corner Default anchor corner alignment of top-left menu surface corner. */ MDCMenuSurfaceFoundation.prototype.setAnchorCorner = function (corner) { this.anchorCorner_ = corner; }; /** * @param margin Set of margin values from anchor. */ MDCMenuSurfaceFoundation.prototype.setAnchorMargin = function (margin) { this.anchorMargin_.top = margin.top || 0; this.anchorMargin_.right = margin.right || 0; this.anchorMargin_.bottom = margin.bottom || 0; this.anchorMargin_.left = margin.left || 0; }; /** Used to indicate if the menu-surface is hoisted to the body. */ MDCMenuSurfaceFoundation.prototype.setIsHoisted = function (isHoisted) { this.isHoistedElement_ = isHoisted; }; /** Used to set the menu-surface calculations based on a fixed position menu. */ MDCMenuSurfaceFoundation.prototype.setFixedPosition = function (isFixedPosition) { this.isFixedPosition_ = isFixedPosition; }; /** Sets the menu-surface position on the page. */ MDCMenuSurfaceFoundation.prototype.setAbsolutePosition = function (x, y) { this.position_.x = this.isFinite_(x) ? x : 0; this.position_.y = this.isFinite_(y) ? y : 0; }; MDCMenuSurfaceFoundation.prototype.setQuickOpen = function (quickOpen) { this.isQuickOpen_ = quickOpen; }; MDCMenuSurfaceFoundation.prototype.isOpen = function () { return this.isOpen_; }; /** * Open the menu surface. */ MDCMenuSurfaceFoundation.prototype.open = function () { var _this = this; this.adapter_.saveFocus(); if (!this.isQuickOpen_) { this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN); } this.animationRequestId_ = requestAnimationFrame(function () { _this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN); _this.dimensions_ = _this.adapter_.getInnerDimensions(); _this.autoPosition_(); if (_this.isQuickOpen_) { _this.adapter_.notifyOpen(); } else { _this.openAnimationEndTimerId_ = setTimeout(function () { _this.openAnimationEndTimerId_ = 0; _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN); _this.adapter_.notifyOpen(); }, constants_1.numbers.TRANSITION_OPEN_DURATION); } }); this.isOpen_ = true; }; /** * Closes the menu surface. */ MDCMenuSurfaceFoundation.prototype.close = function (skipRestoreFocus) { var _this = this; if (skipRestoreFocus === void 0) { skipRestoreFocus = false; } if (!this.isQuickOpen_) { this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED); } requestAnimationFrame(function () { _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN); if (_this.isQuickOpen_) { _this.adapter_.notifyClose(); } else { _this.closeAnimationEndTimerId_ = setTimeout(function () { _this.closeAnimationEndTimerId_ = 0; _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED); _this.adapter_.notifyClose(); }, constants_1.numbers.TRANSITION_CLOSE_DURATION); } }); this.isOpen_ = false; if (!skipRestoreFocus) { this.maybeRestoreFocus_(); } }; /** Handle clicks and close if not within menu-surface element. */ MDCMenuSurfaceFoundation.prototype.handleBodyClick = function (evt) { var el = evt.target; if (this.adapter_.isElementInContainer(el)) { return; } this.close(); }; /** Handle keys that close the surface. */ MDCMenuSurfaceFoundation.prototype.handleKeydown = function (evt) { var keyCode = evt.keyCode, key = evt.key; var isEscape = key === 'Escape' || keyCode === 27; if (isEscape) { this.close(); } }; MDCMenuSurfaceFoundation.prototype.autoPosition_ = function () { var _a; // Compute measurements for autoposition methods reuse. this.measurements_ = this.getAutoLayoutMeasurements_(); var corner = this.getOriginCorner_(); var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner); var verticalAlignment = this.hasBit_(corner, constants_1.CornerBit.BOTTOM) ? 'bottom' : 'top'; var horizontalAlignment = this.hasBit_(corner, constants_1.CornerBit.RIGHT) ? 'right' : 'left'; var horizontalOffset = this.getHorizontalOriginOffset_(corner); var verticalOffset = this.getVerticalOriginOffset_(corner); var _b = this.measurements_, anchorSize = _b.anchorSize, surfaceSize = _b.surfaceSize; var position = (_a = {}, _a[horizontalAlignment] = horizontalOffset, _a[verticalAlignment] = verticalOffset, _a); // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner. if (anchorSize.width / surfaceSize.width > constants_1.numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) { horizontalAlignment = 'center'; } // If the menu-surface has been hoisted to the body, it's no longer relative to the anchor element if (this.isHoistedElement_ || this.isFixedPosition_) { this.adjustPositionForHoistedElement_(position); } this.adapter_.setTransformOrigin(horizontalAlignment + " " + verticalAlignment); this.adapter_.setPosition(position); this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : ''); }; /** * @return Measurements used to position menu surface popup. */ MDCMenuSurfaceFoundation.prototype.getAutoLayoutMeasurements_ = function () { var anchorRect = this.adapter_.getAnchorDimensions(); var bodySize = this.adapter_.getBodyDimensions(); var viewportSize = this.adapter_.getWindowDimensions(); var windowScroll = this.adapter_.getWindowScroll(); if (!anchorRect) { // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together anchorRect = { top: this.position_.y, right: this.position_.x, bottom: this.position_.y, left: this.position_.x, width: 0, height: 0 }; // tslint:enable:object-literal-sort-keys } return { anchorSize: anchorRect, bodySize: bodySize, surfaceSize: this.dimensions_, viewportDistance: { // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together top: anchorRect.top, right: viewportSize.width - anchorRect.right, bottom: viewportSize.height - anchorRect.bottom, left: anchorRect.left }, viewportSize: viewportSize, windowScroll: windowScroll }; }; /** * Computes the corner of the anchor from which to animate and position the menu surface. */ MDCMenuSurfaceFoundation.prototype.getOriginCorner_ = function () { // Defaults: open from the top left. var corner = constants_1.Corner.TOP_LEFT; var _a = this.measurements_, viewportDistance = _a.viewportDistance, anchorSize = _a.anchorSize, surfaceSize = _a.surfaceSize; var isBottomAligned = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM); var availableTop = isBottomAligned ? viewportDistance.top + anchorSize.height + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top; var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorSize.height - this.anchorMargin_.top; var topOverflow = surfaceSize.height - availableTop; var bottomOverflow = surfaceSize.height - availableBottom; if (bottomOverflow > 0 && topOverflow < bottomOverflow) { corner = this.setBit_(corner, constants_1.CornerBit.BOTTOM); } var isRtl = this.adapter_.isRtl(); var isFlipRtl = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.FLIP_RTL); var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT); var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl; var availableLeft = isAlignedRight ? viewportDistance.left + anchorSize.width + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left; var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorSize.width - this.anchorMargin_.left; var leftOverflow = surfaceSize.width - availableLeft; var rightOverflow = surfaceSize.width - availableRight; if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) { corner = this.setBit_(corner, constants_1.CornerBit.RIGHT); } return corner; }; /** * @param corner Origin corner of the menu surface. * @return Maximum height of the menu surface, based on available space. 0 indicates should not be set. */ MDCMenuSurfaceFoundation.prototype.getMenuSurfaceMaxHeight_ = function (corner) { var viewportDistance = this.measurements_.viewportDistance; var maxHeight = 0; var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM); var isBottomAnchored = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM); var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE; // When maximum height is not specified, it is handled from CSS. if (isBottomAligned) { maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE; if (!isBottomAnchored) { maxHeight += this.measurements_.anchorSize.height; } } else { maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measurements_.anchorSize.height - MARGIN_TO_EDGE; if (isBottomAnchored) { maxHeight -= this.measurements_.anchorSize.height; } } return maxHeight; }; /** * @param corner Origin corner of the menu surface. * @return Horizontal offset of menu surface origin corner from corresponding anchor corner. */ MDCMenuSurfaceFoundation.prototype.getHorizontalOriginOffset_ = function (corner) { var anchorSize = this.measurements_.anchorSize; // isRightAligned corresponds to using the 'right' property on the surface. var isRightAligned = this.hasBit_(corner, constants_1.CornerBit.RIGHT); var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT); if (isRightAligned) { var rightOffset = avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.left : this.anchorMargin_.right; // For hoisted or fixed elements, adjust the offset by the difference between viewport width and body width so // when we calculate the right value (`adjustPositionForHoistedElement_`) based on the element position, // the right property is correct. if (this.isHoistedElement_ || this.isFixedPosition_) { return rightOffset - (this.measurements_.viewportSize.width - this.measurements_.bodySize.width); } return rightOffset; } return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.right : this.anchorMargin_.left; }; /** * @param corner Origin corner of the menu surface. * @return Vertical offset of menu surface origin corner from corresponding anchor corner. */ MDCMenuSurfaceFoundation.prototype.getVerticalOriginOffset_ = function (corner) { var anchorSize = this.measurements_.anchorSize; var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM); var avoidVerticalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM); var y = 0; if (isBottomAligned) { y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin_.top : -this.anchorMargin_.bottom; } else { y = avoidVerticalOverlap ? anchorSize.height + this.anchorMargin_.bottom : this.anchorMargin_.top; } return y; }; /** Calculates the offsets for positioning the menu-surface when the menu-surface has been hoisted to the body. */ MDCMenuSurfaceFoundation.prototype.adjustPositionForHoistedElement_ = function (position) { var e_1, _a; var _b = this.measurements_, windowScroll = _b.windowScroll, viewportDistance = _b.viewportDistance; var props = Object.keys(position); try { for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) { var prop = props_1_1.value; var value = position[prop] || 0; // Hoisted surfaces need to have the anchor elements location on the page added to the // position properties for proper alignment on the body. value += viewportDistance[prop]; // Surfaces that are absolutely positioned need to have additional calculations for scroll // and bottom positioning. if (!this.isFixedPosition_) { if (prop === 'top') { value += windowScroll.y; } else if (prop === 'bottom') { value -= windowScroll.y; } else if (prop === 'left') { value += windowScroll.x; } else { // prop === 'right' value -= windowScroll.x; } } position[prop] = value; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1); } finally { if (e_1) throw e_1.error; } } }; /** * The last focused element when the menu surface was opened should regain focus, if the user is * focused on or within the menu surface when it is closed. */ MDCMenuSurfaceFoundation.prototype.maybeRestoreFocus_ = function () { var isRootFocused = this.adapter_.isFocused(); var childHasFocus = document.activeElement && this.adapter_.isElementInContainer(document.activeElement); if (isRootFocused || childHasFocus) { this.adapter_.restoreFocus(); } }; MDCMenuSurfaceFoundation.prototype.hasBit_ = function (corner, bit) { return Boolean(corner & bit); // tslint:disable-line:no-bitwise }; MDCMenuSurfaceFoundation.prototype.setBit_ = function (corner, bit) { return corner | bit; // tslint:disable-line:no-bitwise }; /** * isFinite that doesn't force conversion to number type. * Equivalent to Number.isFinite in ES2015, which is not supported in IE. */ MDCMenuSurfaceFoundation.prototype.isFinite_ = function (num) { return typeof num === 'number' && isFinite(num); }; return MDCMenuSurfaceFoundation; }(foundation_1.MDCFoundation); exports.MDCMenuSurfaceFoundation = MDCMenuSurfaceFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCMenuSurfaceFoundation; /***/ }), /***/ "./packages/mdc-menu-surface/index.ts": /*!********************************************!*\ !*** ./packages/mdc-menu-surface/index.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-menu-surface/util.ts")); exports.util = util; var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-menu-surface/constants.ts"); exports.Corner = constants_1.Corner; exports.CornerBit = constants_1.CornerBit; __export(__webpack_require__(/*! ./component */ "./packages/mdc-menu-surface/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-menu-surface/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-menu-surface/foundation.ts")); /***/ }), /***/ "./packages/mdc-menu-surface/util.ts": /*!*******************************************!*\ !*** ./packages/mdc-menu-surface/util.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cachedCssTransformPropertyName_; /** * Returns the name of the correct transform property to use on the current browser. */ function getTransformPropertyName(globalObj, forceRefresh) { if (forceRefresh === void 0) { forceRefresh = false; } if (cachedCssTransformPropertyName_ === undefined || forceRefresh) { var el = globalObj.document.createElement('div'); cachedCssTransformPropertyName_ = 'transform' in el.style ? 'transform' : 'webkitTransform'; } return cachedCssTransformPropertyName_; } exports.getTransformPropertyName = getTransformPropertyName; /***/ }), /***/ "./packages/mdc-menu/component.ts": /*!****************************************!*\ !*** ./packages/mdc-menu/component.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var component_2 = __webpack_require__(/*! @material/list/component */ "./packages/mdc-list/component.ts"); var foundation_1 = __webpack_require__(/*! @material/list/foundation */ "./packages/mdc-list/foundation.ts"); var component_3 = __webpack_require__(/*! @material/menu-surface/component */ "./packages/mdc-menu-surface/component.ts"); var foundation_2 = __webpack_require__(/*! @material/menu-surface/foundation */ "./packages/mdc-menu-surface/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-menu/constants.ts"); var foundation_3 = __webpack_require__(/*! ./foundation */ "./packages/mdc-menu/foundation.ts"); var MDCMenu = /** @class */function (_super) { __extends(MDCMenu, _super); function MDCMenu() { return _super !== null && _super.apply(this, arguments) || this; } MDCMenu.attachTo = function (root) { return new MDCMenu(root); }; MDCMenu.prototype.initialize = function (menuSurfaceFactory, listFactory) { if (menuSurfaceFactory === void 0) { menuSurfaceFactory = function menuSurfaceFactory(el) { return new component_3.MDCMenuSurface(el); }; } if (listFactory === void 0) { listFactory = function listFactory(el) { return new component_2.MDCList(el); }; } this.menuSurfaceFactory_ = menuSurfaceFactory; this.listFactory_ = listFactory; }; MDCMenu.prototype.initialSyncWithDOM = function () { var _this = this; this.menuSurface_ = this.menuSurfaceFactory_(this.root_); var list = this.root_.querySelector(constants_1.strings.LIST_SELECTOR); if (list) { this.list_ = this.listFactory_(list); this.list_.wrapFocus = true; } else { this.list_ = null; } this.handleKeydown_ = function (evt) { return _this.foundation_.handleKeydown(evt); }; this.handleItemAction_ = function (evt) { return _this.foundation_.handleItemAction(_this.items[evt.detail.index]); }; this.handleMenuSurfaceOpened_ = function () { return _this.foundation_.handleMenuSurfaceOpened(); }; this.menuSurface_.listen(foundation_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_); this.listen('keydown', this.handleKeydown_); this.listen(foundation_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_); }; MDCMenu.prototype.destroy = function () { if (this.list_) { this.list_.destroy(); } this.menuSurface_.destroy(); this.menuSurface_.unlisten(foundation_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_); this.unlisten('keydown', this.handleKeydown_); this.unlisten(foundation_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_); _super.prototype.destroy.call(this); }; Object.defineProperty(MDCMenu.prototype, "open", { get: function get() { return this.menuSurface_.isOpen(); }, set: function set(value) { if (value) { this.menuSurface_.open(); } else { this.menuSurface_.close(); } }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenu.prototype, "wrapFocus", { get: function get() { return this.list_ ? this.list_.wrapFocus : false; }, set: function set(value) { if (this.list_) { this.list_.wrapFocus = value; } }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenu.prototype, "items", { /** * Return the items within the menu. Note that this only contains the set of elements within * the items container that are proper list items, and not supplemental / presentational DOM * elements. */ get: function get() { return this.list_ ? this.list_.listElements : []; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenu.prototype, "quickOpen", { set: function set(quickOpen) { this.menuSurface_.quickOpen = quickOpen; }, enumerable: true, configurable: true }); /** * Sets default focus state where the menu should focus every time when menu * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by * default. * @param focusState Default focus state. */ MDCMenu.prototype.setDefaultFocusState = function (focusState) { this.foundation_.setDefaultFocusState(focusState); }; /** * @param corner Default anchor corner alignment of top-left menu corner. */ MDCMenu.prototype.setAnchorCorner = function (corner) { this.menuSurface_.setAnchorCorner(corner); }; MDCMenu.prototype.setAnchorMargin = function (margin) { this.menuSurface_.setAnchorMargin(margin); }; /** * Sets the list item as the selected row at the specified index. * @param index Index of list item within menu. */ MDCMenu.prototype.setSelectedIndex = function (index) { this.foundation_.setSelectedIndex(index); }; /** * Sets the enabled state to isEnabled for the menu item at the given index. * @param index Index of the menu item * @param isEnabled The desired enabled state of the menu item. */ MDCMenu.prototype.setEnabled = function (index, isEnabled) { this.foundation_.setEnabled(index, isEnabled); }; /** * @return The item within the menu at the index specified. */ MDCMenu.prototype.getOptionByIndex = function (index) { var items = this.items; if (index < items.length) { return this.items[index]; } else { return null; } }; MDCMenu.prototype.setFixedPosition = function (isFixed) { this.menuSurface_.setFixedPosition(isFixed); }; MDCMenu.prototype.hoistMenuToBody = function () { this.menuSurface_.hoistMenuToBody(); }; MDCMenu.prototype.setIsHoisted = function (isHoisted) { this.menuSurface_.setIsHoisted(isHoisted); }; MDCMenu.prototype.setAbsolutePosition = function (x, y) { this.menuSurface_.setAbsolutePosition(x, y); }; /** * Sets the element that the menu-surface is anchored to. */ MDCMenu.prototype.setAnchorElement = function (element) { this.menuSurface_.anchorElement = element; }; MDCMenu.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClassToElementAtIndex: function addClassToElementAtIndex(index, className) { var list = _this.items; list[index].classList.add(className); }, removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) { var list = _this.items; list[index].classList.remove(className); }, addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) { var list = _this.items; list[index].setAttribute(attr, value); }, removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) { var list = _this.items; list[index].removeAttribute(attr); }, elementContainsClass: function elementContainsClass(element, className) { return element.classList.contains(className); }, closeSurface: function closeSurface(skipRestoreFocus) { return _this.menuSurface_.close(skipRestoreFocus); }, getElementIndex: function getElementIndex(element) { return _this.items.indexOf(element); }, notifySelected: function notifySelected(evtData) { return _this.emit(constants_1.strings.SELECTED_EVENT, { index: evtData.index, item: _this.items[evtData.index] }); }, getMenuItemCount: function getMenuItemCount() { return _this.items.length; }, focusItemAtIndex: function focusItemAtIndex(index) { return _this.items[index].focus(); }, focusListRoot: function focusListRoot() { return _this.root_.querySelector(constants_1.strings.LIST_SELECTOR).focus(); }, isSelectableItemAtIndex: function isSelectableItemAtIndex(index) { return !!ponyfill_1.closest(_this.items[index], "." + constants_1.cssClasses.MENU_SELECTION_GROUP); }, getSelectedSiblingOfItemAtIndex: function getSelectedSiblingOfItemAtIndex(index) { var selectionGroupEl = ponyfill_1.closest(_this.items[index], "." + constants_1.cssClasses.MENU_SELECTION_GROUP); var selectedItemEl = selectionGroupEl.querySelector("." + constants_1.cssClasses.MENU_SELECTED_LIST_ITEM); return selectedItemEl ? _this.items.indexOf(selectedItemEl) : -1; } }; // tslint:enable:object-literal-sort-keys return new foundation_3.MDCMenuFoundation(adapter); }; return MDCMenu; }(component_1.MDCComponent); exports.MDCMenu = MDCMenu; /***/ }), /***/ "./packages/mdc-menu/constants.ts": /*!****************************************!*\ !*** ./packages/mdc-menu/constants.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected', MENU_SELECTION_GROUP: 'mdc-menu__selection-group', ROOT: 'mdc-menu' }; exports.cssClasses = cssClasses; var strings = { ARIA_CHECKED_ATTR: 'aria-checked', ARIA_DISABLED_ATTR: 'aria-disabled', CHECKBOX_SELECTOR: 'input[type="checkbox"]', LIST_SELECTOR: '.mdc-list', SELECTED_EVENT: 'MDCMenu:selected' }; exports.strings = strings; var numbers = { FOCUS_ROOT_INDEX: -1 }; exports.numbers = numbers; var DefaultFocusState; (function (DefaultFocusState) { DefaultFocusState[DefaultFocusState["NONE"] = 0] = "NONE"; DefaultFocusState[DefaultFocusState["LIST_ROOT"] = 1] = "LIST_ROOT"; DefaultFocusState[DefaultFocusState["FIRST_ITEM"] = 2] = "FIRST_ITEM"; DefaultFocusState[DefaultFocusState["LAST_ITEM"] = 3] = "LAST_ITEM"; })(DefaultFocusState || (DefaultFocusState = {})); exports.DefaultFocusState = DefaultFocusState; /***/ }), /***/ "./packages/mdc-menu/foundation.ts": /*!*****************************************!*\ !*** ./packages/mdc-menu/foundation.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! @material/list/constants */ "./packages/mdc-list/constants.ts"); var foundation_2 = __webpack_require__(/*! @material/menu-surface/foundation */ "./packages/mdc-menu-surface/foundation.ts"); var constants_2 = __webpack_require__(/*! ./constants */ "./packages/mdc-menu/constants.ts"); var MDCMenuFoundation = /** @class */function (_super) { __extends(MDCMenuFoundation, _super); function MDCMenuFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCMenuFoundation.defaultAdapter, adapter)) || this; _this.closeAnimationEndTimerId_ = 0; _this.defaultFocusState_ = constants_2.DefaultFocusState.LIST_ROOT; return _this; } Object.defineProperty(MDCMenuFoundation, "cssClasses", { get: function get() { return constants_2.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuFoundation, "strings", { get: function get() { return constants_2.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuFoundation, "numbers", { get: function get() { return constants_2.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCMenuFoundation, "defaultAdapter", { /** * @see {@link MDCMenuAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClassToElementAtIndex: function addClassToElementAtIndex() { return undefined; }, removeClassFromElementAtIndex: function removeClassFromElementAtIndex() { return undefined; }, addAttributeToElementAtIndex: function addAttributeToElementAtIndex() { return undefined; }, removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() { return undefined; }, elementContainsClass: function elementContainsClass() { return false; }, closeSurface: function closeSurface() { return undefined; }, getElementIndex: function getElementIndex() { return -1; }, notifySelected: function notifySelected() { return undefined; }, getMenuItemCount: function getMenuItemCount() { return 0; }, focusItemAtIndex: function focusItemAtIndex() { return undefined; }, focusListRoot: function focusListRoot() { return undefined; }, getSelectedSiblingOfItemAtIndex: function getSelectedSiblingOfItemAtIndex() { return -1; }, isSelectableItemAtIndex: function isSelectableItemAtIndex() { return false; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCMenuFoundation.prototype.destroy = function () { if (this.closeAnimationEndTimerId_) { clearTimeout(this.closeAnimationEndTimerId_); } this.adapter_.closeSurface(); }; MDCMenuFoundation.prototype.handleKeydown = function (evt) { var key = evt.key, keyCode = evt.keyCode; var isTab = key === 'Tab' || keyCode === 9; if (isTab) { this.adapter_.closeSurface( /** skipRestoreFocus */true); } }; MDCMenuFoundation.prototype.handleItemAction = function (listItem) { var _this = this; var index = this.adapter_.getElementIndex(listItem); if (index < 0) { return; } this.adapter_.notifySelected({ index: index }); this.adapter_.closeSurface(); // Wait for the menu to close before adding/removing classes that affect styles. this.closeAnimationEndTimerId_ = setTimeout(function () { // Recompute the index in case the menu contents have changed. var recomputedIndex = _this.adapter_.getElementIndex(listItem); if (_this.adapter_.isSelectableItemAtIndex(recomputedIndex)) { _this.setSelectedIndex(recomputedIndex); } }, foundation_2.MDCMenuSurfaceFoundation.numbers.TRANSITION_CLOSE_DURATION); }; MDCMenuFoundation.prototype.handleMenuSurfaceOpened = function () { switch (this.defaultFocusState_) { case constants_2.DefaultFocusState.FIRST_ITEM: this.adapter_.focusItemAtIndex(0); break; case constants_2.DefaultFocusState.LAST_ITEM: this.adapter_.focusItemAtIndex(this.adapter_.getMenuItemCount() - 1); break; case constants_2.DefaultFocusState.NONE: // Do nothing. break; default: this.adapter_.focusListRoot(); break; } }; /** * Sets default focus state where the menu should focus every time when menu * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by * default. */ MDCMenuFoundation.prototype.setDefaultFocusState = function (focusState) { this.defaultFocusState_ = focusState; }; /** * Selects the list item at `index` within the menu. * @param index Index of list item within the menu. */ MDCMenuFoundation.prototype.setSelectedIndex = function (index) { this.validatedIndex_(index); if (!this.adapter_.isSelectableItemAtIndex(index)) { throw new Error('MDCMenuFoundation: No selection group at specified index.'); } var prevSelectedIndex = this.adapter_.getSelectedSiblingOfItemAtIndex(index); if (prevSelectedIndex >= 0) { this.adapter_.removeAttributeFromElementAtIndex(prevSelectedIndex, constants_2.strings.ARIA_CHECKED_ATTR); this.adapter_.removeClassFromElementAtIndex(prevSelectedIndex, constants_2.cssClasses.MENU_SELECTED_LIST_ITEM); } this.adapter_.addClassToElementAtIndex(index, constants_2.cssClasses.MENU_SELECTED_LIST_ITEM); this.adapter_.addAttributeToElementAtIndex(index, constants_2.strings.ARIA_CHECKED_ATTR, 'true'); }; /** * Sets the enabled state to isEnabled for the menu item at the given index. * @param index Index of the menu item * @param isEnabled The desired enabled state of the menu item. */ MDCMenuFoundation.prototype.setEnabled = function (index, isEnabled) { this.validatedIndex_(index); if (isEnabled) { this.adapter_.removeClassFromElementAtIndex(index, constants_1.cssClasses.LIST_ITEM_DISABLED_CLASS); this.adapter_.addAttributeToElementAtIndex(index, constants_2.strings.ARIA_DISABLED_ATTR, 'false'); } else { this.adapter_.addClassToElementAtIndex(index, constants_1.cssClasses.LIST_ITEM_DISABLED_CLASS); this.adapter_.addAttributeToElementAtIndex(index, constants_2.strings.ARIA_DISABLED_ATTR, 'true'); } }; MDCMenuFoundation.prototype.validatedIndex_ = function (index) { var menuSize = this.adapter_.getMenuItemCount(); var isIndexInRange = index >= 0 && index < menuSize; if (!isIndexInRange) { throw new Error('MDCMenuFoundation: No list item at specified index.'); } }; return MDCMenuFoundation; }(foundation_1.MDCFoundation); exports.MDCMenuFoundation = MDCMenuFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCMenuFoundation; /***/ }), /***/ "./packages/mdc-menu/index.ts": /*!************************************!*\ !*** ./packages/mdc-menu/index.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! @material/menu-surface/constants */ "./packages/mdc-menu-surface/constants.ts"); // for backward compatibility exports.Corner = constants_1.Corner; __export(__webpack_require__(/*! ./component */ "./packages/mdc-menu/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-menu/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-menu/foundation.ts")); /***/ }), /***/ "./packages/mdc-notched-outline/component.ts": /*!***************************************************!*\ !*** ./packages/mdc-notched-outline/component.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! @material/floating-label/foundation */ "./packages/mdc-floating-label/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-notched-outline/constants.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-notched-outline/foundation.ts"); var MDCNotchedOutline = /** @class */function (_super) { __extends(MDCNotchedOutline, _super); function MDCNotchedOutline() { return _super !== null && _super.apply(this, arguments) || this; } MDCNotchedOutline.attachTo = function (root) { return new MDCNotchedOutline(root); }; MDCNotchedOutline.prototype.initialSyncWithDOM = function () { this.notchElement_ = this.root_.querySelector(constants_1.strings.NOTCH_ELEMENT_SELECTOR); var label = this.root_.querySelector('.' + foundation_1.MDCFloatingLabelFoundation.cssClasses.ROOT); if (label) { label.style.transitionDuration = '0s'; this.root_.classList.add(constants_1.cssClasses.OUTLINE_UPGRADED); requestAnimationFrame(function () { label.style.transitionDuration = ''; }); } else { this.root_.classList.add(constants_1.cssClasses.NO_LABEL); } }; /** * Updates classes and styles to open the notch to the specified width. * @param notchWidth The notch width in the outline. */ MDCNotchedOutline.prototype.notch = function (notchWidth) { this.foundation_.notch(notchWidth); }; /** * Updates classes and styles to close the notch. */ MDCNotchedOutline.prototype.closeNotch = function () { this.foundation_.closeNotch(); }; MDCNotchedOutline.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setNotchWidthProperty: function setNotchWidthProperty(width) { return _this.notchElement_.style.setProperty('width', width + 'px'); }, removeNotchWidthProperty: function removeNotchWidthProperty() { return _this.notchElement_.style.removeProperty('width'); } }; // tslint:enable:object-literal-sort-keys return new foundation_2.MDCNotchedOutlineFoundation(adapter); }; return MDCNotchedOutline; }(component_1.MDCComponent); exports.MDCNotchedOutline = MDCNotchedOutline; /***/ }), /***/ "./packages/mdc-notched-outline/constants.ts": /*!***************************************************!*\ !*** ./packages/mdc-notched-outline/constants.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch' }; exports.strings = strings; var numbers = { // This should stay in sync with $mdc-notched-outline-padding * 2. NOTCH_ELEMENT_PADDING: 8 }; exports.numbers = numbers; var cssClasses = { NO_LABEL: 'mdc-notched-outline--no-label', OUTLINE_NOTCHED: 'mdc-notched-outline--notched', OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded' }; exports.cssClasses = cssClasses; /***/ }), /***/ "./packages/mdc-notched-outline/foundation.ts": /*!****************************************************!*\ !*** ./packages/mdc-notched-outline/foundation.ts ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-notched-outline/constants.ts"); var MDCNotchedOutlineFoundation = /** @class */function (_super) { __extends(MDCNotchedOutlineFoundation, _super); function MDCNotchedOutlineFoundation(adapter) { return _super.call(this, __assign({}, MDCNotchedOutlineFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCNotchedOutlineFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCNotchedOutlineFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCNotchedOutlineFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCNotchedOutlineFoundation, "defaultAdapter", { /** * See {@link MDCNotchedOutlineAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, setNotchWidthProperty: function setNotchWidthProperty() { return undefined; }, removeNotchWidthProperty: function removeNotchWidthProperty() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); /** * Adds the outline notched selector and updates the notch width calculated based off of notchWidth. */ MDCNotchedOutlineFoundation.prototype.notch = function (notchWidth) { var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED; if (notchWidth > 0) { notchWidth += constants_1.numbers.NOTCH_ELEMENT_PADDING; // Add padding from left/right. } this.adapter_.setNotchWidthProperty(notchWidth); this.adapter_.addClass(OUTLINE_NOTCHED); }; /** * Removes notched outline selector to close the notch in the outline. */ MDCNotchedOutlineFoundation.prototype.closeNotch = function () { var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED; this.adapter_.removeClass(OUTLINE_NOTCHED); this.adapter_.removeNotchWidthProperty(); }; return MDCNotchedOutlineFoundation; }(foundation_1.MDCFoundation); exports.MDCNotchedOutlineFoundation = MDCNotchedOutlineFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCNotchedOutlineFoundation; /***/ }), /***/ "./packages/mdc-notched-outline/index.ts": /*!***********************************************!*\ !*** ./packages/mdc-notched-outline/index.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-notched-outline/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-notched-outline/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-notched-outline/foundation.ts")); /***/ }), /***/ "./packages/mdc-radio/component.ts": /*!*****************************************!*\ !*** ./packages/mdc-radio/component.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-radio/foundation.ts"); var MDCRadio = /** @class */function (_super) { __extends(MDCRadio, _super); function MDCRadio() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.ripple_ = _this.createRipple_(); return _this; } MDCRadio.attachTo = function (root) { return new MDCRadio(root); }; Object.defineProperty(MDCRadio.prototype, "checked", { get: function get() { return this.nativeControl_.checked; }, set: function set(checked) { this.nativeControl_.checked = checked; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRadio.prototype, "disabled", { get: function get() { return this.nativeControl_.disabled; }, set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); Object.defineProperty(MDCRadio.prototype, "value", { get: function get() { return this.nativeControl_.value; }, set: function set(value) { this.nativeControl_.value = value; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRadio.prototype, "ripple", { get: function get() { return this.ripple_; }, enumerable: true, configurable: true }); MDCRadio.prototype.destroy = function () { this.ripple_.destroy(); _super.prototype.destroy.call(this); }; MDCRadio.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setNativeControlDisabled: function setNativeControlDisabled(disabled) { return _this.nativeControl_.disabled = disabled; } }; return new foundation_2.MDCRadioFoundation(adapter); }; MDCRadio.prototype.createRipple_ = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), { registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.nativeControl_.addEventListener(evtType, handler, events_1.applyPassive()); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.nativeControl_.removeEventListener(evtType, handler, events_1.applyPassive()); }, // Radio buttons technically go "active" whenever there is *any* keyboard interaction. // This is not the UI we desire. isSurfaceActive: function isSurfaceActive() { return false; }, isUnbounded: function isUnbounded() { return true; } }); // tslint:enable:object-literal-sort-keys return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter)); }; Object.defineProperty(MDCRadio.prototype, "nativeControl_", { get: function get() { var NATIVE_CONTROL_SELECTOR = foundation_2.MDCRadioFoundation.strings.NATIVE_CONTROL_SELECTOR; var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR); if (!el) { throw new Error("Radio component requires a " + NATIVE_CONTROL_SELECTOR + " element"); } return el; }, enumerable: true, configurable: true }); return MDCRadio; }(component_1.MDCComponent); exports.MDCRadio = MDCRadio; /***/ }), /***/ "./packages/mdc-radio/constants.ts": /*!*****************************************!*\ !*** ./packages/mdc-radio/constants.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control' }; exports.strings = strings; var cssClasses = { DISABLED: 'mdc-radio--disabled', ROOT: 'mdc-radio' }; exports.cssClasses = cssClasses; /***/ }), /***/ "./packages/mdc-radio/foundation.ts": /*!******************************************!*\ !*** ./packages/mdc-radio/foundation.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-radio/constants.ts"); var MDCRadioFoundation = /** @class */function (_super) { __extends(MDCRadioFoundation, _super); function MDCRadioFoundation(adapter) { return _super.call(this, __assign({}, MDCRadioFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCRadioFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRadioFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRadioFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, setNativeControlDisabled: function setNativeControlDisabled() { return undefined; } }; }, enumerable: true, configurable: true }); MDCRadioFoundation.prototype.setDisabled = function (disabled) { var DISABLED = MDCRadioFoundation.cssClasses.DISABLED; this.adapter_.setNativeControlDisabled(disabled); if (disabled) { this.adapter_.addClass(DISABLED); } else { this.adapter_.removeClass(DISABLED); } }; return MDCRadioFoundation; }(foundation_1.MDCFoundation); exports.MDCRadioFoundation = MDCRadioFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCRadioFoundation; /***/ }), /***/ "./packages/mdc-radio/index.ts": /*!*************************************!*\ !*** ./packages/mdc-radio/index.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-radio/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-radio/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-radio/foundation.ts")); /***/ }), /***/ "./packages/mdc-ripple/component.ts": /*!******************************************!*\ !*** ./packages/mdc-ripple/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-ripple/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-ripple/util.ts")); var MDCRipple = /** @class */function (_super) { __extends(MDCRipple, _super); function MDCRipple() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.disabled = false; return _this; } MDCRipple.attachTo = function (root, opts) { if (opts === void 0) { opts = { isUnbounded: undefined }; } var ripple = new MDCRipple(root); // Only override unbounded behavior if option is explicitly specified if (opts.isUnbounded !== undefined) { ripple.unbounded = opts.isUnbounded; } return ripple; }; MDCRipple.createAdapter = function (instance) { return { addClass: function addClass(className) { return instance.root_.classList.add(className); }, browserSupportsCssVars: function browserSupportsCssVars() { return util.supportsCssVariables(window); }, computeBoundingRect: function computeBoundingRect() { return instance.root_.getBoundingClientRect(); }, containsEventTarget: function containsEventTarget(target) { return instance.root_.contains(target); }, deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) { return document.documentElement.removeEventListener(evtType, handler, events_1.applyPassive()); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return instance.root_.removeEventListener(evtType, handler, events_1.applyPassive()); }, deregisterResizeHandler: function deregisterResizeHandler(handler) { return window.removeEventListener('resize', handler); }, getWindowPageOffset: function getWindowPageOffset() { return { x: window.pageXOffset, y: window.pageYOffset }; }, isSurfaceActive: function isSurfaceActive() { return ponyfill_1.matches(instance.root_, ':active'); }, isSurfaceDisabled: function isSurfaceDisabled() { return Boolean(instance.disabled); }, isUnbounded: function isUnbounded() { return Boolean(instance.unbounded); }, registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) { return document.documentElement.addEventListener(evtType, handler, events_1.applyPassive()); }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return instance.root_.addEventListener(evtType, handler, events_1.applyPassive()); }, registerResizeHandler: function registerResizeHandler(handler) { return window.addEventListener('resize', handler); }, removeClass: function removeClass(className) { return instance.root_.classList.remove(className); }, updateCssVariable: function updateCssVariable(varName, value) { return instance.root_.style.setProperty(varName, value); } }; }; Object.defineProperty(MDCRipple.prototype, "unbounded", { get: function get() { return Boolean(this.unbounded_); }, set: function set(unbounded) { this.unbounded_ = Boolean(unbounded); this.setUnbounded_(); }, enumerable: true, configurable: true }); MDCRipple.prototype.activate = function () { this.foundation_.activate(); }; MDCRipple.prototype.deactivate = function () { this.foundation_.deactivate(); }; MDCRipple.prototype.layout = function () { this.foundation_.layout(); }; MDCRipple.prototype.getDefaultFoundation = function () { return new foundation_1.MDCRippleFoundation(MDCRipple.createAdapter(this)); }; MDCRipple.prototype.initialSyncWithDOM = function () { var root = this.root_; this.unbounded = 'mdcRippleIsUnbounded' in root.dataset; }; /** * Closure Compiler throws an access control error when directly accessing a * protected or private property inside a getter/setter, like unbounded above. * By accessing the protected property inside a method, we solve that problem. * That's why this function exists. */ MDCRipple.prototype.setUnbounded_ = function () { this.foundation_.setUnbounded(Boolean(this.unbounded_)); }; return MDCRipple; }(component_1.MDCComponent); exports.MDCRipple = MDCRipple; /***/ }), /***/ "./packages/mdc-ripple/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-ripple/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cssClasses = { // Ripple is a special case where the "root" component is really a "mixin" of sorts, // given that it's an 'upgrade' to an existing component. That being said it is the root // CSS class that all other CSS classes derive from. BG_FOCUSED: 'mdc-ripple-upgraded--background-focused', FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation', FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation', ROOT: 'mdc-ripple-upgraded', UNBOUNDED: 'mdc-ripple-upgraded--unbounded' }; exports.strings = { VAR_FG_SCALE: '--mdc-ripple-fg-scale', VAR_FG_SIZE: '--mdc-ripple-fg-size', VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end', VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start', VAR_LEFT: '--mdc-ripple-left', VAR_TOP: '--mdc-ripple-top' }; exports.numbers = { DEACTIVATION_TIMEOUT_MS: 225, FG_DEACTIVATION_MS: 150, INITIAL_ORIGIN_SCALE: 0.6, PADDING: 10, TAP_DELAY_MS: 300 }; /***/ }), /***/ "./packages/mdc-ripple/foundation.ts": /*!*******************************************!*\ !*** ./packages/mdc-ripple/foundation.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-ripple/constants.ts"); var util_1 = __webpack_require__(/*! ./util */ "./packages/mdc-ripple/util.ts"); // Activation events registered on the root element of each instance for activation var ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown']; // Deactivation events registered on documentElement when a pointer-related down event occurs var POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu']; // simultaneous nested activations var activatedTargets = []; var MDCRippleFoundation = /** @class */function (_super) { __extends(MDCRippleFoundation, _super); function MDCRippleFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCRippleFoundation.defaultAdapter, adapter)) || this; _this.activationAnimationHasEnded_ = false; _this.activationTimer_ = 0; _this.fgDeactivationRemovalTimer_ = 0; _this.fgScale_ = '0'; _this.frame_ = { width: 0, height: 0 }; _this.initialSize_ = 0; _this.layoutFrame_ = 0; _this.maxRadius_ = 0; _this.unboundedCoords_ = { left: 0, top: 0 }; _this.activationState_ = _this.defaultActivationState_(); _this.activationTimerCallback_ = function () { _this.activationAnimationHasEnded_ = true; _this.runDeactivationUXLogicIfReady_(); }; _this.activateHandler_ = function (e) { return _this.activate_(e); }; _this.deactivateHandler_ = function () { return _this.deactivate_(); }; _this.focusHandler_ = function () { return _this.handleFocus(); }; _this.blurHandler_ = function () { return _this.handleBlur(); }; _this.resizeHandler_ = function () { return _this.layout(); }; return _this; } Object.defineProperty(MDCRippleFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRippleFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRippleFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCRippleFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, browserSupportsCssVars: function browserSupportsCssVars() { return true; }, computeBoundingRect: function computeBoundingRect() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, containsEventTarget: function containsEventTarget() { return true; }, deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; }, deregisterResizeHandler: function deregisterResizeHandler() { return undefined; }, getWindowPageOffset: function getWindowPageOffset() { return { x: 0, y: 0 }; }, isSurfaceActive: function isSurfaceActive() { return true; }, isSurfaceDisabled: function isSurfaceDisabled() { return true; }, isUnbounded: function isUnbounded() { return true; }, registerDocumentInteractionHandler: function registerDocumentInteractionHandler() { return undefined; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; }, registerResizeHandler: function registerResizeHandler() { return undefined; }, removeClass: function removeClass() { return undefined; }, updateCssVariable: function updateCssVariable() { return undefined; } }; }, enumerable: true, configurable: true }); MDCRippleFoundation.prototype.init = function () { var _this = this; var supportsPressRipple = this.supportsPressRipple_(); this.registerRootHandlers_(supportsPressRipple); if (supportsPressRipple) { var _a = MDCRippleFoundation.cssClasses, ROOT_1 = _a.ROOT, UNBOUNDED_1 = _a.UNBOUNDED; requestAnimationFrame(function () { _this.adapter_.addClass(ROOT_1); if (_this.adapter_.isUnbounded()) { _this.adapter_.addClass(UNBOUNDED_1); // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple _this.layoutInternal_(); } }); } }; MDCRippleFoundation.prototype.destroy = function () { var _this = this; if (this.supportsPressRipple_()) { if (this.activationTimer_) { clearTimeout(this.activationTimer_); this.activationTimer_ = 0; this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION); } if (this.fgDeactivationRemovalTimer_) { clearTimeout(this.fgDeactivationRemovalTimer_); this.fgDeactivationRemovalTimer_ = 0; this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION); } var _a = MDCRippleFoundation.cssClasses, ROOT_2 = _a.ROOT, UNBOUNDED_2 = _a.UNBOUNDED; requestAnimationFrame(function () { _this.adapter_.removeClass(ROOT_2); _this.adapter_.removeClass(UNBOUNDED_2); _this.removeCssVars_(); }); } this.deregisterRootHandlers_(); this.deregisterDeactivationHandlers_(); }; /** * @param evt Optional event containing position information. */ MDCRippleFoundation.prototype.activate = function (evt) { this.activate_(evt); }; MDCRippleFoundation.prototype.deactivate = function () { this.deactivate_(); }; MDCRippleFoundation.prototype.layout = function () { var _this = this; if (this.layoutFrame_) { cancelAnimationFrame(this.layoutFrame_); } this.layoutFrame_ = requestAnimationFrame(function () { _this.layoutInternal_(); _this.layoutFrame_ = 0; }); }; MDCRippleFoundation.prototype.setUnbounded = function (unbounded) { var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED; if (unbounded) { this.adapter_.addClass(UNBOUNDED); } else { this.adapter_.removeClass(UNBOUNDED); } }; MDCRippleFoundation.prototype.handleFocus = function () { var _this = this; requestAnimationFrame(function () { return _this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED); }); }; MDCRippleFoundation.prototype.handleBlur = function () { var _this = this; requestAnimationFrame(function () { return _this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED); }); }; /** * We compute this property so that we are not querying information about the client * until the point in time where the foundation requests it. This prevents scenarios where * client-side feature-detection may happen too early, such as when components are rendered on the server * and then initialized at mount time on the client. */ MDCRippleFoundation.prototype.supportsPressRipple_ = function () { return this.adapter_.browserSupportsCssVars(); }; MDCRippleFoundation.prototype.defaultActivationState_ = function () { return { activationEvent: undefined, hasDeactivationUXRun: false, isActivated: false, isProgrammatic: false, wasActivatedByPointer: false, wasElementMadeActive: false }; }; /** * supportsPressRipple Passed from init to save a redundant function call */ MDCRippleFoundation.prototype.registerRootHandlers_ = function (supportsPressRipple) { var _this = this; if (supportsPressRipple) { ACTIVATION_EVENT_TYPES.forEach(function (evtType) { _this.adapter_.registerInteractionHandler(evtType, _this.activateHandler_); }); if (this.adapter_.isUnbounded()) { this.adapter_.registerResizeHandler(this.resizeHandler_); } } this.adapter_.registerInteractionHandler('focus', this.focusHandler_); this.adapter_.registerInteractionHandler('blur', this.blurHandler_); }; MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function (evt) { var _this = this; if (evt.type === 'keydown') { this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_); } else { POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) { _this.adapter_.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_); }); } }; MDCRippleFoundation.prototype.deregisterRootHandlers_ = function () { var _this = this; ACTIVATION_EVENT_TYPES.forEach(function (evtType) { _this.adapter_.deregisterInteractionHandler(evtType, _this.activateHandler_); }); this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_); this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_); if (this.adapter_.isUnbounded()) { this.adapter_.deregisterResizeHandler(this.resizeHandler_); } }; MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function () { var _this = this; this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_); POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) { _this.adapter_.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_); }); }; MDCRippleFoundation.prototype.removeCssVars_ = function () { var _this = this; var rippleStrings = MDCRippleFoundation.strings; var keys = Object.keys(rippleStrings); keys.forEach(function (key) { if (key.indexOf('VAR_') === 0) { _this.adapter_.updateCssVariable(rippleStrings[key], null); } }); }; MDCRippleFoundation.prototype.activate_ = function (evt) { var _this = this; if (this.adapter_.isSurfaceDisabled()) { return; } var activationState = this.activationState_; if (activationState.isActivated) { return; } // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction var previousActivationEvent = this.previousActivationEvent_; var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type; if (isSameInteraction) { return; } activationState.isActivated = true; activationState.isProgrammatic = evt === undefined; activationState.activationEvent = evt; activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown'); var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) { return _this.adapter_.containsEventTarget(target); }); if (hasActivatedChild) { // Immediately reset activation state, while preserving logic that prevents touch follow-on events this.resetActivationState_(); return; } if (evt !== undefined) { activatedTargets.push(evt.target); this.registerDeactivationHandlers_(evt); } activationState.wasElementMadeActive = this.checkElementMadeActive_(evt); if (activationState.wasElementMadeActive) { this.animateActivation_(); } requestAnimationFrame(function () { // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples activatedTargets = []; if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === ' ' || evt.keyCode === 32)) { // If space was pressed, try again within an rAF call to detect :active, because different UAs report // active states inconsistently when they're called within event handling code: // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971 // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741 // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS // variable is set within a rAF callback for a submit button interaction (#2241). activationState.wasElementMadeActive = _this.checkElementMadeActive_(evt); if (activationState.wasElementMadeActive) { _this.animateActivation_(); } } if (!activationState.wasElementMadeActive) { // Reset activation state immediately if element was not made active. _this.activationState_ = _this.defaultActivationState_(); } }); }; MDCRippleFoundation.prototype.checkElementMadeActive_ = function (evt) { return evt !== undefined && evt.type === 'keydown' ? this.adapter_.isSurfaceActive() : true; }; MDCRippleFoundation.prototype.animateActivation_ = function () { var _this = this; var _a = MDCRippleFoundation.strings, VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START, VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END; var _b = MDCRippleFoundation.cssClasses, FG_DEACTIVATION = _b.FG_DEACTIVATION, FG_ACTIVATION = _b.FG_ACTIVATION; var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS; this.layoutInternal_(); var translateStart = ''; var translateEnd = ''; if (!this.adapter_.isUnbounded()) { var _c = this.getFgTranslationCoordinates_(), startPoint = _c.startPoint, endPoint = _c.endPoint; translateStart = startPoint.x + "px, " + startPoint.y + "px"; translateEnd = endPoint.x + "px, " + endPoint.y + "px"; } this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart); this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd); // Cancel any ongoing activation/deactivation animations clearTimeout(this.activationTimer_); clearTimeout(this.fgDeactivationRemovalTimer_); this.rmBoundedActivationClasses_(); this.adapter_.removeClass(FG_DEACTIVATION); // Force layout in order to re-trigger the animation. this.adapter_.computeBoundingRect(); this.adapter_.addClass(FG_ACTIVATION); this.activationTimer_ = setTimeout(function () { return _this.activationTimerCallback_(); }, DEACTIVATION_TIMEOUT_MS); }; MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function () { var _a = this.activationState_, activationEvent = _a.activationEvent, wasActivatedByPointer = _a.wasActivatedByPointer; var startPoint; if (wasActivatedByPointer) { startPoint = util_1.getNormalizedEventCoords(activationEvent, this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect()); } else { startPoint = { x: this.frame_.width / 2, y: this.frame_.height / 2 }; } // Center the element around the start point. startPoint = { x: startPoint.x - this.initialSize_ / 2, y: startPoint.y - this.initialSize_ / 2 }; var endPoint = { x: this.frame_.width / 2 - this.initialSize_ / 2, y: this.frame_.height / 2 - this.initialSize_ / 2 }; return { startPoint: startPoint, endPoint: endPoint }; }; MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function () { var _this = this; // This method is called both when a pointing device is released, and when the activation animation ends. // The deactivation animation should only run after both of those occur. var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION; var _a = this.activationState_, hasDeactivationUXRun = _a.hasDeactivationUXRun, isActivated = _a.isActivated; var activationHasEnded = hasDeactivationUXRun || !isActivated; if (activationHasEnded && this.activationAnimationHasEnded_) { this.rmBoundedActivationClasses_(); this.adapter_.addClass(FG_DEACTIVATION); this.fgDeactivationRemovalTimer_ = setTimeout(function () { _this.adapter_.removeClass(FG_DEACTIVATION); }, constants_1.numbers.FG_DEACTIVATION_MS); } }; MDCRippleFoundation.prototype.rmBoundedActivationClasses_ = function () { var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION; this.adapter_.removeClass(FG_ACTIVATION); this.activationAnimationHasEnded_ = false; this.adapter_.computeBoundingRect(); }; MDCRippleFoundation.prototype.resetActivationState_ = function () { var _this = this; this.previousActivationEvent_ = this.activationState_.activationEvent; this.activationState_ = this.defaultActivationState_(); // Touch devices may fire additional events for the same interaction within a short time. // Store the previous event until it's safe to assume that subsequent events are for new interactions. setTimeout(function () { return _this.previousActivationEvent_ = undefined; }, MDCRippleFoundation.numbers.TAP_DELAY_MS); }; MDCRippleFoundation.prototype.deactivate_ = function () { var _this = this; var activationState = this.activationState_; // This can happen in scenarios such as when you have a keyup event that blurs the element. if (!activationState.isActivated) { return; } var state = __assign({}, activationState); if (activationState.isProgrammatic) { requestAnimationFrame(function () { return _this.animateDeactivation_(state); }); this.resetActivationState_(); } else { this.deregisterDeactivationHandlers_(); requestAnimationFrame(function () { _this.activationState_.hasDeactivationUXRun = true; _this.animateDeactivation_(state); _this.resetActivationState_(); }); } }; MDCRippleFoundation.prototype.animateDeactivation_ = function (_a) { var wasActivatedByPointer = _a.wasActivatedByPointer, wasElementMadeActive = _a.wasElementMadeActive; if (wasActivatedByPointer || wasElementMadeActive) { this.runDeactivationUXLogicIfReady_(); } }; MDCRippleFoundation.prototype.layoutInternal_ = function () { var _this = this; this.frame_ = this.adapter_.computeBoundingRect(); var maxDim = Math.max(this.frame_.height, this.frame_.width); // Surface diameter is treated differently for unbounded vs. bounded ripples. // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via // `overflow: hidden`. var getBoundedRadius = function getBoundedRadius() { var hypotenuse = Math.sqrt(Math.pow(_this.frame_.width, 2) + Math.pow(_this.frame_.height, 2)); return hypotenuse + MDCRippleFoundation.numbers.PADDING; }; this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius(); // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform this.initialSize_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE); this.fgScale_ = "" + this.maxRadius_ / this.initialSize_; this.updateLayoutCssVars_(); }; MDCRippleFoundation.prototype.updateLayoutCssVars_ = function () { var _a = MDCRippleFoundation.strings, VAR_FG_SIZE = _a.VAR_FG_SIZE, VAR_LEFT = _a.VAR_LEFT, VAR_TOP = _a.VAR_TOP, VAR_FG_SCALE = _a.VAR_FG_SCALE; this.adapter_.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + "px"); this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_); if (this.adapter_.isUnbounded()) { this.unboundedCoords_ = { left: Math.round(this.frame_.width / 2 - this.initialSize_ / 2), top: Math.round(this.frame_.height / 2 - this.initialSize_ / 2) }; this.adapter_.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + "px"); this.adapter_.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + "px"); } }; return MDCRippleFoundation; }(foundation_1.MDCFoundation); exports.MDCRippleFoundation = MDCRippleFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCRippleFoundation; /***/ }), /***/ "./packages/mdc-ripple/index.ts": /*!**************************************!*\ !*** ./packages/mdc-ripple/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-ripple/util.ts")); exports.util = util; __export(__webpack_require__(/*! ./component */ "./packages/mdc-ripple/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-ripple/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-ripple/foundation.ts")); /***/ }), /***/ "./packages/mdc-ripple/util.ts": /*!*************************************!*\ !*** ./packages/mdc-ripple/util.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Stores result from supportsCssVariables to avoid redundant processing to * detect CSS custom variable support. */ var supportsCssVariables_; function detectEdgePseudoVarBug(windowObj) { // Detect versions of Edge with buggy var() support // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/ var document = windowObj.document; var node = document.createElement('div'); node.className = 'mdc-ripple-surface--test-edge-var-bug'; // Append to head instead of body because this script might be invoked in the // head, in which case the body doesn't exist yet. The probe works either way. document.head.appendChild(node); // The bug exists if ::before style ends up propagating to the parent element. // Additionally, getComputedStyle returns null in iframes with display: "none" in Firefox, // but Firefox is known to support CSS custom properties correctly. // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397 var computedStyle = windowObj.getComputedStyle(node); var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid'; if (node.parentNode) { node.parentNode.removeChild(node); } return hasPseudoVarBug; } function supportsCssVariables(windowObj, forceRefresh) { if (forceRefresh === void 0) { forceRefresh = false; } var CSS = windowObj.CSS; var supportsCssVars = supportsCssVariables_; if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) { return supportsCssVariables_; } var supportsFunctionPresent = CSS && typeof CSS.supports === 'function'; if (!supportsFunctionPresent) { return false; } var explicitlySupportsCssVars = CSS.supports('--css-vars', 'yes'); // See: https://bugs.webkit.org/show_bug.cgi?id=154669 // See: README section on Safari var weAreFeatureDetectingSafari10plus = CSS.supports('(--css-vars: yes)') && CSS.supports('color', '#00000000'); if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) { supportsCssVars = !detectEdgePseudoVarBug(windowObj); } else { supportsCssVars = false; } if (!forceRefresh) { supportsCssVariables_ = supportsCssVars; } return supportsCssVars; } exports.supportsCssVariables = supportsCssVariables; function getNormalizedEventCoords(evt, pageOffset, clientRect) { if (!evt) { return { x: 0, y: 0 }; } var x = pageOffset.x, y = pageOffset.y; var documentX = x + clientRect.left; var documentY = y + clientRect.top; var normalizedX; var normalizedY; // Determine touch point relative to the ripple container. if (evt.type === 'touchstart') { var touchEvent = evt; normalizedX = touchEvent.changedTouches[0].pageX - documentX; normalizedY = touchEvent.changedTouches[0].pageY - documentY; } else { var mouseEvent = evt; normalizedX = mouseEvent.pageX - documentX; normalizedY = mouseEvent.pageY - documentY; } return { x: normalizedX, y: normalizedY }; } exports.getNormalizedEventCoords = getNormalizedEventCoords; /***/ }), /***/ "./packages/mdc-select/component.ts": /*!******************************************!*\ !*** ./packages/mdc-select/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/floating-label/component */ "./packages/mdc-floating-label/component.ts"); var component_3 = __webpack_require__(/*! @material/line-ripple/component */ "./packages/mdc-line-ripple/component.ts"); var menuSurfaceConstants = __importStar(__webpack_require__(/*! @material/menu-surface/constants */ "./packages/mdc-menu-surface/constants.ts")); var component_4 = __webpack_require__(/*! @material/menu/component */ "./packages/mdc-menu/component.ts"); var menuConstants = __importStar(__webpack_require__(/*! @material/menu/constants */ "./packages/mdc-menu/constants.ts")); var component_5 = __webpack_require__(/*! @material/notched-outline/component */ "./packages/mdc-notched-outline/component.ts"); var component_6 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/constants.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-select/foundation.ts"); var component_7 = __webpack_require__(/*! ./helper-text/component */ "./packages/mdc-select/helper-text/component.ts"); var component_8 = __webpack_require__(/*! ./icon/component */ "./packages/mdc-select/icon/component.ts"); var VALIDATION_ATTR_WHITELIST = ['required', 'aria-required']; var MDCSelect = /** @class */function (_super) { __extends(MDCSelect, _super); function MDCSelect() { return _super !== null && _super.apply(this, arguments) || this; } MDCSelect.attachTo = function (root) { return new MDCSelect(root); }; MDCSelect.prototype.initialize = function (labelFactory, lineRippleFactory, outlineFactory, menuFactory, iconFactory, helperTextFactory) { if (labelFactory === void 0) { labelFactory = function labelFactory(el) { return new component_2.MDCFloatingLabel(el); }; } if (lineRippleFactory === void 0) { lineRippleFactory = function lineRippleFactory(el) { return new component_3.MDCLineRipple(el); }; } if (outlineFactory === void 0) { outlineFactory = function outlineFactory(el) { return new component_5.MDCNotchedOutline(el); }; } if (menuFactory === void 0) { menuFactory = function menuFactory(el) { return new component_4.MDCMenu(el); }; } if (iconFactory === void 0) { iconFactory = function iconFactory(el) { return new component_8.MDCSelectIcon(el); }; } if (helperTextFactory === void 0) { helperTextFactory = function helperTextFactory(el) { return new component_7.MDCSelectHelperText(el); }; } this.isMenuOpen_ = false; this.nativeControl_ = this.root_.querySelector(constants_1.strings.NATIVE_CONTROL_SELECTOR); this.selectedText_ = this.root_.querySelector(constants_1.strings.SELECTED_TEXT_SELECTOR); var targetElement = this.nativeControl_ || this.selectedText_; if (!targetElement) { throw new Error('MDCSelect: Missing required element: Exactly one of the following selectors must be present: ' + ("'" + constants_1.strings.NATIVE_CONTROL_SELECTOR + "' or '" + constants_1.strings.SELECTED_TEXT_SELECTOR + "'")); } this.targetElement_ = targetElement; if (this.targetElement_.hasAttribute(constants_1.strings.ARIA_CONTROLS)) { var helperTextElement = document.getElementById(this.targetElement_.getAttribute(constants_1.strings.ARIA_CONTROLS)); if (helperTextElement) { this.helperText_ = helperTextFactory(helperTextElement); } } if (this.selectedText_) { this.enhancedSelectSetup_(menuFactory); } var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR); this.label_ = labelElement ? labelFactory(labelElement) : null; var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR); this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null; var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR); this.outline_ = outlineElement ? outlineFactory(outlineElement) : null; var leadingIcon = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR); if (leadingIcon) { this.root_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON); this.leadingIcon_ = iconFactory(leadingIcon); if (this.menuElement_) { this.menuElement_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON); } } if (!this.root_.classList.contains(constants_1.cssClasses.OUTLINED)) { this.ripple = this.createRipple_(); } // The required state needs to be sync'd before the mutation observer is added. this.initialSyncRequiredState_(); this.addMutationObserverForRequired_(); }; /** * Initializes the select's event listeners and internal state based * on the environment's state. */ MDCSelect.prototype.initialSyncWithDOM = function () { var _this = this; this.handleChange_ = function () { return _this.foundation_.handleChange( /* didChange */true); }; this.handleFocus_ = function () { return _this.foundation_.handleFocus(); }; this.handleBlur_ = function () { return _this.foundation_.handleBlur(); }; this.handleClick_ = function (evt) { if (_this.selectedText_) { _this.selectedText_.focus(); } _this.foundation_.handleClick(_this.getNormalizedXCoordinate_(evt)); }; this.handleKeydown_ = function (evt) { return _this.foundation_.handleKeydown(evt); }; this.handleMenuSelected_ = function (evtData) { return _this.selectedIndex = evtData.detail.index; }; this.handleMenuOpened_ = function () { _this.foundation_.handleMenuOpened(); if (_this.menu_.items.length === 0) { return; } // Menu should open to the last selected element, should open to first menu item otherwise. var focusItemIndex = _this.selectedIndex >= 0 ? _this.selectedIndex : 0; var focusItemEl = _this.menu_.items[focusItemIndex]; focusItemEl.focus(); }; this.handleMenuClosed_ = function () { _this.foundation_.handleMenuClosed(); // isMenuOpen_ is used to track the state of the menu opening or closing since the menu.open function // will return false if the menu is still closing and this method listens to the closed event which // occurs after the menu is already closed. _this.isMenuOpen_ = false; _this.selectedText_.removeAttribute('aria-expanded'); if (document.activeElement !== _this.selectedText_) { _this.foundation_.handleBlur(); } }; this.targetElement_.addEventListener('change', this.handleChange_); this.targetElement_.addEventListener('focus', this.handleFocus_); this.targetElement_.addEventListener('blur', this.handleBlur_); this.targetElement_.addEventListener('click', this.handleClick_); if (this.menuElement_) { this.selectedText_.addEventListener('keydown', this.handleKeydown_); this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_); this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_); this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_); if (this.hiddenInput_ && this.hiddenInput_.value) { // If the hidden input already has a value, use it to restore the select's value. // This can happen e.g. if the user goes back or (in some browsers) refreshes the page. var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_(); enhancedAdapterMethods.setValue(this.hiddenInput_.value); } else if (this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR)) { // If an element is selected, the select should set the initial selected text. var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_(); enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue()); } } // Initially sync floating label this.foundation_.handleChange( /* didChange */false); if (this.root_.classList.contains(constants_1.cssClasses.DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) { this.disabled = true; } }; MDCSelect.prototype.destroy = function () { this.targetElement_.removeEventListener('change', this.handleChange_); this.targetElement_.removeEventListener('focus', this.handleFocus_); this.targetElement_.removeEventListener('blur', this.handleBlur_); this.targetElement_.removeEventListener('keydown', this.handleKeydown_); this.targetElement_.removeEventListener('click', this.handleClick_); if (this.menu_) { this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_); this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_); this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_); this.menu_.destroy(); } if (this.ripple) { this.ripple.destroy(); } if (this.outline_) { this.outline_.destroy(); } if (this.leadingIcon_) { this.leadingIcon_.destroy(); } if (this.helperText_) { this.helperText_.destroy(); } if (this.validationObserver_) { this.validationObserver_.disconnect(); } _super.prototype.destroy.call(this); }; Object.defineProperty(MDCSelect.prototype, "value", { get: function get() { return this.foundation_.getValue(); }, set: function set(value) { this.foundation_.setValue(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "selectedIndex", { get: function get() { var selectedIndex = -1; if (this.menuElement_ && this.menu_) { var selectedEl = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR); selectedIndex = this.menu_.items.indexOf(selectedEl); } else if (this.nativeControl_) { selectedIndex = this.nativeControl_.selectedIndex; } return selectedIndex; }, set: function set(selectedIndex) { this.foundation_.setSelectedIndex(selectedIndex); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "disabled", { get: function get() { return this.root_.classList.contains(constants_1.cssClasses.DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false); }, set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "leadingIconAriaLabel", { set: function set(label) { this.foundation_.setLeadingIconAriaLabel(label); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "leadingIconContent", { /** * Sets the text content of the leading icon. */ set: function set(content) { this.foundation_.setLeadingIconContent(content); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "helperTextContent", { /** * Sets the text content of the helper text. */ set: function set(content) { this.foundation_.setHelperTextContent(content); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "valid", { /** * Checks if the select is in a valid state. */ get: function get() { return this.foundation_.isValid(); }, /** * Sets the current invalid state of the select. */ set: function set(isValid) { this.foundation_.setValid(isValid); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelect.prototype, "required", { /** * Returns whether the select is required. */ get: function get() { if (this.nativeControl_) { return this.nativeControl_.required; } else { return this.selectedText_.getAttribute('aria-required') === 'true'; } }, /** * Sets the control to the required state. */ set: function set(isRequired) { if (this.nativeControl_) { this.nativeControl_.required = isRequired; } else { if (isRequired) { this.selectedText_.setAttribute('aria-required', isRequired.toString()); } else { this.selectedText_.removeAttribute('aria-required'); } } }, enumerable: true, configurable: true }); /** * Recomputes the outline SVG path for the outline element. */ MDCSelect.prototype.layout = function () { this.foundation_.layout(); }; MDCSelect.prototype.getDefaultFoundation = function () { // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = __assign({}, this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_()); return new foundation_2.MDCSelectFoundation(adapter, this.getFoundationMap_()); }; /** * Handles setup for the enhanced menu. */ MDCSelect.prototype.enhancedSelectSetup_ = function (menuFactory) { var isDisabled = this.root_.classList.contains(constants_1.cssClasses.DISABLED); this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0'); this.hiddenInput_ = this.root_.querySelector(constants_1.strings.HIDDEN_INPUT_SELECTOR); this.menuElement_ = this.root_.querySelector(constants_1.strings.MENU_SELECTOR); this.menu_ = menuFactory(this.menuElement_); this.menu_.hoistMenuToBody(); this.menu_.setAnchorElement(this.root_); this.menu_.setAnchorCorner(menuSurfaceConstants.Corner.BOTTOM_START); this.menu_.wrapFocus = false; }; MDCSelect.prototype.createRipple_ = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = __assign({}, component_6.MDCRipple.createAdapter(this), { registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.targetElement_.addEventListener(evtType, handler); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.targetElement_.removeEventListener(evtType, handler); } }); // tslint:enable:object-literal-sort-keys return new component_6.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter)); }; MDCSelect.prototype.getNativeSelectAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { getValue: function getValue() { return _this.nativeControl_.value; }, setValue: function setValue(value) { _this.nativeControl_.value = value; }, openMenu: function openMenu() { return undefined; }, closeMenu: function closeMenu() { return undefined; }, isMenuOpen: function isMenuOpen() { return false; }, setSelectedIndex: function setSelectedIndex(index) { _this.nativeControl_.selectedIndex = index; }, setDisabled: function setDisabled(isDisabled) { _this.nativeControl_.disabled = isDisabled; }, setValid: function setValid(isValid) { if (isValid) { _this.root_.classList.remove(constants_1.cssClasses.INVALID); } else { _this.root_.classList.add(constants_1.cssClasses.INVALID); } }, checkValidity: function checkValidity() { return _this.nativeControl_.checkValidity(); } }; // tslint:enable:object-literal-sort-keys }; MDCSelect.prototype.getEnhancedSelectAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { getValue: function getValue() { var listItem = _this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR); if (listItem && listItem.hasAttribute(constants_1.strings.ENHANCED_VALUE_ATTR)) { return listItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || ''; } return ''; }, setValue: function setValue(value) { var element = _this.menuElement_.querySelector("[" + constants_1.strings.ENHANCED_VALUE_ATTR + "=\"" + value + "\"]"); _this.setEnhancedSelectedIndex_(element ? _this.menu_.items.indexOf(element) : -1); }, openMenu: function openMenu() { if (_this.menu_ && !_this.menu_.open) { _this.menu_.open = true; _this.isMenuOpen_ = true; _this.selectedText_.setAttribute('aria-expanded', 'true'); } }, closeMenu: function closeMenu() { if (_this.menu_ && _this.menu_.open) { _this.menu_.open = false; } }, isMenuOpen: function isMenuOpen() { return Boolean(_this.menu_) && _this.isMenuOpen_; }, setSelectedIndex: function setSelectedIndex(index) { return _this.setEnhancedSelectedIndex_(index); }, setDisabled: function setDisabled(isDisabled) { _this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0'); _this.selectedText_.setAttribute('aria-disabled', isDisabled.toString()); if (_this.hiddenInput_) { _this.hiddenInput_.disabled = isDisabled; } }, checkValidity: function checkValidity() { var classList = _this.root_.classList; if (classList.contains(constants_1.cssClasses.REQUIRED) && !classList.contains(constants_1.cssClasses.DISABLED)) { // See notes for required attribute under https://www.w3.org/TR/html52/sec-forms.html#the-select-element // TL;DR: Invalid if no index is selected, or if the first index is selected and has an empty value. return _this.selectedIndex !== -1 && (_this.selectedIndex !== 0 || Boolean(_this.value)); } else { return true; } }, setValid: function setValid(isValid) { _this.selectedText_.setAttribute('aria-invalid', (!isValid).toString()); if (isValid) { _this.root_.classList.remove(constants_1.cssClasses.INVALID); } else { _this.root_.classList.add(constants_1.cssClasses.INVALID); } } }; // tslint:enable:object-literal-sort-keys }; MDCSelect.prototype.getCommonAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, setRippleCenter: function setRippleCenter(normalizedX) { return _this.lineRipple_ && _this.lineRipple_.setRippleCenter(normalizedX); }, activateBottomLine: function activateBottomLine() { return _this.lineRipple_ && _this.lineRipple_.activate(); }, deactivateBottomLine: function deactivateBottomLine() { return _this.lineRipple_ && _this.lineRipple_.deactivate(); }, notifyChange: function notifyChange(value) { var index = _this.selectedIndex; _this.emit(constants_1.strings.CHANGE_EVENT, { value: value, index: index }, true /* shouldBubble */); } }; // tslint:enable:object-literal-sort-keys }; MDCSelect.prototype.getOutlineAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { hasOutline: function hasOutline() { return Boolean(_this.outline_); }, notchOutline: function notchOutline(labelWidth) { return _this.outline_ && _this.outline_.notch(labelWidth); }, closeOutline: function closeOutline() { return _this.outline_ && _this.outline_.closeNotch(); } }; // tslint:enable:object-literal-sort-keys }; MDCSelect.prototype.getLabelAdapterMethods_ = function () { var _this = this; return { floatLabel: function floatLabel(shouldFloat) { return _this.label_ && _this.label_.float(shouldFloat); }, getLabelWidth: function getLabelWidth() { return _this.label_ ? _this.label_.getWidth() : 0; } }; }; /** * Calculates where the line ripple should start based on the x coordinate within the component. */ MDCSelect.prototype.getNormalizedXCoordinate_ = function (evt) { var targetClientRect = evt.target.getBoundingClientRect(); var xCoordinate = this.isTouchEvent_(evt) ? evt.touches[0].clientX : evt.clientX; return xCoordinate - targetClientRect.left; }; MDCSelect.prototype.isTouchEvent_ = function (evt) { return Boolean(evt.touches); }; /** * Returns a map of all subcomponents to subfoundations. */ MDCSelect.prototype.getFoundationMap_ = function () { return { helperText: this.helperText_ ? this.helperText_.foundation : undefined, leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined }; }; MDCSelect.prototype.setEnhancedSelectedIndex_ = function (index) { var selectedItem = this.menu_.items[index]; this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : ''; var previouslySelected = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR); if (previouslySelected) { previouslySelected.classList.remove(constants_1.cssClasses.SELECTED_ITEM_CLASS); previouslySelected.removeAttribute(constants_1.strings.ARIA_SELECTED_ATTR); } if (selectedItem) { selectedItem.classList.add(constants_1.cssClasses.SELECTED_ITEM_CLASS); selectedItem.setAttribute(constants_1.strings.ARIA_SELECTED_ATTR, 'true'); } // Synchronize hidden input's value with data-value attribute of selected item. // This code path is also followed when setting value directly, so this covers all cases. if (this.hiddenInput_) { this.hiddenInput_.value = selectedItem ? selectedItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || '' : ''; } this.layout(); }; MDCSelect.prototype.initialSyncRequiredState_ = function () { var isRequired = this.targetElement_.required || this.targetElement_.getAttribute('aria-required') === 'true' || this.root_.classList.contains(constants_1.cssClasses.REQUIRED); if (isRequired) { if (this.nativeControl_) { this.nativeControl_.required = true; } else { this.selectedText_.setAttribute('aria-required', 'true'); } this.root_.classList.add(constants_1.cssClasses.REQUIRED); } }; MDCSelect.prototype.addMutationObserverForRequired_ = function () { var _this = this; var observerHandler = function observerHandler(attributesList) { attributesList.some(function (attributeName) { if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) === -1) { return false; } if (_this.selectedText_) { if (_this.selectedText_.getAttribute('aria-required') === 'true') { _this.root_.classList.add(constants_1.cssClasses.REQUIRED); } else { _this.root_.classList.remove(constants_1.cssClasses.REQUIRED); } } else { if (_this.nativeControl_.required) { _this.root_.classList.add(constants_1.cssClasses.REQUIRED); } else { _this.root_.classList.remove(constants_1.cssClasses.REQUIRED); } } return true; }); }; var getAttributesList = function getAttributesList(mutationsList) { return mutationsList.map(function (mutation) { return mutation.attributeName; }).filter(function (attributeName) { return attributeName; }); }; var observer = new MutationObserver(function (mutationsList) { return observerHandler(getAttributesList(mutationsList)); }); observer.observe(this.targetElement_, { attributes: true }); this.validationObserver_ = observer; }; return MDCSelect; }(component_1.MDCComponent); exports.MDCSelect = MDCSelect; /***/ }), /***/ "./packages/mdc-select/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-select/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ACTIVATED: 'mdc-select--activated', DISABLED: 'mdc-select--disabled', FOCUSED: 'mdc-select--focused', INVALID: 'mdc-select--invalid', OUTLINED: 'mdc-select--outlined', REQUIRED: 'mdc-select--required', ROOT: 'mdc-select', SELECTED_ITEM_CLASS: 'mdc-list-item--selected', WITH_LEADING_ICON: 'mdc-select--with-leading-icon' }; exports.cssClasses = cssClasses; var strings = { ARIA_CONTROLS: 'aria-controls', ARIA_SELECTED_ATTR: 'aria-selected', CHANGE_EVENT: 'MDCSelect:change', ENHANCED_VALUE_ATTR: 'data-value', HIDDEN_INPUT_SELECTOR: 'input[type="hidden"]', LABEL_SELECTOR: '.mdc-floating-label', LEADING_ICON_SELECTOR: '.mdc-select__icon', LINE_RIPPLE_SELECTOR: '.mdc-line-ripple', MENU_SELECTOR: '.mdc-select__menu', NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control', OUTLINE_SELECTOR: '.mdc-notched-outline', SELECTED_ITEM_SELECTOR: "." + cssClasses.SELECTED_ITEM_CLASS, SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text' }; exports.strings = strings; var numbers = { LABEL_SCALE: 0.75 }; exports.numbers = numbers; /***/ }), /***/ "./packages/mdc-select/foundation.ts": /*!*******************************************!*\ !*** ./packages/mdc-select/foundation.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/constants.ts"); var MDCSelectFoundation = /** @class */function (_super) { __extends(MDCSelectFoundation, _super); /* istanbul ignore next: optional argument is not a branch statement */ /** * @param adapter * @param foundationMap Map from subcomponent names to their subfoundations. */ function MDCSelectFoundation(adapter, foundationMap) { if (foundationMap === void 0) { foundationMap = {}; } var _this = _super.call(this, __assign({}, MDCSelectFoundation.defaultAdapter, adapter)) || this; _this.leadingIcon_ = foundationMap.leadingIcon; _this.helperText_ = foundationMap.helperText; return _this; } Object.defineProperty(MDCSelectFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectFoundation, "defaultAdapter", { /** * See {@link MDCSelectAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, activateBottomLine: function activateBottomLine() { return undefined; }, deactivateBottomLine: function deactivateBottomLine() { return undefined; }, setValue: function setValue() { return undefined; }, getValue: function getValue() { return ''; }, floatLabel: function floatLabel() { return undefined; }, getLabelWidth: function getLabelWidth() { return 0; }, hasOutline: function hasOutline() { return false; }, notchOutline: function notchOutline() { return undefined; }, closeOutline: function closeOutline() { return undefined; }, openMenu: function openMenu() { return undefined; }, closeMenu: function closeMenu() { return undefined; }, isMenuOpen: function isMenuOpen() { return false; }, setSelectedIndex: function setSelectedIndex() { return undefined; }, setDisabled: function setDisabled() { return undefined; }, setRippleCenter: function setRippleCenter() { return undefined; }, notifyChange: function notifyChange() { return undefined; }, checkValidity: function checkValidity() { return false; }, setValid: function setValid() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCSelectFoundation.prototype.setSelectedIndex = function (index) { this.adapter_.setSelectedIndex(index); this.adapter_.closeMenu(); var didChange = true; this.handleChange(didChange); }; MDCSelectFoundation.prototype.setValue = function (value) { this.adapter_.setValue(value); var didChange = true; this.handleChange(didChange); }; MDCSelectFoundation.prototype.getValue = function () { return this.adapter_.getValue(); }; MDCSelectFoundation.prototype.setDisabled = function (isDisabled) { if (isDisabled) { this.adapter_.addClass(constants_1.cssClasses.DISABLED); } else { this.adapter_.removeClass(constants_1.cssClasses.DISABLED); } this.adapter_.setDisabled(isDisabled); this.adapter_.closeMenu(); if (this.leadingIcon_) { this.leadingIcon_.setDisabled(isDisabled); } }; /** * @param content Sets the content of the helper text. */ MDCSelectFoundation.prototype.setHelperTextContent = function (content) { if (this.helperText_) { this.helperText_.setContent(content); } }; MDCSelectFoundation.prototype.layout = function () { var openNotch = this.getValue().length > 0; this.notchOutline(openNotch); }; MDCSelectFoundation.prototype.handleMenuOpened = function () { this.adapter_.addClass(constants_1.cssClasses.ACTIVATED); }; MDCSelectFoundation.prototype.handleMenuClosed = function () { this.adapter_.removeClass(constants_1.cssClasses.ACTIVATED); }; /** * Handles value changes, via change event or programmatic updates. */ MDCSelectFoundation.prototype.handleChange = function (didChange) { if (didChange === void 0) { didChange = true; } var value = this.getValue(); var optionHasValue = value.length > 0; var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED); this.notchOutline(optionHasValue); if (!this.adapter_.hasClass(constants_1.cssClasses.FOCUSED)) { this.adapter_.floatLabel(optionHasValue); } if (didChange) { this.adapter_.notifyChange(value); if (isRequired) { this.setValid(this.isValid()); if (this.helperText_) { this.helperText_.setValidity(this.isValid()); } } } }; /** * Handles focus events from select element. */ MDCSelectFoundation.prototype.handleFocus = function () { this.adapter_.addClass(constants_1.cssClasses.FOCUSED); this.adapter_.floatLabel(true); this.notchOutline(true); this.adapter_.activateBottomLine(); if (this.helperText_) { this.helperText_.showToScreenReader(); } }; /** * Handles blur events from select element. */ MDCSelectFoundation.prototype.handleBlur = function () { if (this.adapter_.isMenuOpen()) { return; } this.adapter_.removeClass(constants_1.cssClasses.FOCUSED); this.handleChange(false); this.adapter_.deactivateBottomLine(); var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED); if (isRequired) { this.setValid(this.isValid()); if (this.helperText_) { this.helperText_.setValidity(this.isValid()); } } }; MDCSelectFoundation.prototype.handleClick = function (normalizedX) { if (this.adapter_.isMenuOpen()) { return; } this.adapter_.setRippleCenter(normalizedX); this.adapter_.openMenu(); }; MDCSelectFoundation.prototype.handleKeydown = function (event) { if (this.adapter_.isMenuOpen()) { return; } var isEnter = event.key === 'Enter' || event.keyCode === 13; var isSpace = event.key === 'Space' || event.keyCode === 32; var arrowUp = event.key === 'ArrowUp' || event.keyCode === 38; var arrowDown = event.key === 'ArrowDown' || event.keyCode === 40; if (this.adapter_.hasClass(constants_1.cssClasses.FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) { this.adapter_.openMenu(); event.preventDefault(); } }; /** * Opens/closes the notched outline. */ MDCSelectFoundation.prototype.notchOutline = function (openNotch) { if (!this.adapter_.hasOutline()) { return; } var isFocused = this.adapter_.hasClass(constants_1.cssClasses.FOCUSED); if (openNotch) { var labelScale = constants_1.numbers.LABEL_SCALE; var labelWidth = this.adapter_.getLabelWidth() * labelScale; this.adapter_.notchOutline(labelWidth); } else if (!isFocused) { this.adapter_.closeOutline(); } }; /** * Sets the aria label of the leading icon. */ MDCSelectFoundation.prototype.setLeadingIconAriaLabel = function (label) { if (this.leadingIcon_) { this.leadingIcon_.setAriaLabel(label); } }; /** * Sets the text content of the leading icon. */ MDCSelectFoundation.prototype.setLeadingIconContent = function (content) { if (this.leadingIcon_) { this.leadingIcon_.setContent(content); } }; MDCSelectFoundation.prototype.setValid = function (isValid) { this.adapter_.setValid(isValid); }; MDCSelectFoundation.prototype.isValid = function () { return this.adapter_.checkValidity(); }; return MDCSelectFoundation; }(foundation_1.MDCFoundation); exports.MDCSelectFoundation = MDCSelectFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSelectFoundation; /***/ }), /***/ "./packages/mdc-select/helper-text/component.ts": /*!******************************************************!*\ !*** ./packages/mdc-select/helper-text/component.ts ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-select/helper-text/foundation.ts"); var MDCSelectHelperText = /** @class */function (_super) { __extends(MDCSelectHelperText, _super); function MDCSelectHelperText() { return _super !== null && _super.apply(this, arguments) || this; } MDCSelectHelperText.attachTo = function (root) { return new MDCSelectHelperText(root); }; Object.defineProperty(MDCSelectHelperText.prototype, "foundation", { get: function get() { return this.foundation_; }, enumerable: true, configurable: true }); MDCSelectHelperText.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, removeAttr: function removeAttr(attr) { return _this.root_.removeAttribute(attr); }, setContent: function setContent(content) { _this.root_.textContent = content; } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCSelectHelperTextFoundation(adapter); }; return MDCSelectHelperText; }(component_1.MDCComponent); exports.MDCSelectHelperText = MDCSelectHelperText; /***/ }), /***/ "./packages/mdc-select/helper-text/constants.ts": /*!******************************************************!*\ !*** ./packages/mdc-select/helper-text/constants.ts ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { ARIA_HIDDEN: 'aria-hidden', ROLE: 'role' }; exports.strings = strings; var cssClasses = { HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent', HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg' }; exports.cssClasses = cssClasses; /***/ }), /***/ "./packages/mdc-select/helper-text/foundation.ts": /*!*******************************************************!*\ !*** ./packages/mdc-select/helper-text/foundation.ts ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/helper-text/constants.ts"); var MDCSelectHelperTextFoundation = /** @class */function (_super) { __extends(MDCSelectHelperTextFoundation, _super); function MDCSelectHelperTextFoundation(adapter) { return _super.call(this, __assign({}, MDCSelectHelperTextFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCSelectHelperTextFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectHelperTextFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectHelperTextFoundation, "defaultAdapter", { /** * See {@link MDCSelectHelperTextAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, setAttr: function setAttr() { return undefined; }, removeAttr: function removeAttr() { return undefined; }, setContent: function setContent() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); /** * Sets the content of the helper text field. */ MDCSelectHelperTextFoundation.prototype.setContent = function (content) { this.adapter_.setContent(content); }; /** * Sets the persistency of the helper text. */ MDCSelectHelperTextFoundation.prototype.setPersistent = function (isPersistent) { if (isPersistent) { this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); } else { this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); } }; /** * @param isValidation True to make the helper text act as an error validation message. */ MDCSelectHelperTextFoundation.prototype.setValidation = function (isValidation) { if (isValidation) { this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); } else { this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); } }; /** * Makes the helper text visible to screen readers. */ MDCSelectHelperTextFoundation.prototype.showToScreenReader = function () { this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN); }; /** * Sets the validity of the helper text based on the select validity. */ MDCSelectHelperTextFoundation.prototype.setValidity = function (selectIsValid) { var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid; if (validationMsgNeedsDisplay) { this.adapter_.setAttr(constants_1.strings.ROLE, 'alert'); } else { this.adapter_.removeAttr(constants_1.strings.ROLE); } if (!helperTextIsPersistent && !validationMsgNeedsDisplay) { this.hide_(); } }; /** * Hides the help text from screen readers. */ MDCSelectHelperTextFoundation.prototype.hide_ = function () { this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, 'true'); }; return MDCSelectHelperTextFoundation; }(foundation_1.MDCFoundation); exports.MDCSelectHelperTextFoundation = MDCSelectHelperTextFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSelectHelperTextFoundation; /***/ }), /***/ "./packages/mdc-select/helper-text/index.ts": /*!**************************************************!*\ !*** ./packages/mdc-select/helper-text/index.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-select/helper-text/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-select/helper-text/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/helper-text/constants.ts"); exports.helperTextCssClasses = constants_1.cssClasses; exports.helperTextStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-select/icon/component.ts": /*!***********************************************!*\ !*** ./packages/mdc-select/icon/component.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-select/icon/foundation.ts"); var MDCSelectIcon = /** @class */function (_super) { __extends(MDCSelectIcon, _super); function MDCSelectIcon() { return _super !== null && _super.apply(this, arguments) || this; } MDCSelectIcon.attachTo = function (root) { return new MDCSelectIcon(root); }; Object.defineProperty(MDCSelectIcon.prototype, "foundation", { get: function get() { return this.foundation_; }, enumerable: true, configurable: true }); MDCSelectIcon.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { getAttr: function getAttr(attr) { return _this.root_.getAttribute(attr); }, setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, removeAttr: function removeAttr(attr) { return _this.root_.removeAttribute(attr); }, setContent: function setContent(content) { _this.root_.textContent = content; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.listen(evtType, handler); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.unlisten(evtType, handler); }, notifyIconAction: function notifyIconAction() { return _this.emit(foundation_1.MDCSelectIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */); } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCSelectIconFoundation(adapter); }; return MDCSelectIcon; }(component_1.MDCComponent); exports.MDCSelectIcon = MDCSelectIcon; /***/ }), /***/ "./packages/mdc-select/icon/constants.ts": /*!***********************************************!*\ !*** ./packages/mdc-select/icon/constants.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { ICON_EVENT: 'MDCSelect:icon', ICON_ROLE: 'button' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-select/icon/foundation.ts": /*!************************************************!*\ !*** ./packages/mdc-select/icon/foundation.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/icon/constants.ts"); var INTERACTION_EVENTS = ['click', 'keydown']; var MDCSelectIconFoundation = /** @class */function (_super) { __extends(MDCSelectIconFoundation, _super); function MDCSelectIconFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCSelectIconFoundation.defaultAdapter, adapter)) || this; _this.savedTabIndex_ = null; _this.interactionHandler_ = function (evt) { return _this.handleInteraction(evt); }; return _this; } Object.defineProperty(MDCSelectIconFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSelectIconFoundation, "defaultAdapter", { /** * See {@link MDCSelectIconAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { getAttr: function getAttr() { return null; }, setAttr: function setAttr() { return undefined; }, removeAttr: function removeAttr() { return undefined; }, setContent: function setContent() { return undefined; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; }, notifyIconAction: function notifyIconAction() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCSelectIconFoundation.prototype.init = function () { var _this = this; this.savedTabIndex_ = this.adapter_.getAttr('tabindex'); INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_); }); }; MDCSelectIconFoundation.prototype.destroy = function () { var _this = this; INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_); }); }; MDCSelectIconFoundation.prototype.setDisabled = function (disabled) { if (!this.savedTabIndex_) { return; } if (disabled) { this.adapter_.setAttr('tabindex', '-1'); this.adapter_.removeAttr('role'); } else { this.adapter_.setAttr('tabindex', this.savedTabIndex_); this.adapter_.setAttr('role', constants_1.strings.ICON_ROLE); } }; MDCSelectIconFoundation.prototype.setAriaLabel = function (label) { this.adapter_.setAttr('aria-label', label); }; MDCSelectIconFoundation.prototype.setContent = function (content) { this.adapter_.setContent(content); }; MDCSelectIconFoundation.prototype.handleInteraction = function (evt) { var isEnterKey = evt.key === 'Enter' || evt.keyCode === 13; if (evt.type === 'click' || isEnterKey) { this.adapter_.notifyIconAction(); } }; return MDCSelectIconFoundation; }(foundation_1.MDCFoundation); exports.MDCSelectIconFoundation = MDCSelectIconFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSelectIconFoundation; /***/ }), /***/ "./packages/mdc-select/icon/index.ts": /*!*******************************************!*\ !*** ./packages/mdc-select/icon/index.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-select/icon/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-select/icon/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-select/icon/constants.ts"); exports.iconStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-select/index.ts": /*!**************************************!*\ !*** ./packages/mdc-select/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-select/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-select/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-select/foundation.ts")); __export(__webpack_require__(/*! ./helper-text/index */ "./packages/mdc-select/helper-text/index.ts")); __export(__webpack_require__(/*! ./icon/index */ "./packages/mdc-select/icon/index.ts")); /***/ }), /***/ "./packages/mdc-slider/component.ts": /*!******************************************!*\ !*** ./packages/mdc-slider/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-slider/constants.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-slider/foundation.ts"); var MDCSlider = /** @class */function (_super) { __extends(MDCSlider, _super); function MDCSlider() { return _super !== null && _super.apply(this, arguments) || this; } MDCSlider.attachTo = function (root) { return new MDCSlider(root); }; Object.defineProperty(MDCSlider.prototype, "value", { get: function get() { return this.foundation_.getValue(); }, set: function set(value) { this.foundation_.setValue(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSlider.prototype, "min", { get: function get() { return this.foundation_.getMin(); }, set: function set(min) { this.foundation_.setMin(min); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSlider.prototype, "max", { get: function get() { return this.foundation_.getMax(); }, set: function set(max) { this.foundation_.setMax(max); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSlider.prototype, "step", { get: function get() { return this.foundation_.getStep(); }, set: function set(step) { this.foundation_.setStep(step); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSlider.prototype, "disabled", { get: function get() { return this.foundation_.isDisabled(); }, set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); MDCSlider.prototype.initialize = function () { this.thumbContainer_ = this.root_.querySelector(constants_1.strings.THUMB_CONTAINER_SELECTOR); this.track_ = this.root_.querySelector(constants_1.strings.TRACK_SELECTOR); this.pinValueMarker_ = this.root_.querySelector(constants_1.strings.PIN_VALUE_MARKER_SELECTOR); this.trackMarkerContainer_ = this.root_.querySelector(constants_1.strings.TRACK_MARKER_CONTAINER_SELECTOR); }; MDCSlider.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, getAttribute: function getAttribute(name) { return _this.root_.getAttribute(name); }, setAttribute: function setAttribute(name, value) { return _this.root_.setAttribute(name, value); }, removeAttribute: function removeAttribute(name) { return _this.root_.removeAttribute(name); }, computeBoundingRect: function computeBoundingRect() { return _this.root_.getBoundingClientRect(); }, getTabIndex: function getTabIndex() { return _this.root_.tabIndex; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.listen(evtType, handler, events_1.applyPassive()); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.unlisten(evtType, handler, events_1.applyPassive()); }, registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(evtType, handler) { _this.thumbContainer_.addEventListener(evtType, handler, events_1.applyPassive()); }, deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(evtType, handler) { _this.thumbContainer_.removeEventListener(evtType, handler, events_1.applyPassive()); }, registerBodyInteractionHandler: function registerBodyInteractionHandler(evtType, handler) { return document.body.addEventListener(evtType, handler); }, deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(evtType, handler) { return document.body.removeEventListener(evtType, handler); }, registerResizeHandler: function registerResizeHandler(handler) { return window.addEventListener('resize', handler); }, deregisterResizeHandler: function deregisterResizeHandler(handler) { return window.removeEventListener('resize', handler); }, notifyInput: function notifyInput() { return _this.emit(constants_1.strings.INPUT_EVENT, _this); }, notifyChange: function notifyChange() { return _this.emit(constants_1.strings.CHANGE_EVENT, _this); }, setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) { _this.thumbContainer_.style.setProperty(propertyName, value); }, setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) { return _this.track_.style.setProperty(propertyName, value); }, setMarkerValue: function setMarkerValue(value) { return _this.pinValueMarker_.innerText = value.toLocaleString(); }, appendTrackMarkers: function appendTrackMarkers(numMarkers) { var frag = document.createDocumentFragment(); for (var i = 0; i < numMarkers; i++) { var marker = document.createElement('div'); marker.classList.add('mdc-slider__track-marker'); frag.appendChild(marker); } _this.trackMarkerContainer_.appendChild(frag); }, removeTrackMarkers: function removeTrackMarkers() { while (_this.trackMarkerContainer_.firstChild) { _this.trackMarkerContainer_.removeChild(_this.trackMarkerContainer_.firstChild); } }, setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty(propertyName, value) { // We remove and append new nodes, thus, the last track marker must be dynamically found. var lastTrackMarker = _this.root_.querySelector(constants_1.strings.LAST_TRACK_MARKER_SELECTOR); lastTrackMarker.style.setProperty(propertyName, value); }, isRTL: function isRTL() { return getComputedStyle(_this.root_).direction === 'rtl'; } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCSliderFoundation(adapter); }; MDCSlider.prototype.initialSyncWithDOM = function () { var origValueNow = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUENOW), this.value); var min = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMIN), this.min); var max = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMAX), this.max); // min and max need to be set in the right order to avoid throwing an error // when the new min is greater than the default max. if (min >= this.max) { this.max = max; this.min = min; } else { this.min = min; this.max = max; } this.step = this.parseFloat_(this.root_.getAttribute(constants_1.strings.STEP_DATA_ATTR), this.step); this.value = origValueNow; this.disabled = this.root_.hasAttribute(constants_1.strings.ARIA_DISABLED) && this.root_.getAttribute(constants_1.strings.ARIA_DISABLED) !== 'false'; this.foundation_.setupTrackMarker(); }; MDCSlider.prototype.layout = function () { this.foundation_.layout(); }; MDCSlider.prototype.stepUp = function (amount) { if (amount === void 0) { amount = this.step || 1; } this.value += amount; }; MDCSlider.prototype.stepDown = function (amount) { if (amount === void 0) { amount = this.step || 1; } this.value -= amount; }; MDCSlider.prototype.parseFloat_ = function (str, defaultValue) { var num = parseFloat(str); // tslint:disable-line:ban var isNumeric = typeof num === 'number' && isFinite(num); return isNumeric ? num : defaultValue; }; return MDCSlider; }(component_1.MDCComponent); exports.MDCSlider = MDCSlider; /***/ }), /***/ "./packages/mdc-slider/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-slider/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ACTIVE: 'mdc-slider--active', DISABLED: 'mdc-slider--disabled', DISCRETE: 'mdc-slider--discrete', FOCUS: 'mdc-slider--focus', HAS_TRACK_MARKER: 'mdc-slider--display-markers', IN_TRANSIT: 'mdc-slider--in-transit', IS_DISCRETE: 'mdc-slider--discrete' }; exports.cssClasses = cssClasses; var strings = { ARIA_DISABLED: 'aria-disabled', ARIA_VALUEMAX: 'aria-valuemax', ARIA_VALUEMIN: 'aria-valuemin', ARIA_VALUENOW: 'aria-valuenow', CHANGE_EVENT: 'MDCSlider:change', INPUT_EVENT: 'MDCSlider:input', LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child', PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker', STEP_DATA_ATTR: 'data-step', THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container', TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container', TRACK_SELECTOR: '.mdc-slider__track' }; exports.strings = strings; var numbers = { PAGE_FACTOR: 4 }; exports.numbers = numbers; /***/ }), /***/ "./packages/mdc-slider/foundation.ts": /*!*******************************************!*\ !*** ./packages/mdc-slider/foundation.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(/*! @material/animation/util */ "./packages/mdc-animation/util.ts"); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-slider/constants.ts"); var DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart']; var UP_EVENTS = ['mouseup', 'pointerup', 'touchend']; var MOVE_EVENT_MAP = { mousedown: 'mousemove', pointerdown: 'pointermove', touchstart: 'touchmove' }; var KEY_IDS = { ARROW_DOWN: 'ArrowDown', ARROW_LEFT: 'ArrowLeft', ARROW_RIGHT: 'ArrowRight', ARROW_UP: 'ArrowUp', END: 'End', HOME: 'Home', PAGE_DOWN: 'PageDown', PAGE_UP: 'PageUp' }; var MDCSliderFoundation = /** @class */function (_super) { __extends(MDCSliderFoundation, _super); function MDCSliderFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCSliderFoundation.defaultAdapter, adapter)) || this; /** * We set this to NaN since we want it to be a number, but we can't use '0' or '-1' * because those could be valid tabindices set by the client code. */ _this.savedTabIndex_ = NaN; _this.active_ = false; _this.inTransit_ = false; _this.isDiscrete_ = false; _this.hasTrackMarker_ = false; _this.handlingThumbTargetEvt_ = false; _this.min_ = 0; _this.max_ = 100; _this.step_ = 0; _this.value_ = 0; _this.disabled_ = false; _this.preventFocusState_ = false; _this.thumbContainerPointerHandler_ = function () { return _this.handlingThumbTargetEvt_ = true; }; _this.interactionStartHandler_ = function (evt) { return _this.handleDown_(evt); }; _this.keydownHandler_ = function (evt) { return _this.handleKeydown_(evt); }; _this.focusHandler_ = function () { return _this.handleFocus_(); }; _this.blurHandler_ = function () { return _this.handleBlur_(); }; _this.resizeHandler_ = function () { return _this.layout(); }; return _this; } Object.defineProperty(MDCSliderFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSliderFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSliderFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSliderFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { hasClass: function hasClass() { return false; }, addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, getAttribute: function getAttribute() { return null; }, setAttribute: function setAttribute() { return undefined; }, removeAttribute: function removeAttribute() { return undefined; }, computeBoundingRect: function computeBoundingRect() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, getTabIndex: function getTabIndex() { return 0; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; }, registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() { return undefined; }, deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() { return undefined; }, registerBodyInteractionHandler: function registerBodyInteractionHandler() { return undefined; }, deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() { return undefined; }, registerResizeHandler: function registerResizeHandler() { return undefined; }, deregisterResizeHandler: function deregisterResizeHandler() { return undefined; }, notifyInput: function notifyInput() { return undefined; }, notifyChange: function notifyChange() { return undefined; }, setThumbContainerStyleProperty: function setThumbContainerStyleProperty() { return undefined; }, setTrackStyleProperty: function setTrackStyleProperty() { return undefined; }, setMarkerValue: function setMarkerValue() { return undefined; }, appendTrackMarkers: function appendTrackMarkers() { return undefined; }, removeTrackMarkers: function removeTrackMarkers() { return undefined; }, setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() { return undefined; }, isRTL: function isRTL() { return false; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCSliderFoundation.prototype.init = function () { var _this = this; this.isDiscrete_ = this.adapter_.hasClass(constants_1.cssClasses.IS_DISCRETE); this.hasTrackMarker_ = this.adapter_.hasClass(constants_1.cssClasses.HAS_TRACK_MARKER); DOWN_EVENTS.forEach(function (evtName) { _this.adapter_.registerInteractionHandler(evtName, _this.interactionStartHandler_); _this.adapter_.registerThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_); }); this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_); this.adapter_.registerInteractionHandler('focus', this.focusHandler_); this.adapter_.registerInteractionHandler('blur', this.blurHandler_); this.adapter_.registerResizeHandler(this.resizeHandler_); this.layout(); // At last step, provide a reasonable default value to discrete slider if (this.isDiscrete_ && this.getStep() === 0) { this.step_ = 1; } }; MDCSliderFoundation.prototype.destroy = function () { var _this = this; DOWN_EVENTS.forEach(function (evtName) { _this.adapter_.deregisterInteractionHandler(evtName, _this.interactionStartHandler_); _this.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_); }); this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_); this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_); this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_); this.adapter_.deregisterResizeHandler(this.resizeHandler_); }; MDCSliderFoundation.prototype.setupTrackMarker = function () { if (this.isDiscrete_ && this.hasTrackMarker_ && this.getStep() !== 0) { var min = this.getMin(); var max = this.getMax(); var step = this.getStep(); var numMarkers = (max - min) / step; // In case distance between max & min is indivisible to step, // we place the secondary to last marker proportionally at where thumb // could reach and place the last marker at max value var indivisible = Math.ceil(numMarkers) !== numMarkers; if (indivisible) { numMarkers = Math.ceil(numMarkers); } this.adapter_.removeTrackMarkers(); this.adapter_.appendTrackMarkers(numMarkers); if (indivisible) { var lastStepRatio = (max - numMarkers * step) / step + 1; this.adapter_.setLastTrackMarkersStyleProperty('flex-grow', String(lastStepRatio)); } } }; MDCSliderFoundation.prototype.layout = function () { this.rect_ = this.adapter_.computeBoundingRect(); this.updateUIForCurrentValue_(); }; MDCSliderFoundation.prototype.getValue = function () { return this.value_; }; MDCSliderFoundation.prototype.setValue = function (value) { this.setValue_(value, false); }; MDCSliderFoundation.prototype.getMax = function () { return this.max_; }; MDCSliderFoundation.prototype.setMax = function (max) { if (max < this.min_) { throw new Error('Cannot set max to be less than the slider\'s minimum value'); } this.max_ = max; this.setValue_(this.value_, false, true); this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMAX, String(this.max_)); this.setupTrackMarker(); }; MDCSliderFoundation.prototype.getMin = function () { return this.min_; }; MDCSliderFoundation.prototype.setMin = function (min) { if (min > this.max_) { throw new Error('Cannot set min to be greater than the slider\'s maximum value'); } this.min_ = min; this.setValue_(this.value_, false, true); this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMIN, String(this.min_)); this.setupTrackMarker(); }; MDCSliderFoundation.prototype.getStep = function () { return this.step_; }; MDCSliderFoundation.prototype.setStep = function (step) { if (step < 0) { throw new Error('Step cannot be set to a negative number'); } if (this.isDiscrete_ && (typeof step !== 'number' || step < 1)) { step = 1; } this.step_ = step; this.setValue_(this.value_, false, true); this.setupTrackMarker(); }; MDCSliderFoundation.prototype.isDisabled = function () { return this.disabled_; }; MDCSliderFoundation.prototype.setDisabled = function (disabled) { this.disabled_ = disabled; this.toggleClass_(constants_1.cssClasses.DISABLED, this.disabled_); if (this.disabled_) { this.savedTabIndex_ = this.adapter_.getTabIndex(); this.adapter_.setAttribute(constants_1.strings.ARIA_DISABLED, 'true'); this.adapter_.removeAttribute('tabindex'); } else { this.adapter_.removeAttribute(constants_1.strings.ARIA_DISABLED); if (!isNaN(this.savedTabIndex_)) { this.adapter_.setAttribute('tabindex', String(this.savedTabIndex_)); } } }; /** * Called when the user starts interacting with the slider */ MDCSliderFoundation.prototype.handleDown_ = function (downEvent) { var _this = this; if (this.disabled_) { return; } this.preventFocusState_ = true; this.setInTransit_(!this.handlingThumbTargetEvt_); this.handlingThumbTargetEvt_ = false; this.setActive_(true); var moveHandler = function moveHandler(moveEvent) { _this.handleMove_(moveEvent); }; var moveEventType = MOVE_EVENT_MAP[downEvent.type]; // Note: upHandler is [de]registered on ALL potential pointer-related release event types, since some browsers // do not always fire these consistently in pairs. // (See https://github.com/material-components/material-components-web/issues/1192) var upHandler = function upHandler() { _this.handleUp_(); _this.adapter_.deregisterBodyInteractionHandler(moveEventType, moveHandler); UP_EVENTS.forEach(function (evtName) { return _this.adapter_.deregisterBodyInteractionHandler(evtName, upHandler); }); }; this.adapter_.registerBodyInteractionHandler(moveEventType, moveHandler); UP_EVENTS.forEach(function (evtName) { return _this.adapter_.registerBodyInteractionHandler(evtName, upHandler); }); this.setValueFromEvt_(downEvent); }; /** * Called when the user moves the slider */ MDCSliderFoundation.prototype.handleMove_ = function (evt) { evt.preventDefault(); this.setValueFromEvt_(evt); }; /** * Called when the user's interaction with the slider ends */ MDCSliderFoundation.prototype.handleUp_ = function () { this.setActive_(false); this.adapter_.notifyChange(); }; /** * Returns the pageX of the event */ MDCSliderFoundation.prototype.getPageX_ = function (evt) { if (evt.targetTouches && evt.targetTouches.length > 0) { return evt.targetTouches[0].pageX; } return evt.pageX; }; /** * Sets the slider value from an event */ MDCSliderFoundation.prototype.setValueFromEvt_ = function (evt) { var pageX = this.getPageX_(evt); var value = this.computeValueFromPageX_(pageX); this.setValue_(value, true); }; /** * Computes the new value from the pageX position */ MDCSliderFoundation.prototype.computeValueFromPageX_ = function (pageX) { var _a = this, max = _a.max_, min = _a.min_; var xPos = pageX - this.rect_.left; var pctComplete = xPos / this.rect_.width; if (this.adapter_.isRTL()) { pctComplete = 1 - pctComplete; } // Fit the percentage complete between the range [min,max] // by remapping from [0, 1] to [min, min+(max-min)]. return min + pctComplete * (max - min); }; /** * Handles keydown events */ MDCSliderFoundation.prototype.handleKeydown_ = function (evt) { var keyId = this.getKeyId_(evt); var value = this.getValueForKeyId_(keyId); if (isNaN(value)) { return; } // Prevent page from scrolling due to key presses that would normally scroll the page evt.preventDefault(); this.adapter_.addClass(constants_1.cssClasses.FOCUS); this.setValue_(value, true); this.adapter_.notifyChange(); }; /** * Returns the computed name of the event */ MDCSliderFoundation.prototype.getKeyId_ = function (kbdEvt) { if (kbdEvt.key === KEY_IDS.ARROW_LEFT || kbdEvt.keyCode === 37) { return KEY_IDS.ARROW_LEFT; } if (kbdEvt.key === KEY_IDS.ARROW_RIGHT || kbdEvt.keyCode === 39) { return KEY_IDS.ARROW_RIGHT; } if (kbdEvt.key === KEY_IDS.ARROW_UP || kbdEvt.keyCode === 38) { return KEY_IDS.ARROW_UP; } if (kbdEvt.key === KEY_IDS.ARROW_DOWN || kbdEvt.keyCode === 40) { return KEY_IDS.ARROW_DOWN; } if (kbdEvt.key === KEY_IDS.HOME || kbdEvt.keyCode === 36) { return KEY_IDS.HOME; } if (kbdEvt.key === KEY_IDS.END || kbdEvt.keyCode === 35) { return KEY_IDS.END; } if (kbdEvt.key === KEY_IDS.PAGE_UP || kbdEvt.keyCode === 33) { return KEY_IDS.PAGE_UP; } if (kbdEvt.key === KEY_IDS.PAGE_DOWN || kbdEvt.keyCode === 34) { return KEY_IDS.PAGE_DOWN; } return ''; }; /** * Computes the value given a keyboard key ID */ MDCSliderFoundation.prototype.getValueForKeyId_ = function (keyId) { var _a = this, max = _a.max_, min = _a.min_, step = _a.step_; var delta = step || (max - min) / 100; var valueNeedsToBeFlipped = this.adapter_.isRTL() && (keyId === KEY_IDS.ARROW_LEFT || keyId === KEY_IDS.ARROW_RIGHT); if (valueNeedsToBeFlipped) { delta = -delta; } switch (keyId) { case KEY_IDS.ARROW_LEFT: case KEY_IDS.ARROW_DOWN: return this.value_ - delta; case KEY_IDS.ARROW_RIGHT: case KEY_IDS.ARROW_UP: return this.value_ + delta; case KEY_IDS.HOME: return this.min_; case KEY_IDS.END: return this.max_; case KEY_IDS.PAGE_UP: return this.value_ + delta * constants_1.numbers.PAGE_FACTOR; case KEY_IDS.PAGE_DOWN: return this.value_ - delta * constants_1.numbers.PAGE_FACTOR; default: return NaN; } }; MDCSliderFoundation.prototype.handleFocus_ = function () { if (this.preventFocusState_) { return; } this.adapter_.addClass(constants_1.cssClasses.FOCUS); }; MDCSliderFoundation.prototype.handleBlur_ = function () { this.preventFocusState_ = false; this.adapter_.removeClass(constants_1.cssClasses.FOCUS); }; /** * Sets the value of the slider */ MDCSliderFoundation.prototype.setValue_ = function (value, shouldFireInput, force) { if (force === void 0) { force = false; } if (value === this.value_ && !force) { return; } var _a = this, min = _a.min_, max = _a.max_; var valueSetToBoundary = value === min || value === max; if (this.step_ && !valueSetToBoundary) { value = this.quantize_(value); } if (value < min) { value = min; } else if (value > max) { value = max; } this.value_ = value; this.adapter_.setAttribute(constants_1.strings.ARIA_VALUENOW, String(this.value_)); this.updateUIForCurrentValue_(); if (shouldFireInput) { this.adapter_.notifyInput(); if (this.isDiscrete_) { this.adapter_.setMarkerValue(value); } } }; /** * Calculates the quantized value */ MDCSliderFoundation.prototype.quantize_ = function (value) { var numSteps = Math.round(value / this.step_); return numSteps * this.step_; }; MDCSliderFoundation.prototype.updateUIForCurrentValue_ = function () { var _this = this; var _a = this, max = _a.max_, min = _a.min_, value = _a.value_; var pctComplete = (value - min) / (max - min); var translatePx = pctComplete * this.rect_.width; if (this.adapter_.isRTL()) { translatePx = this.rect_.width - translatePx; } var transformProp = util_1.getCorrectPropertyName(window, 'transform'); var transitionendEvtName = util_1.getCorrectEventName(window, 'transitionend'); if (this.inTransit_) { var onTransitionEnd_1 = function onTransitionEnd_1() { _this.setInTransit_(false); _this.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1); }; this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1); } requestAnimationFrame(function () { // NOTE(traviskaufman): It would be nice to use calc() here, // but IE cannot handle calcs in transforms correctly. // See: https://goo.gl/NC2itk // Also note that the -50% offset is used to center the slider thumb. _this.adapter_.setThumbContainerStyleProperty(transformProp, "translateX(" + translatePx + "px) translateX(-50%)"); _this.adapter_.setTrackStyleProperty(transformProp, "scaleX(" + pctComplete + ")"); }); }; /** * Toggles the active state of the slider */ MDCSliderFoundation.prototype.setActive_ = function (active) { this.active_ = active; this.toggleClass_(constants_1.cssClasses.ACTIVE, this.active_); }; /** * Toggles the inTransit state of the slider */ MDCSliderFoundation.prototype.setInTransit_ = function (inTransit) { this.inTransit_ = inTransit; this.toggleClass_(constants_1.cssClasses.IN_TRANSIT, this.inTransit_); }; /** * Conditionally adds or removes a class based on shouldBePresent */ MDCSliderFoundation.prototype.toggleClass_ = function (className, shouldBePresent) { if (shouldBePresent) { this.adapter_.addClass(className); } else { this.adapter_.removeClass(className); } }; return MDCSliderFoundation; }(foundation_1.MDCFoundation); exports.MDCSliderFoundation = MDCSliderFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSliderFoundation; /***/ }), /***/ "./packages/mdc-slider/index.ts": /*!**************************************!*\ !*** ./packages/mdc-slider/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-slider/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-slider/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-slider/foundation.ts")); /***/ }), /***/ "./packages/mdc-snackbar/component.ts": /*!********************************************!*\ !*** ./packages/mdc-snackbar/component.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-snackbar/constants.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-snackbar/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-snackbar/util.ts")); var SURFACE_SELECTOR = constants_1.strings.SURFACE_SELECTOR, LABEL_SELECTOR = constants_1.strings.LABEL_SELECTOR, ACTION_SELECTOR = constants_1.strings.ACTION_SELECTOR, DISMISS_SELECTOR = constants_1.strings.DISMISS_SELECTOR, OPENING_EVENT = constants_1.strings.OPENING_EVENT, OPENED_EVENT = constants_1.strings.OPENED_EVENT, CLOSING_EVENT = constants_1.strings.CLOSING_EVENT, CLOSED_EVENT = constants_1.strings.CLOSED_EVENT; var MDCSnackbar = /** @class */function (_super) { __extends(MDCSnackbar, _super); function MDCSnackbar() { return _super !== null && _super.apply(this, arguments) || this; } MDCSnackbar.attachTo = function (root) { return new MDCSnackbar(root); }; MDCSnackbar.prototype.initialize = function (announcerFactory) { if (announcerFactory === void 0) { announcerFactory = function announcerFactory() { return util.announce; }; } this.announce_ = announcerFactory(); }; MDCSnackbar.prototype.initialSyncWithDOM = function () { var _this = this; this.surfaceEl_ = this.root_.querySelector(SURFACE_SELECTOR); this.labelEl_ = this.root_.querySelector(LABEL_SELECTOR); this.actionEl_ = this.root_.querySelector(ACTION_SELECTOR); this.handleKeyDown_ = function (evt) { return _this.foundation_.handleKeyDown(evt); }; this.handleSurfaceClick_ = function (evt) { var target = evt.target; if (_this.isActionButton_(target)) { _this.foundation_.handleActionButtonClick(evt); } else if (_this.isActionIcon_(target)) { _this.foundation_.handleActionIconClick(evt); } }; this.registerKeyDownHandler_(this.handleKeyDown_); this.registerSurfaceClickHandler_(this.handleSurfaceClick_); }; MDCSnackbar.prototype.destroy = function () { _super.prototype.destroy.call(this); this.deregisterKeyDownHandler_(this.handleKeyDown_); this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_); }; MDCSnackbar.prototype.open = function () { this.foundation_.open(); }; /** * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom * client-specific values may also be used if desired. */ MDCSnackbar.prototype.close = function (reason) { if (reason === void 0) { reason = ''; } this.foundation_.close(reason); }; MDCSnackbar.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, announce: function announce() { return _this.announce_(_this.labelEl_); }, notifyClosed: function notifyClosed(reason) { return _this.emit(CLOSED_EVENT, reason ? { reason: reason } : {}); }, notifyClosing: function notifyClosing(reason) { return _this.emit(CLOSING_EVENT, reason ? { reason: reason } : {}); }, notifyOpened: function notifyOpened() { return _this.emit(OPENED_EVENT, {}); }, notifyOpening: function notifyOpening() { return _this.emit(OPENING_EVENT, {}); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); } }; return new foundation_1.MDCSnackbarFoundation(adapter); }; Object.defineProperty(MDCSnackbar.prototype, "timeoutMs", { get: function get() { return this.foundation_.getTimeoutMs(); }, set: function set(timeoutMs) { this.foundation_.setTimeoutMs(timeoutMs); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbar.prototype, "closeOnEscape", { get: function get() { return this.foundation_.getCloseOnEscape(); }, set: function set(closeOnEscape) { this.foundation_.setCloseOnEscape(closeOnEscape); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbar.prototype, "isOpen", { get: function get() { return this.foundation_.isOpen(); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbar.prototype, "labelText", { get: function get() { // This property only returns null if the node is a document, DOCTYPE, or notation. // On Element nodes, it always returns a string. return this.labelEl_.textContent; }, set: function set(labelText) { this.labelEl_.textContent = labelText; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbar.prototype, "actionButtonText", { get: function get() { return this.actionEl_.textContent; }, set: function set(actionButtonText) { this.actionEl_.textContent = actionButtonText; }, enumerable: true, configurable: true }); MDCSnackbar.prototype.registerKeyDownHandler_ = function (handler) { this.listen('keydown', handler); }; MDCSnackbar.prototype.deregisterKeyDownHandler_ = function (handler) { this.unlisten('keydown', handler); }; MDCSnackbar.prototype.registerSurfaceClickHandler_ = function (handler) { this.surfaceEl_.addEventListener('click', handler); }; MDCSnackbar.prototype.deregisterSurfaceClickHandler_ = function (handler) { this.surfaceEl_.removeEventListener('click', handler); }; MDCSnackbar.prototype.isActionButton_ = function (target) { return Boolean(ponyfill_1.closest(target, ACTION_SELECTOR)); }; MDCSnackbar.prototype.isActionIcon_ = function (target) { return Boolean(ponyfill_1.closest(target, DISMISS_SELECTOR)); }; return MDCSnackbar; }(component_1.MDCComponent); exports.MDCSnackbar = MDCSnackbar; /***/ }), /***/ "./packages/mdc-snackbar/constants.ts": /*!********************************************!*\ !*** ./packages/mdc-snackbar/constants.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { CLOSING: 'mdc-snackbar--closing', OPEN: 'mdc-snackbar--open', OPENING: 'mdc-snackbar--opening' }; exports.cssClasses = cssClasses; var strings = { ACTION_SELECTOR: '.mdc-snackbar__action', ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text', CLOSED_EVENT: 'MDCSnackbar:closed', CLOSING_EVENT: 'MDCSnackbar:closing', DISMISS_SELECTOR: '.mdc-snackbar__dismiss', LABEL_SELECTOR: '.mdc-snackbar__label', OPENED_EVENT: 'MDCSnackbar:opened', OPENING_EVENT: 'MDCSnackbar:opening', REASON_ACTION: 'action', REASON_DISMISS: 'dismiss', SURFACE_SELECTOR: '.mdc-snackbar__surface' }; exports.strings = strings; var numbers = { DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000, MAX_AUTO_DISMISS_TIMEOUT_MS: 10000, MIN_AUTO_DISMISS_TIMEOUT_MS: 4000, // These variables need to be kept in sync with the values in _variables.scss. SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75, SNACKBAR_ANIMATION_OPEN_TIME_MS: 150, /** * Number of milliseconds to wait between temporarily clearing the label text * in the DOM and subsequently restoring it. This is necessary to force IE 11 * to pick up the `aria-live` content change and announce it to the user. */ ARIA_LIVE_DELAY_MS: 1000 }; exports.numbers = numbers; /***/ }), /***/ "./packages/mdc-snackbar/foundation.ts": /*!*********************************************!*\ !*** ./packages/mdc-snackbar/foundation.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-snackbar/constants.ts"); var OPENING = constants_1.cssClasses.OPENING, OPEN = constants_1.cssClasses.OPEN, CLOSING = constants_1.cssClasses.CLOSING; var REASON_ACTION = constants_1.strings.REASON_ACTION, REASON_DISMISS = constants_1.strings.REASON_DISMISS; var MDCSnackbarFoundation = /** @class */function (_super) { __extends(MDCSnackbarFoundation, _super); function MDCSnackbarFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCSnackbarFoundation.defaultAdapter, adapter)) || this; _this.isOpen_ = false; _this.animationFrame_ = 0; _this.animationTimer_ = 0; _this.autoDismissTimer_ = 0; _this.autoDismissTimeoutMs_ = constants_1.numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS; _this.closeOnEscape_ = true; return _this; } Object.defineProperty(MDCSnackbarFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbarFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbarFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSnackbarFoundation, "defaultAdapter", { get: function get() { return { addClass: function addClass() { return undefined; }, announce: function announce() { return undefined; }, notifyClosed: function notifyClosed() { return undefined; }, notifyClosing: function notifyClosing() { return undefined; }, notifyOpened: function notifyOpened() { return undefined; }, notifyOpening: function notifyOpening() { return undefined; }, removeClass: function removeClass() { return undefined; } }; }, enumerable: true, configurable: true }); MDCSnackbarFoundation.prototype.destroy = function () { this.clearAutoDismissTimer_(); cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = 0; clearTimeout(this.animationTimer_); this.animationTimer_ = 0; this.adapter_.removeClass(OPENING); this.adapter_.removeClass(OPEN); this.adapter_.removeClass(CLOSING); }; MDCSnackbarFoundation.prototype.open = function () { var _this = this; this.clearAutoDismissTimer_(); this.isOpen_ = true; this.adapter_.notifyOpening(); this.adapter_.removeClass(CLOSING); this.adapter_.addClass(OPENING); this.adapter_.announce(); // Wait a frame once display is no longer "none", to establish basis for animation this.runNextAnimationFrame_(function () { _this.adapter_.addClass(OPEN); _this.animationTimer_ = setTimeout(function () { _this.handleAnimationTimerEnd_(); _this.adapter_.notifyOpened(); _this.autoDismissTimer_ = setTimeout(function () { _this.close(REASON_DISMISS); }, _this.getTimeoutMs()); }, constants_1.numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS); }); }; /** * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom * client-specific values may also be used if desired. */ MDCSnackbarFoundation.prototype.close = function (reason) { var _this = this; if (reason === void 0) { reason = ''; } if (!this.isOpen_) { // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed return; } cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = 0; this.clearAutoDismissTimer_(); this.isOpen_ = false; this.adapter_.notifyClosing(reason); this.adapter_.addClass(constants_1.cssClasses.CLOSING); this.adapter_.removeClass(constants_1.cssClasses.OPEN); this.adapter_.removeClass(constants_1.cssClasses.OPENING); clearTimeout(this.animationTimer_); this.animationTimer_ = setTimeout(function () { _this.handleAnimationTimerEnd_(); _this.adapter_.notifyClosed(reason); }, constants_1.numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS); }; MDCSnackbarFoundation.prototype.isOpen = function () { return this.isOpen_; }; MDCSnackbarFoundation.prototype.getTimeoutMs = function () { return this.autoDismissTimeoutMs_; }; MDCSnackbarFoundation.prototype.setTimeoutMs = function (timeoutMs) { // Use shorter variable names to make the code more readable var minValue = constants_1.numbers.MIN_AUTO_DISMISS_TIMEOUT_MS; var maxValue = constants_1.numbers.MAX_AUTO_DISMISS_TIMEOUT_MS; if (timeoutMs <= maxValue && timeoutMs >= minValue) { this.autoDismissTimeoutMs_ = timeoutMs; } else { throw new Error("timeoutMs must be an integer in the range " + minValue + "\u2013" + maxValue + ", but got '" + timeoutMs + "'"); } }; MDCSnackbarFoundation.prototype.getCloseOnEscape = function () { return this.closeOnEscape_; }; MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) { this.closeOnEscape_ = closeOnEscape; }; MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) { var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27; if (isEscapeKey && this.getCloseOnEscape()) { this.close(REASON_DISMISS); } }; MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) { this.close(REASON_ACTION); }; MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) { this.close(REASON_DISMISS); }; MDCSnackbarFoundation.prototype.clearAutoDismissTimer_ = function () { clearTimeout(this.autoDismissTimer_); this.autoDismissTimer_ = 0; }; MDCSnackbarFoundation.prototype.handleAnimationTimerEnd_ = function () { this.animationTimer_ = 0; this.adapter_.removeClass(constants_1.cssClasses.OPENING); this.adapter_.removeClass(constants_1.cssClasses.CLOSING); }; /** * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior. */ MDCSnackbarFoundation.prototype.runNextAnimationFrame_ = function (callback) { var _this = this; cancelAnimationFrame(this.animationFrame_); this.animationFrame_ = requestAnimationFrame(function () { _this.animationFrame_ = 0; clearTimeout(_this.animationTimer_); _this.animationTimer_ = setTimeout(callback, 0); }); }; return MDCSnackbarFoundation; }(foundation_1.MDCFoundation); exports.MDCSnackbarFoundation = MDCSnackbarFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSnackbarFoundation; /***/ }), /***/ "./packages/mdc-snackbar/index.ts": /*!****************************************!*\ !*** ./packages/mdc-snackbar/index.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-snackbar/util.ts")); exports.util = util; __export(__webpack_require__(/*! ./component */ "./packages/mdc-snackbar/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-snackbar/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-snackbar/foundation.ts")); /***/ }), /***/ "./packages/mdc-snackbar/util.ts": /*!***************************************!*\ !*** ./packages/mdc-snackbar/util.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-snackbar/constants.ts"); var ARIA_LIVE_DELAY_MS = constants_1.numbers.ARIA_LIVE_DELAY_MS; var ARIA_LIVE_LABEL_TEXT_ATTR = constants_1.strings.ARIA_LIVE_LABEL_TEXT_ATTR; function announce(ariaEl, labelEl) { if (labelEl === void 0) { labelEl = ariaEl; } var priority = ariaEl.getAttribute('aria-live'); // Trim text to ignore ` ` (see below). // textContent is only null if the node is a document, DOCTYPE, or notation. var labelText = labelEl.textContent.trim(); if (!labelText || !priority) { return; } // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice. ariaEl.setAttribute('aria-live', 'off'); // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers. // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first. // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event, // so screen readers won't announce the second message unless we first clear `textContent`. // // We have to clear the label text two different ways to make it work in all browsers and screen readers: // // 1. `textContent = ''` is required for IE11 + JAWS // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA // // All other browser/screen reader combinations support both methods. // // The wrapper `` visually hides the space character so that it doesn't cause jank when added/removed. // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change. // // This technique has been tested in: // // * JAWS 2019: // - Chrome 70 // - Firefox 60 (ESR) // - IE 11 // * NVDA 2018: // - Chrome 70 // - Firefox 60 (ESR) // - IE 11 // * ChromeVox 53 labelEl.textContent = ''; labelEl.innerHTML = ' '; // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element. // CSS generated content is normally announced by screen readers // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/); // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers. labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText); setTimeout(function () { // Allow screen readers to announce changes to the DOM again. ariaEl.setAttribute('aria-live', priority); // Remove the message from the ::before pseudo-element. labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR); // Restore the original label text, which will be announced by screen readers. labelEl.textContent = labelText; }, ARIA_LIVE_DELAY_MS); } exports.announce = announce; /***/ }), /***/ "./packages/mdc-switch/component.ts": /*!******************************************!*\ !*** ./packages/mdc-switch/component.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = this && this.__spread || function () { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); }return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-switch/foundation.ts"); var MDCSwitch = /** @class */function (_super) { __extends(MDCSwitch, _super); function MDCSwitch() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.ripple_ = _this.createRipple_(); return _this; } MDCSwitch.attachTo = function (root) { return new MDCSwitch(root); }; MDCSwitch.prototype.destroy = function () { _super.prototype.destroy.call(this); this.ripple_.destroy(); this.nativeControl_.removeEventListener('change', this.changeHandler_); }; MDCSwitch.prototype.initialSyncWithDOM = function () { var _this = this; this.changeHandler_ = function () { var _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (_a = _this.foundation_).handleChange.apply(_a, __spread(args)); }; this.nativeControl_.addEventListener('change', this.changeHandler_); // Sometimes the checked state of the input element is saved in the history. // The switch styling should match the checked state of the input element. // Do an initial sync between the native control and the foundation. this.checked = this.checked; }; MDCSwitch.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setNativeControlChecked: function setNativeControlChecked(checked) { return _this.nativeControl_.checked = checked; }, setNativeControlDisabled: function setNativeControlDisabled(disabled) { return _this.nativeControl_.disabled = disabled; } }; return new foundation_2.MDCSwitchFoundation(adapter); }; Object.defineProperty(MDCSwitch.prototype, "ripple", { get: function get() { return this.ripple_; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSwitch.prototype, "checked", { get: function get() { return this.nativeControl_.checked; }, set: function set(checked) { this.foundation_.setChecked(checked); }, enumerable: true, configurable: true }); Object.defineProperty(MDCSwitch.prototype, "disabled", { get: function get() { return this.nativeControl_.disabled; }, set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); MDCSwitch.prototype.createRipple_ = function () { var _this = this; var RIPPLE_SURFACE_SELECTOR = foundation_2.MDCSwitchFoundation.strings.RIPPLE_SURFACE_SELECTOR; var rippleSurface = this.root_.querySelector(RIPPLE_SURFACE_SELECTOR); // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), { addClass: function addClass(className) { return rippleSurface.classList.add(className); }, computeBoundingRect: function computeBoundingRect() { return rippleSurface.getBoundingClientRect(); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { _this.nativeControl_.removeEventListener(evtType, handler, events_1.applyPassive()); }, isSurfaceActive: function isSurfaceActive() { return ponyfill_1.matches(_this.nativeControl_, ':active'); }, isUnbounded: function isUnbounded() { return true; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { _this.nativeControl_.addEventListener(evtType, handler, events_1.applyPassive()); }, removeClass: function removeClass(className) { return rippleSurface.classList.remove(className); }, updateCssVariable: function updateCssVariable(varName, value) { rippleSurface.style.setProperty(varName, value); } }); return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter)); }; Object.defineProperty(MDCSwitch.prototype, "nativeControl_", { get: function get() { var NATIVE_CONTROL_SELECTOR = foundation_2.MDCSwitchFoundation.strings.NATIVE_CONTROL_SELECTOR; return this.root_.querySelector(NATIVE_CONTROL_SELECTOR); }, enumerable: true, configurable: true }); return MDCSwitch; }(component_1.MDCComponent); exports.MDCSwitch = MDCSwitch; /***/ }), /***/ "./packages/mdc-switch/constants.ts": /*!******************************************!*\ !*** ./packages/mdc-switch/constants.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); /** CSS classes used by the switch. */ var cssClasses = { /** Class used for a switch that is in the "checked" (on) position. */ CHECKED: 'mdc-switch--checked', /** Class used for a switch that is disabled. */ DISABLED: 'mdc-switch--disabled' }; exports.cssClasses = cssClasses; /** String constants used by the switch. */ var strings = { /** A CSS selector used to locate the native HTML control for the switch. */ NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control', /** A CSS selector used to locate the ripple surface element for the switch. */ RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-switch/foundation.ts": /*!*******************************************!*\ !*** ./packages/mdc-switch/foundation.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-switch/constants.ts"); var MDCSwitchFoundation = /** @class */function (_super) { __extends(MDCSwitchFoundation, _super); function MDCSwitchFoundation(adapter) { return _super.call(this, __assign({}, MDCSwitchFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCSwitchFoundation, "strings", { /** The string constants used by the switch. */ get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSwitchFoundation, "cssClasses", { /** The CSS classes used by the switch. */ get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCSwitchFoundation, "defaultAdapter", { /** The default Adapter for the switch. */ get: function get() { return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, setNativeControlChecked: function setNativeControlChecked() { return undefined; }, setNativeControlDisabled: function setNativeControlDisabled() { return undefined; } }; }, enumerable: true, configurable: true }); /** Sets the checked state of the switch. */ MDCSwitchFoundation.prototype.setChecked = function (checked) { this.adapter_.setNativeControlChecked(checked); this.updateCheckedStyling_(checked); }; /** Sets the disabled state of the switch. */ MDCSwitchFoundation.prototype.setDisabled = function (disabled) { this.adapter_.setNativeControlDisabled(disabled); if (disabled) { this.adapter_.addClass(constants_1.cssClasses.DISABLED); } else { this.adapter_.removeClass(constants_1.cssClasses.DISABLED); } }; /** Handles the change event for the switch native control. */ MDCSwitchFoundation.prototype.handleChange = function (evt) { var nativeControl = evt.target; this.updateCheckedStyling_(nativeControl.checked); }; /** Updates the styling of the switch based on its checked state. */ MDCSwitchFoundation.prototype.updateCheckedStyling_ = function (checked) { if (checked) { this.adapter_.addClass(constants_1.cssClasses.CHECKED); } else { this.adapter_.removeClass(constants_1.cssClasses.CHECKED); } }; return MDCSwitchFoundation; }(foundation_1.MDCFoundation); exports.MDCSwitchFoundation = MDCSwitchFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSwitchFoundation; /***/ }), /***/ "./packages/mdc-switch/index.ts": /*!**************************************!*\ !*** ./packages/mdc-switch/index.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-switch/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-switch/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-switch/foundation.ts")); /***/ }), /***/ "./packages/mdc-tab-bar/component.ts": /*!*******************************************!*\ !*** ./packages/mdc-tab-bar/component.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/tab-scroller/component */ "./packages/mdc-tab-scroller/component.ts"); var component_3 = __webpack_require__(/*! @material/tab/component */ "./packages/mdc-tab/component.ts"); var foundation_1 = __webpack_require__(/*! @material/tab/foundation */ "./packages/mdc-tab/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab-bar/foundation.ts"); var strings = foundation_2.MDCTabBarFoundation.strings; var tabIdCounter = 0; var MDCTabBar = /** @class */function (_super) { __extends(MDCTabBar, _super); function MDCTabBar() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabBar.attachTo = function (root) { return new MDCTabBar(root); }; Object.defineProperty(MDCTabBar.prototype, "focusOnActivate", { set: function set(focusOnActivate) { this.tabList_.forEach(function (tab) { return tab.focusOnActivate = focusOnActivate; }); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabBar.prototype, "useAutomaticActivation", { set: function set(useAutomaticActivation) { this.foundation_.setUseAutomaticActivation(useAutomaticActivation); }, enumerable: true, configurable: true }); MDCTabBar.prototype.initialize = function (tabFactory, tabScrollerFactory) { if (tabFactory === void 0) { tabFactory = function tabFactory(el) { return new component_3.MDCTab(el); }; } if (tabScrollerFactory === void 0) { tabScrollerFactory = function tabScrollerFactory(el) { return new component_2.MDCTabScroller(el); }; } this.tabList_ = this.instantiateTabs_(tabFactory); this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory); }; MDCTabBar.prototype.initialSyncWithDOM = function () { var _this = this; this.handleTabInteraction_ = function (evt) { return _this.foundation_.handleTabInteraction(evt); }; this.handleKeyDown_ = function (evt) { return _this.foundation_.handleKeyDown(evt); }; this.listen(foundation_1.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_); this.listen('keydown', this.handleKeyDown_); for (var i = 0; i < this.tabList_.length; i++) { if (this.tabList_[i].active) { this.scrollIntoView(i); break; } } }; MDCTabBar.prototype.destroy = function () { _super.prototype.destroy.call(this); this.unlisten(foundation_1.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_); this.unlisten('keydown', this.handleKeyDown_); this.tabList_.forEach(function (tab) { return tab.destroy(); }); if (this.tabScroller_) { this.tabScroller_.destroy(); } }; MDCTabBar.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { scrollTo: function scrollTo(scrollX) { return _this.tabScroller_.scrollTo(scrollX); }, incrementScroll: function incrementScroll(scrollXIncrement) { return _this.tabScroller_.incrementScroll(scrollXIncrement); }, getScrollPosition: function getScrollPosition() { return _this.tabScroller_.getScrollPosition(); }, getScrollContentWidth: function getScrollContentWidth() { return _this.tabScroller_.getScrollContentWidth(); }, getOffsetWidth: function getOffsetWidth() { return _this.root_.offsetWidth; }, isRTL: function isRTL() { return window.getComputedStyle(_this.root_).getPropertyValue('direction') === 'rtl'; }, setActiveTab: function setActiveTab(index) { return _this.foundation_.activateTab(index); }, activateTabAtIndex: function activateTabAtIndex(index, clientRect) { return _this.tabList_[index].activate(clientRect); }, deactivateTabAtIndex: function deactivateTabAtIndex(index) { return _this.tabList_[index].deactivate(); }, focusTabAtIndex: function focusTabAtIndex(index) { return _this.tabList_[index].focus(); }, getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) { return _this.tabList_[index].computeIndicatorClientRect(); }, getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) { return _this.tabList_[index].computeDimensions(); }, getPreviousActiveTabIndex: function getPreviousActiveTabIndex() { for (var i = 0; i < _this.tabList_.length; i++) { if (_this.tabList_[i].active) { return i; } } return -1; }, getFocusedTabIndex: function getFocusedTabIndex() { var tabElements = _this.getTabElements_(); var activeElement = document.activeElement; return tabElements.indexOf(activeElement); }, getIndexOfTabById: function getIndexOfTabById(id) { for (var i = 0; i < _this.tabList_.length; i++) { if (_this.tabList_[i].id === id) { return i; } } return -1; }, getTabListLength: function getTabListLength() { return _this.tabList_.length; }, notifyTabActivated: function notifyTabActivated(index) { return _this.emit(strings.TAB_ACTIVATED_EVENT, { index: index }, true); } }; // tslint:enable:object-literal-sort-keys return new foundation_2.MDCTabBarFoundation(adapter); }; /** * Activates the tab at the given index * @param index The index of the tab */ MDCTabBar.prototype.activateTab = function (index) { this.foundation_.activateTab(index); }; /** * Scrolls the tab at the given index into view * @param index THe index of the tab */ MDCTabBar.prototype.scrollIntoView = function (index) { this.foundation_.scrollIntoView(index); }; /** * Returns all the tab elements in a nice clean array */ MDCTabBar.prototype.getTabElements_ = function () { return [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR)); }; /** * Instantiates tab components on all child tab elements */ MDCTabBar.prototype.instantiateTabs_ = function (tabFactory) { return this.getTabElements_().map(function (el) { el.id = el.id || "mdc-tab-" + ++tabIdCounter; return tabFactory(el); }); }; /** * Instantiates tab scroller component on the child tab scroller element */ MDCTabBar.prototype.instantiateTabScroller_ = function (tabScrollerFactory) { var tabScrollerElement = this.root_.querySelector(strings.TAB_SCROLLER_SELECTOR); if (tabScrollerElement) { return tabScrollerFactory(tabScrollerElement); } return null; }; return MDCTabBar; }(component_1.MDCComponent); exports.MDCTabBar = MDCTabBar; /***/ }), /***/ "./packages/mdc-tab-bar/constants.ts": /*!*******************************************!*\ !*** ./packages/mdc-tab-bar/constants.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { ARROW_LEFT_KEY: 'ArrowLeft', ARROW_RIGHT_KEY: 'ArrowRight', END_KEY: 'End', ENTER_KEY: 'Enter', HOME_KEY: 'Home', SPACE_KEY: 'Space', TAB_ACTIVATED_EVENT: 'MDCTabBar:activated', TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller', TAB_SELECTOR: '.mdc-tab' }; exports.strings = strings; var numbers = { ARROW_LEFT_KEYCODE: 37, ARROW_RIGHT_KEYCODE: 39, END_KEYCODE: 35, ENTER_KEYCODE: 13, EXTRA_SCROLL_AMOUNT: 20, HOME_KEYCODE: 36, SPACE_KEYCODE: 32 }; exports.numbers = numbers; /***/ }), /***/ "./packages/mdc-tab-bar/foundation.ts": /*!********************************************!*\ !*** ./packages/mdc-tab-bar/foundation.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-tab-bar/constants.ts"); var ACCEPTABLE_KEYS = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this by hand ACCEPTABLE_KEYS.add(constants_1.strings.ARROW_LEFT_KEY); ACCEPTABLE_KEYS.add(constants_1.strings.ARROW_RIGHT_KEY); ACCEPTABLE_KEYS.add(constants_1.strings.END_KEY); ACCEPTABLE_KEYS.add(constants_1.strings.HOME_KEY); ACCEPTABLE_KEYS.add(constants_1.strings.ENTER_KEY); ACCEPTABLE_KEYS.add(constants_1.strings.SPACE_KEY); var KEYCODE_MAP = new Map(); // IE11 has no support for new Map with iterable so we need to initialize this by hand KEYCODE_MAP.set(constants_1.numbers.ARROW_LEFT_KEYCODE, constants_1.strings.ARROW_LEFT_KEY); KEYCODE_MAP.set(constants_1.numbers.ARROW_RIGHT_KEYCODE, constants_1.strings.ARROW_RIGHT_KEY); KEYCODE_MAP.set(constants_1.numbers.END_KEYCODE, constants_1.strings.END_KEY); KEYCODE_MAP.set(constants_1.numbers.HOME_KEYCODE, constants_1.strings.HOME_KEY); KEYCODE_MAP.set(constants_1.numbers.ENTER_KEYCODE, constants_1.strings.ENTER_KEY); KEYCODE_MAP.set(constants_1.numbers.SPACE_KEYCODE, constants_1.strings.SPACE_KEY); var MDCTabBarFoundation = /** @class */function (_super) { __extends(MDCTabBarFoundation, _super); function MDCTabBarFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCTabBarFoundation.defaultAdapter, adapter)) || this; _this.useAutomaticActivation_ = false; return _this; } Object.defineProperty(MDCTabBarFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabBarFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabBarFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { scrollTo: function scrollTo() { return undefined; }, incrementScroll: function incrementScroll() { return undefined; }, getScrollPosition: function getScrollPosition() { return 0; }, getScrollContentWidth: function getScrollContentWidth() { return 0; }, getOffsetWidth: function getOffsetWidth() { return 0; }, isRTL: function isRTL() { return false; }, setActiveTab: function setActiveTab() { return undefined; }, activateTabAtIndex: function activateTabAtIndex() { return undefined; }, deactivateTabAtIndex: function deactivateTabAtIndex() { return undefined; }, focusTabAtIndex: function focusTabAtIndex() { return undefined; }, getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, getTabDimensionsAtIndex: function getTabDimensionsAtIndex() { return { rootLeft: 0, rootRight: 0, contentLeft: 0, contentRight: 0 }; }, getPreviousActiveTabIndex: function getPreviousActiveTabIndex() { return -1; }, getFocusedTabIndex: function getFocusedTabIndex() { return -1; }, getIndexOfTabById: function getIndexOfTabById() { return -1; }, getTabListLength: function getTabListLength() { return 0; }, notifyTabActivated: function notifyTabActivated() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); /** * Switches between automatic and manual activation modes. * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples. */ MDCTabBarFoundation.prototype.setUseAutomaticActivation = function (useAutomaticActivation) { this.useAutomaticActivation_ = useAutomaticActivation; }; MDCTabBarFoundation.prototype.activateTab = function (index) { var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex(); if (!this.indexIsInRange_(index) || index === previousActiveIndex) { return; } var previousClientRect; if (previousActiveIndex !== -1) { this.adapter_.deactivateTabAtIndex(previousActiveIndex); previousClientRect = this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex); } this.adapter_.activateTabAtIndex(index, previousClientRect); this.scrollIntoView(index); this.adapter_.notifyTabActivated(index); }; MDCTabBarFoundation.prototype.handleKeyDown = function (evt) { // Get the key from the event var key = this.getKeyFromEvent_(evt); // Early exit if the event key isn't one of the keyboard navigation keys if (key === undefined) { return; } // Prevent default behavior for movement keys, but not for activation keys, since :active is used to apply ripple if (!this.isActivationKey_(key)) { evt.preventDefault(); } if (this.useAutomaticActivation_) { if (this.isActivationKey_(key)) { return; } var index = this.determineTargetFromKey_(this.adapter_.getPreviousActiveTabIndex(), key); this.adapter_.setActiveTab(index); this.scrollIntoView(index); } else { var focusedTabIndex = this.adapter_.getFocusedTabIndex(); if (this.isActivationKey_(key)) { this.adapter_.setActiveTab(focusedTabIndex); } else { var index = this.determineTargetFromKey_(focusedTabIndex, key); this.adapter_.focusTabAtIndex(index); this.scrollIntoView(index); } } }; /** * Handles the MDCTab:interacted event */ MDCTabBarFoundation.prototype.handleTabInteraction = function (evt) { this.adapter_.setActiveTab(this.adapter_.getIndexOfTabById(evt.detail.tabId)); }; /** * Scrolls the tab at the given index into view * @param index The tab index to make visible */ MDCTabBarFoundation.prototype.scrollIntoView = function (index) { // Early exit if the index is out of range if (!this.indexIsInRange_(index)) { return; } // Always scroll to 0 if scrolling to the 0th index if (index === 0) { return this.adapter_.scrollTo(0); } // Always scroll to the max value if scrolling to the Nth index // MDCTabScroller.scrollTo() will never scroll past the max possible value if (index === this.adapter_.getTabListLength() - 1) { return this.adapter_.scrollTo(this.adapter_.getScrollContentWidth()); } if (this.isRTL_()) { return this.scrollIntoViewRTL_(index); } this.scrollIntoView_(index); }; /** * Private method for determining the index of the destination tab based on what key was pressed * @param origin The original index from which to determine the destination * @param key The name of the key */ MDCTabBarFoundation.prototype.determineTargetFromKey_ = function (origin, key) { var isRTL = this.isRTL_(); var maxIndex = this.adapter_.getTabListLength() - 1; var shouldGoToEnd = key === constants_1.strings.END_KEY; var shouldDecrement = key === constants_1.strings.ARROW_LEFT_KEY && !isRTL || key === constants_1.strings.ARROW_RIGHT_KEY && isRTL; var shouldIncrement = key === constants_1.strings.ARROW_RIGHT_KEY && !isRTL || key === constants_1.strings.ARROW_LEFT_KEY && isRTL; var index = origin; if (shouldGoToEnd) { index = maxIndex; } else if (shouldDecrement) { index -= 1; } else if (shouldIncrement) { index += 1; } else { index = 0; } if (index < 0) { index = maxIndex; } else if (index > maxIndex) { index = 0; } return index; }; /** * Calculates the scroll increment that will make the tab at the given index visible * @param index The index of the tab * @param nextIndex The index of the next tab * @param scrollPosition The current scroll position * @param barWidth The width of the Tab Bar */ MDCTabBarFoundation.prototype.calculateScrollIncrement_ = function (index, nextIndex, scrollPosition, barWidth) { var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex); var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth; var relativeContentRight = nextTabDimensions.contentRight - scrollPosition; var leftIncrement = relativeContentRight - constants_1.numbers.EXTRA_SCROLL_AMOUNT; var rightIncrement = relativeContentLeft + constants_1.numbers.EXTRA_SCROLL_AMOUNT; if (nextIndex < index) { return Math.min(leftIncrement, 0); } return Math.max(rightIncrement, 0); }; /** * Calculates the scroll increment that will make the tab at the given index visible in RTL * @param index The index of the tab * @param nextIndex The index of the next tab * @param scrollPosition The current scroll position * @param barWidth The width of the Tab Bar * @param scrollContentWidth The width of the scroll content */ MDCTabBarFoundation.prototype.calculateScrollIncrementRTL_ = function (index, nextIndex, scrollPosition, barWidth, scrollContentWidth) { var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex); var relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition; var relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth; var leftIncrement = relativeContentRight + constants_1.numbers.EXTRA_SCROLL_AMOUNT; var rightIncrement = relativeContentLeft - constants_1.numbers.EXTRA_SCROLL_AMOUNT; if (nextIndex > index) { return Math.max(leftIncrement, 0); } return Math.min(rightIncrement, 0); }; /** * Determines the index of the adjacent tab closest to either edge of the Tab Bar * @param index The index of the tab * @param tabDimensions The dimensions of the tab * @param scrollPosition The current scroll position * @param barWidth The width of the tab bar */ MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdge_ = function (index, tabDimensions, scrollPosition, barWidth) { /** * Tabs are laid out in the Tab Scroller like this: * * Scroll Position * +---+ * | | Bar Width * | +-----------------------------------+ * | | | * | V V * | +-----------------------------------+ * V | Tab Scroller | * +------------+--------------+-------------------+ * | Tab | Tab | Tab | * +------------+--------------+-------------------+ * | | * +-----------------------------------+ * * To determine the next adjacent index, we look at the Tab root left and * Tab root right, both relative to the scroll position. If the Tab root * left is less than 0, then we know it's out of view to the left. If the * Tab root right minus the bar width is greater than 0, we know the Tab is * out of view to the right. From there, we either increment or decrement * the index. */ var relativeRootLeft = tabDimensions.rootLeft - scrollPosition; var relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth; var relativeRootDelta = relativeRootLeft + relativeRootRight; var leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0; var rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0; if (leftEdgeIsCloser) { return index - 1; } if (rightEdgeIsCloser) { return index + 1; } return -1; }; /** * Determines the index of the adjacent tab closest to either edge of the Tab Bar in RTL * @param index The index of the tab * @param tabDimensions The dimensions of the tab * @param scrollPosition The current scroll position * @param barWidth The width of the tab bar * @param scrollContentWidth The width of the scroller content */ MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdgeRTL_ = function (index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) { var rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition; var rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition; var rootDelta = rootLeft + rootRight; var leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0; var rightEdgeIsCloser = rootRight < 0 || rootDelta < 0; if (leftEdgeIsCloser) { return index + 1; } if (rightEdgeIsCloser) { return index - 1; } return -1; }; /** * Returns the key associated with a keydown event * @param evt The keydown event */ MDCTabBarFoundation.prototype.getKeyFromEvent_ = function (evt) { if (ACCEPTABLE_KEYS.has(evt.key)) { return evt.key; } return KEYCODE_MAP.get(evt.keyCode); }; MDCTabBarFoundation.prototype.isActivationKey_ = function (key) { return key === constants_1.strings.SPACE_KEY || key === constants_1.strings.ENTER_KEY; }; /** * Returns whether a given index is inclusively between the ends * @param index The index to test */ MDCTabBarFoundation.prototype.indexIsInRange_ = function (index) { return index >= 0 && index < this.adapter_.getTabListLength(); }; /** * Returns the view's RTL property */ MDCTabBarFoundation.prototype.isRTL_ = function () { return this.adapter_.isRTL(); }; /** * Scrolls the tab at the given index into view for left-to-right user agents. * @param index The index of the tab to scroll into view */ MDCTabBarFoundation.prototype.scrollIntoView_ = function (index) { var scrollPosition = this.adapter_.getScrollPosition(); var barWidth = this.adapter_.getOffsetWidth(); var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index); var nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth); if (!this.indexIsInRange_(nextIndex)) { return; } var scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth); this.adapter_.incrementScroll(scrollIncrement); }; /** * Scrolls the tab at the given index into view in RTL * @param index The tab index to make visible */ MDCTabBarFoundation.prototype.scrollIntoViewRTL_ = function (index) { var scrollPosition = this.adapter_.getScrollPosition(); var barWidth = this.adapter_.getOffsetWidth(); var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index); var scrollWidth = this.adapter_.getScrollContentWidth(); var nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollWidth); if (!this.indexIsInRange_(nextIndex)) { return; } var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth); this.adapter_.incrementScroll(scrollIncrement); }; return MDCTabBarFoundation; }(foundation_1.MDCFoundation); exports.MDCTabBarFoundation = MDCTabBarFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabBarFoundation; /***/ }), /***/ "./packages/mdc-tab-bar/index.ts": /*!***************************************!*\ !*** ./packages/mdc-tab-bar/index.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-tab-bar/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-tab-bar/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-tab-bar/foundation.ts")); /***/ }), /***/ "./packages/mdc-tab-indicator/component.ts": /*!*************************************************!*\ !*** ./packages/mdc-tab-indicator/component.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var fading_foundation_1 = __webpack_require__(/*! ./fading-foundation */ "./packages/mdc-tab-indicator/fading-foundation.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab-indicator/foundation.ts"); var sliding_foundation_1 = __webpack_require__(/*! ./sliding-foundation */ "./packages/mdc-tab-indicator/sliding-foundation.ts"); var MDCTabIndicator = /** @class */function (_super) { __extends(MDCTabIndicator, _super); function MDCTabIndicator() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabIndicator.attachTo = function (root) { return new MDCTabIndicator(root); }; MDCTabIndicator.prototype.initialize = function () { this.content_ = this.root_.querySelector(foundation_1.MDCTabIndicatorFoundation.strings.CONTENT_SELECTOR); }; MDCTabIndicator.prototype.computeContentClientRect = function () { return this.foundation_.computeContentClientRect(); }; MDCTabIndicator.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, computeContentClientRect: function computeContentClientRect() { return _this.content_.getBoundingClientRect(); }, setContentStyleProperty: function setContentStyleProperty(prop, value) { return _this.content_.style.setProperty(prop, value); } }; // tslint:enable:object-literal-sort-keys if (this.root_.classList.contains(foundation_1.MDCTabIndicatorFoundation.cssClasses.FADE)) { return new fading_foundation_1.MDCFadingTabIndicatorFoundation(adapter); } // Default to the sliding indicator return new sliding_foundation_1.MDCSlidingTabIndicatorFoundation(adapter); }; MDCTabIndicator.prototype.activate = function (previousIndicatorClientRect) { this.foundation_.activate(previousIndicatorClientRect); }; MDCTabIndicator.prototype.deactivate = function () { this.foundation_.deactivate(); }; return MDCTabIndicator; }(component_1.MDCComponent); exports.MDCTabIndicator = MDCTabIndicator; /***/ }), /***/ "./packages/mdc-tab-indicator/constants.ts": /*!*************************************************!*\ !*** ./packages/mdc-tab-indicator/constants.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ACTIVE: 'mdc-tab-indicator--active', FADE: 'mdc-tab-indicator--fade', NO_TRANSITION: 'mdc-tab-indicator--no-transition' }; exports.cssClasses = cssClasses; var strings = { CONTENT_SELECTOR: '.mdc-tab-indicator__content' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-tab-indicator/fading-foundation.ts": /*!*********************************************************!*\ !*** ./packages/mdc-tab-indicator/fading-foundation.ts ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab-indicator/foundation.ts"); /* istanbul ignore next: subclass is not a branch statement */ var MDCFadingTabIndicatorFoundation = /** @class */function (_super) { __extends(MDCFadingTabIndicatorFoundation, _super); function MDCFadingTabIndicatorFoundation() { return _super !== null && _super.apply(this, arguments) || this; } MDCFadingTabIndicatorFoundation.prototype.activate = function () { this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE); }; MDCFadingTabIndicatorFoundation.prototype.deactivate = function () { this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE); }; return MDCFadingTabIndicatorFoundation; }(foundation_1.MDCTabIndicatorFoundation); exports.MDCFadingTabIndicatorFoundation = MDCFadingTabIndicatorFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCFadingTabIndicatorFoundation; /***/ }), /***/ "./packages/mdc-tab-indicator/foundation.ts": /*!**************************************************!*\ !*** ./packages/mdc-tab-indicator/foundation.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-tab-indicator/constants.ts"); var MDCTabIndicatorFoundation = /** @class */function (_super) { __extends(MDCTabIndicatorFoundation, _super); function MDCTabIndicatorFoundation(adapter) { return _super.call(this, __assign({}, MDCTabIndicatorFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCTabIndicatorFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabIndicatorFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabIndicatorFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, computeContentClientRect: function computeContentClientRect() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, setContentStyleProperty: function setContentStyleProperty() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCTabIndicatorFoundation.prototype.computeContentClientRect = function () { return this.adapter_.computeContentClientRect(); }; return MDCTabIndicatorFoundation; }(foundation_1.MDCFoundation); exports.MDCTabIndicatorFoundation = MDCTabIndicatorFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabIndicatorFoundation; /***/ }), /***/ "./packages/mdc-tab-indicator/index.ts": /*!*********************************************!*\ !*** ./packages/mdc-tab-indicator/index.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-tab-indicator/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-tab-indicator/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-tab-indicator/foundation.ts")); __export(__webpack_require__(/*! ./fading-foundation */ "./packages/mdc-tab-indicator/fading-foundation.ts")); __export(__webpack_require__(/*! ./sliding-foundation */ "./packages/mdc-tab-indicator/sliding-foundation.ts")); /***/ }), /***/ "./packages/mdc-tab-indicator/sliding-foundation.ts": /*!**********************************************************!*\ !*** ./packages/mdc-tab-indicator/sliding-foundation.ts ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab-indicator/foundation.ts"); /* istanbul ignore next: subclass is not a branch statement */ var MDCSlidingTabIndicatorFoundation = /** @class */function (_super) { __extends(MDCSlidingTabIndicatorFoundation, _super); function MDCSlidingTabIndicatorFoundation() { return _super !== null && _super.apply(this, arguments) || this; } MDCSlidingTabIndicatorFoundation.prototype.activate = function (previousIndicatorClientRect) { // Early exit if no indicator is present to handle cases where an indicator // may be activated without a prior indicator state if (!previousIndicatorClientRect) { this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE); return; } // This animation uses the FLIP approach. You can read more about it at the link below: // https://aerotwist.com/blog/flip-your-animations/ // Calculate the dimensions based on the dimensions of the previous indicator var currentClientRect = this.computeContentClientRect(); var widthDelta = previousIndicatorClientRect.width / currentClientRect.width; var xPosition = previousIndicatorClientRect.left - currentClientRect.left; this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION); this.adapter_.setContentStyleProperty('transform', "translateX(" + xPosition + "px) scaleX(" + widthDelta + ")"); // Force repaint before updating classes and transform to ensure the transform properly takes effect this.computeContentClientRect(); this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION); this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE); this.adapter_.setContentStyleProperty('transform', ''); }; MDCSlidingTabIndicatorFoundation.prototype.deactivate = function () { this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE); }; return MDCSlidingTabIndicatorFoundation; }(foundation_1.MDCTabIndicatorFoundation); exports.MDCSlidingTabIndicatorFoundation = MDCSlidingTabIndicatorFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCSlidingTabIndicatorFoundation; /***/ }), /***/ "./packages/mdc-tab-scroller/component.ts": /*!************************************************!*\ !*** ./packages/mdc-tab-scroller/component.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var ponyfill_1 = __webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab-scroller/foundation.ts"); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-tab-scroller/util.ts")); var MDCTabScroller = /** @class */function (_super) { __extends(MDCTabScroller, _super); function MDCTabScroller() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabScroller.attachTo = function (root) { return new MDCTabScroller(root); }; MDCTabScroller.prototype.initialize = function () { this.area_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.AREA_SELECTOR); this.content_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.CONTENT_SELECTOR); }; MDCTabScroller.prototype.initialSyncWithDOM = function () { var _this = this; this.handleInteraction_ = function () { return _this.foundation_.handleInteraction(); }; this.handleTransitionEnd_ = function (evt) { return _this.foundation_.handleTransitionEnd(evt); }; this.area_.addEventListener('wheel', this.handleInteraction_, events_1.applyPassive()); this.area_.addEventListener('touchstart', this.handleInteraction_, events_1.applyPassive()); this.area_.addEventListener('pointerdown', this.handleInteraction_, events_1.applyPassive()); this.area_.addEventListener('mousedown', this.handleInteraction_, events_1.applyPassive()); this.area_.addEventListener('keydown', this.handleInteraction_, events_1.applyPassive()); this.content_.addEventListener('transitionend', this.handleTransitionEnd_); }; MDCTabScroller.prototype.destroy = function () { _super.prototype.destroy.call(this); this.area_.removeEventListener('wheel', this.handleInteraction_, events_1.applyPassive()); this.area_.removeEventListener('touchstart', this.handleInteraction_, events_1.applyPassive()); this.area_.removeEventListener('pointerdown', this.handleInteraction_, events_1.applyPassive()); this.area_.removeEventListener('mousedown', this.handleInteraction_, events_1.applyPassive()); this.area_.removeEventListener('keydown', this.handleInteraction_, events_1.applyPassive()); this.content_.removeEventListener('transitionend', this.handleTransitionEnd_); }; MDCTabScroller.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) { return ponyfill_1.matches(evtTarget, selector); }, addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, addScrollAreaClass: function addScrollAreaClass(className) { return _this.area_.classList.add(className); }, setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) { return _this.area_.style.setProperty(prop, value); }, setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) { return _this.content_.style.setProperty(prop, value); }, getScrollContentStyleValue: function getScrollContentStyleValue(propName) { return window.getComputedStyle(_this.content_).getPropertyValue(propName); }, setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) { return _this.area_.scrollLeft = scrollX; }, getScrollAreaScrollLeft: function getScrollAreaScrollLeft() { return _this.area_.scrollLeft; }, getScrollContentOffsetWidth: function getScrollContentOffsetWidth() { return _this.content_.offsetWidth; }, getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() { return _this.area_.offsetWidth; }, computeScrollAreaClientRect: function computeScrollAreaClientRect() { return _this.area_.getBoundingClientRect(); }, computeScrollContentClientRect: function computeScrollContentClientRect() { return _this.content_.getBoundingClientRect(); }, computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() { return util.computeHorizontalScrollbarHeight(document); } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCTabScrollerFoundation(adapter); }; /** * Returns the current visual scroll position */ MDCTabScroller.prototype.getScrollPosition = function () { return this.foundation_.getScrollPosition(); }; /** * Returns the width of the scroll content */ MDCTabScroller.prototype.getScrollContentWidth = function () { return this.content_.offsetWidth; }; /** * Increments the scroll value by the given amount * @param scrollXIncrement The pixel value by which to increment the scroll value */ MDCTabScroller.prototype.incrementScroll = function (scrollXIncrement) { this.foundation_.incrementScroll(scrollXIncrement); }; /** * Scrolls to the given pixel position * @param scrollX The pixel value to scroll to */ MDCTabScroller.prototype.scrollTo = function (scrollX) { this.foundation_.scrollTo(scrollX); }; return MDCTabScroller; }(component_1.MDCComponent); exports.MDCTabScroller = MDCTabScroller; /***/ }), /***/ "./packages/mdc-tab-scroller/constants.ts": /*!************************************************!*\ !*** ./packages/mdc-tab-scroller/constants.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ANIMATING: 'mdc-tab-scroller--animating', SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll', SCROLL_TEST: 'mdc-tab-scroller__test' }; exports.cssClasses = cssClasses; var strings = { AREA_SELECTOR: '.mdc-tab-scroller__scroll-area', CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-tab-scroller/foundation.ts": /*!*************************************************!*\ !*** ./packages/mdc-tab-scroller/foundation.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-tab-scroller/constants.ts"); var rtl_default_scroller_1 = __webpack_require__(/*! ./rtl-default-scroller */ "./packages/mdc-tab-scroller/rtl-default-scroller.ts"); var rtl_negative_scroller_1 = __webpack_require__(/*! ./rtl-negative-scroller */ "./packages/mdc-tab-scroller/rtl-negative-scroller.ts"); var rtl_reverse_scroller_1 = __webpack_require__(/*! ./rtl-reverse-scroller */ "./packages/mdc-tab-scroller/rtl-reverse-scroller.ts"); var MDCTabScrollerFoundation = /** @class */function (_super) { __extends(MDCTabScrollerFoundation, _super); function MDCTabScrollerFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCTabScrollerFoundation.defaultAdapter, adapter)) || this; /** * Controls whether we should handle the transitionend and interaction events during the animation. */ _this.isAnimating_ = false; return _this; } Object.defineProperty(MDCTabScrollerFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabScrollerFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabScrollerFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { eventTargetMatchesSelector: function eventTargetMatchesSelector() { return false; }, addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, addScrollAreaClass: function addScrollAreaClass() { return undefined; }, setScrollAreaStyleProperty: function setScrollAreaStyleProperty() { return undefined; }, setScrollContentStyleProperty: function setScrollContentStyleProperty() { return undefined; }, getScrollContentStyleValue: function getScrollContentStyleValue() { return ''; }, setScrollAreaScrollLeft: function setScrollAreaScrollLeft() { return undefined; }, getScrollAreaScrollLeft: function getScrollAreaScrollLeft() { return 0; }, getScrollContentOffsetWidth: function getScrollContentOffsetWidth() { return 0; }, getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() { return 0; }, computeScrollAreaClientRect: function computeScrollAreaClientRect() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, computeScrollContentClientRect: function computeScrollContentClientRect() { return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; }, computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() { return 0; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCTabScrollerFoundation.prototype.init = function () { // Compute horizontal scrollbar height on scroller with overflow initially hidden, then update overflow to scroll // and immediately adjust bottom margin to avoid the scrollbar initially appearing before JS runs. var horizontalScrollbarHeight = this.adapter_.computeHorizontalScrollbarHeight(); this.adapter_.setScrollAreaStyleProperty('margin-bottom', -horizontalScrollbarHeight + 'px'); this.adapter_.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL); }; /** * Computes the current visual scroll position */ MDCTabScrollerFoundation.prototype.getScrollPosition = function () { if (this.isRTL_()) { return this.computeCurrentScrollPositionRTL_(); } var currentTranslateX = this.calculateCurrentTranslateX_(); var scrollLeft = this.adapter_.getScrollAreaScrollLeft(); return scrollLeft - currentTranslateX; }; /** * Handles interaction events that occur during transition */ MDCTabScrollerFoundation.prototype.handleInteraction = function () { // Early exit if we aren't animating if (!this.isAnimating_) { return; } // Prevent other event listeners from handling this event this.stopScrollAnimation_(); }; /** * Handles the transitionend event */ MDCTabScrollerFoundation.prototype.handleTransitionEnd = function (evt) { // Early exit if we aren't animating or the event was triggered by a different element. var evtTarget = evt.target; if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evtTarget, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) { return; } this.isAnimating_ = false; this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING); }; /** * Increment the scroll value by the scrollXIncrement * @param scrollXIncrement The value by which to increment the scroll position */ MDCTabScrollerFoundation.prototype.incrementScroll = function (scrollXIncrement) { // Early exit for non-operational increment values if (scrollXIncrement === 0) { return; } if (this.isRTL_()) { return this.incrementScrollRTL_(scrollXIncrement); } this.incrementScroll_(scrollXIncrement); }; /** * Scrolls to the given scrollX value */ MDCTabScrollerFoundation.prototype.scrollTo = function (scrollX) { if (this.isRTL_()) { return this.scrollToRTL_(scrollX); } this.scrollTo_(scrollX); }; /** * @return Browser-specific {@link MDCTabScrollerRTL} instance. */ MDCTabScrollerFoundation.prototype.getRTLScroller = function () { if (!this.rtlScrollerInstance_) { this.rtlScrollerInstance_ = this.rtlScrollerFactory_(); } return this.rtlScrollerInstance_; }; /** * @return translateX value from a CSS matrix transform function string. */ MDCTabScrollerFoundation.prototype.calculateCurrentTranslateX_ = function () { var transformValue = this.adapter_.getScrollContentStyleValue('transform'); // Early exit if no transform is present if (transformValue === 'none') { return 0; } // The transform value comes back as a matrix transformation in the form // of `matrix(a, b, c, d, tx, ty)`. We only care about tx (translateX) so // we're going to grab all the parenthesized values, strip out tx, and // parse it. var match = /\((.+?)\)/.exec(transformValue); if (!match) { return 0; } var matrixParams = match[1]; // tslint:disable-next-line:ban-ts-ignore "Unused vars" should be a linter warning, not a compiler error. // @ts-ignore These unused variables should retain their semantic names for clarity. var _a = __read(matrixParams.split(','), 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], tx = _a[4], ty = _a[5]; return parseFloat(tx); // tslint:disable-line:ban }; /** * Calculates a safe scroll value that is > 0 and < the max scroll value * @param scrollX The distance to scroll */ MDCTabScrollerFoundation.prototype.clampScrollValue_ = function (scrollX) { var edges = this.calculateScrollEdges_(); return Math.min(Math.max(edges.left, scrollX), edges.right); }; MDCTabScrollerFoundation.prototype.computeCurrentScrollPositionRTL_ = function () { var translateX = this.calculateCurrentTranslateX_(); return this.getRTLScroller().getScrollPositionRTL(translateX); }; MDCTabScrollerFoundation.prototype.calculateScrollEdges_ = function () { var contentWidth = this.adapter_.getScrollContentOffsetWidth(); var rootWidth = this.adapter_.getScrollAreaOffsetWidth(); return { left: 0, right: contentWidth - rootWidth }; }; /** * Internal scroll method * @param scrollX The new scroll position */ MDCTabScrollerFoundation.prototype.scrollTo_ = function (scrollX) { var currentScrollX = this.getScrollPosition(); var safeScrollX = this.clampScrollValue_(scrollX); var scrollDelta = safeScrollX - currentScrollX; this.animate_({ finalScrollPosition: safeScrollX, scrollDelta: scrollDelta }); }; /** * Internal RTL scroll method * @param scrollX The new scroll position */ MDCTabScrollerFoundation.prototype.scrollToRTL_ = function (scrollX) { var animation = this.getRTLScroller().scrollToRTL(scrollX); this.animate_(animation); }; /** * Internal increment scroll method * @param scrollX The new scroll position increment */ MDCTabScrollerFoundation.prototype.incrementScroll_ = function (scrollX) { var currentScrollX = this.getScrollPosition(); var targetScrollX = scrollX + currentScrollX; var safeScrollX = this.clampScrollValue_(targetScrollX); var scrollDelta = safeScrollX - currentScrollX; this.animate_({ finalScrollPosition: safeScrollX, scrollDelta: scrollDelta }); }; /** * Internal increment scroll RTL method * @param scrollX The new scroll position RTL increment */ MDCTabScrollerFoundation.prototype.incrementScrollRTL_ = function (scrollX) { var animation = this.getRTLScroller().incrementScrollRTL(scrollX); this.animate_(animation); }; /** * Animates the tab scrolling * @param animation The animation to apply */ MDCTabScrollerFoundation.prototype.animate_ = function (animation) { var _this = this; // Early exit if translateX is 0, which means there's no animation to perform if (animation.scrollDelta === 0) { return; } this.stopScrollAnimation_(); // This animation uses the FLIP approach. // Read more here: https://aerotwist.com/blog/flip-your-animations/ this.adapter_.setScrollAreaScrollLeft(animation.finalScrollPosition); this.adapter_.setScrollContentStyleProperty('transform', "translateX(" + animation.scrollDelta + "px)"); // Force repaint this.adapter_.computeScrollAreaClientRect(); requestAnimationFrame(function () { _this.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING); _this.adapter_.setScrollContentStyleProperty('transform', 'none'); }); this.isAnimating_ = true; }; /** * Stops scroll animation */ MDCTabScrollerFoundation.prototype.stopScrollAnimation_ = function () { this.isAnimating_ = false; var currentScrollPosition = this.getAnimatingScrollPosition_(); this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING); this.adapter_.setScrollContentStyleProperty('transform', 'translateX(0px)'); this.adapter_.setScrollAreaScrollLeft(currentScrollPosition); }; /** * Gets the current scroll position during animation */ MDCTabScrollerFoundation.prototype.getAnimatingScrollPosition_ = function () { var currentTranslateX = this.calculateCurrentTranslateX_(); var scrollLeft = this.adapter_.getScrollAreaScrollLeft(); if (this.isRTL_()) { return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX); } return scrollLeft - currentTranslateX; }; /** * Determines the RTL Scroller to use */ MDCTabScrollerFoundation.prototype.rtlScrollerFactory_ = function () { // Browsers have three different implementations of scrollLeft in RTL mode, // dependent on the browser. The behavior is based off the max LTR // scrollLeft value and 0. // // * Default scrolling in RTL * // - Left-most value: 0 // - Right-most value: Max LTR scrollLeft value // // * Negative scrolling in RTL * // - Left-most value: Negated max LTR scrollLeft value // - Right-most value: 0 // // * Reverse scrolling in RTL * // - Left-most value: Max LTR scrollLeft value // - Right-most value: 0 // // We use those principles below to determine which RTL scrollLeft // behavior is implemented in the current browser. var initialScrollLeft = this.adapter_.getScrollAreaScrollLeft(); this.adapter_.setScrollAreaScrollLeft(initialScrollLeft - 1); var newScrollLeft = this.adapter_.getScrollAreaScrollLeft(); // If the newScrollLeft value is negative,then we know that the browser has // implemented negative RTL scrolling, since all other implementations have // only positive values. if (newScrollLeft < 0) { // Undo the scrollLeft test check this.adapter_.setScrollAreaScrollLeft(initialScrollLeft); return new rtl_negative_scroller_1.MDCTabScrollerRTLNegative(this.adapter_); } var rootClientRect = this.adapter_.computeScrollAreaClientRect(); var contentClientRect = this.adapter_.computeScrollContentClientRect(); var rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right); // Undo the scrollLeft test check this.adapter_.setScrollAreaScrollLeft(initialScrollLeft); // By calculating the clientRect of the root element and the clientRect of // the content element, we can determine how much the scroll value changed // when we performed the scrollLeft subtraction above. if (rightEdgeDelta === newScrollLeft) { return new rtl_reverse_scroller_1.MDCTabScrollerRTLReverse(this.adapter_); } return new rtl_default_scroller_1.MDCTabScrollerRTLDefault(this.adapter_); }; MDCTabScrollerFoundation.prototype.isRTL_ = function () { return this.adapter_.getScrollContentStyleValue('direction') === 'rtl'; }; return MDCTabScrollerFoundation; }(foundation_1.MDCFoundation); exports.MDCTabScrollerFoundation = MDCTabScrollerFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabScrollerFoundation; /***/ }), /***/ "./packages/mdc-tab-scroller/index.ts": /*!********************************************!*\ !*** ./packages/mdc-tab-scroller/index.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var util = __importStar(__webpack_require__(/*! ./util */ "./packages/mdc-tab-scroller/util.ts")); exports.util = util; __export(__webpack_require__(/*! ./component */ "./packages/mdc-tab-scroller/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-tab-scroller/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-tab-scroller/foundation.ts")); /***/ }), /***/ "./packages/mdc-tab-scroller/rtl-default-scroller.ts": /*!***********************************************************!*\ !*** ./packages/mdc-tab-scroller/rtl-default-scroller.ts ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var rtl_scroller_1 = __webpack_require__(/*! ./rtl-scroller */ "./packages/mdc-tab-scroller/rtl-scroller.ts"); var MDCTabScrollerRTLDefault = /** @class */function (_super) { __extends(MDCTabScrollerRTLDefault, _super); function MDCTabScrollerRTLDefault() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabScrollerRTLDefault.prototype.getScrollPositionRTL = function () { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var right = this.calculateScrollEdges_().right; // Scroll values on most browsers are ints instead of floats so we round return Math.round(right - currentScrollLeft); }; MDCTabScrollerRTLDefault.prototype.scrollToRTL = function (scrollX) { var edges = this.calculateScrollEdges_(); var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: clampedScrollLeft - currentScrollLeft }; }; MDCTabScrollerRTLDefault.prototype.incrementScrollRTL = function (scrollX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: clampedScrollLeft - currentScrollLeft }; }; MDCTabScrollerRTLDefault.prototype.getAnimatingScrollPosition = function (scrollX) { return scrollX; }; MDCTabScrollerRTLDefault.prototype.calculateScrollEdges_ = function () { var contentWidth = this.adapter_.getScrollContentOffsetWidth(); var rootWidth = this.adapter_.getScrollAreaOffsetWidth(); return { left: 0, right: contentWidth - rootWidth }; }; MDCTabScrollerRTLDefault.prototype.clampScrollValue_ = function (scrollX) { var edges = this.calculateScrollEdges_(); return Math.min(Math.max(edges.left, scrollX), edges.right); }; return MDCTabScrollerRTLDefault; }(rtl_scroller_1.MDCTabScrollerRTL); exports.MDCTabScrollerRTLDefault = MDCTabScrollerRTLDefault; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabScrollerRTLDefault; /***/ }), /***/ "./packages/mdc-tab-scroller/rtl-negative-scroller.ts": /*!************************************************************!*\ !*** ./packages/mdc-tab-scroller/rtl-negative-scroller.ts ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var rtl_scroller_1 = __webpack_require__(/*! ./rtl-scroller */ "./packages/mdc-tab-scroller/rtl-scroller.ts"); var MDCTabScrollerRTLNegative = /** @class */function (_super) { __extends(MDCTabScrollerRTLNegative, _super); function MDCTabScrollerRTLNegative() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabScrollerRTLNegative.prototype.getScrollPositionRTL = function (translateX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); return Math.round(translateX - currentScrollLeft); }; MDCTabScrollerRTLNegative.prototype.scrollToRTL = function (scrollX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(-scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: clampedScrollLeft - currentScrollLeft }; }; MDCTabScrollerRTLNegative.prototype.incrementScrollRTL = function (scrollX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: clampedScrollLeft - currentScrollLeft }; }; MDCTabScrollerRTLNegative.prototype.getAnimatingScrollPosition = function (scrollX, translateX) { return scrollX - translateX; }; MDCTabScrollerRTLNegative.prototype.calculateScrollEdges_ = function () { var contentWidth = this.adapter_.getScrollContentOffsetWidth(); var rootWidth = this.adapter_.getScrollAreaOffsetWidth(); return { left: rootWidth - contentWidth, right: 0 }; }; MDCTabScrollerRTLNegative.prototype.clampScrollValue_ = function (scrollX) { var edges = this.calculateScrollEdges_(); return Math.max(Math.min(edges.right, scrollX), edges.left); }; return MDCTabScrollerRTLNegative; }(rtl_scroller_1.MDCTabScrollerRTL); exports.MDCTabScrollerRTLNegative = MDCTabScrollerRTLNegative; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabScrollerRTLNegative; /***/ }), /***/ "./packages/mdc-tab-scroller/rtl-reverse-scroller.ts": /*!***********************************************************!*\ !*** ./packages/mdc-tab-scroller/rtl-reverse-scroller.ts ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var rtl_scroller_1 = __webpack_require__(/*! ./rtl-scroller */ "./packages/mdc-tab-scroller/rtl-scroller.ts"); var MDCTabScrollerRTLReverse = /** @class */function (_super) { __extends(MDCTabScrollerRTLReverse, _super); function MDCTabScrollerRTLReverse() { return _super !== null && _super.apply(this, arguments) || this; } MDCTabScrollerRTLReverse.prototype.getScrollPositionRTL = function (translateX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); // Scroll values on most browsers are ints instead of floats so we round return Math.round(currentScrollLeft - translateX); }; MDCTabScrollerRTLReverse.prototype.scrollToRTL = function (scrollX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: currentScrollLeft - clampedScrollLeft }; }; MDCTabScrollerRTLReverse.prototype.incrementScrollRTL = function (scrollX) { var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft(); var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX); return { finalScrollPosition: clampedScrollLeft, scrollDelta: currentScrollLeft - clampedScrollLeft }; }; MDCTabScrollerRTLReverse.prototype.getAnimatingScrollPosition = function (scrollX, translateX) { return scrollX + translateX; }; MDCTabScrollerRTLReverse.prototype.calculateScrollEdges_ = function () { var contentWidth = this.adapter_.getScrollContentOffsetWidth(); var rootWidth = this.adapter_.getScrollAreaOffsetWidth(); return { left: contentWidth - rootWidth, right: 0 }; }; MDCTabScrollerRTLReverse.prototype.clampScrollValue_ = function (scrollX) { var edges = this.calculateScrollEdges_(); return Math.min(Math.max(edges.right, scrollX), edges.left); }; return MDCTabScrollerRTLReverse; }(rtl_scroller_1.MDCTabScrollerRTL); exports.MDCTabScrollerRTLReverse = MDCTabScrollerRTLReverse; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabScrollerRTLReverse; /***/ }), /***/ "./packages/mdc-tab-scroller/rtl-scroller.ts": /*!***************************************************!*\ !*** ./packages/mdc-tab-scroller/rtl-scroller.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var MDCTabScrollerRTL = /** @class */function () { function MDCTabScrollerRTL(adapter) { this.adapter_ = adapter; } return MDCTabScrollerRTL; }(); exports.MDCTabScrollerRTL = MDCTabScrollerRTL; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabScrollerRTL; /***/ }), /***/ "./packages/mdc-tab-scroller/util.ts": /*!*******************************************!*\ !*** ./packages/mdc-tab-scroller/util.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-tab-scroller/constants.ts"); /** * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing. */ var horizontalScrollbarHeight_; /** * Computes the height of browser-rendered horizontal scrollbars using a self-created test element. * May return 0 (e.g. on OS X browsers under default configuration). */ function computeHorizontalScrollbarHeight(documentObj, shouldCacheResult) { if (shouldCacheResult === void 0) { shouldCacheResult = true; } if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') { return horizontalScrollbarHeight_; } var el = documentObj.createElement('div'); el.classList.add(constants_1.cssClasses.SCROLL_TEST); documentObj.body.appendChild(el); var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight; documentObj.body.removeChild(el); if (shouldCacheResult) { horizontalScrollbarHeight_ = horizontalScrollbarHeight; } return horizontalScrollbarHeight; } exports.computeHorizontalScrollbarHeight = computeHorizontalScrollbarHeight; /***/ }), /***/ "./packages/mdc-tab/component.ts": /*!***************************************!*\ !*** ./packages/mdc-tab/component.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var component_3 = __webpack_require__(/*! @material/tab-indicator/component */ "./packages/mdc-tab-indicator/component.ts"); var foundation_2 = __webpack_require__(/*! ./foundation */ "./packages/mdc-tab/foundation.ts"); var MDCTab = /** @class */function (_super) { __extends(MDCTab, _super); function MDCTab() { return _super !== null && _super.apply(this, arguments) || this; } MDCTab.attachTo = function (root) { return new MDCTab(root); }; MDCTab.prototype.initialize = function (rippleFactory, tabIndicatorFactory) { if (rippleFactory === void 0) { rippleFactory = function rippleFactory(el, foundation) { return new component_2.MDCRipple(el, foundation); }; } if (tabIndicatorFactory === void 0) { tabIndicatorFactory = function tabIndicatorFactory(el) { return new component_3.MDCTabIndicator(el); }; } this.id = this.root_.id; var rippleSurface = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.RIPPLE_SELECTOR); var rippleAdapter = __assign({}, component_2.MDCRipple.createAdapter(this), { addClass: function addClass(className) { return rippleSurface.classList.add(className); }, removeClass: function removeClass(className) { return rippleSurface.classList.remove(className); }, updateCssVariable: function updateCssVariable(varName, value) { return rippleSurface.style.setProperty(varName, value); } }); var rippleFoundation = new foundation_1.MDCRippleFoundation(rippleAdapter); this.ripple_ = rippleFactory(this.root_, rippleFoundation); var tabIndicatorElement = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR); this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement); this.content_ = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.CONTENT_SELECTOR); }; MDCTab.prototype.initialSyncWithDOM = function () { var _this = this; this.handleClick_ = function () { return _this.foundation_.handleClick(); }; this.listen('click', this.handleClick_); }; MDCTab.prototype.destroy = function () { this.unlisten('click', this.handleClick_); this.ripple_.destroy(); _super.prototype.destroy.call(this); }; MDCTab.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, activateIndicator: function activateIndicator(previousIndicatorClientRect) { return _this.tabIndicator_.activate(previousIndicatorClientRect); }, deactivateIndicator: function deactivateIndicator() { return _this.tabIndicator_.deactivate(); }, notifyInteracted: function notifyInteracted() { return _this.emit(foundation_2.MDCTabFoundation.strings.INTERACTED_EVENT, { tabId: _this.id }, true /* bubble */); }, getOffsetLeft: function getOffsetLeft() { return _this.root_.offsetLeft; }, getOffsetWidth: function getOffsetWidth() { return _this.root_.offsetWidth; }, getContentOffsetLeft: function getContentOffsetLeft() { return _this.content_.offsetLeft; }, getContentOffsetWidth: function getContentOffsetWidth() { return _this.content_.offsetWidth; }, focus: function focus() { return _this.root_.focus(); } }; // tslint:enable:object-literal-sort-keys return new foundation_2.MDCTabFoundation(adapter); }; Object.defineProperty(MDCTab.prototype, "active", { /** * Getter for the active state of the tab */ get: function get() { return this.foundation_.isActive(); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTab.prototype, "focusOnActivate", { set: function set(focusOnActivate) { this.foundation_.setFocusOnActivate(focusOnActivate); }, enumerable: true, configurable: true }); /** * Activates the tab */ MDCTab.prototype.activate = function (computeIndicatorClientRect) { this.foundation_.activate(computeIndicatorClientRect); }; /** * Deactivates the tab */ MDCTab.prototype.deactivate = function () { this.foundation_.deactivate(); }; /** * Returns the indicator's client rect */ MDCTab.prototype.computeIndicatorClientRect = function () { return this.tabIndicator_.computeContentClientRect(); }; MDCTab.prototype.computeDimensions = function () { return this.foundation_.computeDimensions(); }; /** * Focuses the tab */ MDCTab.prototype.focus = function () { this.root_.focus(); }; return MDCTab; }(component_1.MDCComponent); exports.MDCTab = MDCTab; /***/ }), /***/ "./packages/mdc-tab/constants.ts": /*!***************************************!*\ !*** ./packages/mdc-tab/constants.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ACTIVE: 'mdc-tab--active' }; exports.cssClasses = cssClasses; var strings = { ARIA_SELECTED: 'aria-selected', CONTENT_SELECTOR: '.mdc-tab__content', INTERACTED_EVENT: 'MDCTab:interacted', RIPPLE_SELECTOR: '.mdc-tab__ripple', TABINDEX: 'tabIndex', TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-tab/foundation.ts": /*!****************************************!*\ !*** ./packages/mdc-tab/foundation.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-tab/constants.ts"); var MDCTabFoundation = /** @class */function (_super) { __extends(MDCTabFoundation, _super); function MDCTabFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCTabFoundation.defaultAdapter, adapter)) || this; _this.focusOnActivate_ = true; return _this; } Object.defineProperty(MDCTabFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTabFoundation, "defaultAdapter", { get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, setAttr: function setAttr() { return undefined; }, activateIndicator: function activateIndicator() { return undefined; }, deactivateIndicator: function deactivateIndicator() { return undefined; }, notifyInteracted: function notifyInteracted() { return undefined; }, getOffsetLeft: function getOffsetLeft() { return 0; }, getOffsetWidth: function getOffsetWidth() { return 0; }, getContentOffsetLeft: function getContentOffsetLeft() { return 0; }, getContentOffsetWidth: function getContentOffsetWidth() { return 0; }, focus: function focus() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCTabFoundation.prototype.handleClick = function () { // It's up to the parent component to keep track of the active Tab and // ensure we don't activate a Tab that's already active. this.adapter_.notifyInteracted(); }; MDCTabFoundation.prototype.isActive = function () { return this.adapter_.hasClass(constants_1.cssClasses.ACTIVE); }; /** * Sets whether the tab should focus itself when activated */ MDCTabFoundation.prototype.setFocusOnActivate = function (focusOnActivate) { this.focusOnActivate_ = focusOnActivate; }; /** * Activates the Tab */ MDCTabFoundation.prototype.activate = function (previousIndicatorClientRect) { this.adapter_.addClass(constants_1.cssClasses.ACTIVE); this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, 'true'); this.adapter_.setAttr(constants_1.strings.TABINDEX, '0'); this.adapter_.activateIndicator(previousIndicatorClientRect); if (this.focusOnActivate_) { this.adapter_.focus(); } }; /** * Deactivates the Tab */ MDCTabFoundation.prototype.deactivate = function () { // Early exit if (!this.isActive()) { return; } this.adapter_.removeClass(constants_1.cssClasses.ACTIVE); this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, 'false'); this.adapter_.setAttr(constants_1.strings.TABINDEX, '-1'); this.adapter_.deactivateIndicator(); }; /** * Returns the dimensions of the Tab */ MDCTabFoundation.prototype.computeDimensions = function () { var rootWidth = this.adapter_.getOffsetWidth(); var rootLeft = this.adapter_.getOffsetLeft(); var contentWidth = this.adapter_.getContentOffsetWidth(); var contentLeft = this.adapter_.getContentOffsetLeft(); return { contentLeft: rootLeft + contentLeft, contentRight: rootLeft + contentLeft + contentWidth, rootLeft: rootLeft, rootRight: rootLeft + rootWidth }; }; return MDCTabFoundation; }(foundation_1.MDCFoundation); exports.MDCTabFoundation = MDCTabFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTabFoundation; /***/ }), /***/ "./packages/mdc-tab/index.ts": /*!***********************************!*\ !*** ./packages/mdc-tab/index.ts ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-tab/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-tab/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-tab/foundation.ts")); /***/ }), /***/ "./packages/mdc-textfield/character-counter/component.ts": /*!***************************************************************!*\ !*** ./packages/mdc-textfield/character-counter/component.ts ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/character-counter/foundation.ts"); var MDCTextFieldCharacterCounter = /** @class */function (_super) { __extends(MDCTextFieldCharacterCounter, _super); function MDCTextFieldCharacterCounter() { return _super !== null && _super.apply(this, arguments) || this; } MDCTextFieldCharacterCounter.attachTo = function (root) { return new MDCTextFieldCharacterCounter(root); }; Object.defineProperty(MDCTextFieldCharacterCounter.prototype, "foundation", { get: function get() { return this.foundation_; }, enumerable: true, configurable: true }); MDCTextFieldCharacterCounter.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. var adapter = { setContent: function setContent(content) { _this.root_.textContent = content; } }; return new foundation_1.MDCTextFieldCharacterCounterFoundation(adapter); }; return MDCTextFieldCharacterCounter; }(component_1.MDCComponent); exports.MDCTextFieldCharacterCounter = MDCTextFieldCharacterCounter; /***/ }), /***/ "./packages/mdc-textfield/character-counter/constants.ts": /*!***************************************************************!*\ !*** ./packages/mdc-textfield/character-counter/constants.ts ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { ROOT: 'mdc-text-field-character-counter' }; exports.cssClasses = cssClasses; var strings = { ROOT_SELECTOR: "." + cssClasses.ROOT }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-textfield/character-counter/foundation.ts": /*!****************************************************************!*\ !*** ./packages/mdc-textfield/character-counter/foundation.ts ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/character-counter/constants.ts"); var MDCTextFieldCharacterCounterFoundation = /** @class */function (_super) { __extends(MDCTextFieldCharacterCounterFoundation, _super); function MDCTextFieldCharacterCounterFoundation(adapter) { return _super.call(this, __assign({}, MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "defaultAdapter", { /** * See {@link MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return types. */ get: function get() { return { setContent: function setContent() { return undefined; } }; }, enumerable: true, configurable: true }); MDCTextFieldCharacterCounterFoundation.prototype.setCounterValue = function (currentLength, maxLength) { currentLength = Math.min(currentLength, maxLength); this.adapter_.setContent(currentLength + " / " + maxLength); }; return MDCTextFieldCharacterCounterFoundation; }(foundation_1.MDCFoundation); exports.MDCTextFieldCharacterCounterFoundation = MDCTextFieldCharacterCounterFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTextFieldCharacterCounterFoundation; /***/ }), /***/ "./packages/mdc-textfield/character-counter/index.ts": /*!***********************************************************!*\ !*** ./packages/mdc-textfield/character-counter/index.ts ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-textfield/character-counter/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/character-counter/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/character-counter/constants.ts"); exports.characterCountCssClasses = constants_1.cssClasses; exports.characterCountStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-textfield/component.ts": /*!*********************************************!*\ !*** ./packages/mdc-textfield/component.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __importStar = this && this.__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; }result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var events_1 = __webpack_require__(/*! @material/dom/events */ "./packages/mdc-dom/events.ts"); var ponyfill = __importStar(__webpack_require__(/*! @material/dom/ponyfill */ "./packages/mdc-dom/ponyfill.ts")); var component_2 = __webpack_require__(/*! @material/floating-label/component */ "./packages/mdc-floating-label/component.ts"); var component_3 = __webpack_require__(/*! @material/line-ripple/component */ "./packages/mdc-line-ripple/component.ts"); var component_4 = __webpack_require__(/*! @material/notched-outline/component */ "./packages/mdc-notched-outline/component.ts"); var component_5 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var foundation_1 = __webpack_require__(/*! @material/ripple/foundation */ "./packages/mdc-ripple/foundation.ts"); var component_6 = __webpack_require__(/*! ./character-counter/component */ "./packages/mdc-textfield/character-counter/component.ts"); var foundation_2 = __webpack_require__(/*! ./character-counter/foundation */ "./packages/mdc-textfield/character-counter/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/constants.ts"); var foundation_3 = __webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/foundation.ts"); var component_7 = __webpack_require__(/*! ./helper-text/component */ "./packages/mdc-textfield/helper-text/component.ts"); var foundation_4 = __webpack_require__(/*! ./helper-text/foundation */ "./packages/mdc-textfield/helper-text/foundation.ts"); var component_8 = __webpack_require__(/*! ./icon/component */ "./packages/mdc-textfield/icon/component.ts"); var MDCTextField = /** @class */function (_super) { __extends(MDCTextField, _super); function MDCTextField() { return _super !== null && _super.apply(this, arguments) || this; } MDCTextField.attachTo = function (root) { return new MDCTextField(root); }; MDCTextField.prototype.initialize = function (rippleFactory, lineRippleFactory, helperTextFactory, characterCounterFactory, iconFactory, labelFactory, outlineFactory) { if (rippleFactory === void 0) { rippleFactory = function rippleFactory(el, foundation) { return new component_5.MDCRipple(el, foundation); }; } if (lineRippleFactory === void 0) { lineRippleFactory = function lineRippleFactory(el) { return new component_3.MDCLineRipple(el); }; } if (helperTextFactory === void 0) { helperTextFactory = function helperTextFactory(el) { return new component_7.MDCTextFieldHelperText(el); }; } if (characterCounterFactory === void 0) { characterCounterFactory = function characterCounterFactory(el) { return new component_6.MDCTextFieldCharacterCounter(el); }; } if (iconFactory === void 0) { iconFactory = function iconFactory(el) { return new component_8.MDCTextFieldIcon(el); }; } if (labelFactory === void 0) { labelFactory = function labelFactory(el) { return new component_2.MDCFloatingLabel(el); }; } if (outlineFactory === void 0) { outlineFactory = function outlineFactory(el) { return new component_4.MDCNotchedOutline(el); }; } this.input_ = this.root_.querySelector(constants_1.strings.INPUT_SELECTOR); var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR); this.label_ = labelElement ? labelFactory(labelElement) : null; var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR); this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null; var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR); this.outline_ = outlineElement ? outlineFactory(outlineElement) : null; // Helper text var helperTextStrings = foundation_4.MDCTextFieldHelperTextFoundation.strings; var nextElementSibling = this.root_.nextElementSibling; var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(constants_1.cssClasses.HELPER_LINE); var helperTextEl = hasHelperLine && nextElementSibling && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR); this.helperText_ = helperTextEl ? helperTextFactory(helperTextEl) : null; // Character counter var characterCounterStrings = foundation_2.MDCTextFieldCharacterCounterFoundation.strings; var characterCounterEl = this.root_.querySelector(characterCounterStrings.ROOT_SELECTOR); // If character counter is not found in root element search in sibling element. if (!characterCounterEl && hasHelperLine && nextElementSibling) { characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR); } this.characterCounter_ = characterCounterEl ? characterCounterFactory(characterCounterEl) : null; this.leadingIcon_ = null; this.trailingIcon_ = null; var iconElements = this.root_.querySelectorAll(constants_1.strings.ICON_SELECTOR); if (iconElements.length > 0) { if (iconElements.length > 1) { // Has both icons. this.leadingIcon_ = iconFactory(iconElements[0]); this.trailingIcon_ = iconFactory(iconElements[1]); } else { if (this.root_.classList.contains(constants_1.cssClasses.WITH_LEADING_ICON)) { this.leadingIcon_ = iconFactory(iconElements[0]); } else { this.trailingIcon_ = iconFactory(iconElements[0]); } } } this.ripple = this.createRipple_(rippleFactory); }; MDCTextField.prototype.destroy = function () { if (this.ripple) { this.ripple.destroy(); } if (this.lineRipple_) { this.lineRipple_.destroy(); } if (this.helperText_) { this.helperText_.destroy(); } if (this.characterCounter_) { this.characterCounter_.destroy(); } if (this.leadingIcon_) { this.leadingIcon_.destroy(); } if (this.trailingIcon_) { this.trailingIcon_.destroy(); } if (this.label_) { this.label_.destroy(); } if (this.outline_) { this.outline_.destroy(); } _super.prototype.destroy.call(this); }; /** * Initializes the Text Field's internal state based on the environment's * state. */ MDCTextField.prototype.initialSyncWithDOM = function () { this.disabled = this.input_.disabled; }; Object.defineProperty(MDCTextField.prototype, "value", { get: function get() { return this.foundation_.getValue(); }, /** * @param value The value to set on the input. */ set: function set(value) { this.foundation_.setValue(value); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "disabled", { get: function get() { return this.foundation_.isDisabled(); }, /** * @param disabled Sets the Text Field disabled or enabled. */ set: function set(disabled) { this.foundation_.setDisabled(disabled); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "valid", { get: function get() { return this.foundation_.isValid(); }, /** * @param valid Sets the Text Field valid or invalid. */ set: function set(valid) { this.foundation_.setValid(valid); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "required", { get: function get() { return this.input_.required; }, /** * @param required Sets the Text Field to required. */ set: function set(required) { this.input_.required = required; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "pattern", { get: function get() { return this.input_.pattern; }, /** * @param pattern Sets the input element's validation pattern. */ set: function set(pattern) { this.input_.pattern = pattern; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "minLength", { get: function get() { return this.input_.minLength; }, /** * @param minLength Sets the input element's minLength. */ set: function set(minLength) { this.input_.minLength = minLength; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "maxLength", { get: function get() { return this.input_.maxLength; }, /** * @param maxLength Sets the input element's maxLength. */ set: function set(maxLength) { // Chrome throws exception if maxLength is set to a value less than zero if (maxLength < 0) { this.input_.removeAttribute('maxLength'); } else { this.input_.maxLength = maxLength; } }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "min", { get: function get() { return this.input_.min; }, /** * @param min Sets the input element's min. */ set: function set(min) { this.input_.min = min; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "max", { get: function get() { return this.input_.max; }, /** * @param max Sets the input element's max. */ set: function set(max) { this.input_.max = max; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "step", { get: function get() { return this.input_.step; }, /** * @param step Sets the input element's step. */ set: function set(step) { this.input_.step = step; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "helperTextContent", { /** * Sets the helper text element content. */ set: function set(content) { this.foundation_.setHelperTextContent(content); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "leadingIconAriaLabel", { /** * Sets the aria label of the leading icon. */ set: function set(label) { this.foundation_.setLeadingIconAriaLabel(label); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "leadingIconContent", { /** * Sets the text content of the leading icon. */ set: function set(content) { this.foundation_.setLeadingIconContent(content); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "trailingIconAriaLabel", { /** * Sets the aria label of the trailing icon. */ set: function set(label) { this.foundation_.setTrailingIconAriaLabel(label); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "trailingIconContent", { /** * Sets the text content of the trailing icon. */ set: function set(content) { this.foundation_.setTrailingIconContent(content); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextField.prototype, "useNativeValidation", { /** * Enables or disables the use of native validation. Use this for custom validation. * @param useNativeValidation Set this to false to ignore native input validation. */ set: function set(useNativeValidation) { this.foundation_.setUseNativeValidation(useNativeValidation); }, enumerable: true, configurable: true }); /** * Focuses the input element. */ MDCTextField.prototype.focus = function () { this.input_.focus(); }; /** * Recomputes the outline SVG path for the outline element. */ MDCTextField.prototype.layout = function () { var openNotch = this.foundation_.shouldFloat; this.foundation_.notchOutline(openNotch); }; MDCTextField.prototype.getDefaultFoundation = function () { // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = __assign({}, this.getRootAdapterMethods_(), this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_()); // tslint:enable:object-literal-sort-keys return new foundation_3.MDCTextFieldFoundation(adapter, this.getFoundationMap_()); }; MDCTextField.prototype.getRootAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) { return _this.listen(evtType, handler); }, deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) { return _this.unlisten(evtType, handler); }, registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler(handler) { var getAttributesList = function getAttributesList(mutationsList) { return mutationsList.map(function (mutation) { return mutation.attributeName; }).filter(function (attributeName) { return attributeName; }); }; var observer = new MutationObserver(function (mutationsList) { return handler(getAttributesList(mutationsList)); }); var config = { attributes: true }; observer.observe(_this.input_, config); return observer; }, deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) { return observer.disconnect(); } }; // tslint:enable:object-literal-sort-keys }; MDCTextField.prototype.getInputAdapterMethods_ = function () { var _this = this; // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { getNativeInput: function getNativeInput() { return _this.input_; }, isFocused: function isFocused() { return document.activeElement === _this.input_; }, registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) { return _this.input_.addEventListener(evtType, handler, events_1.applyPassive()); }, deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) { return _this.input_.removeEventListener(evtType, handler, events_1.applyPassive()); } }; // tslint:enable:object-literal-sort-keys }; MDCTextField.prototype.getLabelAdapterMethods_ = function () { var _this = this; return { floatLabel: function floatLabel(shouldFloat) { return _this.label_ && _this.label_.float(shouldFloat); }, getLabelWidth: function getLabelWidth() { return _this.label_ ? _this.label_.getWidth() : 0; }, hasLabel: function hasLabel() { return Boolean(_this.label_); }, shakeLabel: function shakeLabel(shouldShake) { return _this.label_ && _this.label_.shake(shouldShake); } }; }; MDCTextField.prototype.getLineRippleAdapterMethods_ = function () { var _this = this; return { activateLineRipple: function activateLineRipple() { if (_this.lineRipple_) { _this.lineRipple_.activate(); } }, deactivateLineRipple: function deactivateLineRipple() { if (_this.lineRipple_) { _this.lineRipple_.deactivate(); } }, setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) { if (_this.lineRipple_) { _this.lineRipple_.setRippleCenter(normalizedX); } } }; }; MDCTextField.prototype.getOutlineAdapterMethods_ = function () { var _this = this; return { closeOutline: function closeOutline() { return _this.outline_ && _this.outline_.closeNotch(); }, hasOutline: function hasOutline() { return Boolean(_this.outline_); }, notchOutline: function notchOutline(labelWidth) { return _this.outline_ && _this.outline_.notch(labelWidth); } }; }; /** * @return A map of all subcomponents to subfoundations. */ MDCTextField.prototype.getFoundationMap_ = function () { return { characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined, helperText: this.helperText_ ? this.helperText_.foundation : undefined, leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined, trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined }; }; MDCTextField.prototype.createRipple_ = function (rippleFactory) { var _this = this; var isTextArea = this.root_.classList.contains(constants_1.cssClasses.TEXTAREA); var isOutlined = this.root_.classList.contains(constants_1.cssClasses.OUTLINED); if (isTextArea || isOutlined) { return null; } // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = __assign({}, component_5.MDCRipple.createAdapter(this), { isSurfaceActive: function isSurfaceActive() { return ponyfill.matches(_this.input_, ':active'); }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.input_.addEventListener(evtType, handler, events_1.applyPassive()); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.input_.removeEventListener(evtType, handler, events_1.applyPassive()); } }); // tslint:enable:object-literal-sort-keys return rippleFactory(this.root_, new foundation_1.MDCRippleFoundation(adapter)); }; return MDCTextField; }(component_1.MDCComponent); exports.MDCTextField = MDCTextField; /***/ }), /***/ "./packages/mdc-textfield/constants.ts": /*!*********************************************!*\ !*** ./packages/mdc-textfield/constants.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { ARIA_CONTROLS: 'aria-controls', ICON_SELECTOR: '.mdc-text-field__icon', INPUT_SELECTOR: '.mdc-text-field__input', LABEL_SELECTOR: '.mdc-floating-label', LINE_RIPPLE_SELECTOR: '.mdc-line-ripple', OUTLINE_SELECTOR: '.mdc-notched-outline' }; exports.strings = strings; var cssClasses = { DENSE: 'mdc-text-field--dense', DISABLED: 'mdc-text-field--disabled', FOCUSED: 'mdc-text-field--focused', FULLWIDTH: 'mdc-text-field--fullwidth', HELPER_LINE: 'mdc-text-field-helper-line', INVALID: 'mdc-text-field--invalid', NO_LABEL: 'mdc-text-field--no-label', OUTLINED: 'mdc-text-field--outlined', ROOT: 'mdc-text-field', TEXTAREA: 'mdc-text-field--textarea', WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon', WITH_TRAILING_ICON: 'mdc-text-field--with-trailing-icon' }; exports.cssClasses = cssClasses; var numbers = { DENSE_LABEL_SCALE: 0.923, LABEL_SCALE: 0.75 }; exports.numbers = numbers; /** * Whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation * under the "Validation-related attributes" section. */ var VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength']; exports.VALIDATION_ATTR_WHITELIST = VALIDATION_ATTR_WHITELIST; /** * Label should always float for these types as they show some UI even if value is empty. */ var ALWAYS_FLOAT_TYPES = ['color', 'date', 'datetime-local', 'month', 'range', 'time', 'week']; exports.ALWAYS_FLOAT_TYPES = ALWAYS_FLOAT_TYPES; /***/ }), /***/ "./packages/mdc-textfield/foundation.ts": /*!**********************************************!*\ !*** ./packages/mdc-textfield/foundation.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/constants.ts"); var POINTERDOWN_EVENTS = ['mousedown', 'touchstart']; var INTERACTION_EVENTS = ['click', 'keydown']; var MDCTextFieldFoundation = /** @class */function (_super) { __extends(MDCTextFieldFoundation, _super); /** * @param adapter * @param foundationMap Map from subcomponent names to their subfoundations. */ function MDCTextFieldFoundation(adapter, foundationMap) { if (foundationMap === void 0) { foundationMap = {}; } var _this = _super.call(this, __assign({}, MDCTextFieldFoundation.defaultAdapter, adapter)) || this; _this.isFocused_ = false; _this.receivedUserInput_ = false; _this.isValid_ = true; _this.useNativeValidation_ = true; _this.helperText_ = foundationMap.helperText; _this.characterCounter_ = foundationMap.characterCounter; _this.leadingIcon_ = foundationMap.leadingIcon; _this.trailingIcon_ = foundationMap.trailingIcon; _this.inputFocusHandler_ = function () { return _this.activateFocus(); }; _this.inputBlurHandler_ = function () { return _this.deactivateFocus(); }; _this.inputInputHandler_ = function () { return _this.handleInput(); }; _this.setPointerXOffset_ = function (evt) { return _this.setTransformOrigin(evt); }; _this.textFieldInteractionHandler_ = function () { return _this.handleTextFieldInteraction(); }; _this.validationAttributeChangeHandler_ = function (attributesList) { return _this.handleValidationAttributeChange(attributesList); }; return _this; } Object.defineProperty(MDCTextFieldFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldAlwaysFloat_", { get: function get() { var type = this.getNativeInput_().type; return constants_1.ALWAYS_FLOAT_TYPES.indexOf(type) >= 0; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldFloat", { get: function get() { return this.shouldAlwaysFloat_ || this.isFocused_ || Boolean(this.getValue()) || this.isBadInput_(); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldShake", { get: function get() { return !this.isFocused_ && !this.isValid() && Boolean(this.getValue()); }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldFoundation, "defaultAdapter", { /** * See {@link MDCTextFieldAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return true; }, registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() { return undefined; }, deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() { return undefined; }, registerInputInteractionHandler: function registerInputInteractionHandler() { return undefined; }, deregisterInputInteractionHandler: function deregisterInputInteractionHandler() { return undefined; }, registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() { return new MutationObserver(function () { return undefined; }); }, deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() { return undefined; }, getNativeInput: function getNativeInput() { return null; }, isFocused: function isFocused() { return false; }, activateLineRipple: function activateLineRipple() { return undefined; }, deactivateLineRipple: function deactivateLineRipple() { return undefined; }, setLineRippleTransformOrigin: function setLineRippleTransformOrigin() { return undefined; }, shakeLabel: function shakeLabel() { return undefined; }, floatLabel: function floatLabel() { return undefined; }, hasLabel: function hasLabel() { return false; }, getLabelWidth: function getLabelWidth() { return 0; }, hasOutline: function hasOutline() { return false; }, notchOutline: function notchOutline() { return undefined; }, closeOutline: function closeOutline() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCTextFieldFoundation.prototype.init = function () { var _this = this; if (this.adapter_.isFocused()) { this.inputFocusHandler_(); } else if (this.adapter_.hasLabel() && this.shouldFloat) { this.notchOutline(true); this.adapter_.floatLabel(true); } this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_); this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_); this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_); POINTERDOWN_EVENTS.forEach(function (evtType) { _this.adapter_.registerInputInteractionHandler(evtType, _this.setPointerXOffset_); }); INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.registerTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_); }); this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_); this.setCharacterCounter_(this.getValue().length); }; MDCTextFieldFoundation.prototype.destroy = function () { var _this = this; this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_); this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_); this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_); POINTERDOWN_EVENTS.forEach(function (evtType) { _this.adapter_.deregisterInputInteractionHandler(evtType, _this.setPointerXOffset_); }); INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.deregisterTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_); }); this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_); }; /** * Handles user interactions with the Text Field. */ MDCTextFieldFoundation.prototype.handleTextFieldInteraction = function () { var nativeInput = this.adapter_.getNativeInput(); if (nativeInput && nativeInput.disabled) { return; } this.receivedUserInput_ = true; }; /** * Handles validation attribute changes */ MDCTextFieldFoundation.prototype.handleValidationAttributeChange = function (attributesList) { var _this = this; attributesList.some(function (attributeName) { if (constants_1.VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) { _this.styleValidity_(true); return true; } return false; }); if (attributesList.indexOf('maxlength') > -1) { this.setCharacterCounter_(this.getValue().length); } }; /** * Opens/closes the notched outline. */ MDCTextFieldFoundation.prototype.notchOutline = function (openNotch) { if (!this.adapter_.hasOutline()) { return; } if (openNotch) { var isDense = this.adapter_.hasClass(constants_1.cssClasses.DENSE); var labelScale = isDense ? constants_1.numbers.DENSE_LABEL_SCALE : constants_1.numbers.LABEL_SCALE; var labelWidth = this.adapter_.getLabelWidth() * labelScale; this.adapter_.notchOutline(labelWidth); } else { this.adapter_.closeOutline(); } }; /** * Activates the text field focus state. */ MDCTextFieldFoundation.prototype.activateFocus = function () { this.isFocused_ = true; this.styleFocused_(this.isFocused_); this.adapter_.activateLineRipple(); if (this.adapter_.hasLabel()) { this.notchOutline(this.shouldFloat); this.adapter_.floatLabel(this.shouldFloat); this.adapter_.shakeLabel(this.shouldShake); } if (this.helperText_) { this.helperText_.showToScreenReader(); } }; /** * Sets the line ripple's transform origin, so that the line ripple activate * animation will animate out from the user's click location. */ MDCTextFieldFoundation.prototype.setTransformOrigin = function (evt) { var touches = evt.touches; var targetEvent = touches ? touches[0] : evt; var targetClientRect = targetEvent.target.getBoundingClientRect(); var normalizedX = targetEvent.clientX - targetClientRect.left; this.adapter_.setLineRippleTransformOrigin(normalizedX); }; /** * Handles input change of text input and text area. */ MDCTextFieldFoundation.prototype.handleInput = function () { this.autoCompleteFocus(); this.setCharacterCounter_(this.getValue().length); }; /** * Activates the Text Field's focus state in cases when the input value * changes without user input (e.g. programmatically). */ MDCTextFieldFoundation.prototype.autoCompleteFocus = function () { if (!this.receivedUserInput_) { this.activateFocus(); } }; /** * Deactivates the Text Field's focus state. */ MDCTextFieldFoundation.prototype.deactivateFocus = function () { this.isFocused_ = false; this.adapter_.deactivateLineRipple(); var isValid = this.isValid(); this.styleValidity_(isValid); this.styleFocused_(this.isFocused_); if (this.adapter_.hasLabel()) { this.notchOutline(this.shouldFloat); this.adapter_.floatLabel(this.shouldFloat); this.adapter_.shakeLabel(this.shouldShake); } if (!this.shouldFloat) { this.receivedUserInput_ = false; } }; MDCTextFieldFoundation.prototype.getValue = function () { return this.getNativeInput_().value; }; /** * @param value The value to set on the input Element. */ MDCTextFieldFoundation.prototype.setValue = function (value) { // Prevent Safari from moving the caret to the end of the input when the value has not changed. if (this.getValue() !== value) { this.getNativeInput_().value = value; } this.setCharacterCounter_(value.length); var isValid = this.isValid(); this.styleValidity_(isValid); if (this.adapter_.hasLabel()) { this.notchOutline(this.shouldFloat); this.adapter_.floatLabel(this.shouldFloat); this.adapter_.shakeLabel(this.shouldShake); } }; /** * @return The custom validity state, if set; otherwise, the result of a native validity check. */ MDCTextFieldFoundation.prototype.isValid = function () { return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_; }; /** * @param isValid Sets the custom validity state of the Text Field. */ MDCTextFieldFoundation.prototype.setValid = function (isValid) { this.isValid_ = isValid; this.styleValidity_(isValid); var shouldShake = !isValid && !this.isFocused_; if (this.adapter_.hasLabel()) { this.adapter_.shakeLabel(shouldShake); } }; /** * Enables or disables the use of native validation. Use this for custom validation. * @param useNativeValidation Set this to false to ignore native input validation. */ MDCTextFieldFoundation.prototype.setUseNativeValidation = function (useNativeValidation) { this.useNativeValidation_ = useNativeValidation; }; MDCTextFieldFoundation.prototype.isDisabled = function () { return this.getNativeInput_().disabled; }; /** * @param disabled Sets the text-field disabled or enabled. */ MDCTextFieldFoundation.prototype.setDisabled = function (disabled) { this.getNativeInput_().disabled = disabled; this.styleDisabled_(disabled); }; /** * @param content Sets the content of the helper text. */ MDCTextFieldFoundation.prototype.setHelperTextContent = function (content) { if (this.helperText_) { this.helperText_.setContent(content); } }; /** * Sets the aria label of the leading icon. */ MDCTextFieldFoundation.prototype.setLeadingIconAriaLabel = function (label) { if (this.leadingIcon_) { this.leadingIcon_.setAriaLabel(label); } }; /** * Sets the text content of the leading icon. */ MDCTextFieldFoundation.prototype.setLeadingIconContent = function (content) { if (this.leadingIcon_) { this.leadingIcon_.setContent(content); } }; /** * Sets the aria label of the trailing icon. */ MDCTextFieldFoundation.prototype.setTrailingIconAriaLabel = function (label) { if (this.trailingIcon_) { this.trailingIcon_.setAriaLabel(label); } }; /** * Sets the text content of the trailing icon. */ MDCTextFieldFoundation.prototype.setTrailingIconContent = function (content) { if (this.trailingIcon_) { this.trailingIcon_.setContent(content); } }; /** * Sets character counter values that shows characters used and the total character limit. */ MDCTextFieldFoundation.prototype.setCharacterCounter_ = function (currentLength) { if (!this.characterCounter_) { return; } var maxLength = this.getNativeInput_().maxLength; if (maxLength === -1) { throw new Error('MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.'); } this.characterCounter_.setCounterValue(currentLength, maxLength); }; /** * @return True if the Text Field input fails in converting the user-supplied value. */ MDCTextFieldFoundation.prototype.isBadInput_ = function () { // The badInput property is not supported in IE 11 💩. return this.getNativeInput_().validity.badInput || false; }; /** * @return The result of native validity checking (ValidityState.valid). */ MDCTextFieldFoundation.prototype.isNativeInputValid_ = function () { return this.getNativeInput_().validity.valid; }; /** * Styles the component based on the validity state. */ MDCTextFieldFoundation.prototype.styleValidity_ = function (isValid) { var INVALID = MDCTextFieldFoundation.cssClasses.INVALID; if (isValid) { this.adapter_.removeClass(INVALID); } else { this.adapter_.addClass(INVALID); } if (this.helperText_) { this.helperText_.setValidity(isValid); } }; /** * Styles the component based on the focused state. */ MDCTextFieldFoundation.prototype.styleFocused_ = function (isFocused) { var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED; if (isFocused) { this.adapter_.addClass(FOCUSED); } else { this.adapter_.removeClass(FOCUSED); } }; /** * Styles the component based on the disabled state. */ MDCTextFieldFoundation.prototype.styleDisabled_ = function (isDisabled) { var _a = MDCTextFieldFoundation.cssClasses, DISABLED = _a.DISABLED, INVALID = _a.INVALID; if (isDisabled) { this.adapter_.addClass(DISABLED); this.adapter_.removeClass(INVALID); } else { this.adapter_.removeClass(DISABLED); } if (this.leadingIcon_) { this.leadingIcon_.setDisabled(isDisabled); } if (this.trailingIcon_) { this.trailingIcon_.setDisabled(isDisabled); } }; /** * @return The native text input element from the host environment, or an object with the same shape for unit tests. */ MDCTextFieldFoundation.prototype.getNativeInput_ = function () { // this.adapter_ may be undefined in foundation unit tests. This happens when testdouble is creating a mock object // and invokes the shouldShake/shouldFloat getters (which in turn call getValue(), which calls this method) before // init() has been called from the MDCTextField constructor. To work around that issue, we return a dummy object. var nativeInput = this.adapter_ ? this.adapter_.getNativeInput() : null; return nativeInput || { disabled: false, maxLength: -1, type: 'input', validity: { badInput: false, valid: true }, value: '' }; }; return MDCTextFieldFoundation; }(foundation_1.MDCFoundation); exports.MDCTextFieldFoundation = MDCTextFieldFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTextFieldFoundation; /***/ }), /***/ "./packages/mdc-textfield/helper-text/component.ts": /*!*********************************************************!*\ !*** ./packages/mdc-textfield/helper-text/component.ts ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/helper-text/foundation.ts"); var MDCTextFieldHelperText = /** @class */function (_super) { __extends(MDCTextFieldHelperText, _super); function MDCTextFieldHelperText() { return _super !== null && _super.apply(this, arguments) || this; } MDCTextFieldHelperText.attachTo = function (root) { return new MDCTextFieldHelperText(root); }; Object.defineProperty(MDCTextFieldHelperText.prototype, "foundation", { get: function get() { return this.foundation_; }, enumerable: true, configurable: true }); MDCTextFieldHelperText.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, removeAttr: function removeAttr(attr) { return _this.root_.removeAttribute(attr); }, setContent: function setContent(content) { _this.root_.textContent = content; } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCTextFieldHelperTextFoundation(adapter); }; return MDCTextFieldHelperText; }(component_1.MDCComponent); exports.MDCTextFieldHelperText = MDCTextFieldHelperText; /***/ }), /***/ "./packages/mdc-textfield/helper-text/constants.ts": /*!*********************************************************!*\ !*** ./packages/mdc-textfield/helper-text/constants.ts ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent', HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg', ROOT: 'mdc-text-field-helper-text' }; exports.cssClasses = cssClasses; var strings = { ARIA_HIDDEN: 'aria-hidden', ROLE: 'role', ROOT_SELECTOR: "." + cssClasses.ROOT }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-textfield/helper-text/foundation.ts": /*!**********************************************************!*\ !*** ./packages/mdc-textfield/helper-text/foundation.ts ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/helper-text/constants.ts"); var MDCTextFieldHelperTextFoundation = /** @class */function (_super) { __extends(MDCTextFieldHelperTextFoundation, _super); function MDCTextFieldHelperTextFoundation(adapter) { return _super.call(this, __assign({}, MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCTextFieldHelperTextFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldHelperTextFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldHelperTextFoundation, "defaultAdapter", { /** * See {@link MDCTextFieldHelperTextAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, setAttr: function setAttr() { return undefined; }, removeAttr: function removeAttr() { return undefined; }, setContent: function setContent() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); /** * Sets the content of the helper text field. */ MDCTextFieldHelperTextFoundation.prototype.setContent = function (content) { this.adapter_.setContent(content); }; /** * @param isPersistent Sets the persistency of the helper text. */ MDCTextFieldHelperTextFoundation.prototype.setPersistent = function (isPersistent) { if (isPersistent) { this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); } else { this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); } }; /** * @param isValidation True to make the helper text act as an error validation message. */ MDCTextFieldHelperTextFoundation.prototype.setValidation = function (isValidation) { if (isValidation) { this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); } else { this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); } }; /** * Makes the helper text visible to the screen reader. */ MDCTextFieldHelperTextFoundation.prototype.showToScreenReader = function () { this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN); }; /** * Sets the validity of the helper text based on the input validity. */ MDCTextFieldHelperTextFoundation.prototype.setValidity = function (inputIsValid) { var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT); var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG); var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid; if (validationMsgNeedsDisplay) { this.adapter_.setAttr(constants_1.strings.ROLE, 'alert'); } else { this.adapter_.removeAttr(constants_1.strings.ROLE); } if (!helperTextIsPersistent && !validationMsgNeedsDisplay) { this.hide_(); } }; /** * Hides the help text from screen readers. */ MDCTextFieldHelperTextFoundation.prototype.hide_ = function () { this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, 'true'); }; return MDCTextFieldHelperTextFoundation; }(foundation_1.MDCFoundation); exports.MDCTextFieldHelperTextFoundation = MDCTextFieldHelperTextFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTextFieldHelperTextFoundation; /***/ }), /***/ "./packages/mdc-textfield/helper-text/index.ts": /*!*****************************************************!*\ !*** ./packages/mdc-textfield/helper-text/index.ts ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-textfield/helper-text/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/helper-text/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/helper-text/constants.ts"); exports.helperTextCssClasses = constants_1.cssClasses; exports.helperTextStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-textfield/icon/component.ts": /*!**************************************************!*\ !*** ./packages/mdc-textfield/icon/component.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var foundation_1 = __webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/icon/foundation.ts"); var MDCTextFieldIcon = /** @class */function (_super) { __extends(MDCTextFieldIcon, _super); function MDCTextFieldIcon() { return _super !== null && _super.apply(this, arguments) || this; } MDCTextFieldIcon.attachTo = function (root) { return new MDCTextFieldIcon(root); }; Object.defineProperty(MDCTextFieldIcon.prototype, "foundation", { get: function get() { return this.foundation_; }, enumerable: true, configurable: true }); MDCTextFieldIcon.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { getAttr: function getAttr(attr) { return _this.root_.getAttribute(attr); }, setAttr: function setAttr(attr, value) { return _this.root_.setAttribute(attr, value); }, removeAttr: function removeAttr(attr) { return _this.root_.removeAttribute(attr); }, setContent: function setContent(content) { _this.root_.textContent = content; }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) { return _this.listen(evtType, handler); }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) { return _this.unlisten(evtType, handler); }, notifyIconAction: function notifyIconAction() { return _this.emit(foundation_1.MDCTextFieldIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */); } }; // tslint:enable:object-literal-sort-keys return new foundation_1.MDCTextFieldIconFoundation(adapter); }; return MDCTextFieldIcon; }(component_1.MDCComponent); exports.MDCTextFieldIcon = MDCTextFieldIcon; /***/ }), /***/ "./packages/mdc-textfield/icon/constants.ts": /*!**************************************************!*\ !*** ./packages/mdc-textfield/icon/constants.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2016 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var strings = { ICON_EVENT: 'MDCTextField:icon', ICON_ROLE: 'button' }; exports.strings = strings; var cssClasses = { ROOT: 'mdc-text-field__icon' }; exports.cssClasses = cssClasses; /***/ }), /***/ "./packages/mdc-textfield/icon/foundation.ts": /*!***************************************************!*\ !*** ./packages/mdc-textfield/icon/foundation.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2017 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/icon/constants.ts"); var INTERACTION_EVENTS = ['click', 'keydown']; var MDCTextFieldIconFoundation = /** @class */function (_super) { __extends(MDCTextFieldIconFoundation, _super); function MDCTextFieldIconFoundation(adapter) { var _this = _super.call(this, __assign({}, MDCTextFieldIconFoundation.defaultAdapter, adapter)) || this; _this.savedTabIndex_ = null; _this.interactionHandler_ = function (evt) { return _this.handleInteraction(evt); }; return _this; } Object.defineProperty(MDCTextFieldIconFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldIconFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTextFieldIconFoundation, "defaultAdapter", { /** * See {@link MDCTextFieldIconAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { getAttr: function getAttr() { return null; }, setAttr: function setAttr() { return undefined; }, removeAttr: function removeAttr() { return undefined; }, setContent: function setContent() { return undefined; }, registerInteractionHandler: function registerInteractionHandler() { return undefined; }, deregisterInteractionHandler: function deregisterInteractionHandler() { return undefined; }, notifyIconAction: function notifyIconAction() { return undefined; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); MDCTextFieldIconFoundation.prototype.init = function () { var _this = this; this.savedTabIndex_ = this.adapter_.getAttr('tabindex'); INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_); }); }; MDCTextFieldIconFoundation.prototype.destroy = function () { var _this = this; INTERACTION_EVENTS.forEach(function (evtType) { _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_); }); }; MDCTextFieldIconFoundation.prototype.setDisabled = function (disabled) { if (!this.savedTabIndex_) { return; } if (disabled) { this.adapter_.setAttr('tabindex', '-1'); this.adapter_.removeAttr('role'); } else { this.adapter_.setAttr('tabindex', this.savedTabIndex_); this.adapter_.setAttr('role', constants_1.strings.ICON_ROLE); } }; MDCTextFieldIconFoundation.prototype.setAriaLabel = function (label) { this.adapter_.setAttr('aria-label', label); }; MDCTextFieldIconFoundation.prototype.setContent = function (content) { this.adapter_.setContent(content); }; MDCTextFieldIconFoundation.prototype.handleInteraction = function (evt) { var isEnterKey = evt.key === 'Enter' || evt.keyCode === 13; if (evt.type === 'click' || isEnterKey) { this.adapter_.notifyIconAction(); } }; return MDCTextFieldIconFoundation; }(foundation_1.MDCFoundation); exports.MDCTextFieldIconFoundation = MDCTextFieldIconFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTextFieldIconFoundation; /***/ }), /***/ "./packages/mdc-textfield/icon/index.ts": /*!**********************************************!*\ !*** ./packages/mdc-textfield/icon/index.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-textfield/icon/component.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/icon/foundation.ts")); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-textfield/icon/constants.ts"); exports.iconCssClasses = constants_1.cssClasses; exports.iconStrings = constants_1.strings; /***/ }), /***/ "./packages/mdc-textfield/index.ts": /*!*****************************************!*\ !*** ./packages/mdc-textfield/index.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-textfield/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-textfield/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-textfield/foundation.ts")); __export(__webpack_require__(/*! ./character-counter/index */ "./packages/mdc-textfield/character-counter/index.ts")); __export(__webpack_require__(/*! ./helper-text/index */ "./packages/mdc-textfield/helper-text/index.ts")); __export(__webpack_require__(/*! ./icon/index */ "./packages/mdc-textfield/icon/index.ts")); /***/ }), /***/ "./packages/mdc-top-app-bar/component.ts": /*!***********************************************!*\ !*** ./packages/mdc-top-app-bar/component.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = __webpack_require__(/*! @material/base/component */ "./packages/mdc-base/component.ts"); var component_2 = __webpack_require__(/*! @material/ripple/component */ "./packages/mdc-ripple/component.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-top-app-bar/constants.ts"); var foundation_1 = __webpack_require__(/*! ./fixed/foundation */ "./packages/mdc-top-app-bar/fixed/foundation.ts"); var foundation_2 = __webpack_require__(/*! ./short/foundation */ "./packages/mdc-top-app-bar/short/foundation.ts"); var foundation_3 = __webpack_require__(/*! ./standard/foundation */ "./packages/mdc-top-app-bar/standard/foundation.ts"); var MDCTopAppBar = /** @class */function (_super) { __extends(MDCTopAppBar, _super); function MDCTopAppBar() { return _super !== null && _super.apply(this, arguments) || this; } MDCTopAppBar.attachTo = function (root) { return new MDCTopAppBar(root); }; MDCTopAppBar.prototype.initialize = function (rippleFactory) { if (rippleFactory === void 0) { rippleFactory = function rippleFactory(el) { return component_2.MDCRipple.attachTo(el); }; } this.navIcon_ = this.root_.querySelector(constants_1.strings.NAVIGATION_ICON_SELECTOR); // Get all icons in the toolbar and instantiate the ripples var icons = [].slice.call(this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR)); if (this.navIcon_) { icons.push(this.navIcon_); } this.iconRipples_ = icons.map(function (icon) { var ripple = rippleFactory(icon); ripple.unbounded = true; return ripple; }); this.scrollTarget_ = window; }; MDCTopAppBar.prototype.initialSyncWithDOM = function () { this.handleNavigationClick_ = this.foundation_.handleNavigationClick.bind(this.foundation_); this.handleWindowResize_ = this.foundation_.handleWindowResize.bind(this.foundation_); this.handleTargetScroll_ = this.foundation_.handleTargetScroll.bind(this.foundation_); this.scrollTarget_.addEventListener('scroll', this.handleTargetScroll_); if (this.navIcon_) { this.navIcon_.addEventListener('click', this.handleNavigationClick_); } var isFixed = this.root_.classList.contains(constants_1.cssClasses.FIXED_CLASS); var isShort = this.root_.classList.contains(constants_1.cssClasses.SHORT_CLASS); if (!isShort && !isFixed) { window.addEventListener('resize', this.handleWindowResize_); } }; MDCTopAppBar.prototype.destroy = function () { this.iconRipples_.forEach(function (iconRipple) { return iconRipple.destroy(); }); this.scrollTarget_.removeEventListener('scroll', this.handleTargetScroll_); if (this.navIcon_) { this.navIcon_.removeEventListener('click', this.handleNavigationClick_); } var isFixed = this.root_.classList.contains(constants_1.cssClasses.FIXED_CLASS); var isShort = this.root_.classList.contains(constants_1.cssClasses.SHORT_CLASS); if (!isShort && !isFixed) { window.removeEventListener('resize', this.handleWindowResize_); } _super.prototype.destroy.call(this); }; MDCTopAppBar.prototype.setScrollTarget = function (target) { // Remove scroll handler from the previous scroll target this.scrollTarget_.removeEventListener('scroll', this.handleTargetScroll_); this.scrollTarget_ = target; // Initialize scroll handler on the new scroll target this.handleTargetScroll_ = this.foundation_.handleTargetScroll.bind(this.foundation_); this.scrollTarget_.addEventListener('scroll', this.handleTargetScroll_); }; MDCTopAppBar.prototype.getDefaultFoundation = function () { var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable. // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. var adapter = { hasClass: function hasClass(className) { return _this.root_.classList.contains(className); }, addClass: function addClass(className) { return _this.root_.classList.add(className); }, removeClass: function removeClass(className) { return _this.root_.classList.remove(className); }, setStyle: function setStyle(property, value) { return _this.root_.style.setProperty(property, value); }, getTopAppBarHeight: function getTopAppBarHeight() { return _this.root_.clientHeight; }, notifyNavigationIconClicked: function notifyNavigationIconClicked() { return _this.emit(constants_1.strings.NAVIGATION_EVENT, {}); }, getViewportScrollY: function getViewportScrollY() { var win = _this.scrollTarget_; var el = _this.scrollTarget_; return win.pageYOffset !== undefined ? win.pageYOffset : el.scrollTop; }, getTotalActionItems: function getTotalActionItems() { return _this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR).length; } }; // tslint:enable:object-literal-sort-keys var foundation; if (this.root_.classList.contains(constants_1.cssClasses.SHORT_CLASS)) { foundation = new foundation_2.MDCShortTopAppBarFoundation(adapter); } else if (this.root_.classList.contains(constants_1.cssClasses.FIXED_CLASS)) { foundation = new foundation_1.MDCFixedTopAppBarFoundation(adapter); } else { foundation = new foundation_3.MDCTopAppBarFoundation(adapter); } return foundation; }; return MDCTopAppBar; }(component_1.MDCComponent); exports.MDCTopAppBar = MDCTopAppBar; /***/ }), /***/ "./packages/mdc-top-app-bar/constants.ts": /*!***********************************************!*\ !*** ./packages/mdc-top-app-bar/constants.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ Object.defineProperty(exports, "__esModule", { value: true }); var cssClasses = { FIXED_CLASS: 'mdc-top-app-bar--fixed', FIXED_SCROLLED_CLASS: 'mdc-top-app-bar--fixed-scrolled', SHORT_CLASS: 'mdc-top-app-bar--short', SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed', SHORT_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item' }; exports.cssClasses = cssClasses; var numbers = { DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100, MAX_TOP_APP_BAR_HEIGHT: 128 }; exports.numbers = numbers; var strings = { ACTION_ITEM_SELECTOR: '.mdc-top-app-bar__action-item', NAVIGATION_EVENT: 'MDCTopAppBar:nav', NAVIGATION_ICON_SELECTOR: '.mdc-top-app-bar__navigation-icon', ROOT_SELECTOR: '.mdc-top-app-bar', TITLE_SELECTOR: '.mdc-top-app-bar__title' }; exports.strings = strings; /***/ }), /***/ "./packages/mdc-top-app-bar/fixed/foundation.ts": /*!******************************************************!*\ !*** ./packages/mdc-top-app-bar/fixed/foundation.ts ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ../constants */ "./packages/mdc-top-app-bar/constants.ts"); var foundation_1 = __webpack_require__(/*! ../standard/foundation */ "./packages/mdc-top-app-bar/standard/foundation.ts"); var MDCFixedTopAppBarFoundation = /** @class */function (_super) { __extends(MDCFixedTopAppBarFoundation, _super); function MDCFixedTopAppBarFoundation() { var _this = _super !== null && _super.apply(this, arguments) || this; /** * State variable for the previous scroll iteration top app bar state */ _this.wasScrolled_ = false; return _this; } /** * Scroll handler for applying/removing the modifier class on the fixed top app bar. * @override */ MDCFixedTopAppBarFoundation.prototype.handleTargetScroll = function () { var currentScroll = this.adapter_.getViewportScrollY(); if (currentScroll <= 0) { if (this.wasScrolled_) { this.adapter_.removeClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS); this.wasScrolled_ = false; } } else { if (!this.wasScrolled_) { this.adapter_.addClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS); this.wasScrolled_ = true; } } }; return MDCFixedTopAppBarFoundation; }(foundation_1.MDCTopAppBarFoundation); exports.MDCFixedTopAppBarFoundation = MDCFixedTopAppBarFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCFixedTopAppBarFoundation; /***/ }), /***/ "./packages/mdc-top-app-bar/foundation.ts": /*!************************************************!*\ !*** ./packages/mdc-top-app-bar/foundation.ts ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var foundation_1 = __webpack_require__(/*! @material/base/foundation */ "./packages/mdc-base/foundation.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./packages/mdc-top-app-bar/constants.ts"); var MDCTopAppBarBaseFoundation = /** @class */function (_super) { __extends(MDCTopAppBarBaseFoundation, _super); /* istanbul ignore next: optional argument is not a branch statement */ function MDCTopAppBarBaseFoundation(adapter) { return _super.call(this, __assign({}, MDCTopAppBarBaseFoundation.defaultAdapter, adapter)) || this; } Object.defineProperty(MDCTopAppBarBaseFoundation, "strings", { get: function get() { return constants_1.strings; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTopAppBarBaseFoundation, "cssClasses", { get: function get() { return constants_1.cssClasses; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTopAppBarBaseFoundation, "numbers", { get: function get() { return constants_1.numbers; }, enumerable: true, configurable: true }); Object.defineProperty(MDCTopAppBarBaseFoundation, "defaultAdapter", { /** * See {@link MDCTopAppBarAdapter} for typing information on parameters and return types. */ get: function get() { // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface. return { addClass: function addClass() { return undefined; }, removeClass: function removeClass() { return undefined; }, hasClass: function hasClass() { return false; }, setStyle: function setStyle() { return undefined; }, getTopAppBarHeight: function getTopAppBarHeight() { return 0; }, notifyNavigationIconClicked: function notifyNavigationIconClicked() { return undefined; }, getViewportScrollY: function getViewportScrollY() { return 0; }, getTotalActionItems: function getTotalActionItems() { return 0; } }; // tslint:enable:object-literal-sort-keys }, enumerable: true, configurable: true }); /** Other variants of TopAppBar foundation overrides this method */ MDCTopAppBarBaseFoundation.prototype.handleTargetScroll = function () {}; // tslint:disable-line:no-empty /** Other variants of TopAppBar foundation overrides this method */ MDCTopAppBarBaseFoundation.prototype.handleWindowResize = function () {}; // tslint:disable-line:no-empty MDCTopAppBarBaseFoundation.prototype.handleNavigationClick = function () { this.adapter_.notifyNavigationIconClicked(); }; return MDCTopAppBarBaseFoundation; }(foundation_1.MDCFoundation); exports.MDCTopAppBarBaseFoundation = MDCTopAppBarBaseFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTopAppBarBaseFoundation; /***/ }), /***/ "./packages/mdc-top-app-bar/index.ts": /*!*******************************************!*\ !*** ./packages/mdc-top-app-bar/index.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2019 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ function __export(m) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(/*! ./component */ "./packages/mdc-top-app-bar/component.ts")); __export(__webpack_require__(/*! ./constants */ "./packages/mdc-top-app-bar/constants.ts")); __export(__webpack_require__(/*! ./foundation */ "./packages/mdc-top-app-bar/foundation.ts")); __export(__webpack_require__(/*! ./fixed/foundation */ "./packages/mdc-top-app-bar/fixed/foundation.ts")); __export(__webpack_require__(/*! ./short/foundation */ "./packages/mdc-top-app-bar/short/foundation.ts")); __export(__webpack_require__(/*! ./standard/foundation */ "./packages/mdc-top-app-bar/standard/foundation.ts")); /***/ }), /***/ "./packages/mdc-top-app-bar/short/foundation.ts": /*!******************************************************!*\ !*** ./packages/mdc-top-app-bar/short/foundation.ts ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ../constants */ "./packages/mdc-top-app-bar/constants.ts"); var foundation_1 = __webpack_require__(/*! ../foundation */ "./packages/mdc-top-app-bar/foundation.ts"); var MDCShortTopAppBarFoundation = /** @class */function (_super) { __extends(MDCShortTopAppBarFoundation, _super); /* istanbul ignore next: optional argument is not a branch statement */ function MDCShortTopAppBarFoundation(adapter) { var _this = _super.call(this, adapter) || this; _this.isCollapsed_ = false; _this.isAlwaysCollapsed_ = false; return _this; } Object.defineProperty(MDCShortTopAppBarFoundation.prototype, "isCollapsed", { // Public visibility for backward compatibility. get: function get() { return this.isCollapsed_; }, enumerable: true, configurable: true }); MDCShortTopAppBarFoundation.prototype.init = function () { _super.prototype.init.call(this); if (this.adapter_.getTotalActionItems() > 0) { this.adapter_.addClass(constants_1.cssClasses.SHORT_HAS_ACTION_ITEM_CLASS); } // If initialized with SHORT_COLLAPSED_CLASS, the bar should always be collapsed this.setAlwaysCollapsed(this.adapter_.hasClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS)); }; /** * Set if the short top app bar should always be collapsed. * * @param value When `true`, bar will always be collapsed. When `false`, bar may collapse or expand based on scroll. */ MDCShortTopAppBarFoundation.prototype.setAlwaysCollapsed = function (value) { this.isAlwaysCollapsed_ = !!value; if (this.isAlwaysCollapsed_) { this.collapse_(); } else { // let maybeCollapseBar_ determine if the bar should be collapsed this.maybeCollapseBar_(); } }; MDCShortTopAppBarFoundation.prototype.getAlwaysCollapsed = function () { return this.isAlwaysCollapsed_; }; /** * Scroll handler for applying/removing the collapsed modifier class on the short top app bar. * @override */ MDCShortTopAppBarFoundation.prototype.handleTargetScroll = function () { this.maybeCollapseBar_(); }; MDCShortTopAppBarFoundation.prototype.maybeCollapseBar_ = function () { if (this.isAlwaysCollapsed_) { return; } var currentScroll = this.adapter_.getViewportScrollY(); if (currentScroll <= 0) { if (this.isCollapsed_) { this.uncollapse_(); } } else { if (!this.isCollapsed_) { this.collapse_(); } } }; MDCShortTopAppBarFoundation.prototype.uncollapse_ = function () { this.adapter_.removeClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS); this.isCollapsed_ = false; }; MDCShortTopAppBarFoundation.prototype.collapse_ = function () { this.adapter_.addClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS); this.isCollapsed_ = true; }; return MDCShortTopAppBarFoundation; }(foundation_1.MDCTopAppBarBaseFoundation); exports.MDCShortTopAppBarFoundation = MDCShortTopAppBarFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCShortTopAppBarFoundation; /***/ }), /***/ "./packages/mdc-top-app-bar/standard/foundation.ts": /*!*********************************************************!*\ !*** ./packages/mdc-top-app-bar/standard/foundation.ts ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @license * Copyright 2018 Google Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = __webpack_require__(/*! ../constants */ "./packages/mdc-top-app-bar/constants.ts"); var foundation_1 = __webpack_require__(/*! ../foundation */ "./packages/mdc-top-app-bar/foundation.ts"); var INITIAL_VALUE = 0; var MDCTopAppBarFoundation = /** @class */function (_super) { __extends(MDCTopAppBarFoundation, _super); /* istanbul ignore next: optional argument is not a branch statement */ function MDCTopAppBarFoundation(adapter) { var _this = _super.call(this, adapter) || this; /** * Indicates if the top app bar was docked in the previous scroll handler iteration. */ _this.wasDocked_ = true; /** * Indicates if the top app bar is docked in the fully shown position. */ _this.isDockedShowing_ = true; /** * Variable for current scroll position of the top app bar */ _this.currentAppBarOffsetTop_ = 0; /** * Used to prevent the top app bar from being scrolled out of view during resize events */ _this.isCurrentlyBeingResized_ = false; /** * The timeout that's used to throttle the resize events */ _this.resizeThrottleId_ = INITIAL_VALUE; /** * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize */ _this.resizeDebounceId_ = INITIAL_VALUE; _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY(); _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight(); return _this; } MDCTopAppBarFoundation.prototype.destroy = function () { _super.prototype.destroy.call(this); this.adapter_.setStyle('top', ''); }; /** * Scroll handler for the default scroll behavior of the top app bar. * @override */ MDCTopAppBarFoundation.prototype.handleTargetScroll = function () { var currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0); var diff = currentScrollPosition - this.lastScrollPosition_; this.lastScrollPosition_ = currentScrollPosition; // If the window is being resized the lastScrollPosition_ needs to be updated but the // current scroll of the top app bar should stay in the same position. if (!this.isCurrentlyBeingResized_) { this.currentAppBarOffsetTop_ -= diff; if (this.currentAppBarOffsetTop_ > 0) { this.currentAppBarOffsetTop_ = 0; } else if (Math.abs(this.currentAppBarOffsetTop_) > this.topAppBarHeight_) { this.currentAppBarOffsetTop_ = -this.topAppBarHeight_; } this.moveTopAppBar_(); } }; /** * Top app bar resize handler that throttle/debounce functions that execute updates. * @override */ MDCTopAppBarFoundation.prototype.handleWindowResize = function () { var _this = this; // Throttle resize events 10 p/s if (!this.resizeThrottleId_) { this.resizeThrottleId_ = setTimeout(function () { _this.resizeThrottleId_ = INITIAL_VALUE; _this.throttledResizeHandler_(); }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS); } this.isCurrentlyBeingResized_ = true; if (this.resizeDebounceId_) { clearTimeout(this.resizeDebounceId_); } this.resizeDebounceId_ = setTimeout(function () { _this.handleTargetScroll(); _this.isCurrentlyBeingResized_ = false; _this.resizeDebounceId_ = INITIAL_VALUE; }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS); }; /** * Function to determine if the DOM needs to update. */ MDCTopAppBarFoundation.prototype.checkForUpdate_ = function () { var offscreenBoundaryTop = -this.topAppBarHeight_; var hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0; var hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop; var partiallyShowing = hasAnyPixelsOffscreen && hasAnyPixelsOnscreen; // If it's partially showing, it can't be docked. if (partiallyShowing) { this.wasDocked_ = false; } else { // Not previously docked and not partially showing, it's now docked. if (!this.wasDocked_) { this.wasDocked_ = true; return true; } else if (this.isDockedShowing_ !== hasAnyPixelsOnscreen) { this.isDockedShowing_ = hasAnyPixelsOnscreen; return true; } } return partiallyShowing; }; /** * Function to move the top app bar if needed. */ MDCTopAppBarFoundation.prototype.moveTopAppBar_ = function () { if (this.checkForUpdate_()) { // Once the top app bar is fully hidden we use the max potential top app bar height as our offset // so the top app bar doesn't show if the window resizes and the new height > the old height. var offset = this.currentAppBarOffsetTop_; if (Math.abs(offset) >= this.topAppBarHeight_) { offset = -constants_1.numbers.MAX_TOP_APP_BAR_HEIGHT; } this.adapter_.setStyle('top', offset + 'px'); } }; /** * Throttled function that updates the top app bar scrolled values if the * top app bar height changes. */ MDCTopAppBarFoundation.prototype.throttledResizeHandler_ = function () { var currentHeight = this.adapter_.getTopAppBarHeight(); if (this.topAppBarHeight_ !== currentHeight) { this.wasDocked_ = false; // Since the top app bar has a different height depending on the screen width, this // will ensure that the top app bar remains in the correct location if // completely hidden and a resize makes the top app bar a different height. this.currentAppBarOffsetTop_ -= this.topAppBarHeight_ - currentHeight; this.topAppBarHeight_ = currentHeight; } this.handleTargetScroll(); }; return MDCTopAppBarFoundation; }(foundation_1.MDCTopAppBarBaseFoundation); exports.MDCTopAppBarFoundation = MDCTopAppBarFoundation; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier. exports.default = MDCTopAppBarFoundation; /***/ }) /******/ }); }); //# sourceMappingURL=material-components-web.js.map