|
@@ -0,0 +1,28038 @@
|
|
|
+/*!
|
|
|
+ Material Components for the Web
|
|
|
+ Copyright (c) 2018 Google Inc.
|
|
|
+ License: MIT
|
|
|
+*/
|
|
|
+(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, {
|
|
|
+/******/ configurable: false,
|
|
|
+/******/ enumerable: true,
|
|
|
+/******/ get: getter
|
|
|
+/******/ });
|
|
|
+/******/ }
|
|
|
+/******/ };
|
|
|
+/******/
|
|
|
+/******/ // 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 = 63);
|
|
|
+/******/ })
|
|
|
+/************************************************************************/
|
|
|
+/******/ ([
|
|
|
+/* 0 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @template A
|
|
|
+ */
|
|
|
+var MDCFoundation = function () {
|
|
|
+ _createClass(MDCFoundation, null, [{
|
|
|
+ key: "cssClasses",
|
|
|
+
|
|
|
+ /** @return enum{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 {};
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum{strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "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 {};
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum{numbers} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "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 {};
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!Object} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "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 {};
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {A=} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCFoundation() {
|
|
|
+ var adapter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCFoundation);
|
|
|
+
|
|
|
+ /** @protected {!A} */
|
|
|
+ this.adapter_ = adapter;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFoundation, [{
|
|
|
+ key: "init",
|
|
|
+ value: function init() {
|
|
|
+ // Subclasses should override this method to perform initialization routines (registering events, etc.)
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: "destroy",
|
|
|
+ value: function destroy() {
|
|
|
+ // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFoundation;
|
|
|
+}();
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 1 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @template F
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCComponent = function () {
|
|
|
+ _createClass(MDCComponent, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCComponent}
|
|
|
+ */
|
|
|
+ value: function attachTo(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 __WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @param {F=} foundation
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCComponent(root) {
|
|
|
+ var foundation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCComponent);
|
|
|
+
|
|
|
+ /** @protected {!Element} */
|
|
|
+ this.root_ = root;
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
|
+ args[_key - 2] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ this.initialize.apply(this, 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.
|
|
|
+ /** @protected {!F} */
|
|
|
+ this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;
|
|
|
+ this.foundation_.init();
|
|
|
+ this.initialSyncWithDOM();
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCComponent, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() /* ...args */{}
|
|
|
+ // 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.
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!F} foundation
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ // 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');
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ // 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.
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ // 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Wrapper method to add an event listener to the component's root element. This is most useful when
|
|
|
+ * listening for custom events.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'listen',
|
|
|
+ value: function listen(evtType, handler) {
|
|
|
+ this.root_.addEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Wrapper method to remove an event listener to the component's root element. This is most useful when
|
|
|
+ * unlistening for custom events.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'unlisten',
|
|
|
+ value: function unlisten(evtType, handler) {
|
|
|
+ this.root_.removeEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Fires a cross-browser-compatible custom event from the component root of the given type,
|
|
|
+ * with the given data.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Object} evtData
|
|
|
+ * @param {boolean=} shouldBubble
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'emit',
|
|
|
+ value: function emit(evtType, evtData) {
|
|
|
+ var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
|
+
|
|
|
+ var evt = void 0;
|
|
|
+ if (typeof CustomEvent === 'function') {
|
|
|
+ evt = new CustomEvent(evtType, {
|
|
|
+ detail: evtData,
|
|
|
+ bubbles: shouldBubble
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ evt = document.createEvent('CustomEvent');
|
|
|
+ evt.initCustomEvent(evtType, shouldBubble, false, evtData);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.root_.dispatchEvent(evt);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCComponent;
|
|
|
+}();
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCComponent);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 2 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRipple", function() { return MDCRipple; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RippleCapableSurface", function() { return RippleCapableSurface; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(29);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(66);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(6);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRippleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCRippleFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCRipple = function (_MDCComponent) {
|
|
|
+ _inherits(MDCRipple, _MDCComponent);
|
|
|
+
|
|
|
+ /** @param {...?} args */
|
|
|
+ function MDCRipple() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCRipple);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @type {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCRipple.__proto__ || Object.getPrototypeOf(MDCRipple)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.disabled = false;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.unbounded_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @param {{isUnbounded: (boolean|undefined)}=} options
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCRipple, [{
|
|
|
+ key: 'setUnbounded_',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ value: function setUnbounded_() {
|
|
|
+ this.foundation_.setUnbounded(this.unbounded_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate() {
|
|
|
+ this.foundation_.activate();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.foundation_.deactivate();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ this.foundation_.layout();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRippleFoundation}
|
|
|
+ * @override
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](MDCRipple.createAdapter(this));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @override */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ this.unbounded = 'mdcRippleIsUnbounded' in this.root_.dataset;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'unbounded',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ get: function get() {
|
|
|
+ return this.unbounded_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} unbounded */
|
|
|
+ ,
|
|
|
+ set: function set(unbounded) {
|
|
|
+ this.unbounded_ = Boolean(unbounded);
|
|
|
+ this.setUnbounded_();
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
|
+ _ref2$isUnbounded = _ref2.isUnbounded,
|
|
|
+ isUnbounded = _ref2$isUnbounded === undefined ? undefined : _ref2$isUnbounded;
|
|
|
+
|
|
|
+ var ripple = new MDCRipple(root);
|
|
|
+ // Only override unbounded behavior if option is explicitly specified
|
|
|
+ if (isUnbounded !== undefined) {
|
|
|
+ ripple.unbounded = /** @type {boolean} */isUnbounded;
|
|
|
+ }
|
|
|
+ return ripple;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!RippleCapableSurface} instance
|
|
|
+ * @return {!MDCRippleAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'createAdapter',
|
|
|
+ value: function createAdapter(instance) {
|
|
|
+ var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__["getMatchesProperty"](HTMLElement.prototype);
|
|
|
+
|
|
|
+ return {
|
|
|
+ browserSupportsCssVars: function browserSupportsCssVars() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__util__["supportsCssVariables"](window);
|
|
|
+ },
|
|
|
+ isUnbounded: function isUnbounded() {
|
|
|
+ return instance.unbounded;
|
|
|
+ },
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return instance.root_[MATCHES](':active');
|
|
|
+ },
|
|
|
+ isSurfaceDisabled: function isSurfaceDisabled() {
|
|
|
+ return instance.disabled;
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return instance.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return instance.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ containsEventTarget: function containsEventTarget(target) {
|
|
|
+ return instance.root_.contains(target);
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
|
|
|
+ return instance.root_.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
|
|
|
+ return instance.root_.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
|
|
|
+ },
|
|
|
+ registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {
|
|
|
+ return document.documentElement.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
|
|
|
+ },
|
|
|
+ deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {
|
|
|
+ return document.documentElement.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
|
|
|
+ },
|
|
|
+ registerResizeHandler: function registerResizeHandler(handler) {
|
|
|
+ return window.addEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler(handler) {
|
|
|
+ return window.removeEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ updateCssVariable: function updateCssVariable(varName, value) {
|
|
|
+ return instance.root_.style.setProperty(varName, value);
|
|
|
+ },
|
|
|
+ computeBoundingRect: function computeBoundingRect() {
|
|
|
+ return instance.root_.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ getWindowPageOffset: function getWindowPageOffset() {
|
|
|
+ return { x: window.pageXOffset, y: window.pageYOffset };
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRipple;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+/**
|
|
|
+ * See Material Design spec for more details on when to use ripples.
|
|
|
+ * https://material.io/guidelines/motion/choreography.html#choreography-creation
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+var RippleCapableSurface = function RippleCapableSurface() {
|
|
|
+ _classCallCheck(this, RippleCapableSurface);
|
|
|
+};
|
|
|
+
|
|
|
+/** @protected {!Element} */
|
|
|
+
|
|
|
+
|
|
|
+RippleCapableSurface.prototype.root_;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Whether or not the ripple bleeds out of the bounds of the element.
|
|
|
+ * @type {boolean|undefined}
|
|
|
+ */
|
|
|
+RippleCapableSurface.prototype.unbounded;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Whether or not the ripple is attached to a disabled component.
|
|
|
+ * @type {boolean|undefined}
|
|
|
+ */
|
|
|
+RippleCapableSurface.prototype.disabled;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 3 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__component__ = __webpack_require__(1);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFoundation", function() { return __WEBPACK_IMPORTED_MODULE_0__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCComponent", function() { return __WEBPACK_IMPORTED_MODULE_1__component__["a"]; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 4 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectionControlState", function() { return MDCSelectionControlState; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectionControl", function() { return MDCSelectionControl; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_ripple_index__ = __webpack_require__(2);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * checked: boolean,
|
|
|
+ * indeterminate: boolean,
|
|
|
+ * disabled: boolean,
|
|
|
+ * value: ?string
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var MDCSelectionControlState = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectionControl = function () {
|
|
|
+ function MDCSelectionControl() {
|
|
|
+ _classCallCheck(this, MDCSelectionControl);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectionControl, [{
|
|
|
+ key: 'ripple',
|
|
|
+
|
|
|
+ /** @return {?MDCRipple} */
|
|
|
+ get: function get() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectionControl;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 5 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCTabScrollerAnimation */
|
|
|
+/* unused harmony export MDCTabScrollerHorizontalEdges */
|
|
|
+/* unused harmony export MDCTabScrollerAdapter */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * MDCTabScrollerAnimation contains the values required for animating from the
|
|
|
+ * current scroll position to the new scroll position. The "finalScrollPosition"
|
|
|
+ * value represents the new scroll position while the "scrollDelta" value is the
|
|
|
+ * corresponding transformation that is applied to the scroll content. Together,
|
|
|
+ * they create the animation by first updating the scroll value then applying
|
|
|
+ * the transformation and animating the transition. Both pieces are necessary
|
|
|
+ * for the scroll animation to work. The values are used as-is by the tab
|
|
|
+ * scroller animation method, ensuring that all logic for determining scroll
|
|
|
+ * position or transformation is abstracted away from the animation method.
|
|
|
+ * @typedef {{finalScrollPosition: number, scrollDelta: number}}
|
|
|
+ */
|
|
|
+var MDCTabScrollerAnimation = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * MDCTabScrollerHorizontalEdges represents the left and right edges of the
|
|
|
+ * scroll content. These values vary depending on how scrolling in RTL is
|
|
|
+ * implemented by the browser. One value is always 0 and one value is always
|
|
|
+ * the max scrollable value as either a positive or negative integer.
|
|
|
+ * @typedef {{left: number, right: number}}
|
|
|
+ */
|
|
|
+var MDCTabScrollerHorizontalEdges = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Tab Scroller.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Tab into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerAdapter = function () {
|
|
|
+ function MDCTabScrollerAdapter() {
|
|
|
+ _classCallCheck(this, MDCTabScrollerAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds the given className to the root element.
|
|
|
+ * @param {string} className The className to add
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes the given className from the root element.
|
|
|
+ * @param {string} className The className to remove
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds the given className to the scroll area element.
|
|
|
+ * @param {string} className The className to add
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addScrollAreaClass",
|
|
|
+ value: function addScrollAreaClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether the event target matches given className.
|
|
|
+ * @param {EventTarget} evtTarget The event target
|
|
|
+ * @param {string} selector The selector to check
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "eventTargetMatchesSelector",
|
|
|
+ value: function eventTargetMatchesSelector(evtTarget, selector) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the area element to the passed value.
|
|
|
+ * @param {string} propName The style property name to set
|
|
|
+ * @param {string} value The style property value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setScrollAreaStyleProperty",
|
|
|
+ value: function setScrollAreaStyleProperty(propName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the content element to the passed value.
|
|
|
+ * @param {string} propName The style property name to set
|
|
|
+ * @param {string} value The style property value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setScrollContentStyleProperty",
|
|
|
+ value: function setScrollContentStyleProperty(propName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the scroll content element's computed style value of the given css property `propertyName`.
|
|
|
+ * We achieve this via `getComputedStyle(...).getPropertyValue(propertyName)`.
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getScrollContentStyleValue",
|
|
|
+ value: function getScrollContentStyleValue(propertyName) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the scrollLeft value of the scroll area element to the passed value.
|
|
|
+ * @param {number} scrollLeft The new scrollLeft value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setScrollAreaScrollLeft",
|
|
|
+ value: function setScrollAreaScrollLeft(scrollLeft) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the scrollLeft value of the scroll area element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getScrollAreaScrollLeft",
|
|
|
+ value: function getScrollAreaScrollLeft() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetWidth of the scroll content element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getScrollContentOffsetWidth",
|
|
|
+ value: function getScrollContentOffsetWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetWitdth of the scroll area element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getScrollAreaOffsetWidth",
|
|
|
+ value: function getScrollAreaOffsetWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the bounding client rect of the scroll area element.
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeScrollAreaClientRect",
|
|
|
+ value: function computeScrollAreaClientRect() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the bounding client rect of the scroll content element.
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeScrollContentClientRect",
|
|
|
+ value: function computeScrollContentClientRect() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the height of the browser's horizontal scrollbars (in px).
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeHorizontalScrollbarHeight",
|
|
|
+ value: function computeHorizontalScrollbarHeight() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 6 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "supportsCssVariables", function() { return supportsCssVariables; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyPassive", function() { return applyPassive; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMatchesProperty", function() { return getMatchesProperty; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNormalizedEventCoords", function() { return getNormalizedEventCoords; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Stores result from supportsCssVariables to avoid redundant processing to detect CSS custom variable support.
|
|
|
+ * @private {boolean|undefined}
|
|
|
+ */
|
|
|
+var supportsCssVariables_ = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Stores result from applyPassive to avoid redundant processing to detect passive event listener support.
|
|
|
+ * @private {boolean|undefined}
|
|
|
+ */
|
|
|
+var supportsPassive_ = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Window} windowObj
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+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';
|
|
|
+ document.body.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';
|
|
|
+ node.remove();
|
|
|
+ return hasPseudoVarBug;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Window} windowObj
|
|
|
+ * @param {boolean=} forceRefresh
|
|
|
+ * @return {boolean|undefined}
|
|
|
+ */
|
|
|
+
|
|
|
+function supportsCssVariables(windowObj) {
|
|
|
+ var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
|
+
|
|
|
+ var supportsCssVariables = supportsCssVariables_;
|
|
|
+ if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {
|
|
|
+ return supportsCssVariables;
|
|
|
+ }
|
|
|
+
|
|
|
+ var supportsFunctionPresent = windowObj.CSS && typeof windowObj.CSS.supports === 'function';
|
|
|
+ if (!supportsFunctionPresent) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var explicitlySupportsCssVars = windowObj.CSS.supports('--css-vars', 'yes');
|
|
|
+ // See: https://bugs.webkit.org/show_bug.cgi?id=154669
|
|
|
+ // See: README section on Safari
|
|
|
+ var weAreFeatureDetectingSafari10plus = windowObj.CSS.supports('(--css-vars: yes)') && windowObj.CSS.supports('color', '#00000000');
|
|
|
+
|
|
|
+ if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {
|
|
|
+ supportsCssVariables = !detectEdgePseudoVarBug(windowObj);
|
|
|
+ } else {
|
|
|
+ supportsCssVariables = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!forceRefresh) {
|
|
|
+ supportsCssVariables_ = supportsCssVariables;
|
|
|
+ }
|
|
|
+ return supportsCssVariables;
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+/**
|
|
|
+ * Determine whether the current browser supports passive event listeners, and if so, use them.
|
|
|
+ * @param {!Window=} globalObj
|
|
|
+ * @param {boolean=} forceRefresh
|
|
|
+ * @return {boolean|!EventListenerOptions}
|
|
|
+ */
|
|
|
+function applyPassive() {
|
|
|
+ var globalObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
|
|
|
+ var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
|
+
|
|
|
+ if (supportsPassive_ === undefined || forceRefresh) {
|
|
|
+ var isSupported = false;
|
|
|
+ try {
|
|
|
+ globalObj.document.addEventListener('test', null, { get passive() {
|
|
|
+ isSupported = true;
|
|
|
+ return isSupported;
|
|
|
+ } });
|
|
|
+ } catch (e) {}
|
|
|
+
|
|
|
+ supportsPassive_ = isSupported;
|
|
|
+ }
|
|
|
+
|
|
|
+ return supportsPassive_ ? /** @type {!EventListenerOptions} */{ passive: true } : false;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Object} HTMLElementPrototype
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getMatchesProperty(HTMLElementPrototype) {
|
|
|
+ /**
|
|
|
+ * Order is important because we return the first existing method we find.
|
|
|
+ * Do not change the order of the items in the below array.
|
|
|
+ */
|
|
|
+ var matchesMethods = ['matches', 'webkitMatchesSelector', 'msMatchesSelector'];
|
|
|
+ var method = 'matches';
|
|
|
+ for (var i = 0; i < matchesMethods.length; i++) {
|
|
|
+ var matchesMethod = matchesMethods[i];
|
|
|
+ if (matchesMethod in HTMLElementPrototype) {
|
|
|
+ method = matchesMethod;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return method;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Event} ev
|
|
|
+ * @param {{x: number, y: number}} pageOffset
|
|
|
+ * @param {!ClientRect} clientRect
|
|
|
+ * @return {{x: number, y: number}}
|
|
|
+ */
|
|
|
+function getNormalizedEventCoords(ev, pageOffset, clientRect) {
|
|
|
+ var x = pageOffset.x,
|
|
|
+ y = pageOffset.y;
|
|
|
+
|
|
|
+ var documentX = x + clientRect.left;
|
|
|
+ var documentY = y + clientRect.top;
|
|
|
+
|
|
|
+ var normalizedX = void 0;
|
|
|
+ var normalizedY = void 0;
|
|
|
+ // Determine touch point relative to the ripple container.
|
|
|
+ if (ev.type === 'touchstart') {
|
|
|
+ ev = /** @type {!TouchEvent} */ev;
|
|
|
+ normalizedX = ev.changedTouches[0].pageX - documentX;
|
|
|
+ normalizedY = ev.changedTouches[0].pageY - documentY;
|
|
|
+ } else {
|
|
|
+ ev = /** @type {!MouseEvent} */ev;
|
|
|
+ normalizedX = ev.pageX - documentX;
|
|
|
+ normalizedY = ev.pageY - documentY;
|
|
|
+ }
|
|
|
+
|
|
|
+ return { x: normalizedX, y: normalizedY };
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 7 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Top App Bar
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Top App Bar into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCTopAppBarAdapter = function () {
|
|
|
+ function MDCTopAppBarAdapter() {
|
|
|
+ _classCallCheck(this, MDCTopAppBarAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTopAppBarAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root Element contains the given class.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the specified inline style property on the root Element to the given value.
|
|
|
+ * @param {string} property
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setStyle",
|
|
|
+ value: function setStyle(property, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Gets the height of the top app bar.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getTopAppBarHeight",
|
|
|
+ value: function getTopAppBarHeight() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler on the navigation icon element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerNavigationIconInteractionHandler",
|
|
|
+ value: function registerNavigationIconInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler on the navigation icon element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterNavigationIconInteractionHandler",
|
|
|
+ value: function deregisterNavigationIconInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits an event when the navigation icon is clicked.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyNavigationIconClicked",
|
|
|
+ value: function notifyNavigationIconClicked() {}
|
|
|
+
|
|
|
+ /** @param {function(!Event)} handler */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerScrollHandler",
|
|
|
+ value: function registerScrollHandler(handler) {}
|
|
|
+
|
|
|
+ /** @param {function(!Event)} handler */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterScrollHandler",
|
|
|
+ value: function deregisterScrollHandler(handler) {}
|
|
|
+
|
|
|
+ /** @param {function(!Event)} handler */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerResizeHandler",
|
|
|
+ value: function registerResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /** @param {function(!Event)} handler */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterResizeHandler",
|
|
|
+ value: function deregisterResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getViewportScrollY",
|
|
|
+ value: function getViewportScrollY() {}
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getTotalActionItems",
|
|
|
+ value: function getTotalActionItems() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTopAppBarAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCTopAppBarAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 8 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+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_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item',
|
|
|
+ SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,
|
|
|
+ MAX_TOP_APP_BAR_HEIGHT: 128
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+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'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 9 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return transformStyleProperties; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getCorrectEventName; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCorrectPropertyName; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * noPrefix: string,
|
|
|
+ * webkitPrefix: string,
|
|
|
+ * styleProperty: string
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var VendorPropertyMapType = void 0;
|
|
|
+
|
|
|
+/** @const {Object<string, !VendorPropertyMapType>} */
|
|
|
+var eventTypeMap = {
|
|
|
+ 'animationstart': {
|
|
|
+ noPrefix: 'animationstart',
|
|
|
+ webkitPrefix: 'webkitAnimationStart',
|
|
|
+ styleProperty: 'animation'
|
|
|
+ },
|
|
|
+ 'animationend': {
|
|
|
+ noPrefix: 'animationend',
|
|
|
+ webkitPrefix: 'webkitAnimationEnd',
|
|
|
+ styleProperty: 'animation'
|
|
|
+ },
|
|
|
+ 'animationiteration': {
|
|
|
+ noPrefix: 'animationiteration',
|
|
|
+ webkitPrefix: 'webkitAnimationIteration',
|
|
|
+ styleProperty: 'animation'
|
|
|
+ },
|
|
|
+ 'transitionend': {
|
|
|
+ noPrefix: 'transitionend',
|
|
|
+ webkitPrefix: 'webkitTransitionEnd',
|
|
|
+ styleProperty: 'transition'
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+/** @const {Object<string, !VendorPropertyMapType>} */
|
|
|
+var cssPropertyMap = {
|
|
|
+ 'animation': {
|
|
|
+ noPrefix: 'animation',
|
|
|
+ webkitPrefix: '-webkit-animation'
|
|
|
+ },
|
|
|
+ 'transform': {
|
|
|
+ noPrefix: 'transform',
|
|
|
+ webkitPrefix: '-webkit-transform'
|
|
|
+ },
|
|
|
+ 'transition': {
|
|
|
+ noPrefix: 'transition',
|
|
|
+ webkitPrefix: '-webkit-transition'
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Object} windowObj
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function hasProperShape(windowObj) {
|
|
|
+ return windowObj['document'] !== undefined && typeof windowObj['document']['createElement'] === 'function';
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {string} eventType
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function eventFoundInMaps(eventType) {
|
|
|
+ return eventType in eventTypeMap || eventType in cssPropertyMap;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {string} eventType
|
|
|
+ * @param {!Object<string, !VendorPropertyMapType>} map
|
|
|
+ * @param {!Element} el
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getJavaScriptEventName(eventType, map, el) {
|
|
|
+ return map[eventType].styleProperty in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Helper function to determine browser prefix for CSS3 animation events
|
|
|
+ * and property names.
|
|
|
+ * @param {!Object} windowObj
|
|
|
+ * @param {string} eventType
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getAnimationName(windowObj, eventType) {
|
|
|
+ if (!hasProperShape(windowObj) || !eventFoundInMaps(eventType)) {
|
|
|
+ return eventType;
|
|
|
+ }
|
|
|
+
|
|
|
+ var map = /** @type {!Object<string, !VendorPropertyMapType>} */eventType in eventTypeMap ? eventTypeMap : cssPropertyMap;
|
|
|
+ var el = windowObj['document']['createElement']('div');
|
|
|
+ var eventName = '';
|
|
|
+
|
|
|
+ if (map === eventTypeMap) {
|
|
|
+ eventName = getJavaScriptEventName(eventType, map, el);
|
|
|
+ } else {
|
|
|
+ eventName = map[eventType].noPrefix in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;
|
|
|
+ }
|
|
|
+
|
|
|
+ return eventName;
|
|
|
+}
|
|
|
+
|
|
|
+// Public functions to access getAnimationName() for JavaScript events or CSS
|
|
|
+// property names.
|
|
|
+
|
|
|
+var transformStyleProperties = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'MSTransform'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Object} windowObj
|
|
|
+ * @param {string} eventType
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getCorrectEventName(windowObj, eventType) {
|
|
|
+ return getAnimationName(windowObj, eventType);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Object} windowObj
|
|
|
+ * @param {string} eventType
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getCorrectPropertyName(windowObj, eventType) {
|
|
|
+ return getAnimationName(windowObj, eventType);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 10 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCTabDimensions */
|
|
|
+/* unused harmony export MDCTabAdapter */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * MDCTabDimensions provides details about the left and right edges of the Tab
|
|
|
+ * root element and the Tab content element. These values are used to determine
|
|
|
+ * the visual position of the Tab with respect it's parent container.
|
|
|
+ * @typedef {{rootLeft: number, rootRight: number, contentLeft: number, contentRight: number}}
|
|
|
+ */
|
|
|
+var MDCTabDimensions = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Tab.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Tab into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabAdapter = function () {
|
|
|
+ function MDCTabAdapter() {
|
|
|
+ _classCallCheck(this, MDCTabAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds the given className to the root element.
|
|
|
+ * @param {string} className The className to add
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes the given className from the root element.
|
|
|
+ * @param {string} className The className to remove
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether the root element has the given className.
|
|
|
+ * @param {string} className The className to remove
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the given attrName of the root element to the given value.
|
|
|
+ * @param {string} attr The attribute name to set
|
|
|
+ * @param {string} value The value so give the attribute
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the indicator element.
|
|
|
+ * @param {!ClientRect=} previousIndicatorClientRect The client rect of the previously activated indicator
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "activateIndicator",
|
|
|
+ value: function activateIndicator(previousIndicatorClientRect) {}
|
|
|
+
|
|
|
+ /** Deactivates the indicator. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deactivateIndicator",
|
|
|
+ value: function deactivateIndicator() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits the MDCTab:interacted event for use by parent components
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyInteracted",
|
|
|
+ value: function notifyInteracted() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetLeft value of the root element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getOffsetLeft",
|
|
|
+ value: function getOffsetLeft() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetWidth value of the root element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getOffsetWidth",
|
|
|
+ value: function getOffsetWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetLeft of the content element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getContentOffsetLeft",
|
|
|
+ value: function getContentOffsetLeft() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the offsetWidth of the content element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getContentOffsetWidth",
|
|
|
+ value: function getContentOffsetWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Applies focus to the root element
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "focus",
|
|
|
+ value: function focus() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 11 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(5);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerRTL = function () {
|
|
|
+ /** @param {!MDCTabScrollerAdapter} adapter */
|
|
|
+ function MDCTabScrollerRTL(adapter) {
|
|
|
+ _classCallCheck(this, MDCTabScrollerRTL);
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+ this.adapter_ = adapter;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} translateX The current translateX position
|
|
|
+ * @return {number}
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerRTL, [{
|
|
|
+ key: 'getScrollPositionRTL',
|
|
|
+ value: function getScrollPositionRTL(translateX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollToRTL',
|
|
|
+ value: function scrollToRTL(scrollX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScrollRTL',
|
|
|
+ value: function incrementScrollRTL(scrollX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX The current scrollX position
|
|
|
+ * @param {number} translateX The current translateX position
|
|
|
+ * @return {number}
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAnimatingScrollPosition',
|
|
|
+ value: function getAnimatingScrollPosition(scrollX, translateX) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerRTL;
|
|
|
+}();
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTL);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 12 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(8);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(7);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_base_foundation__ = __webpack_require__(0);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTopAppBarAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTopAppBarBaseFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTopAppBarBaseFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTopAppBarBaseFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCTopAppBarAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCTopAppBarAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTopAppBarAdapter} */{
|
|
|
+ hasClass: function hasClass() /* className: string */{},
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setStyle: function setStyle() /* property: string, value: string */{},
|
|
|
+ getTopAppBarHeight: function getTopAppBarHeight() {},
|
|
|
+ registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ notifyNavigationIconClicked: function notifyNavigationIconClicked() {},
|
|
|
+ registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},
|
|
|
+ deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},
|
|
|
+ registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
|
|
|
+ getViewportScrollY: function getViewportScrollY() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getTotalActionItems: function getTotalActionItems() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTopAppBarAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTopAppBarBaseFoundation( /** @type {!MDCTopAppBarAdapter} */adapter) {
|
|
|
+ _classCallCheck(this, MDCTopAppBarBaseFoundation);
|
|
|
+
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTopAppBarBaseFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarBaseFoundation)).call(this, _extends(MDCTopAppBarBaseFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.navClickHandler_ = function () {
|
|
|
+ return _this.adapter_.notifyNavigationIconClicked();
|
|
|
+ };
|
|
|
+
|
|
|
+ _this.scrollHandler_ = function () {};
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTopAppBarBaseFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initScrollHandler',
|
|
|
+ value: function initScrollHandler() {
|
|
|
+ this.adapter_.registerScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroyScrollHandler',
|
|
|
+ value: function destroyScrollHandler() {
|
|
|
+ this.adapter_.deregisterScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTopAppBarBaseFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_2__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTopAppBarBaseFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 13 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return matches; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Element} element
|
|
|
+ * @param {string} selector
|
|
|
+ * @return {?Element}
|
|
|
+ */
|
|
|
+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;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Element} element
|
|
|
+ * @param {string} selector
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function matches(element, selector) {
|
|
|
+ var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;
|
|
|
+ return nativeMatches.call(element, selector);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 14 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Drawer
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Drawer into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCDrawerAdapter = function () {
|
|
|
+ function MDCDrawerAdapter() {
|
|
|
+ _classCallCheck(this, MDCDrawerAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCDrawerAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root Element contains the given class.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} element target element to verify class name
|
|
|
+ * @param {string} className class name
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "elementHasClass",
|
|
|
+ value: function elementHasClass(element, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Saves the focus of currently active element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "saveFocus",
|
|
|
+ value: function saveFocus() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Restores focus to element previously saved with 'saveFocus'.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "restoreFocus",
|
|
|
+ value: function restoreFocus() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses the active / selected navigation item.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "focusActiveNavigationItem",
|
|
|
+ value: function focusActiveNavigationItem() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event "MDCDrawer:closed" denoting the drawer has closed.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyClose",
|
|
|
+ value: function notifyClose() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event "MDCDrawer:opened" denoting the drawer has opened.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyOpen",
|
|
|
+ value: function notifyOpen() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Traps focus on root element and focuses the active navigation element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "trapFocus",
|
|
|
+ value: function trapFocus() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Releases focus trap from root element which was set by `trapFocus`
|
|
|
+ * and restores focus to where it was prior to calling `trapFocus`.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "releaseFocus",
|
|
|
+ value: function releaseFocus() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDrawerAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCDrawerAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 15 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCList", function() { return MDCList; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(16);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(38);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__ = __webpack_require__(13);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(39);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCListFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCListFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCList = function (_MDCComponent) {
|
|
|
+ _inherits(MDCList, _MDCComponent);
|
|
|
+
|
|
|
+ /** @param {...?} args */
|
|
|
+ function MDCList() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCList);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCList.__proto__ || Object.getPrototypeOf(MDCList)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.handleKeydown_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleClick_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.focusInEventListener_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.focusOutEventListener_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCList}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCList, [{
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.root_.removeEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.removeEventListener('click', this.handleClick_);
|
|
|
+ this.root_.removeEventListener('focusin', this.focusInEventListener_);
|
|
|
+ this.root_.removeEventListener('focusout', this.focusOutEventListener_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ 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.root_.addEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.addEventListener('focusin', this.focusInEventListener_);
|
|
|
+ this.root_.addEventListener('focusout', this.focusOutEventListener_);
|
|
|
+ this.root_.addEventListener('click', this.handleClick_);
|
|
|
+ this.layout();
|
|
|
+ this.initializeListType();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ var direction = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_ORIENTATION);
|
|
|
+ this.vertical = direction !== __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* 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 (ele) {
|
|
|
+ ele.setAttribute('tabindex', -1);
|
|
|
+ });
|
|
|
+
|
|
|
+ // Child button/a elements are not tabbable until the list item is focused.
|
|
|
+ [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].FOCUSABLE_CHILD_ELEMENTS)).forEach(function (ele) {
|
|
|
+ return ele.setAttribute('tabindex', -1);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to figure out which list item this event is targetting. Or returns -1 if
|
|
|
+ * there is no list item
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getListItemIndex_',
|
|
|
+ value: function getListItemIndex_(evt) {
|
|
|
+ var eventTarget = /** @type {HTMLElement} */evt.target;
|
|
|
+ var index = -1;
|
|
|
+
|
|
|
+ // Find the first ancestor that is a list item or the list.
|
|
|
+ while (!eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS) && !eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].ROOT)) {
|
|
|
+ eventTarget = eventTarget.parentElement;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Get the index of the element if it is a list item.
|
|
|
+ if (eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS)) {
|
|
|
+ index = this.listElements.indexOf(eventTarget);
|
|
|
+ }
|
|
|
+
|
|
|
+ return index;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to figure out which element was clicked before sending the event to the foundation.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleFocusInEvent_',
|
|
|
+ value: function handleFocusInEvent_(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.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleFocusOutEvent_',
|
|
|
+ value: function handleFocusOutEvent_(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.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydownEvent_',
|
|
|
+ value: function handleKeydownEvent_(evt) {
|
|
|
+ var index = this.getListItemIndex_(evt);
|
|
|
+
|
|
|
+ if (index >= 0) {
|
|
|
+ this.foundation_.handleKeydown(evt, evt.target.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS), index);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to figure out which element was clicked before sending the event to the foundation.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleClickEvent_',
|
|
|
+ value: function handleClickEvent_(evt) {
|
|
|
+ var index = this.getListItemIndex_(evt);
|
|
|
+
|
|
|
+ // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.
|
|
|
+ var toggleCheckbox = !Object(__WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__["matches"])( /** @type {!Element} */evt.target, __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_RADIO_SELECTOR);
|
|
|
+ this.foundation_.handleClick(index, toggleCheckbox);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initializeListType',
|
|
|
+ value: function initializeListType() {
|
|
|
+ // Automatically set single selection if selected/activated classes are present.
|
|
|
+ var preselectedElement = this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS + ', .' + __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_SELECTED_CLASS);
|
|
|
+
|
|
|
+ if (preselectedElement) {
|
|
|
+ if (preselectedElement.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS)) {
|
|
|
+ this.foundation_.setUseActivatedClass(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.singleSelection = true;
|
|
|
+ this.selectedIndex = this.listElements.indexOf(preselectedElement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} value */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {!MDCListFoundation} */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]( /** @type {!MDCListAdapter} */_extends({
|
|
|
+ getListItemCount: function getListItemCount() {
|
|
|
+ return _this2.listElements.length;
|
|
|
+ },
|
|
|
+ getFocusedElementIndex: function getFocusedElementIndex() {
|
|
|
+ return _this2.listElements.indexOf(document.activeElement);
|
|
|
+ },
|
|
|
+ setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) {
|
|
|
+ var element = _this2.listElements[index];
|
|
|
+ if (element) {
|
|
|
+ element.setAttribute(attr, value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ removeAttributeForElementIndex: function removeAttributeForElementIndex(index, attr) {
|
|
|
+ var element = _this2.listElements[index];
|
|
|
+ if (element) {
|
|
|
+ element.removeAttribute(attr);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ addClassForElementIndex: function addClassForElementIndex(index, className) {
|
|
|
+ var element = _this2.listElements[index];
|
|
|
+ if (element) {
|
|
|
+ element.classList.add(className);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ removeClassForElementIndex: function removeClassForElementIndex(index, className) {
|
|
|
+ var element = _this2.listElements[index];
|
|
|
+ if (element) {
|
|
|
+ element.classList.remove(className);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ focusItemAtIndex: function focusItemAtIndex(index) {
|
|
|
+ var element = _this2.listElements[index];
|
|
|
+ if (element) {
|
|
|
+ element.focus();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {
|
|
|
+ var element = _this2.listElements[listItemIndex];
|
|
|
+ var listItemChildren = [].slice.call(element.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));
|
|
|
+ listItemChildren.forEach(function (ele) {
|
|
|
+ return ele.setAttribute('tabindex', tabIndexValue);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ followHref: function followHref(index) {
|
|
|
+ var listItem = _this2.listElements[index];
|
|
|
+ if (listItem && listItem.href) {
|
|
|
+ listItem.click();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ toggleCheckbox: function toggleCheckbox(index) {
|
|
|
+ var checkboxOrRadioExists = false;
|
|
|
+ var listItem = _this2.listElements[index];
|
|
|
+ var elementsToToggle = [].slice.call(listItem.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_RADIO_SELECTOR));
|
|
|
+ elementsToToggle.forEach(function (element) {
|
|
|
+ var event = document.createEvent('Event');
|
|
|
+ event.initEvent('change', true, true);
|
|
|
+
|
|
|
+ if (!element.checked || element.type !== 'radio') {
|
|
|
+ element.checked = !element.checked;
|
|
|
+ element.dispatchEvent(event);
|
|
|
+ }
|
|
|
+ checkboxOrRadioExists = true;
|
|
|
+ });
|
|
|
+ return checkboxOrRadioExists;
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'vertical',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setVerticalOrientation(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return Array<!Element>*/
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'listElements',
|
|
|
+ get: function get() {
|
|
|
+ return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ENABLED_ITEMS_SELECTOR));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} value */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'wrapFocus',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setWrapFocus(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isSingleSelectionList */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'singleSelection',
|
|
|
+ set: function set(isSingleSelectionList) {
|
|
|
+ this.foundation_.setSingleSelection(isSingleSelectionList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} index */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'selectedIndex',
|
|
|
+ set: function set(index) {
|
|
|
+ this.foundation_.setSelectedIndex(index);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCList(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCList;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 16 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(38);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(39);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];
|
|
|
+
|
|
|
+var MDCListFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCListFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCListFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCListAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCListAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCListAdapter} */{
|
|
|
+ getListItemCount: function getListItemCount() {},
|
|
|
+ getFocusedElementIndex: function getFocusedElementIndex() {},
|
|
|
+ setAttributeForElementIndex: function setAttributeForElementIndex() {},
|
|
|
+ removeAttributeForElementIndex: function removeAttributeForElementIndex() {},
|
|
|
+ addClassForElementIndex: function addClassForElementIndex() {},
|
|
|
+ removeClassForElementIndex: function removeClassForElementIndex() {},
|
|
|
+ focusItemAtIndex: function focusItemAtIndex() {},
|
|
|
+ setTabIndexForListItemChildren: function setTabIndexForListItemChildren() {},
|
|
|
+ followHref: function followHref() {},
|
|
|
+ toggleCheckbox: function toggleCheckbox() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCListAdapter=} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCListFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCListFoundation);
|
|
|
+
|
|
|
+ /** {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCListFoundation.__proto__ || Object.getPrototypeOf(MDCListFoundation)).call(this, _extends(MDCListFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.wrapFocus_ = false;
|
|
|
+ /** {boolean} */
|
|
|
+ _this.isVertical_ = true;
|
|
|
+ /** {boolean} */
|
|
|
+ _this.isSingleSelectionList_ = false;
|
|
|
+ /** {number} */
|
|
|
+ _this.selectedIndex_ = -1;
|
|
|
+ /** {boolean} */
|
|
|
+ _this.useActivatedClass_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the private wrapFocus_ variable.
|
|
|
+ * @param {boolean} value
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCListFoundation, [{
|
|
|
+ key: 'setWrapFocus',
|
|
|
+ value: function setWrapFocus(value) {
|
|
|
+ this.wrapFocus_ = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the isVertical_ private variable.
|
|
|
+ * @param {boolean} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setVerticalOrientation',
|
|
|
+ value: function setVerticalOrientation(value) {
|
|
|
+ this.isVertical_ = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the isSingleSelectionList_ private variable.
|
|
|
+ * @param {boolean} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setSingleSelection',
|
|
|
+ value: function setSingleSelection(value) {
|
|
|
+ this.isSingleSelectionList_ = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the useActivatedClass_ private variable.
|
|
|
+ * @param {boolean} useActivated
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setUseActivatedClass',
|
|
|
+ value: function setUseActivatedClass(useActivated) {
|
|
|
+ this.useActivatedClass_ = useActivated;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} index */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setSelectedIndex',
|
|
|
+ value: function setSelectedIndex(index) {
|
|
|
+ if (index === this.selectedIndex_) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var className = this.useActivatedClass_ ? __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS : __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LIST_ITEM_SELECTED_CLASS;
|
|
|
+
|
|
|
+ if (this.selectedIndex_ >= 0) {
|
|
|
+ this.adapter_.removeAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED);
|
|
|
+ this.adapter_.removeClassForElementIndex(this.selectedIndex_, className);
|
|
|
+ this.adapter_.setAttributeForElementIndex(this.selectedIndex_, 'tabindex', -1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (index >= 0 && this.adapter_.getListItemCount() > index) {
|
|
|
+ this.selectedIndex_ = index;
|
|
|
+ this.adapter_.setAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, true);
|
|
|
+ this.adapter_.addClassForElementIndex(this.selectedIndex_, className);
|
|
|
+ this.adapter_.setAttributeForElementIndex(this.selectedIndex_, 'tabindex', 0);
|
|
|
+
|
|
|
+ if (this.selectedIndex_ !== 0) {
|
|
|
+ this.adapter_.setAttributeForElementIndex(0, 'tabindex', -1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focus in handler for the list items.
|
|
|
+ * @param evt
|
|
|
+ * @param {number} listItemIndex
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleFocusIn',
|
|
|
+ value: function handleFocusIn(evt, listItemIndex) {
|
|
|
+ if (listItemIndex >= 0) {
|
|
|
+ this.adapter_.setTabIndexForListItemChildren(listItemIndex, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focus out handler for the list items.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @param {number} listItemIndex
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleFocusOut',
|
|
|
+ value: function handleFocusOut(evt, listItemIndex) {
|
|
|
+ if (listItemIndex >= 0) {
|
|
|
+ this.adapter_.setTabIndexForListItemChildren(listItemIndex, -1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Key handler for the list.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @param {boolean} isRootListItem
|
|
|
+ * @param {number} listItemIndex
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown',
|
|
|
+ value: function handleKeydown(evt, isRootListItem, listItemIndex) {
|
|
|
+ var arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;
|
|
|
+ var arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;
|
|
|
+ var arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;
|
|
|
+ var arrowDown = 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;
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.isVertical_ && arrowDown || !this.isVertical_ && arrowRight) {
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ this.focusNextElement(currentIndex);
|
|
|
+ } else if (this.isVertical_ && arrowUp || !this.isVertical_ && arrowLeft) {
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ this.focusPrevElement(currentIndex);
|
|
|
+ } else if (isHome) {
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ this.focusFirstElement();
|
|
|
+ } else if (isEnd) {
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ this.focusLastElement();
|
|
|
+ } else if (isEnter || isSpace) {
|
|
|
+ if (isRootListItem) {
|
|
|
+ if (this.isSingleSelectionList_) {
|
|
|
+ // Check if the space key was pressed on the list item or a child element.
|
|
|
+ this.setSelectedIndex(currentIndex);
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Explicitly activate links, since we're preventing default on Enter, and Space doesn't activate them.
|
|
|
+ this.adapter_.followHref(currentIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ var checkboxFound = this.adapter_.toggleCheckbox(listItemIndex);
|
|
|
+
|
|
|
+ if (checkboxFound) {
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Click handler for the list.
|
|
|
+ * @param {number} index
|
|
|
+ * @param {boolean} toggleCheckbox
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleClick',
|
|
|
+ value: function handleClick(index, toggleCheckbox) {
|
|
|
+ if (index === -1) return;
|
|
|
+
|
|
|
+ if (toggleCheckbox) {
|
|
|
+ this.adapter_.toggleCheckbox(index);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.isSingleSelectionList_) {
|
|
|
+ this.setSelectedIndex(index);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Ensures that preventDefault is only called if the containing element doesn't
|
|
|
+ * consume the event, and it will cause an unintended scroll.
|
|
|
+ * @param {Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'preventDefaultEvent_',
|
|
|
+ value: function preventDefaultEvent_(evt) {
|
|
|
+ var tagName = ('' + evt.target.tagName).toLowerCase();
|
|
|
+ if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {
|
|
|
+ evt.preventDefault();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses the next element on the list.
|
|
|
+ * @param {number} index
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'focusNextElement',
|
|
|
+ value: function focusNextElement(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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.adapter_.focusItemAtIndex(nextIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses the previous element on the list.
|
|
|
+ * @param {number} index
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'focusPrevElement',
|
|
|
+ value: function focusPrevElement(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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.adapter_.focusItemAtIndex(prevIndex);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'focusFirstElement',
|
|
|
+ value: function focusFirstElement() {
|
|
|
+ if (this.adapter_.getListItemCount() > 0) {
|
|
|
+ this.adapter_.focusItemAtIndex(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'focusLastElement',
|
|
|
+ value: function focusLastElement() {
|
|
|
+ var lastIndex = this.adapter_.getListItemCount() - 1;
|
|
|
+ if (lastIndex >= 0) {
|
|
|
+ this.adapter_.focusItemAtIndex(lastIndex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCListFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCListFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 17 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFloatingLabel", function() { return MDCFloatingLabel; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(87);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFloatingLabelFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCFloatingLabelFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFloatingLabel = function (_MDCComponent) {
|
|
|
+ _inherits(MDCFloatingLabel, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCFloatingLabel() {
|
|
|
+ _classCallCheck(this, MDCFloatingLabel);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCFloatingLabel.__proto__ || Object.getPrototypeOf(MDCFloatingLabel)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFloatingLabel, [{
|
|
|
+ key: 'shake',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Styles the label to produce the label shake for errors.
|
|
|
+ * @param {boolean} shouldShake styles the label to shake by adding shake class
|
|
|
+ * if true, otherwise will stop shaking by removing shake class.
|
|
|
+ */
|
|
|
+ value: function shake(shouldShake) {
|
|
|
+ this.foundation_.shake(shouldShake);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Styles label to float/dock.
|
|
|
+ * @param {boolean} shouldFloat styles the label to float by adding float class
|
|
|
+ * if true, otherwise docks the label by removing the float class.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'float',
|
|
|
+ value: function float(shouldFloat) {
|
|
|
+ this.foundation_.float(shouldFloat);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getWidth',
|
|
|
+ value: function getWidth() {
|
|
|
+ return this.foundation_.getWidth();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCFloatingLabelFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ getWidth: function getWidth() {
|
|
|
+ return _this2.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.removeEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCFloatingLabel}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCFloatingLabel(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFloatingLabel;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 18 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLineRipple", function() { return MDCLineRipple; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(107);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLineRippleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCLineRippleFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCLineRipple = function (_MDCComponent) {
|
|
|
+ _inherits(MDCLineRipple, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCLineRipple() {
|
|
|
+ _classCallCheck(this, MDCLineRipple);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCLineRipple.__proto__ || Object.getPrototypeOf(MDCLineRipple)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCLineRipple, [{
|
|
|
+ key: 'activate',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the line ripple
|
|
|
+ */
|
|
|
+ value: function activate() {
|
|
|
+ this.foundation_.activate();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the line ripple
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ 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.
|
|
|
+ * @param {number} xCoordinate
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setRippleCenter',
|
|
|
+ value: function setRippleCenter(xCoordinate) {
|
|
|
+ this.foundation_.setRippleCenter(xCoordinate);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCLineRippleFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCLineRippleAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ setStyle: function setStyle(propertyName, value) {
|
|
|
+ return _this2.root_.style[propertyName] = value;
|
|
|
+ },
|
|
|
+ registerEventHandler: function registerEventHandler(evtType, handler) {
|
|
|
+ return _this2.root_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterEventHandler: function deregisterEventHandler(evtType, handler) {
|
|
|
+ return _this2.root_.removeEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCLineRipple}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCLineRipple(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCLineRipple;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 19 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-menu',
|
|
|
+ MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',
|
|
|
+ MENU_SELECTION_GROUP: 'mdc-menu__selection-group'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ SELECTED_EVENT: 'MDCMenu:selected',
|
|
|
+ ARIA_SELECTED_ATTR: 'aria-selected',
|
|
|
+ LIST_SELECTOR: '.mdc-list',
|
|
|
+ CHECKBOX_SELECTOR: 'input[type="checkbox"]'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 20 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return MDCMenuSurfaceFoundation; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnchorMargin; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(44);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(21);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * top: number,
|
|
|
+ * right: number,
|
|
|
+ * bottom: number,
|
|
|
+ * left: number
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var AnchorMargin = void 0;
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * viewport: { width: number, height: number },
|
|
|
+ * viewportDistance: {top: number, right: number, bottom: number, left: number},
|
|
|
+ * anchorHeight: number,
|
|
|
+ * anchorWidth: number,
|
|
|
+ * surfaceHeight: number,
|
|
|
+ * surfaceWidth: number,
|
|
|
+ * bodyDimensions,
|
|
|
+ * windowScroll,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var AutoLayoutMeasurements = void 0;
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCMenuSurfaceAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCMenuSurfaceFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCMenuSurfaceFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCMenuSurfaceFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum{cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum{string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["e" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum{number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'Corner',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCMenuSurfaceAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCMenuSurfaceAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCMenuSurfaceAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ hasAnchor: function hasAnchor() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ notifyClose: function notifyClose() {},
|
|
|
+ notifyOpen: function notifyOpen() {},
|
|
|
+ isElementInContainer: function isElementInContainer() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ isRtl: function isRtl() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ setTransformOrigin: function setTransformOrigin() {},
|
|
|
+ isFocused: function isFocused() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ saveFocus: function saveFocus() {},
|
|
|
+ restoreFocus: function restoreFocus() {},
|
|
|
+ isFirstElementFocused: function isFirstElementFocused() {},
|
|
|
+ isLastElementFocused: function isLastElementFocused() {},
|
|
|
+ focusFirstElement: function focusFirstElement() {},
|
|
|
+ focusLastElement: function focusLastElement() {},
|
|
|
+ getInnerDimensions: function getInnerDimensions() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ getAnchorDimensions: function getAnchorDimensions() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ getWindowDimensions: function getWindowDimensions() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ getBodyDimensions: function getBodyDimensions() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ getWindowScroll: function getWindowScroll() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ setPosition: function setPosition() {},
|
|
|
+ setMaxHeight: function setMaxHeight() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {!MDCMenuSurfaceAdapter} adapter */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCMenuSurfaceFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCMenuSurfaceFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCMenuSurfaceFoundation.__proto__ || Object.getPrototypeOf(MDCMenuSurfaceFoundation)).call(this, _extends(MDCMenuSurfaceFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.isOpen_ = false;
|
|
|
+ /** @private {number} */
|
|
|
+ _this.openAnimationEndTimerId_ = 0;
|
|
|
+ /** @private {number} */
|
|
|
+ _this.closeAnimationEndTimerId_ = 0;
|
|
|
+ /** @private {number} */
|
|
|
+ _this.animationRequestId_ = 0;
|
|
|
+ /** @private {!{ width: number, height: number }} */
|
|
|
+ _this.dimensions_;
|
|
|
+ /** @private {!Corner} */
|
|
|
+ _this.anchorCorner_ = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */].TOP_START;
|
|
|
+ /** @private {!AnchorMargin} */
|
|
|
+ _this.anchorMargin_ = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
|
+ /** @private {?AutoLayoutMeasurements} */
|
|
|
+ _this.measures_ = null;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.quickOpen_ = false;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.hoistedElement_ = false;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.isFixedPosition_ = false;
|
|
|
+ /** @private {!{x: number, y: number}} */
|
|
|
+ _this.position_ = { x: 0, y: 0 };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCMenuSurfaceFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _MDCMenuSurfaceFounda = MDCMenuSurfaceFoundation.cssClasses,
|
|
|
+ ROOT = _MDCMenuSurfaceFounda.ROOT,
|
|
|
+ OPEN = _MDCMenuSurfaceFounda.OPEN;
|
|
|
+
|
|
|
+
|
|
|
+ if (!this.adapter_.hasClass(ROOT)) {
|
|
|
+ throw new Error(ROOT + ' class required in root element.');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.adapter_.hasClass(OPEN)) {
|
|
|
+ this.isOpen_ = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ clearTimeout(this.openAnimationEndTimerId_);
|
|
|
+ clearTimeout(this.closeAnimationEndTimerId_);
|
|
|
+ // Cancel any currently running animations.
|
|
|
+ cancelAnimationFrame(this.animationRequestId_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Default anchor corner alignment of top-left menu surface corner.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorCorner',
|
|
|
+ value: function setAnchorCorner(corner) {
|
|
|
+ this.anchorCorner_ = corner;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!AnchorMargin} margin set of margin values from anchor.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorMargin',
|
|
|
+ value: function setAnchorMargin(margin) {
|
|
|
+ this.anchorMargin_.top = typeof margin.top === 'number' ? margin.top : 0;
|
|
|
+ this.anchorMargin_.right = typeof margin.right === 'number' ? margin.right : 0;
|
|
|
+ this.anchorMargin_.bottom = typeof margin.bottom === 'number' ? margin.bottom : 0;
|
|
|
+ this.anchorMargin_.left = typeof margin.left === 'number' ? margin.left : 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to indicate if the menu-surface is hoisted to the body.
|
|
|
+ * @param {boolean} isHoisted
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setIsHoisted',
|
|
|
+ value: function setIsHoisted(isHoisted) {
|
|
|
+ this.hoistedElement_ = isHoisted;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to set the menu-surface calculations based on a fixed position menu.
|
|
|
+ * @param {boolean} isFixedPosition
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setFixedPosition',
|
|
|
+ value: function setFixedPosition(isFixedPosition) {
|
|
|
+ this.isFixedPosition_ = isFixedPosition;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the menu-surface position on the page.
|
|
|
+ * @param {number} x
|
|
|
+ * @param {number} y
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAbsolutePosition',
|
|
|
+ value: function setAbsolutePosition(x, y) {
|
|
|
+ this.position_.x = this.typeCheckisFinite_(x) ? x : 0;
|
|
|
+ this.position_.y = this.typeCheckisFinite_(y) ? y : 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} quickOpen */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setQuickOpen',
|
|
|
+ value: function setQuickOpen(quickOpen) {
|
|
|
+ this.quickOpen_ = quickOpen;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handle clicks and close if not within menu-surface element.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleBodyClick',
|
|
|
+ value: function handleBodyClick(evt) {
|
|
|
+ var el = evt.target;
|
|
|
+
|
|
|
+ if (this.adapter_.isElementInContainer(el)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.close();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handle keys that close the surface.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+ value: function handleKeydown(evt) {
|
|
|
+ var keyCode = evt.keyCode,
|
|
|
+ key = evt.key,
|
|
|
+ shiftKey = evt.shiftKey;
|
|
|
+
|
|
|
+
|
|
|
+ var isEscape = key === 'Escape' || keyCode === 27;
|
|
|
+ var isTab = key === 'Tab' || keyCode === 9;
|
|
|
+
|
|
|
+ if (isEscape) {
|
|
|
+ this.close();
|
|
|
+ } else if (isTab) {
|
|
|
+ if (this.adapter_.isLastElementFocused() && !shiftKey) {
|
|
|
+ this.adapter_.focusFirstElement();
|
|
|
+ evt.preventDefault();
|
|
|
+ } else if (this.adapter_.isFirstElementFocused() && shiftKey) {
|
|
|
+ this.adapter_.focusLastElement();
|
|
|
+ evt.preventDefault();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!AutoLayoutMeasurements} Measurements used to position menu surface popup.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAutoLayoutMeasurements_',
|
|
|
+ value: function getAutoLayoutMeasurements_() {
|
|
|
+ var anchorRect = this.adapter_.getAnchorDimensions();
|
|
|
+ var viewport = this.adapter_.getWindowDimensions();
|
|
|
+ var bodyDimensions = this.adapter_.getBodyDimensions();
|
|
|
+ var windowScroll = this.adapter_.getWindowScroll();
|
|
|
+
|
|
|
+ if (!anchorRect) {
|
|
|
+ anchorRect = /** @type {ClientRect} */{
|
|
|
+ x: this.position_.x,
|
|
|
+ y: this.position_.y,
|
|
|
+ top: this.position_.y,
|
|
|
+ bottom: this.position_.y,
|
|
|
+ left: this.position_.x,
|
|
|
+ right: this.position_.x,
|
|
|
+ height: 0,
|
|
|
+ width: 0
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ viewport: viewport,
|
|
|
+ bodyDimensions: bodyDimensions,
|
|
|
+ windowScroll: windowScroll,
|
|
|
+ viewportDistance: {
|
|
|
+ top: anchorRect.top,
|
|
|
+ right: viewport.width - anchorRect.right,
|
|
|
+ left: anchorRect.left,
|
|
|
+ bottom: viewport.height - anchorRect.bottom
|
|
|
+ },
|
|
|
+ anchorHeight: anchorRect.height,
|
|
|
+ anchorWidth: anchorRect.width,
|
|
|
+ surfaceHeight: this.dimensions_.height,
|
|
|
+ surfaceWidth: this.dimensions_.width
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Computes the corner of the anchor from which to animate and position the menu surface.
|
|
|
+ * @return {!Corner}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getOriginCorner_',
|
|
|
+ value: function getOriginCorner_() {
|
|
|
+ // Defaults: open from the top left.
|
|
|
+ var corner = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */].TOP_LEFT;
|
|
|
+
|
|
|
+ var _measures_ = this.measures_,
|
|
|
+ viewportDistance = _measures_.viewportDistance,
|
|
|
+ anchorHeight = _measures_.anchorHeight,
|
|
|
+ anchorWidth = _measures_.anchorWidth,
|
|
|
+ surfaceHeight = _measures_.surfaceHeight,
|
|
|
+ surfaceWidth = _measures_.surfaceWidth;
|
|
|
+
|
|
|
+ var isBottomAligned = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
|
|
|
+ var availableTop = isBottomAligned ? viewportDistance.top + anchorHeight + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top;
|
|
|
+ var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorHeight - this.anchorMargin_.top;
|
|
|
+
|
|
|
+ var topOverflow = surfaceHeight - availableTop;
|
|
|
+ var bottomOverflow = surfaceHeight - availableBottom;
|
|
|
+ if (bottomOverflow > 0 && topOverflow < bottomOverflow) {
|
|
|
+ corner |= __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM;
|
|
|
+ }
|
|
|
+
|
|
|
+ var isRtl = this.adapter_.isRtl();
|
|
|
+ var isFlipRtl = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].FLIP_RTL);
|
|
|
+ var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
|
|
|
+ var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl;
|
|
|
+ var availableLeft = isAlignedRight ? viewportDistance.left + anchorWidth + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left;
|
|
|
+ var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorWidth - this.anchorMargin_.left;
|
|
|
+
|
|
|
+ var leftOverflow = surfaceWidth - availableLeft;
|
|
|
+ var rightOverflow = surfaceWidth - availableRight;
|
|
|
+
|
|
|
+ if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) {
|
|
|
+ corner |= __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT;
|
|
|
+ }
|
|
|
+
|
|
|
+ return (/** @type {Corner} */corner
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Origin corner of the menu surface.
|
|
|
+ * @return {number} Horizontal offset of menu surface origin corner from corresponding anchor corner.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getHorizontalOriginOffset_',
|
|
|
+ value: function getHorizontalOriginOffset_(corner) {
|
|
|
+ var anchorWidth = this.measures_.anchorWidth;
|
|
|
+ // isRightAligned corresponds to using the 'right' property on the surface.
|
|
|
+
|
|
|
+ var isRightAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
|
|
|
+ var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
|
|
|
+
|
|
|
+ if (isRightAligned) {
|
|
|
+ var rightOffset = avoidHorizontalOverlap ? anchorWidth - 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.hoistedElement_ || this.isFixedPosition_) {
|
|
|
+ return rightOffset - (this.measures_.viewport.width - this.measures_.bodyDimensions.width);
|
|
|
+ }
|
|
|
+
|
|
|
+ return rightOffset;
|
|
|
+ }
|
|
|
+
|
|
|
+ return avoidHorizontalOverlap ? anchorWidth - this.anchorMargin_.right : this.anchorMargin_.left;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Origin corner of the menu surface.
|
|
|
+ * @return {number} Vertical offset of menu surface origin corner from corresponding anchor corner.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getVerticalOriginOffset_',
|
|
|
+ value: function getVerticalOriginOffset_(corner) {
|
|
|
+ var anchorHeight = this.measures_.anchorHeight;
|
|
|
+
|
|
|
+ var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
|
|
|
+ var avoidVerticalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
|
|
|
+ var y = 0;
|
|
|
+
|
|
|
+ if (isBottomAligned) {
|
|
|
+ y = avoidVerticalOverlap ? anchorHeight - this.anchorMargin_.top : -this.anchorMargin_.bottom;
|
|
|
+ } else {
|
|
|
+ y = avoidVerticalOverlap ? anchorHeight + this.anchorMargin_.bottom : this.anchorMargin_.top;
|
|
|
+ }
|
|
|
+ return y;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Origin corner of the menu surface.
|
|
|
+ * @return {number} Maximum height of the menu surface, based on available space. 0 indicates should not be set.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getMenuSurfaceMaxHeight_',
|
|
|
+ value: function getMenuSurfaceMaxHeight_(corner) {
|
|
|
+ var maxHeight = 0;
|
|
|
+ var viewportDistance = this.measures_.viewportDistance;
|
|
|
+
|
|
|
+ var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* 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 (!(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM)) {
|
|
|
+ maxHeight += this.measures_.anchorHeight;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measures_.anchorHeight - MARGIN_TO_EDGE;
|
|
|
+ if (this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM) {
|
|
|
+ maxHeight -= this.measures_.anchorHeight;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return maxHeight;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'autoPosition_',
|
|
|
+ value: function autoPosition_() {
|
|
|
+ var _position;
|
|
|
+
|
|
|
+ // Compute measurements for autoposition methods reuse.
|
|
|
+ this.measures_ = this.getAutoLayoutMeasurements_();
|
|
|
+
|
|
|
+ var corner = this.getOriginCorner_();
|
|
|
+ var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);
|
|
|
+ var verticalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM ? 'bottom' : 'top';
|
|
|
+ var horizontalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT ? 'right' : 'left';
|
|
|
+ var horizontalOffset = this.getHorizontalOriginOffset_(corner);
|
|
|
+ var verticalOffset = this.getVerticalOriginOffset_(corner);
|
|
|
+ var position = (_position = {}, _defineProperty(_position, horizontalAlignment, horizontalOffset ? horizontalOffset : '0'), _defineProperty(_position, verticalAlignment, verticalOffset ? verticalOffset : '0'), _position);
|
|
|
+ var _measures_2 = this.measures_,
|
|
|
+ anchorWidth = _measures_2.anchorWidth,
|
|
|
+ surfaceWidth = _measures_2.surfaceWidth;
|
|
|
+ // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.
|
|
|
+
|
|
|
+ if (anchorWidth / surfaceWidth > __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* 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.hoistedElement_ || this.isFixedPosition_) {
|
|
|
+ position = this.adjustPositionForHoistedElement_(position);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (var prop in position) {
|
|
|
+ if (position.hasOwnProperty(prop) && position[prop] !== '0') {
|
|
|
+ position[prop] = parseInt(position[prop], 10) + 'px';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.setTransformOrigin(horizontalAlignment + ' ' + verticalAlignment);
|
|
|
+ this.adapter_.setPosition(position);
|
|
|
+ this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');
|
|
|
+
|
|
|
+ // Clear measures after positioning is complete.
|
|
|
+ this.measures_ = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Calculates the offsets for positioning the menu-surface when the menu-surface has been
|
|
|
+ * hoisted to the body.
|
|
|
+ * @param {!{
|
|
|
+ * top: (string|undefined),
|
|
|
+ * right: (string|undefined),
|
|
|
+ * bottom: (string|undefined),
|
|
|
+ * left: (string|undefined)
|
|
|
+ * }} position
|
|
|
+ * @return {!{
|
|
|
+ * top: (string|undefined),
|
|
|
+ * right: (string|undefined),
|
|
|
+ * bottom: (string|undefined),
|
|
|
+ * left: (string|undefined)
|
|
|
+ * }} position
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'adjustPositionForHoistedElement_',
|
|
|
+ value: function adjustPositionForHoistedElement_(position) {
|
|
|
+ var _measures_3 = this.measures_,
|
|
|
+ windowScroll = _measures_3.windowScroll,
|
|
|
+ viewportDistance = _measures_3.viewportDistance;
|
|
|
+
|
|
|
+
|
|
|
+ for (var prop in position) {
|
|
|
+ if (position.hasOwnProperty(prop)) {
|
|
|
+ // Hoisted surfaces need to have the anchor elements location on the page added to the
|
|
|
+ // position properties for proper alignment on the body.
|
|
|
+ if (viewportDistance.hasOwnProperty(prop)) {
|
|
|
+ position[prop] = parseInt(position[prop], 10) + viewportDistance[prop];
|
|
|
+ }
|
|
|
+
|
|
|
+ // Surfaces that are absolutely positioned need to have additional calculations for scroll
|
|
|
+ // and bottom positioning.
|
|
|
+ if (!this.isFixedPosition_) {
|
|
|
+ if (prop === 'top') {
|
|
|
+ position[prop] = parseInt(position[prop], 10) + windowScroll.y;
|
|
|
+ } else if (prop === 'bottom') {
|
|
|
+ position[prop] = parseInt(position[prop], 10) - windowScroll.y;
|
|
|
+ } else if (prop === 'left') {
|
|
|
+ position[prop] = parseInt(position[prop], 10) + windowScroll.x;
|
|
|
+ } else if (prop === 'right') {
|
|
|
+ position[prop] = parseInt(position[prop], 10) - windowScroll.x;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Open the menu surface.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.adapter_.saveFocus();
|
|
|
+
|
|
|
+ if (!this.quickOpen_) {
|
|
|
+ this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.animationRequestId_ = requestAnimationFrame(function () {
|
|
|
+ _this2.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
|
|
|
+ _this2.dimensions_ = _this2.adapter_.getInnerDimensions();
|
|
|
+ _this2.autoPosition_();
|
|
|
+ if (_this2.quickOpen_) {
|
|
|
+ _this2.adapter_.notifyOpen();
|
|
|
+ } else {
|
|
|
+ _this2.openAnimationEndTimerId_ = setTimeout(function () {
|
|
|
+ _this2.openAnimationEndTimerId_ = 0;
|
|
|
+ _this2.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
|
|
|
+ _this2.adapter_.notifyOpen();
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */].TRANSITION_OPEN_DURATION);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.isOpen_ = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Closes the menu surface.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ if (!this.quickOpen_) {
|
|
|
+ this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
|
|
|
+ }
|
|
|
+
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
|
|
|
+ if (_this3.quickOpen_) {
|
|
|
+ _this3.adapter_.notifyClose();
|
|
|
+ } else {
|
|
|
+ _this3.closeAnimationEndTimerId_ = setTimeout(function () {
|
|
|
+ _this3.closeAnimationEndTimerId_ = 0;
|
|
|
+ _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
|
|
|
+ _this3.adapter_.notifyClose();
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */].TRANSITION_CLOSE_DURATION);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.isOpen_ = false;
|
|
|
+ this.maybeRestoreFocus_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'maybeRestoreFocus_',
|
|
|
+ value: function maybeRestoreFocus_() {
|
|
|
+ if (this.adapter_.isFocused() || this.adapter_.isElementInContainer(document.activeElement)) {
|
|
|
+ this.adapter_.restoreFocus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isOpen',
|
|
|
+ value: function isOpen() {
|
|
|
+ return this.isOpen_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * isFinite that doesn't force conversion to number type.
|
|
|
+ * Equivalent to Number.isFinite in ES2015, but is not included in IE11.
|
|
|
+ * @param {number} num
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'typeCheckisFinite_',
|
|
|
+ value: function typeCheckisFinite_(num) {
|
|
|
+ return typeof num === 'number' && isFinite(num);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenuSurfaceFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 21 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return numbers; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return CornerBit; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Corner; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+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'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+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"])'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+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
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Enum for bits in the {@see Corner) bitmap.
|
|
|
+ * @enum {number}
|
|
|
+ */
|
|
|
+var CornerBit = {
|
|
|
+ BOTTOM: 1,
|
|
|
+ CENTER: 2,
|
|
|
+ RIGHT: 4,
|
|
|
+ FLIP_RTL: 8
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * 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.
|
|
|
+ *
|
|
|
+ * @enum {number}
|
|
|
+ */
|
|
|
+var Corner = {
|
|
|
+ TOP_LEFT: 0,
|
|
|
+ TOP_RIGHT: CornerBit.RIGHT,
|
|
|
+ BOTTOM_LEFT: CornerBit.BOTTOM,
|
|
|
+ BOTTOM_RIGHT: CornerBit.BOTTOM | CornerBit.RIGHT,
|
|
|
+ TOP_START: CornerBit.FLIP_RTL,
|
|
|
+ TOP_END: CornerBit.FLIP_RTL | CornerBit.RIGHT,
|
|
|
+ BOTTOM_START: CornerBit.BOTTOM | CornerBit.FLIP_RTL,
|
|
|
+ BOTTOM_END: CornerBit.BOTTOM | CornerBit.RIGHT | CornerBit.FLIP_RTL
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 22 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCNotchedOutline", function() { return MDCNotchedOutline; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(112);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(47);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCNotchedOutlineFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCNotchedOutlineFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCNotchedOutline = function (_MDCComponent) {
|
|
|
+ _inherits(MDCNotchedOutline, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCNotchedOutline() {
|
|
|
+ _classCallCheck(this, MDCNotchedOutline);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCNotchedOutline.__proto__ || Object.getPrototypeOf(MDCNotchedOutline)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCNotchedOutline, [{
|
|
|
+ key: 'notch',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates outline selectors and SVG path to open notch.
|
|
|
+ * @param {number} notchWidth The notch width in the outline.
|
|
|
+ * @param {boolean=} isRtl Determines if outline is rtl. If rtl is true, notch
|
|
|
+ * will be right justified in outline path, otherwise left justified.
|
|
|
+ */
|
|
|
+ value: function notch(notchWidth, isRtl) {
|
|
|
+ this.foundation_.notch(notchWidth, isRtl);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates the outline selectors to close notch and return it to idle state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closeNotch',
|
|
|
+ value: function closeNotch() {
|
|
|
+ this.foundation_.closeNotch();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCNotchedOutlineFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ getWidth: function getWidth() {
|
|
|
+ return _this2.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ getHeight: function getHeight() {
|
|
|
+ return _this2.root_.offsetHeight;
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setOutlinePathAttr: function setOutlinePathAttr(value) {
|
|
|
+ var path = _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].PATH_SELECTOR);
|
|
|
+ path.setAttribute('d', value);
|
|
|
+ },
|
|
|
+ getIdleOutlineStyleValue: function getIdleOutlineStyleValue(propertyName) {
|
|
|
+ var idleOutlineElement = _this2.root_.parentNode.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].IDLE_OUTLINE_SELECTOR);
|
|
|
+ return window.getComputedStyle(idleOutlineElement).getPropertyValue(propertyName);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCNotchedOutline}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCNotchedOutline(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCNotchedOutline;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 23 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSelectIcon; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(119);
|
|
|
+/* unused harmony reexport MDCSelectIconFoundation */
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCSelectIconFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectIcon = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSelectIcon, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCSelectIcon() {
|
|
|
+ _classCallCheck(this, MDCSelectIcon);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSelectIcon.__proto__ || Object.getPrototypeOf(MDCSelectIcon)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectIcon, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectIconFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCSelectIconAdapter} */_extends({
|
|
|
+ getAttr: function getAttr(attr) {
|
|
|
+ return _this2.root_.getAttribute(attr);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(attr, value) {
|
|
|
+ return _this2.root_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeAttr: function removeAttr(attr) {
|
|
|
+ return _this2.root_.removeAttribute(attr);
|
|
|
+ },
|
|
|
+ setContent: function setContent(content) {
|
|
|
+ _this2.root_.textContent = content;
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.removeEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ notifyIconAction: function notifyIconAction() {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'foundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectIconFoundation}
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCSelectIcon}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSelectIcon(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectIcon;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 24 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSelectHelperText; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(121);
|
|
|
+/* unused harmony reexport MDCSelectHelperTextFoundation */
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCSelectHelperTextFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectHelperText = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSelectHelperText, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCSelectHelperText() {
|
|
|
+ _classCallCheck(this, MDCSelectHelperText);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSelectHelperText.__proto__ || Object.getPrototypeOf(MDCSelectHelperText)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectHelperText, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectHelperTextFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCSelectHelperTextAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(attr, value) {
|
|
|
+ return _this2.root_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeAttr: function removeAttr(attr) {
|
|
|
+ return _this2.root_.removeAttribute(attr);
|
|
|
+ },
|
|
|
+ setContent: function setContent(content) {
|
|
|
+ _this2.root_.textContent = content;
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'foundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectHelperTextFoundation}
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCSelectHelperText}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSelectHelperText(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectHelperText;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 25 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTab", function() { return MDCTab; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__ = __webpack_require__(54);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(10);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(135);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTabFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTab = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTab, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCTab() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTab);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTab.__proto__ || Object.getPrototypeOf(MDCTab)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_;
|
|
|
+ /** @private {?MDCTabIndicator} */
|
|
|
+ _this.tabIndicator_;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.content_;
|
|
|
+
|
|
|
+ /** @private {?Function} */
|
|
|
+ _this.handleClick_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTab}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTab, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
|
|
|
+ };
|
|
|
+ var tabIndicatorFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__["MDCTabIndicator"](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ var rippleSurface = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.RIPPLE_SELECTOR);
|
|
|
+ var rippleAdapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter( /** @type {!RippleCapableSurface} */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 __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](rippleAdapter);
|
|
|
+ this.ripple_ = rippleFactory(this.root_, rippleFoundation);
|
|
|
+
|
|
|
+ var tabIndicatorElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_INDICATOR_SELECTOR);
|
|
|
+ this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);
|
|
|
+
|
|
|
+ this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);
|
|
|
+ this.listen('click', this.handleClick_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.unlisten('click', /** @type {!Function} */this.handleClick_);
|
|
|
+ this.ripple_.destroy();
|
|
|
+ _get(MDCTab.prototype.__proto__ || Object.getPrototypeOf(MDCTab.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */](
|
|
|
+ /** @type {!MDCTabAdapter} */{
|
|
|
+ setAttr: function setAttr(attr, value) {
|
|
|
+ return _this2.root_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ activateIndicator: function activateIndicator(previousIndicatorClientRect) {
|
|
|
+ return _this2.tabIndicator_.activate(previousIndicatorClientRect);
|
|
|
+ },
|
|
|
+ deactivateIndicator: function deactivateIndicator() {
|
|
|
+ return _this2.tabIndicator_.deactivate();
|
|
|
+ },
|
|
|
+ notifyInteracted: function notifyInteracted() {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.INTERACTED_EVENT, { tab: _this2 }, true /* bubble */);
|
|
|
+ },
|
|
|
+ getOffsetLeft: function getOffsetLeft() {
|
|
|
+ return _this2.root_.offsetLeft;
|
|
|
+ },
|
|
|
+ getOffsetWidth: function getOffsetWidth() {
|
|
|
+ return _this2.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ getContentOffsetLeft: function getContentOffsetLeft() {
|
|
|
+ return _this2.content_.offsetLeft;
|
|
|
+ },
|
|
|
+ getContentOffsetWidth: function getContentOffsetWidth() {
|
|
|
+ return _this2.content_.offsetWidth;
|
|
|
+ },
|
|
|
+ focus: function focus() {
|
|
|
+ return _this2.root_.focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Getter for the active state of the tab
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the tab
|
|
|
+ * @param {!ClientRect=} computeIndicatorClientRect
|
|
|
+ */
|
|
|
+ value: function activate(computeIndicatorClientRect) {
|
|
|
+ this.foundation_.activate(computeIndicatorClientRect);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.foundation_.deactivate();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the indicator's client rect
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeIndicatorClientRect',
|
|
|
+ value: function computeIndicatorClientRect() {
|
|
|
+ return this.tabIndicator_.computeContentClientRect();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabDimensions}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeDimensions',
|
|
|
+ value: function computeDimensions() {
|
|
|
+ return this.foundation_.computeDimensions();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses the tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'focus',
|
|
|
+ value: function focus() {
|
|
|
+ this.root_.focus();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'active',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isActive();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'focusOnActivate',
|
|
|
+ set: function set(focusOnActivate) {
|
|
|
+ this.foundation_.setFocusOnActivate(focusOnActivate);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTab(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTab;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 26 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(55);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(132);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTabIndicatorAdapter>}
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabIndicatorFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTabIndicatorFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTabIndicatorFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @see MDCTabIndicatorAdapter for typing information
|
|
|
+ * @return {!MDCTabIndicatorAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTabIndicatorAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ computeContentClientRect: function computeContentClientRect() {},
|
|
|
+ setContentStyleProperty: function setContentStyleProperty() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {!MDCTabIndicatorAdapter} adapter */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabIndicatorFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTabIndicatorFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCTabIndicatorFoundation)).call(this, _extends(MDCTabIndicatorFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!ClientRect} */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTabIndicatorFoundation, [{
|
|
|
+ key: 'computeContentClientRect',
|
|
|
+ value: function computeContentClientRect() {
|
|
|
+ return this.adapter_.computeContentClientRect();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the indicator
|
|
|
+ * @param {!ClientRect=} previousIndicatorClientRect
|
|
|
+ * @abstract
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate(previousIndicatorClientRect) {} // eslint-disable-line no-unused-vars
|
|
|
+
|
|
|
+ /** @abstract */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabIndicatorFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabIndicatorFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 27 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(61);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(146);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTextFieldHelperTextAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldHelperTextFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTextFieldHelperTextFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldHelperTextFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCTextFieldHelperTextAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCTextFieldHelperTextAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTextFieldHelperTextAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ removeAttr: function removeAttr() {},
|
|
|
+ setContent: function setContent() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTextFieldHelperTextAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTextFieldHelperTextFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTextFieldHelperTextFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTextFieldHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperTextFoundation)).call(this, _extends(MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the content of the helper text field.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldHelperTextFoundation, [{
|
|
|
+ key: 'setContent',
|
|
|
+ value: function setContent(content) {
|
|
|
+ this.adapter_.setContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isPersistent Sets the persistency of the helper text. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setPersistent',
|
|
|
+ value: function setPersistent(isPersistent) {
|
|
|
+ if (isPersistent) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} isValidation True to make the helper text act as an
|
|
|
+ * error validation message.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValidation',
|
|
|
+ value: function setValidation(isValidation) {
|
|
|
+ if (isValidation) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** Makes the helper text visible to the screen reader. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'showToScreenReader',
|
|
|
+ value: function showToScreenReader() {
|
|
|
+ this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the validity of the helper text based on the input validity.
|
|
|
+ * @param {boolean} inputIsValid
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValidity',
|
|
|
+ value: function setValidity(inputIsValid) {
|
|
|
+ var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;
|
|
|
+
|
|
|
+ if (validationMsgNeedsDisplay) {
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE, 'alert');
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
|
|
|
+ this.hide_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Hides the help text from screen readers.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hide_',
|
|
|
+ value: function hide_() {
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN, 'true');
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldHelperTextFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldHelperTextFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 28 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(147);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTextFieldIconAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldIconFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTextFieldIconFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldIconFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCTextFieldIconAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCTextFieldIconAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTextFieldIconAdapter} */{
|
|
|
+ getAttr: function getAttr() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ removeAttr: function removeAttr() {},
|
|
|
+ setContent: function setContent() {},
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() {},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() {},
|
|
|
+ notifyIconAction: function notifyIconAction() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTextFieldIconAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTextFieldIconFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTextFieldIconFoundation);
|
|
|
+
|
|
|
+ /** @private {string?} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTextFieldIconFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldIconFoundation)).call(this, _extends(MDCTextFieldIconFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.savedTabIndex_ = null;
|
|
|
+
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ _this.interactionHandler_ = function (evt) {
|
|
|
+ return _this.handleInteraction(evt);
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldIconFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.savedTabIndex_ = this.adapter_.getAttr('tabindex');
|
|
|
+
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(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', __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */].ICON_ROLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} label */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAriaLabel',
|
|
|
+ value: function setAriaLabel(label) {
|
|
|
+ this.adapter_.setAttr('aria-label', label);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} content */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setContent',
|
|
|
+ value: function setContent(content) {
|
|
|
+ this.adapter_.setContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles an interaction event
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleInteraction',
|
|
|
+ value: function handleInteraction(evt) {
|
|
|
+ if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
|
|
|
+ this.adapter_.notifyIconAction();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldIconFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldIconFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 29 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Ripple. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - CSS variables
|
|
|
+ * - position
|
|
|
+ * - dimensions
|
|
|
+ * - scroll position
|
|
|
+ * - event handlers
|
|
|
+ * - unbounded, active and disabled states
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCRippleAdapter = function () {
|
|
|
+ function MDCRippleAdapter() {
|
|
|
+ _classCallCheck(this, MDCRippleAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCRippleAdapter, [{
|
|
|
+ key: "browserSupportsCssVars",
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ value: function browserSupportsCssVars() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isUnbounded",
|
|
|
+ value: function isUnbounded() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isSurfaceActive",
|
|
|
+ value: function isSurfaceActive() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isSurfaceDisabled",
|
|
|
+ value: function isSurfaceDisabled() {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addClass",
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /** @param {!EventTarget} target */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "containsEventTarget",
|
|
|
+ value: function containsEventTarget(target) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerDocumentInteractionHandler",
|
|
|
+ value: function registerDocumentInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterDocumentInteractionHandler",
|
|
|
+ value: function deregisterDocumentInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerResizeHandler",
|
|
|
+ value: function registerResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Function} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterResizeHandler",
|
|
|
+ value: function deregisterResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} varName
|
|
|
+ * @param {?number|string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "updateCssVariable",
|
|
|
+ value: function updateCssVariable(varName, value) {}
|
|
|
+
|
|
|
+ /** @return {!ClientRect} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeBoundingRect",
|
|
|
+ value: function computeBoundingRect() {}
|
|
|
+
|
|
|
+ /** @return {{x: number, y: number}} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getWindowPageOffset",
|
|
|
+ value: function getWindowPageOffset() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRippleAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCRippleAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 30 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChip; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(31);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(32);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(33);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 INTERACTION_EVENTS = ['click', 'keydown'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCChipFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCChip = function (_MDCComponent) {
|
|
|
+ _inherits(MDCChip, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCChip() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCChip);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @type {string} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCChip.__proto__ || Object.getPrototypeOf(MDCChip)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.id;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.leadingIcon_;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.trailingIcon_;
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ _this.ripple_;
|
|
|
+
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleInteraction_;
|
|
|
+ /** @private {?function(!Event): undefined} */
|
|
|
+ _this.handleTransitionEnd_;
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ _this.handleTrailingIconInteraction_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCChip}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCChip, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.id = this.root_.id;
|
|
|
+ this.leadingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].LEADING_ICON_SELECTOR);
|
|
|
+ this.trailingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].TRAILING_ICON_SELECTOR);
|
|
|
+
|
|
|
+ // Adjust ripple size for chips with animated growing width. This applies when filter chips without
|
|
|
+ // a leading icon are selected, and a leading checkmark will cause the chip width to expand.
|
|
|
+ var checkmarkEl = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKMARK_SELECTOR);
|
|
|
+ if (checkmarkEl && !this.leadingIcon_) {
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ computeBoundingRect: function computeBoundingRect() {
|
|
|
+ var height = _this2.root_.getBoundingClientRect().height;
|
|
|
+ // The checkmark's width is initially set to 0, so use the checkmark's height as a proxy since the
|
|
|
+ // checkmark should always be square.
|
|
|
+ var width = _this2.root_.getBoundingClientRect().width + checkmarkEl.getBoundingClientRect().height;
|
|
|
+ return { height: height, width: width };
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.ripple_ = rippleFactory(this.root_, new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](adapter));
|
|
|
+ } else {
|
|
|
+ this.ripple_ = rippleFactory(this.root_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ this.handleInteraction_ = function (evt) {
|
|
|
+ return _this3.foundation_.handleInteraction(evt);
|
|
|
+ };
|
|
|
+ this.handleTransitionEnd_ = function (evt) {
|
|
|
+ return _this3.foundation_.handleTransitionEnd(evt);
|
|
|
+ };
|
|
|
+ this.handleTrailingIconInteraction_ = function (evt) {
|
|
|
+ return _this3.foundation_.handleTrailingIconInteraction(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ INTERACTION_EVENTS.forEach(function (evtType) {
|
|
|
+ _this3.root_.addEventListener(evtType, _this3.handleInteraction_);
|
|
|
+ });
|
|
|
+ this.root_.addEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+
|
|
|
+ if (this.trailingIcon_) {
|
|
|
+ INTERACTION_EVENTS.forEach(function (evtType) {
|
|
|
+ _this3.trailingIcon_.addEventListener(evtType, _this3.handleTrailingIconInteraction_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ this.ripple_.destroy();
|
|
|
+
|
|
|
+ INTERACTION_EVENTS.forEach(function (evtType) {
|
|
|
+ _this4.root_.removeEventListener(evtType, _this4.handleInteraction_);
|
|
|
+ });
|
|
|
+ this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+
|
|
|
+ if (this.trailingIcon_) {
|
|
|
+ INTERACTION_EVENTS.forEach(function (evtType) {
|
|
|
+ _this4.trailingIcon_.removeEventListener(evtType, _this4.handleTrailingIconInteraction_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ _get(MDCChip.prototype.__proto__ || Object.getPrototypeOf(MDCChip.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether the chip is selected.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'beginExit',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Begins the exit animation which leads to removal of the chip.
|
|
|
+ */
|
|
|
+ value: function beginExit() {
|
|
|
+ this.foundation_.beginExit();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCChipFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* MDCChipFoundation */]( /** @type {!MDCChipAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this5.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this5.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this5.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ addClassToLeadingIcon: function addClassToLeadingIcon(className) {
|
|
|
+ if (_this5.leadingIcon_) {
|
|
|
+ _this5.leadingIcon_.classList.add(className);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) {
|
|
|
+ if (_this5.leadingIcon_) {
|
|
|
+ _this5.leadingIcon_.classList.remove(className);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ eventTargetHasClass: function eventTargetHasClass(target, className) {
|
|
|
+ return target.classList.contains(className);
|
|
|
+ },
|
|
|
+ notifyInteraction: function notifyInteraction() {
|
|
|
+ return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ notifySelection: function notifySelection(selected) {
|
|
|
+ return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].SELECTION_EVENT, { chipId: _this5.id, selected: selected }, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {
|
|
|
+ return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].TRAILING_ICON_INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ notifyRemoval: function notifyRemoval() {
|
|
|
+ return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].REMOVAL_EVENT, { chipId: _this5.id, root: _this5.root_ }, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ getComputedStyleValue: function getComputedStyleValue(propertyName) {
|
|
|
+ return window.getComputedStyle(_this5.root_).getPropertyValue(propertyName);
|
|
|
+ },
|
|
|
+ setStyleProperty: function setStyleProperty(propertyName, value) {
|
|
|
+ return _this5.root_.style.setProperty(propertyName, value);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'selected',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isSelected();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets selected state on the chip.
|
|
|
+ * @param {boolean} selected
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(selected) {
|
|
|
+ this.foundation_.setSelected(selected);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether a trailing icon click should trigger exit/removal of the chip.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shouldRemoveOnTrailingIconClick',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getShouldRemoveOnTrailingIconClick();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets whether a trailing icon click should trigger exit/removal of the chip.
|
|
|
+ * @param {boolean} shouldRemove
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(shouldRemove) {
|
|
|
+ this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCChip(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChip;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 31 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Chip.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Chip into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCChipAdapter = function () {
|
|
|
+ function MDCChipAdapter() {
|
|
|
+ _classCallCheck(this, MDCChipAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCChipAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root element contains the given class.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the leading icon element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addClassToLeadingIcon",
|
|
|
+ value: function addClassToLeadingIcon(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the leading icon element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClassFromLeadingIcon",
|
|
|
+ value: function removeClassFromLeadingIcon(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if target has className, false otherwise.
|
|
|
+ * @param {!EventTarget} target
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "eventTargetHasClass",
|
|
|
+ value: function eventTargetHasClass(target, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom "MDCChip:interaction" event denoting the chip has been
|
|
|
+ * interacted with (typically on click or keydown).
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyInteraction",
|
|
|
+ value: function notifyInteraction() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom "MDCChip:selection" event denoting the chip has been selected or deselected.
|
|
|
+ * @param {boolean} selected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifySelection",
|
|
|
+ value: function notifySelection(selected) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom "MDCChip:trailingIconInteraction" event denoting the trailing icon has been
|
|
|
+ * interacted with (typically on click or keydown).
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyTrailingIconInteraction",
|
|
|
+ value: function notifyTrailingIconInteraction() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event "MDCChip:removal" denoting the chip will be removed.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyRemoval",
|
|
|
+ value: function notifyRemoval() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the computed property value of the given style property on the root element.
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getComputedStyleValue",
|
|
|
+ value: function getComputedStyleValue(propertyName) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the property value of the given style property on the root element.
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setStyleProperty",
|
|
|
+ value: function setStyleProperty(propertyName, value) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChipAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 32 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChipFoundation; });
|
|
|
+/* unused harmony export MDCChipInteractionEventType */
|
|
|
+/* unused harmony export MDCChipSelectionEventType */
|
|
|
+/* unused harmony export MDCChipRemovalEventType */
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(31);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(33);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCChipAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCChipFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCChipFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCChipFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCChipAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCChipAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCChipAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ addClassToLeadingIcon: function addClassToLeadingIcon() {},
|
|
|
+ removeClassFromLeadingIcon: function removeClassFromLeadingIcon() {},
|
|
|
+ eventTargetHasClass: function eventTargetHasClass() {},
|
|
|
+ notifyInteraction: function notifyInteraction() {},
|
|
|
+ notifySelection: function notifySelection() {},
|
|
|
+ notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {},
|
|
|
+ notifyRemoval: function notifyRemoval() {},
|
|
|
+ getComputedStyleValue: function getComputedStyleValue() {},
|
|
|
+ setStyleProperty: function setStyleProperty() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCChipAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCChipFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCChipFoundation);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Whether a trailing icon click should immediately trigger exit/removal of the chip.
|
|
|
+ * @private {boolean}
|
|
|
+ * */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCChipFoundation.__proto__ || Object.getPrototypeOf(MDCChipFoundation)).call(this, _extends(MDCChipFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.shouldRemoveOnTrailingIconClick_ = true;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCChipFoundation, [{
|
|
|
+ key: 'isSelected',
|
|
|
+ value: function isSelected() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} selected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setSelected',
|
|
|
+ value: function setSelected(selected) {
|
|
|
+ if (selected) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
|
|
|
+ }
|
|
|
+ this.adapter_.notifySelection(selected);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getShouldRemoveOnTrailingIconClick',
|
|
|
+ value: function getShouldRemoveOnTrailingIconClick() {
|
|
|
+ return this.shouldRemoveOnTrailingIconClick_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} shouldRemove
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setShouldRemoveOnTrailingIconClick',
|
|
|
+ value: function setShouldRemoveOnTrailingIconClick(shouldRemove) {
|
|
|
+ this.shouldRemoveOnTrailingIconClick_ = shouldRemove;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Begins the exit animation which leads to removal of the chip.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'beginExit',
|
|
|
+ value: function beginExit() {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHIP_EXIT);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles an interaction event on the root element.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleInteraction',
|
|
|
+ value: function handleInteraction(evt) {
|
|
|
+ if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
|
|
|
+ this.adapter_.notifyInteraction();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles a transition end event on the root element.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTransitionEnd',
|
|
|
+ value: function handleTransitionEnd(evt) {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ // Handle transition end event on the chip when it is about to be removed.
|
|
|
+ if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* 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 = 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 () {
|
|
|
+ _this2.adapter_.setStyleProperty('width', chipWidth);
|
|
|
+
|
|
|
+ // To mitigate jitter, start transitioning padding and margin before width.
|
|
|
+ _this2.adapter_.setStyleProperty('padding', '0');
|
|
|
+ _this2.adapter_.setStyleProperty('margin', '0');
|
|
|
+
|
|
|
+ // On the next frame (once width is explicitly set), transition width to 0.
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ _this2.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( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LEADING_ICON) && this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED)) {
|
|
|
+ this.adapter_.addClassToLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HIDDEN_LEADING_ICON);
|
|
|
+ } else if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKMARK) && !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED)) {
|
|
|
+ this.adapter_.removeClassFromLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* 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.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTrailingIconInteraction',
|
|
|
+ value: function handleTrailingIconInteraction(evt) {
|
|
|
+ evt.stopPropagation();
|
|
|
+ if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
|
|
|
+ this.adapter_.notifyTrailingIconInteraction();
|
|
|
+ if (this.shouldRemoveOnTrailingIconClick_) {
|
|
|
+ this.beginExit();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChipFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * detail: {
|
|
|
+ * chipId: string,
|
|
|
+ * },
|
|
|
+ * bubbles: boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+var MDCChipInteractionEventType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * detail: {
|
|
|
+ * chipId: string,
|
|
|
+ * selected: boolean,
|
|
|
+ * },
|
|
|
+ * bubbles: boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var MDCChipSelectionEventType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * detail: {
|
|
|
+ * chipId: string,
|
|
|
+ * root: Element,
|
|
|
+ * },
|
|
|
+ * bubbles: boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var MDCChipRemovalEventType = void 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 33 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ENTRY_ANIMATION_NAME: 'mdc-chip-entry',
|
|
|
+ INTERACTION_EVENT: 'MDCChip:interaction',
|
|
|
+ SELECTION_EVENT: 'MDCChip:selection',
|
|
|
+ TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',
|
|
|
+ REMOVAL_EVENT: 'MDCChip:removal',
|
|
|
+ CHECKMARK_SELECTOR: '.mdc-chip__checkmark',
|
|
|
+ LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',
|
|
|
+ TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ CHECKMARK: 'mdc-chip__checkmark',
|
|
|
+ CHIP_EXIT: 'mdc-chip--exit',
|
|
|
+ HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden',
|
|
|
+ LEADING_ICON: 'mdc-chip__icon--leading',
|
|
|
+ TRAILING_ICON: 'mdc-chip__icon--trailing',
|
|
|
+ SELECTED: 'mdc-chip--selected'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 34 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Chip Set.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Chip Set into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCChipSetAdapter = function () {
|
|
|
+ function MDCChipSetAdapter() {
|
|
|
+ _classCallCheck(this, MDCChipSetAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCChipSetAdapter, [{
|
|
|
+ key: "hasClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root element contains the given class name.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes the chip with the given id from the chip set.
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeChip",
|
|
|
+ value: function removeChip(chipId) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the selected state of the chip with the given id.
|
|
|
+ * @param {string} chipId
|
|
|
+ * @param {boolean} selected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setSelected",
|
|
|
+ value: function setSelected(chipId, selected) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChipSetAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipSetAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 35 */
|
|
|
+/***/ (function(module, exports, __webpack_require__) {
|
|
|
+
|
|
|
+var tabbable = __webpack_require__(80);
|
|
|
+
|
|
|
+var listeningFocusTrap = null;
|
|
|
+
|
|
|
+function focusTrap(element, userOptions) {
|
|
|
+ var tabbableNodes = [];
|
|
|
+ var nodeFocusedBeforeActivation = null;
|
|
|
+ var active = false;
|
|
|
+ var paused = false;
|
|
|
+
|
|
|
+ var container = (typeof element === 'string')
|
|
|
+ ? document.querySelector(element)
|
|
|
+ : element;
|
|
|
+
|
|
|
+ var config = userOptions || {};
|
|
|
+ config.returnFocusOnDeactivate = (userOptions && userOptions.returnFocusOnDeactivate !== undefined)
|
|
|
+ ? userOptions.returnFocusOnDeactivate
|
|
|
+ : true;
|
|
|
+ config.escapeDeactivates = (userOptions && userOptions.escapeDeactivates !== undefined)
|
|
|
+ ? userOptions.escapeDeactivates
|
|
|
+ : true;
|
|
|
+
|
|
|
+ var trap = {
|
|
|
+ activate: activate,
|
|
|
+ deactivate: deactivate,
|
|
|
+ pause: pause,
|
|
|
+ unpause: unpause,
|
|
|
+ };
|
|
|
+
|
|
|
+ return trap;
|
|
|
+
|
|
|
+ function activate(activateOptions) {
|
|
|
+ if (active) return;
|
|
|
+
|
|
|
+ var defaultedActivateOptions = {
|
|
|
+ onActivate: (activateOptions && activateOptions.onActivate !== undefined)
|
|
|
+ ? activateOptions.onActivate
|
|
|
+ : config.onActivate,
|
|
|
+ };
|
|
|
+
|
|
|
+ active = true;
|
|
|
+ paused = false;
|
|
|
+ nodeFocusedBeforeActivation = document.activeElement;
|
|
|
+
|
|
|
+ if (defaultedActivateOptions.onActivate) {
|
|
|
+ defaultedActivateOptions.onActivate();
|
|
|
+ }
|
|
|
+
|
|
|
+ addListeners();
|
|
|
+ return trap;
|
|
|
+ }
|
|
|
+
|
|
|
+ function deactivate(deactivateOptions) {
|
|
|
+ if (!active) return;
|
|
|
+
|
|
|
+ var defaultedDeactivateOptions = {
|
|
|
+ returnFocus: (deactivateOptions && deactivateOptions.returnFocus !== undefined)
|
|
|
+ ? deactivateOptions.returnFocus
|
|
|
+ : config.returnFocusOnDeactivate,
|
|
|
+ onDeactivate: (deactivateOptions && deactivateOptions.onDeactivate !== undefined)
|
|
|
+ ? deactivateOptions.onDeactivate
|
|
|
+ : config.onDeactivate,
|
|
|
+ };
|
|
|
+
|
|
|
+ removeListeners();
|
|
|
+
|
|
|
+ if (defaultedDeactivateOptions.onDeactivate) {
|
|
|
+ defaultedDeactivateOptions.onDeactivate();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (defaultedDeactivateOptions.returnFocus) {
|
|
|
+ setTimeout(function () {
|
|
|
+ tryFocus(nodeFocusedBeforeActivation);
|
|
|
+ }, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ active = false;
|
|
|
+ paused = false;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ function pause() {
|
|
|
+ if (paused || !active) return;
|
|
|
+ paused = true;
|
|
|
+ removeListeners();
|
|
|
+ }
|
|
|
+
|
|
|
+ function unpause() {
|
|
|
+ if (!paused || !active) return;
|
|
|
+ paused = false;
|
|
|
+ addListeners();
|
|
|
+ }
|
|
|
+
|
|
|
+ function addListeners() {
|
|
|
+ if (!active) return;
|
|
|
+
|
|
|
+ // There can be only one listening focus trap at a time
|
|
|
+ if (listeningFocusTrap) {
|
|
|
+ listeningFocusTrap.pause();
|
|
|
+ }
|
|
|
+ listeningFocusTrap = trap;
|
|
|
+
|
|
|
+ updateTabbableNodes();
|
|
|
+ tryFocus(firstFocusNode());
|
|
|
+ document.addEventListener('focus', checkFocus, true);
|
|
|
+ document.addEventListener('click', checkClick, true);
|
|
|
+ document.addEventListener('mousedown', checkPointerDown, true);
|
|
|
+ document.addEventListener('touchstart', checkPointerDown, true);
|
|
|
+ document.addEventListener('keydown', checkKey, true);
|
|
|
+
|
|
|
+ return trap;
|
|
|
+ }
|
|
|
+
|
|
|
+ function removeListeners() {
|
|
|
+ if (!active || listeningFocusTrap !== trap) return;
|
|
|
+
|
|
|
+ document.removeEventListener('focus', checkFocus, true);
|
|
|
+ document.removeEventListener('click', checkClick, true);
|
|
|
+ document.removeEventListener('mousedown', checkPointerDown, true);
|
|
|
+ document.removeEventListener('touchstart', checkPointerDown, true);
|
|
|
+ document.removeEventListener('keydown', checkKey, true);
|
|
|
+
|
|
|
+ listeningFocusTrap = null;
|
|
|
+
|
|
|
+ return trap;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getNodeForOption(optionName) {
|
|
|
+ var optionValue = config[optionName];
|
|
|
+ var node = optionValue;
|
|
|
+ if (!optionValue) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if (typeof optionValue === 'string') {
|
|
|
+ node = document.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 firstFocusNode() {
|
|
|
+ var node;
|
|
|
+ if (getNodeForOption('initialFocus') !== null) {
|
|
|
+ node = getNodeForOption('initialFocus');
|
|
|
+ } else if (container.contains(document.activeElement)) {
|
|
|
+ node = document.activeElement;
|
|
|
+ } else {
|
|
|
+ node = tabbableNodes[0] || 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 (config.clickOutsideDeactivates && !container.contains(e.target)) {
|
|
|
+ deactivate({ returnFocus: false });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkClick(e) {
|
|
|
+ if (config.clickOutsideDeactivates) return;
|
|
|
+ if (container.contains(e.target)) return;
|
|
|
+ e.preventDefault();
|
|
|
+ e.stopImmediatePropagation();
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkFocus(e) {
|
|
|
+ if (container.contains(e.target)) return;
|
|
|
+ e.preventDefault();
|
|
|
+ e.stopImmediatePropagation();
|
|
|
+ // Checking for a blur method here resolves a Firefox issue (#15)
|
|
|
+ if (typeof e.target.blur === 'function') e.target.blur();
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkKey(e) {
|
|
|
+ if (e.key === 'Tab' || e.keyCode === 9) {
|
|
|
+ handleTab(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (config.escapeDeactivates !== false && isEscapeEvent(e)) {
|
|
|
+ deactivate();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function handleTab(e) {
|
|
|
+ e.preventDefault();
|
|
|
+ updateTabbableNodes();
|
|
|
+ var currentFocusIndex = tabbableNodes.indexOf(e.target);
|
|
|
+ var lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];
|
|
|
+ var firstTabbableNode = tabbableNodes[0];
|
|
|
+
|
|
|
+ if (e.shiftKey) {
|
|
|
+ if (e.target === firstTabbableNode || tabbableNodes.indexOf(e.target) === -1) {
|
|
|
+ return tryFocus(lastTabbableNode);
|
|
|
+ }
|
|
|
+ return tryFocus(tabbableNodes[currentFocusIndex - 1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e.target === lastTabbableNode) return tryFocus(firstTabbableNode);
|
|
|
+
|
|
|
+ tryFocus(tabbableNodes[currentFocusIndex + 1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ function updateTabbableNodes() {
|
|
|
+ tabbableNodes = tabbable(container);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function isEscapeEvent(e) {
|
|
|
+ return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;
|
|
|
+}
|
|
|
+
|
|
|
+function tryFocus(node) {
|
|
|
+ if (!node || !node.focus) return;
|
|
|
+ node.focus();
|
|
|
+ if (node.tagName.toLowerCase() === 'input') {
|
|
|
+ node.select();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = focusTrap;
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 36 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(14);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(37);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCDrawerAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCDismissibleDrawerFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCDismissibleDrawerFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCDismissibleDrawerFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCDrawerAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ hasClass: function hasClass() /* className: string */{},
|
|
|
+ elementHasClass: function elementHasClass() /* element: !Element, className: string */{},
|
|
|
+ notifyClose: function notifyClose() {},
|
|
|
+ notifyOpen: function notifyOpen() {},
|
|
|
+ saveFocus: function saveFocus() {},
|
|
|
+ restoreFocus: function restoreFocus() {},
|
|
|
+ focusActiveNavigationItem: function focusActiveNavigationItem() {},
|
|
|
+ trapFocus: function trapFocus() {},
|
|
|
+ releaseFocus: function releaseFocus() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCDismissibleDrawerFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCDismissibleDrawerFoundation);
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCDismissibleDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCDismissibleDrawerFoundation)).call(this, _extends(MDCDismissibleDrawerFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.animationFrame_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.animationTimer_ = 0;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCDismissibleDrawerFoundation, [{
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ if (this.animationFrame_) {
|
|
|
+ cancelAnimationFrame(this.animationFrame_);
|
|
|
+ }
|
|
|
+ if (this.animationTimer_) {
|
|
|
+ clearTimeout(this.animationTimer_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Function to open the drawer.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ if (this.isOpen() || this.isOpening() || this.isClosing()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ANIMATE);
|
|
|
+
|
|
|
+ // Wait a frame once display is no longer "none", to establish basis for animation
|
|
|
+ this.runNextAnimationFrame_(function () {
|
|
|
+ _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
|
|
|
+ });
|
|
|
+
|
|
|
+ this.adapter_.saveFocus();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Function to close the drawer.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ if (!this.isOpen() || this.isOpening() || this.isClosing()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Extension point for when drawer finishes open animation.
|
|
|
+ * @protected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'opened',
|
|
|
+ value: function opened() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Extension point for when drawer finishes close animation.
|
|
|
+ * @protected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closed',
|
|
|
+ value: function closed() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if drawer is in open state.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isOpen',
|
|
|
+ value: function isOpen() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if drawer is animating open.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isOpening',
|
|
|
+ value: function isOpening() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if drawer is animating closed.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isClosing',
|
|
|
+ value: function isClosing() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Keydown handler to close drawer when key is escape.
|
|
|
+ * @param evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown',
|
|
|
+ value: function handleKeydown(evt) {
|
|
|
+ var keyCode = evt.keyCode,
|
|
|
+ key = evt.key;
|
|
|
+
|
|
|
+
|
|
|
+ var isEscape = key === 'Escape' || keyCode === 27;
|
|
|
+ if (isEscape) {
|
|
|
+ this.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles a transition end event on the root element.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTransitionEnd',
|
|
|
+ value: function handleTransitionEnd(evt) {
|
|
|
+ var OPENING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING,
|
|
|
+ CLOSING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING,
|
|
|
+ OPEN = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN,
|
|
|
+ ANIMATE = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ANIMATE,
|
|
|
+ ROOT = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ROOT;
|
|
|
+
|
|
|
+ // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first.
|
|
|
+
|
|
|
+ var isElement = evt.target instanceof Element;
|
|
|
+ if (!isElement || !this.adapter_.elementHasClass( /** @type {!Element} */evt.target, ROOT)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.isClosing()) {
|
|
|
+ this.adapter_.removeClass(OPEN);
|
|
|
+ this.adapter_.restoreFocus();
|
|
|
+ this.closed();
|
|
|
+ this.adapter_.notifyClose();
|
|
|
+ } else {
|
|
|
+ this.adapter_.focusActiveNavigationItem();
|
|
|
+ this.opened();
|
|
|
+ this.adapter_.notifyOpen();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.removeClass(ANIMATE);
|
|
|
+ this.adapter_.removeClass(OPENING);
|
|
|
+ this.adapter_.removeClass(CLOSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.
|
|
|
+ * @param {Function} callback
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'runNextAnimationFrame_',
|
|
|
+ value: function runNextAnimationFrame_(callback) {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ cancelAnimationFrame(this.animationFrame_);
|
|
|
+ this.animationFrame_ = requestAnimationFrame(function () {
|
|
|
+ _this3.animationFrame_ = 0;
|
|
|
+ clearTimeout(_this3.animationTimer_);
|
|
|
+ _this3.animationTimer_ = setTimeout(callback, 0);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDismissibleDrawerFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCDismissibleDrawerFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 37 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-drawer',
|
|
|
+ DISMISSIBLE: 'mdc-drawer--dismissible',
|
|
|
+ MODAL: 'mdc-drawer--modal',
|
|
|
+ OPEN: 'mdc-drawer--open',
|
|
|
+ ANIMATE: 'mdc-drawer--animate',
|
|
|
+ OPENING: 'mdc-drawer--opening',
|
|
|
+ CLOSING: 'mdc-drawer--closing'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',
|
|
|
+ SCRIM_SELECTOR: '.mdc-drawer-scrim',
|
|
|
+ CLOSE_EVENT: 'MDCDrawer:closed',
|
|
|
+ OPEN_EVENT: 'MDCDrawer:opened'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 38 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC List. Provides an interface for managing focus.
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCListAdapter = function () {
|
|
|
+ function MDCListAdapter() {
|
|
|
+ _classCallCheck(this, MDCListAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCListAdapter, [{
|
|
|
+ key: "getListItemCount",
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+ value: function getListItemCount() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getFocusedElementIndex",
|
|
|
+ value: function getFocusedElementIndex() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} attribute
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttributeForElementIndex",
|
|
|
+ value: function setAttributeForElementIndex(index, attribute, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} attribute
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttributeForElementIndex",
|
|
|
+ value: function removeAttributeForElementIndex(index, attribute) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addClassForElementIndex",
|
|
|
+ value: function addClassForElementIndex(index, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClassForElementIndex",
|
|
|
+ value: function removeClassForElementIndex(index, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses list item at the index specified.
|
|
|
+ * @param {number} index
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "focusItemAtIndex",
|
|
|
+ value: function focusItemAtIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the tabindex to the value specified for all button/a element children of
|
|
|
+ * the list item at the index specified.
|
|
|
+ * @param {number} listItemIndex
|
|
|
+ * @param {number} tabIndexValue
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setTabIndexForListItemChildren",
|
|
|
+ value: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * If the given element has an href, follows the link.
|
|
|
+ * @param {!Element} ele
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "followHref",
|
|
|
+ value: function followHref(ele) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Toggles the checkbox or radio button within a list item.
|
|
|
+ * @param {number} index
|
|
|
+ * @return {boolean} true if a radio button or checkbox was present.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "toggleCheckbox",
|
|
|
+ value: function toggleCheckbox(index) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCListAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCListAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 39 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-list',
|
|
|
+ LIST_ITEM_CLASS: 'mdc-list-item',
|
|
|
+ LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',
|
|
|
+ LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_ORIENTATION: 'aria-orientation',
|
|
|
+ ARIA_ORIENTATION_HORIZONTAL: 'horizontal',
|
|
|
+ ARIA_SELECTED: 'aria-selected',
|
|
|
+ CHECKBOX_RADIO_SELECTOR: 'input[type="checkbox"]:not(:disabled), input[type="radio"]:not(:disabled)',
|
|
|
+ CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled),\n .' + cssClasses.LIST_ITEM_CLASS + ' a',
|
|
|
+ FOCUSABLE_CHILD_ELEMENTS: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled), .' + 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)',
|
|
|
+ ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 40 */
|
|
|
+/***/ (function(module, exports, __webpack_require__) {
|
|
|
+
|
|
|
+var tabbable = __webpack_require__(85);
|
|
|
+var xtend = __webpack_require__(86);
|
|
|
+
|
|
|
+var listeningFocusTrap = null;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+ 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;
|
|
|
+ addListeners();
|
|
|
+ }
|
|
|
+
|
|
|
+ function addListeners() {
|
|
|
+ if (!state.active) return;
|
|
|
+
|
|
|
+ // There can be only one listening focus trap at a time
|
|
|
+ if (listeningFocusTrap) {
|
|
|
+ listeningFocusTrap.pause();
|
|
|
+ }
|
|
|
+ listeningFocusTrap = trap;
|
|
|
+
|
|
|
+ updateTabbableNodes();
|
|
|
+
|
|
|
+ // 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, true);
|
|
|
+ doc.addEventListener('touchstart', checkPointerDown, true);
|
|
|
+ doc.addEventListener('click', checkClick, true);
|
|
|
+ doc.addEventListener('keydown', checkKey, true);
|
|
|
+
|
|
|
+ return trap;
|
|
|
+ }
|
|
|
+
|
|
|
+ function removeListeners() {
|
|
|
+ if (!state.active || listeningFocusTrap !== trap) 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);
|
|
|
+
|
|
|
+ listeningFocusTrap = null;
|
|
|
+
|
|
|
+ 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;
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 41 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Floating Label.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the floating label into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCFloatingLabelAdapter = function () {
|
|
|
+ function MDCFloatingLabelAdapter() {
|
|
|
+ _classCallCheck(this, MDCFloatingLabelAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFloatingLabelAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the label element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the label element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the width of the label element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getWidth",
|
|
|
+ value: function getWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event listener on the root element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event listener on the root element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(evtType, handler) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFloatingLabelAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCFloatingLabelAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 42 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC TextField Line Ripple.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the line ripple into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCLineRippleAdapter = function () {
|
|
|
+ function MDCLineRippleAdapter() {
|
|
|
+ _classCallCheck(this, MDCLineRippleAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCLineRippleAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the line ripple element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the line ripple element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the style property with propertyName to value on the root element.
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setStyle",
|
|
|
+ value: function setStyle(propertyName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event listener on the line ripple element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerEventHandler",
|
|
|
+ value: function registerEventHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event listener on the line ripple element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterEventHandler",
|
|
|
+ value: function deregisterEventHandler(evtType, handler) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCLineRippleAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCLineRippleAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 43 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenu", function() { return MDCMenu; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(109);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(19);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__ = __webpack_require__(45);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__ = __webpack_require__(20);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_index__ = __webpack_require__(15);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AnchorMargin", function() { return __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Corner", function() { return __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__["Corner"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCMenuFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCMenu = function (_MDCComponent) {
|
|
|
+ _inherits(MDCMenu, _MDCComponent);
|
|
|
+
|
|
|
+ /** @param {...?} args */
|
|
|
+ function MDCMenu() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCMenu);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCMenuSurface} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCMenu.__proto__ || Object.getPrototypeOf(MDCMenu)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.menuSurface_;
|
|
|
+ /** @private {!MDCList} */
|
|
|
+ _this.list_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleKeydown_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleClick_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.afterOpenedCallback_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!HTMLElement} root
|
|
|
+ * @return {!MDCMenu}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCMenu, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var menuSurfaceFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__["MDCMenuSurface"](el);
|
|
|
+ };
|
|
|
+ var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_5__material_list_index__["MDCList"](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.menuSurface_ = menuSurfaceFactory(this.root_);
|
|
|
+
|
|
|
+ var list = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].LIST_SELECTOR);
|
|
|
+ if (list) {
|
|
|
+ this.list_ = listFactory(list);
|
|
|
+ this.list_.wrapFocus = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.afterOpenedCallback_ = function () {
|
|
|
+ return _this2.handleAfterOpened_();
|
|
|
+ };
|
|
|
+ this.handleKeydown_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleKeydown(evt);
|
|
|
+ };
|
|
|
+ this.handleClick_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleClick(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.menuSurface_.listen(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);
|
|
|
+ this.listen('keydown', this.handleKeydown_);
|
|
|
+ this.listen('click', this.handleClick_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ if (this.list_) {
|
|
|
+ this.list_.destroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.menuSurface_.destroy();
|
|
|
+ this.menuSurface_.unlisten(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);
|
|
|
+ this.unlisten('keydown', this.handleKeydown_);
|
|
|
+ this.unlisten('click', this.handleClick_);
|
|
|
+ _get(MDCMenu.prototype.__proto__ || Object.getPrototypeOf(MDCMenu.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorCorner',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Default anchor corner alignment of top-left
|
|
|
+ * menu corner.
|
|
|
+ */
|
|
|
+ value: function setAnchorCorner(corner) {
|
|
|
+ this.menuSurface_.setAnchorCorner(corner);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!AnchorMargin} margin
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorMargin',
|
|
|
+ value: function setAnchorMargin(margin) {
|
|
|
+ this.menuSurface_.setAnchorMargin(margin);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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.
|
|
|
+ * @return {!Array<!HTMLElement>}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getOptionByIndex',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Return the item within the menu at the index specified.
|
|
|
+ * @param {number} index
|
|
|
+ * @return {?HTMLElement}
|
|
|
+ */
|
|
|
+ value: function getOptionByIndex(index) {
|
|
|
+ var items = this.items;
|
|
|
+
|
|
|
+ if (index < items.length) {
|
|
|
+ return this.items[index];
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} quickOpen */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setFixedPosition',
|
|
|
+
|
|
|
+
|
|
|
+ /** @param {boolean} isFixed */
|
|
|
+ value: function setFixedPosition(isFixed) {
|
|
|
+ this.menuSurface_.setFixedPosition(isFixed);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'hoistMenuToBody',
|
|
|
+ value: function hoistMenuToBody() {
|
|
|
+ this.menuSurface_.hoistMenuToBody();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isHoisted */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setIsHoisted',
|
|
|
+ value: function setIsHoisted(isHoisted) {
|
|
|
+ this.menuSurface_.setIsHoisted(isHoisted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} x
|
|
|
+ * @param {number} y
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAbsolutePosition',
|
|
|
+ value: function setAbsolutePosition(x, y) {
|
|
|
+ this.menuSurface_.setAbsolutePosition(x, y);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the element that the menu-surface is anchored to.
|
|
|
+ * @param {!HTMLElement} element
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorElement',
|
|
|
+ value: function setAnchorElement(element) {
|
|
|
+ this.menuSurface_.anchorElement = element;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleAfterOpened_',
|
|
|
+ value: function handleAfterOpened_() {
|
|
|
+ var list = this.items;
|
|
|
+ if (list.length > 0) {
|
|
|
+ list[0].focus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCMenuFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* MDCMenuFoundation */]({
|
|
|
+ addClassToElementAtIndex: function addClassToElementAtIndex(index, className) {
|
|
|
+ var list = _this3.items;
|
|
|
+ list[index].classList.add(className);
|
|
|
+ },
|
|
|
+ removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) {
|
|
|
+ var list = _this3.items;
|
|
|
+ list[index].classList.remove(className);
|
|
|
+ },
|
|
|
+ addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) {
|
|
|
+ var list = _this3.items;
|
|
|
+ list[index].setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) {
|
|
|
+ var list = _this3.items;
|
|
|
+ list[index].removeAttribute(attr);
|
|
|
+ },
|
|
|
+ elementContainsClass: function elementContainsClass(element, className) {
|
|
|
+ return element.classList.contains(className);
|
|
|
+ },
|
|
|
+ closeSurface: function closeSurface() {
|
|
|
+ return _this3.open = false;
|
|
|
+ },
|
|
|
+ getElementIndex: function getElementIndex(element) {
|
|
|
+ return _this3.items.indexOf(element);
|
|
|
+ },
|
|
|
+ getParentElement: function getParentElement(element) {
|
|
|
+ return element.parentElement;
|
|
|
+ },
|
|
|
+ getSelectedElementIndex: function getSelectedElementIndex(selectionGroup) {
|
|
|
+ return _this3.items.indexOf(selectionGroup.querySelector('.' + __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM));
|
|
|
+ },
|
|
|
+ notifySelected: function notifySelected(evtData) {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].SELECTED_EVENT, {
|
|
|
+ index: evtData.index,
|
|
|
+ item: _this3.items[evtData.index]
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ get: function get() {
|
|
|
+ return this.menuSurface_.open;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} value */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.menuSurface_.open = value;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'items',
|
|
|
+ get: function get() {
|
|
|
+ return this.list_.listElements;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'quickOpen',
|
|
|
+ set: function set(quickOpen) {
|
|
|
+ this.menuSurface_.quickOpen = quickOpen;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCMenu(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenu;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 44 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCMenuSurfaceAdapter */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDCMenuSurface. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - focus
|
|
|
+ * - position
|
|
|
+ * - dimensions
|
|
|
+ * - event handlers
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCMenuSurfaceAdapter = function () {
|
|
|
+ function MDCMenuSurfaceAdapter() {
|
|
|
+ _classCallCheck(this, MDCMenuSurfaceAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCMenuSurfaceAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasAnchor",
|
|
|
+ value: function hasAnchor() {}
|
|
|
+
|
|
|
+ /** Emits an event when the menu surface is closed. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyClose",
|
|
|
+ value: function notifyClose() {}
|
|
|
+
|
|
|
+ /** Emits an event when the menu surface is opened. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyOpen",
|
|
|
+ value: function notifyOpen() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean}
|
|
|
+ * @param {EventTarget} el
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isElementInContainer",
|
|
|
+ value: function isElementInContainer(el) {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isRtl",
|
|
|
+ value: function isRtl() {}
|
|
|
+
|
|
|
+ /** @param {string} origin */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setTransformOrigin",
|
|
|
+ value: function setTransformOrigin(origin) {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isFocused",
|
|
|
+ value: function isFocused() {}
|
|
|
+
|
|
|
+ /** Saves the element that was focused before the menu surface was opened. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "saveFocus",
|
|
|
+ value: function saveFocus() {}
|
|
|
+
|
|
|
+ /** Restores focus to the element that was focused before the menu surface was opened. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "restoreFocus",
|
|
|
+ value: function restoreFocus() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isFirstElementFocused",
|
|
|
+ value: function isFirstElementFocused() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isLastElementFocused",
|
|
|
+ value: function isLastElementFocused() {}
|
|
|
+
|
|
|
+ /** Focuses the first focusable element in the menu-surface. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "focusFirstElement",
|
|
|
+ value: function focusFirstElement() {}
|
|
|
+
|
|
|
+ /** Focuses the first focusable element in the menu-surface. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "focusLastElement",
|
|
|
+ value: function focusLastElement() {}
|
|
|
+
|
|
|
+ /** @return {!{width: number, height: number}} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getInnerDimensions",
|
|
|
+ value: function getInnerDimensions() {}
|
|
|
+
|
|
|
+ /** @return {!{width: number, height: number, top: number, right: number, bottom: number, left: number}} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getAnchorDimensions",
|
|
|
+ value: function getAnchorDimensions() {}
|
|
|
+
|
|
|
+ /** @return {!{ width: number, height: number }} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getWindowDimensions",
|
|
|
+ value: function getWindowDimensions() {}
|
|
|
+
|
|
|
+ /** @return {!{ width: number, height: number }} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getBodyDimensions",
|
|
|
+ value: function getBodyDimensions() {}
|
|
|
+
|
|
|
+ /** @return {!{ width: number, height: number }} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getWindowScroll",
|
|
|
+ value: function getWindowScroll() {}
|
|
|
+
|
|
|
+ /** @param {!{
|
|
|
+ * top: (string|undefined),
|
|
|
+ * right: (string|undefined),
|
|
|
+ * bottom: (string|undefined),
|
|
|
+ * left: (string|undefined)
|
|
|
+ * }} position */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setPosition",
|
|
|
+ value: function setPosition(position) {}
|
|
|
+
|
|
|
+ /** @param {string} height */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setMaxHeight",
|
|
|
+ value: function setMaxHeight(height) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenuSurfaceAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 45 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuSurface", function() { return MDCMenuSurface; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(111);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(20);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(44);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(21);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuSurfaceFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["b"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AnchorMargin", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Corner", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "CornerBit", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__["b"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_1__util__; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCMenuSurfaceFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCMenuSurface = function (_MDCComponent) {
|
|
|
+ _inherits(MDCMenuSurface, _MDCComponent);
|
|
|
+
|
|
|
+ /** @param {...?} args */
|
|
|
+ function MDCMenuSurface() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCMenuSurface);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCMenuSurface.__proto__ || Object.getPrototypeOf(MDCMenuSurface)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.previousFocus_;
|
|
|
+ /** @private {!Element} */
|
|
|
+ _this.anchorElement;
|
|
|
+ /** @private {Element} */
|
|
|
+ _this.firstFocusableElement_;
|
|
|
+ /** @private {Element} */
|
|
|
+ _this.lastFocusableElement_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleKeydown_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleBodyClick_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.registerBodyClickListener_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.deregisterBodyClickListener_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCMenuSurface}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCMenuSurface, [{
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ if (this.root_.parentElement && this.root_.parentElement.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].ANCHOR)) {
|
|
|
+ this.anchorElement = this.root_.parentElement;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED)) {
|
|
|
+ this.setFixedPosition(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.handleKeydown_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleKeydown(evt);
|
|
|
+ };
|
|
|
+ this.handleBodyClick_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleBodyClick(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.registerBodyClickListener_ = function () {
|
|
|
+ return document.body.addEventListener('click', _this2.handleBodyClick_);
|
|
|
+ };
|
|
|
+ this.deregisterBodyClickListener_ = function () {
|
|
|
+ return document.body.removeEventListener('click', _this2.handleBodyClick_);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.root_.addEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.root_.removeEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);
|
|
|
+ _get(MDCMenuSurface.prototype.__proto__ || Object.getPrototypeOf(MDCMenuSurface.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hoistMenuToBody',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes the menu-surface from it's current location and appends it to the
|
|
|
+ * body to overcome any overflow:hidden issues.
|
|
|
+ */
|
|
|
+ value: function hoistMenuToBody() {
|
|
|
+ document.body.appendChild(this.root_.parentElement.removeChild(this.root_));
|
|
|
+ this.setIsHoisted(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the foundation to use page offsets for an positioning when the menu
|
|
|
+ * is hoisted to the body.
|
|
|
+ * @param {boolean} isHoisted
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setIsHoisted',
|
|
|
+ value: function setIsHoisted(isHoisted) {
|
|
|
+ this.foundation_.setIsHoisted(isHoisted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the element that the menu-surface is anchored to.
|
|
|
+ * @param {!Element} element
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setMenuSurfaceAnchorElement',
|
|
|
+ value: function setMenuSurfaceAnchorElement(element) {
|
|
|
+ this.anchorElement = element;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the menu-surface to position: fixed.
|
|
|
+ * @param {boolean} isFixed
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setFixedPosition',
|
|
|
+ value: function setFixedPosition(isFixed) {
|
|
|
+ if (isFixed) {
|
|
|
+ this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED);
|
|
|
+ } else {
|
|
|
+ this.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.foundation_.setFixedPosition(isFixed);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the absolute x/y position to position based on. Requires the menu to be hoisted.
|
|
|
+ * @param {number} x
|
|
|
+ * @param {number} y
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAbsolutePosition',
|
|
|
+ value: function setAbsolutePosition(x, y) {
|
|
|
+ this.foundation_.setAbsolutePosition(x, y);
|
|
|
+ this.setIsHoisted(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Corner} corner Default anchor corner alignment of top-left
|
|
|
+ * surface corner.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorCorner',
|
|
|
+ value: function setAnchorCorner(corner) {
|
|
|
+ this.foundation_.setAnchorCorner(corner);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!AnchorMargin} margin
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAnchorMargin',
|
|
|
+ value: function setAnchorMargin(margin) {
|
|
|
+ this.foundation_.setAnchorMargin(margin);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} quickOpen */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {!MDCMenuSurfaceFoundation} */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */](
|
|
|
+ /** @type {!MDCMenuSurfaceAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this3.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ hasAnchor: function hasAnchor() {
|
|
|
+ return !!_this3.anchorElement;
|
|
|
+ },
|
|
|
+ notifyClose: function notifyClose() {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */].strings.CLOSED_EVENT, {});
|
|
|
+ },
|
|
|
+ notifyOpen: function notifyOpen() {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, {});
|
|
|
+ },
|
|
|
+ isElementInContainer: function isElementInContainer(el) {
|
|
|
+ return _this3.root_ === el || _this3.root_.contains(el);
|
|
|
+ },
|
|
|
+ isRtl: function isRtl() {
|
|
|
+ return getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';
|
|
|
+ },
|
|
|
+ setTransformOrigin: function setTransformOrigin(origin) {
|
|
|
+ _this3.root_.style[__WEBPACK_IMPORTED_MODULE_1__util__["getTransformPropertyName"](window) + '-origin'] = origin;
|
|
|
+ }
|
|
|
+ }, this.getFocusAdapterMethods_(), this.getDimensionAdapterMethods_()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * isFocused: function(): boolean,
|
|
|
+ * saveFocus: function(),
|
|
|
+ * restoreFocus: function(),
|
|
|
+ * isFirstElementFocused: function(): boolean,
|
|
|
+ * isLastElementFocused: function(): boolean,
|
|
|
+ * focusFirstElement: function(),
|
|
|
+ * focusLastElement: function(),
|
|
|
+ * }}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getFocusAdapterMethods_',
|
|
|
+ value: function getFocusAdapterMethods_() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ isFocused: function isFocused() {
|
|
|
+ return document.activeElement === _this4.root_;
|
|
|
+ },
|
|
|
+ saveFocus: function saveFocus() {
|
|
|
+ _this4.previousFocus_ = document.activeElement;
|
|
|
+ },
|
|
|
+ restoreFocus: function restoreFocus() {
|
|
|
+ if (_this4.root_.contains(document.activeElement)) {
|
|
|
+ if (_this4.previousFocus_ && _this4.previousFocus_.focus) {
|
|
|
+ _this4.previousFocus_.focus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ isFirstElementFocused: function isFirstElementFocused() {
|
|
|
+ return _this4.firstFocusableElement_ && _this4.firstFocusableElement_ === document.activeElement;
|
|
|
+ },
|
|
|
+ isLastElementFocused: function isLastElementFocused() {
|
|
|
+ return _this4.lastFocusableElement_ && _this4.lastFocusableElement_ === document.activeElement;
|
|
|
+ },
|
|
|
+ focusFirstElement: function focusFirstElement() {
|
|
|
+ return _this4.firstFocusableElement_ && _this4.firstFocusableElement_.focus && _this4.firstFocusableElement_.focus();
|
|
|
+ },
|
|
|
+ focusLastElement: function focusLastElement() {
|
|
|
+ return _this4.lastFocusableElement_ && _this4.lastFocusableElement_.focus && _this4.lastFocusableElement_.focus();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * getInnerDimensions: function(),
|
|
|
+ * getAnchorDimensions: function(): (HTMLElement | null | * | ClientRect),
|
|
|
+ * getWindowDimensions: function(),
|
|
|
+ * setPosition: function(*),
|
|
|
+ * setMaxHeight: function(string)}}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDimensionAdapterMethods_',
|
|
|
+ value: function getDimensionAdapterMethods_() {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ getInnerDimensions: function getInnerDimensions() {
|
|
|
+ return { width: _this5.root_.offsetWidth, height: _this5.root_.offsetHeight };
|
|
|
+ },
|
|
|
+ getAnchorDimensions: function getAnchorDimensions() {
|
|
|
+ return _this5.anchorElement && _this5.anchorElement.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ 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) {
|
|
|
+ _this5.root_.style.left = 'left' in position ? position.left : null;
|
|
|
+ _this5.root_.style.right = 'right' in position ? position.right : null;
|
|
|
+ _this5.root_.style.top = 'top' in position ? position.top : null;
|
|
|
+ _this5.root_.style.bottom = 'bottom' in position ? position.bottom : null;
|
|
|
+ },
|
|
|
+ setMaxHeight: function setMaxHeight(height) {
|
|
|
+ _this5.root_.style.maxHeight = height;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isOpen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} value */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ if (value) {
|
|
|
+ var focusableElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].FOCUSABLE_ELEMENTS);
|
|
|
+ this.firstFocusableElement_ = focusableElements.length > 0 ? focusableElements[0] : null;
|
|
|
+ this.lastFocusableElement_ = focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;
|
|
|
+ this.foundation_.open();
|
|
|
+ } else {
|
|
|
+ this.foundation_.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'quickOpen',
|
|
|
+ set: function set(quickOpen) {
|
|
|
+ this.foundation_.setQuickOpen(quickOpen);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCMenuSurface(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenuSurface;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 46 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Notched Outline.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Notched Outline into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCNotchedOutlineAdapter = function () {
|
|
|
+ function MDCNotchedOutlineAdapter() {
|
|
|
+ _classCallCheck(this, MDCNotchedOutlineAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCNotchedOutlineAdapter, [{
|
|
|
+ key: "getWidth",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the width of the root element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+ value: function getWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the height of the root element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getHeight",
|
|
|
+ value: function getHeight() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addClass",
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the "d" attribute of the outline element's SVG path.
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setOutlinePathAttr",
|
|
|
+ value: function setOutlinePathAttr(value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the idle outline element's computed style value of the given css property `propertyName`.
|
|
|
+ * We achieve this via `getComputedStyle(...).getPropertyValue(propertyName)`.
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getIdleOutlineStyleValue",
|
|
|
+ value: function getIdleOutlineStyleValue(propertyName) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCNotchedOutlineAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCNotchedOutlineAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 47 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ PATH_SELECTOR: '.mdc-notched-outline__path',
|
|
|
+ IDLE_OUTLINE_SELECTOR: '.mdc-notched-outline__idle'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ OUTLINE_NOTCHED: 'mdc-notched-outline--notched'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ NOTCH_GUTTER_SIZE: 4,
|
|
|
+ MIN_LEADING_STROKE_EDGE_POSITION: 12
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 48 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCSelectAdapter */
|
|
|
+/* unused harmony export FoundationMapType */
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__icon_index__ = __webpack_require__(23);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_index__ = __webpack_require__(24);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * leadingIcon: (!MDCSelectIconFoundation|undefined),
|
|
|
+ * helperText: (!MDCSelectHelperTextFoundation|undefined),
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var FoundationMapType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Select. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - event handlers
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectAdapter = function () {
|
|
|
+ function MDCSelectAdapter() {
|
|
|
+ _classCallCheck(this, MDCSelectAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectAdapter, [{
|
|
|
+ key: 'addClass',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds class to root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeClass',
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root element contains the given class name.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasClass',
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the bottom line, showing a focused state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateBottomLine',
|
|
|
+ value: function activateBottomLine() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the bottom line.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivateBottomLine',
|
|
|
+ value: function deactivateBottomLine() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the value of the select.
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValue',
|
|
|
+ value: function setValue(value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the selected value of the select element.
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getValue',
|
|
|
+ value: function getValue() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the direction of the root element is set to RTL.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isRtl',
|
|
|
+ value: function isRtl() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Floats label determined based off of the shouldFloat argument.
|
|
|
+ * @param {boolean} shouldFloat
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'floatLabel',
|
|
|
+ value: function floatLabel(shouldFloat) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns width of label in pixels, if the label exists.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getLabelWidth',
|
|
|
+ value: function getLabelWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if outline element exists, false if it doesn't.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasOutline',
|
|
|
+ value: function hasOutline() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates SVG Path and outline element based on the
|
|
|
+ * label element width and RTL context, if the outline exists.
|
|
|
+ * @param {number} labelWidth
|
|
|
+ * @param {boolean=} isRtl
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notchOutline',
|
|
|
+ value: function notchOutline(labelWidth, isRtl) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Closes notch in outline element, if the outline exists.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closeOutline',
|
|
|
+ value: function closeOutline() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Opens the menu.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'openMenu',
|
|
|
+ value: function openMenu() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Closes the menu.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closeMenu',
|
|
|
+ value: function closeMenu() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the menu is currently open.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isMenuOpen',
|
|
|
+ value: function isMenuOpen() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the selected index of the select to the index provided.
|
|
|
+ * @param {number} index
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setSelectedIndex',
|
|
|
+ value: function setSelectedIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the select to disabled.
|
|
|
+ * @param {boolean} isDisabled
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(isDisabled) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the line ripple transform origin center.
|
|
|
+ * @param {number} normalizedX
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setRippleCenter',
|
|
|
+ value: function setRippleCenter(normalizedX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a change event when an element is selected.
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notifyChange',
|
|
|
+ value: function notifyChange(value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Checks if the select is currently valid.
|
|
|
+ * @return {boolean} isValid
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'checkValidity',
|
|
|
+ value: function checkValidity() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds/Removes the invalid class.
|
|
|
+ * @param {boolean} isValid
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValid',
|
|
|
+ value: function setValid(isValid) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 49 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Select Icon.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the select icon into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCSelectIconAdapter = function () {
|
|
|
+ function MDCSelectIconAdapter() {
|
|
|
+ _classCallCheck(this, MDCSelectIconAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectIconAdapter, [{
|
|
|
+ key: "getAttr",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Gets the value of an attribute on the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+ value: function getAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets an attribute on the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttr",
|
|
|
+ value: function removeAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the icon element.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setContent",
|
|
|
+ value: function setContent(content) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event listener on the icon element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event listener on the icon element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event "MDCSelect:icon" denoting a user has clicked the icon.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyIconAction",
|
|
|
+ value: function notifyIconAction() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectIconAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectIconAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 50 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Select Helper Text.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Select helper text into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCSelectHelperTextAdapter = function () {
|
|
|
+ function MDCSelectHelperTextAdapter() {
|
|
|
+ _classCallCheck(this, MDCSelectHelperTextAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectHelperTextAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the helper text element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the helper text element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether or not the helper text element contains the given class.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets an attribute with a given value on the helper text element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from the helper text element.
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttr",
|
|
|
+ value: function removeAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content for the helper text element.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setContent",
|
|
|
+ value: function setContent(content) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectHelperTextAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectHelperTextAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 51 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ DISABLED: 'mdc-select--disabled',
|
|
|
+ ROOT: 'mdc-select',
|
|
|
+ OUTLINED: 'mdc-select--outlined',
|
|
|
+ FOCUSED: 'mdc-select--focused',
|
|
|
+ SELECTED_ITEM_CLASS: 'mdc-list-item--selected',
|
|
|
+ WITH_LEADING_ICON: 'mdc-select--with-leading-icon',
|
|
|
+ INVALID: 'mdc-select--invalid',
|
|
|
+ REQUIRED: 'mdc-select--required'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_CONTROLS: 'aria-controls',
|
|
|
+ CHANGE_EVENT: 'MDCSelect:change',
|
|
|
+ SELECTED_ITEM_SELECTOR: '.' + cssClasses.SELECTED_ITEM_CLASS,
|
|
|
+ LEADING_ICON_SELECTOR: '.mdc-select__icon',
|
|
|
+ SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text',
|
|
|
+ HIDDEN_INPUT_SELECTOR: 'input[type="hidden"]',
|
|
|
+ MENU_SELECTOR: '.mdc-select__menu',
|
|
|
+ LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',
|
|
|
+ LABEL_SELECTOR: '.mdc-floating-label',
|
|
|
+ NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',
|
|
|
+ OUTLINE_SELECTOR: '.mdc-notched-outline',
|
|
|
+ ENHANCED_VALUE_ATTR: 'data-value',
|
|
|
+ ARIA_SELECTED_ATTR: 'aria-selected'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ LABEL_SCALE: 0.75
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 52 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ACTIVE: 'mdc-slider--active',
|
|
|
+ DISABLED: 'mdc-slider--disabled',
|
|
|
+ DISCRETE: 'mdc-slider--discrete',
|
|
|
+ FOCUS: 'mdc-slider--focus',
|
|
|
+ IN_TRANSIT: 'mdc-slider--in-transit',
|
|
|
+ IS_DISCRETE: 'mdc-slider--discrete',
|
|
|
+ HAS_TRACK_MARKER: 'mdc-slider--display-markers'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ TRACK_SELECTOR: '.mdc-slider__track',
|
|
|
+ TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',
|
|
|
+ LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',
|
|
|
+ THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',
|
|
|
+ PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',
|
|
|
+ ARIA_VALUEMIN: 'aria-valuemin',
|
|
|
+ ARIA_VALUEMAX: 'aria-valuemax',
|
|
|
+ ARIA_VALUENOW: 'aria-valuenow',
|
|
|
+ ARIA_DISABLED: 'aria-disabled',
|
|
|
+ STEP_DATA_ATTR: 'data-step',
|
|
|
+ CHANGE_EVENT: 'MDCSlider:change',
|
|
|
+ INPUT_EVENT: 'MDCSlider:input'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ PAGE_FACTOR: 4
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 53 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Slider.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Slider into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCSliderAdapter = function () {
|
|
|
+ function MDCSliderAdapter() {
|
|
|
+ _classCallCheck(this, MDCSliderAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSliderAdapter, [{
|
|
|
+ key: "hasClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if className exists for the slider Element
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the slider Element
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addClass",
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the slider Element
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns a string if attribute name exists on the slider Element,
|
|
|
+ * otherwise returns null
|
|
|
+ * @param {string} name
|
|
|
+ * @return {?string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getAttribute",
|
|
|
+ value: function getAttribute(name) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets attribute name on slider Element to value
|
|
|
+ * @param {string} name
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttribute",
|
|
|
+ value: function setAttribute(name, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes attribute name from slider Element
|
|
|
+ * @param {string} name
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttribute",
|
|
|
+ value: function removeAttribute(name) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the bounding client rect for the slider Element
|
|
|
+ * @return {?ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeBoundingRect",
|
|
|
+ value: function computeBoundingRect() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the tab index of the slider Element
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getTabIndex",
|
|
|
+ value: function getTabIndex() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler on the root element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler on the root element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler on the thumb container element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerThumbContainerInteractionHandler",
|
|
|
+ value: function registerThumbContainerInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler on the thumb container element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterThumbContainerInteractionHandler",
|
|
|
+ value: function deregisterThumbContainerInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler on the body for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerBodyInteractionHandler",
|
|
|
+ value: function registerBodyInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler on the body for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterBodyInteractionHandler",
|
|
|
+ value: function deregisterBodyInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler for the window resize event
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerResizeHandler",
|
|
|
+ value: function registerResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler for the window resize event
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterResizeHandler",
|
|
|
+ value: function deregisterResizeHandler(handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event MDCSlider:input from the root
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyInput",
|
|
|
+ value: function notifyInput() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event MDCSlider:change from the root
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyChange",
|
|
|
+ value: function notifyChange() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the thumb container element to the passed value
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setThumbContainerStyleProperty",
|
|
|
+ value: function setThumbContainerStyleProperty(propertyName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the track element to the passed value
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setTrackStyleProperty",
|
|
|
+ value: function setTrackStyleProperty(propertyName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the inner text of the pin marker to the passed value
|
|
|
+ * @param {number} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setMarkerValue",
|
|
|
+ value: function setMarkerValue(value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Appends the passed number of track markers to the track mark container element
|
|
|
+ * @param {number} numMarkers
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "appendTrackMarkers",
|
|
|
+ value: function appendTrackMarkers(numMarkers) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes all track markers fromt he track mark container element
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeTrackMarkers",
|
|
|
+ value: function removeTrackMarkers() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the last track marker to the passed value
|
|
|
+ * @param {string} propertyName
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setLastTrackMarkersStyleProperty",
|
|
|
+ value: function setLastTrackMarkersStyleProperty(propertyName, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root element is RTL, otherwise false
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isRTL",
|
|
|
+ value: function isRTL() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSliderAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCSliderAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 54 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabIndicator", function() { return MDCTabIndicator; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(55);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(26);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__ = __webpack_require__(133);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__fading_foundation__ = __webpack_require__(134);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSlidingTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFadingTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__fading_foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTabIndicatorFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabIndicator = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTabIndicator, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCTabIndicator, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTabIndicator}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTabIndicator(root);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabIndicator() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTabIndicator);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @type {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTabIndicator.__proto__ || Object.getPrototypeOf(MDCTabIndicator)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.content_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabIndicator, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeContentClientRect',
|
|
|
+ value: function computeContentClientRect() {
|
|
|
+ return this.foundation_.computeContentClientRect();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabIndicatorFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var adapter = /** @type {!MDCTabIndicatorAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ computeContentClientRect: function computeContentClientRect() {
|
|
|
+ return _this2.content_.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ setContentStyleProperty: function setContentStyleProperty(prop, value) {
|
|
|
+ return _this2.content_.style.setProperty(prop, value);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].cssClasses.FADE)) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__fading_foundation__["a" /* default */](adapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Default to the sliding indicator
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__["a" /* default */](adapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!ClientRect=} previousIndicatorClientRect
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate(previousIndicatorClientRect) {
|
|
|
+ this.foundation_.activate(previousIndicatorClientRect);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.foundation_.deactivate();
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabIndicator;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 55 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Tab Indicator.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Tab Indicator into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCTabIndicatorAdapter = function () {
|
|
|
+ function MDCTabIndicatorAdapter() {
|
|
|
+ _classCallCheck(this, MDCTabIndicatorAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabIndicatorAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds the given className to the root element.
|
|
|
+ * @param {string} className The className to add
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes the given className from the root element.
|
|
|
+ * @param {string} className The className to remove
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the client rect of the content element.
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "computeContentClientRect",
|
|
|
+ value: function computeContentClientRect() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets a style property of the content element to the passed value
|
|
|
+ * @param {string} propName The style property name to set
|
|
|
+ * @param {string} value The style property value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setContentStyleProperty",
|
|
|
+ value: function setContentStyleProperty(propName, value) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabIndicatorAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabIndicatorAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 56 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabScroller", function() { return MDCTabScroller; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(5);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(138);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(142);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabScrollerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTabScrollerFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScroller = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTabScroller, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCTabScroller, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTabScroller}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTabScroller(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabScroller() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTabScroller);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTabScroller.__proto__ || Object.getPrototypeOf(MDCTabScroller)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.content_;
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.area_;
|
|
|
+
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleInteraction_;
|
|
|
+
|
|
|
+ /** @private {?function(!Event): undefined} */
|
|
|
+ _this.handleTransitionEnd_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScroller, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ this.area_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.AREA_SELECTOR);
|
|
|
+ this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.handleInteraction_ = function () {
|
|
|
+ return _this2.foundation_.handleInteraction();
|
|
|
+ };
|
|
|
+ this.handleTransitionEnd_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleTransitionEnd(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.area_.addEventListener('wheel', this.handleInteraction_);
|
|
|
+ this.area_.addEventListener('touchstart', this.handleInteraction_);
|
|
|
+ this.area_.addEventListener('pointerdown', this.handleInteraction_);
|
|
|
+ this.area_.addEventListener('mousedown', this.handleInteraction_);
|
|
|
+ this.area_.addEventListener('keydown', this.handleInteraction_);
|
|
|
+ this.content_.addEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCTabScroller.prototype.__proto__ || Object.getPrototypeOf(MDCTabScroller.prototype), 'destroy', this).call(this);
|
|
|
+
|
|
|
+ this.area_.removeEventListener('wheel', this.handleInteraction_);
|
|
|
+ this.area_.removeEventListener('touchstart', this.handleInteraction_);
|
|
|
+ this.area_.removeEventListener('pointerdown', this.handleInteraction_);
|
|
|
+ this.area_.removeEventListener('mousedown', this.handleInteraction_);
|
|
|
+ this.area_.removeEventListener('keydown', this.handleInteraction_);
|
|
|
+ this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabScrollerFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ var adapter = /** @type {!MDCTabScrollerAdapter} */{
|
|
|
+ eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) {
|
|
|
+ var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__["getMatchesProperty"](HTMLElement.prototype);
|
|
|
+ return evtTarget[MATCHES](selector);
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ addScrollAreaClass: function addScrollAreaClass(className) {
|
|
|
+ return _this3.area_.classList.add(className);
|
|
|
+ },
|
|
|
+ setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) {
|
|
|
+ return _this3.area_.style.setProperty(prop, value);
|
|
|
+ },
|
|
|
+ setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) {
|
|
|
+ return _this3.content_.style.setProperty(prop, value);
|
|
|
+ },
|
|
|
+ getScrollContentStyleValue: function getScrollContentStyleValue(propName) {
|
|
|
+ return window.getComputedStyle(_this3.content_).getPropertyValue(propName);
|
|
|
+ },
|
|
|
+ setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) {
|
|
|
+ return _this3.area_.scrollLeft = scrollX;
|
|
|
+ },
|
|
|
+ getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {
|
|
|
+ return _this3.area_.scrollLeft;
|
|
|
+ },
|
|
|
+ getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {
|
|
|
+ return _this3.content_.offsetWidth;
|
|
|
+ },
|
|
|
+ getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {
|
|
|
+ return _this3.area_.offsetWidth;
|
|
|
+ },
|
|
|
+ computeScrollAreaClientRect: function computeScrollAreaClientRect() {
|
|
|
+ return _this3.area_.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ computeScrollContentClientRect: function computeScrollContentClientRect() {
|
|
|
+ return _this3.content_.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__util__["computeHorizontalScrollbarHeight"](document);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](adapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the current visual scroll position
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrollPosition',
|
|
|
+ value: function getScrollPosition() {
|
|
|
+ return this.foundation_.getScrollPosition();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the width of the scroll content
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrollContentWidth',
|
|
|
+ value: function getScrollContentWidth() {
|
|
|
+ return this.content_.offsetWidth;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Increments the scroll value by the given amount
|
|
|
+ * @param {number} scrollXIncrement The pixel value by which to increment the scroll value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScroll',
|
|
|
+ value: function incrementScroll(scrollXIncrement) {
|
|
|
+ this.foundation_.incrementScroll(scrollXIncrement);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scrolls to the given pixel position
|
|
|
+ * @param {number} scrollX The pixel value to scroll to
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollTo',
|
|
|
+ value: function scrollTo(scrollX) {
|
|
|
+ this.foundation_.scrollTo(scrollX);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScroller;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 57 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ANIMATING: 'mdc-tab-scroller--animating',
|
|
|
+ SCROLL_TEST: 'mdc-tab-scroller__test',
|
|
|
+ SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',
|
|
|
+ CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 58 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_tab_adapter__ = __webpack_require__(10);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_tab_index__ = __webpack_require__(25);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Tab Bar.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Tab Bar into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabBarAdapter = function () {
|
|
|
+ function MDCTabBarAdapter() {
|
|
|
+ _classCallCheck(this, MDCTabBarAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabBarAdapter, [{
|
|
|
+ key: 'scrollTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scrolls to the given position
|
|
|
+ * @param {number} scrollX The position to scroll to
|
|
|
+ */
|
|
|
+ value: function scrollTo(scrollX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Increments the current scroll position by the given amount
|
|
|
+ * @param {number} scrollXIncrement The amount to increment scroll
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScroll',
|
|
|
+ value: function incrementScroll(scrollXIncrement) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the current scroll position
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrollPosition',
|
|
|
+ value: function getScrollPosition() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the width of the scroll content
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrollContentWidth',
|
|
|
+ value: function getScrollContentWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the root element's offsetWidth
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getOffsetWidth',
|
|
|
+ value: function getOffsetWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns if the Tab Bar language direction is RTL
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isRTL',
|
|
|
+ value: function isRTL() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the tab at the given index to be activated
|
|
|
+ * @param {number} index The index of the tab to activate
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setActiveTab',
|
|
|
+ value: function setActiveTab(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the tab at the given index with the given client rect
|
|
|
+ * @param {number} index The index of the tab to activate
|
|
|
+ * @param {!ClientRect} clientRect The client rect of the previously active Tab Indicator
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateTabAtIndex',
|
|
|
+ value: function activateTabAtIndex(index, clientRect) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the tab at the given index
|
|
|
+ * @param {number} index The index of the tab to deactivate
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivateTabAtIndex',
|
|
|
+ value: function deactivateTabAtIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Focuses the tab at the given index
|
|
|
+ * @param {number} index The index of the tab to focus
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'focusTabAtIndex',
|
|
|
+ value: function focusTabAtIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the client rect of the tab's indicator
|
|
|
+ * @param {number} index The index of the tab
|
|
|
+ * @return {!ClientRect}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getTabIndicatorClientRectAtIndex',
|
|
|
+ value: function getTabIndicatorClientRectAtIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the tab dimensions of the tab at the given index
|
|
|
+ * @param {number} index The index of the tab
|
|
|
+ * @return {!MDCTabDimensions}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getTabDimensionsAtIndex',
|
|
|
+ value: function getTabDimensionsAtIndex(index) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the length of the tab list
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getTabListLength',
|
|
|
+ value: function getTabListLength() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the index of the previously active tab
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getPreviousActiveTabIndex',
|
|
|
+ value: function getPreviousActiveTabIndex() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the index of the focused tab
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getFocusedTabIndex',
|
|
|
+ value: function getFocusedTabIndex() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the index of the given tab
|
|
|
+ * @param {!MDCTab} tab The tab whose index to determin
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getIndexOfTab',
|
|
|
+ value: function getIndexOfTab(tab) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits the MDCTabBar:activated event
|
|
|
+ * @param {number} index The index of the activated tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notifyTabActivated',
|
|
|
+ value: function notifyTabActivated(index) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabBarAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabBarAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 59 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return numbers; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return VALIDATION_ATTR_WHITELIST; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ALWAYS_FLOAT_TYPES; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_CONTROLS: 'aria-controls',
|
|
|
+ INPUT_SELECTOR: '.mdc-text-field__input',
|
|
|
+ LABEL_SELECTOR: '.mdc-floating-label',
|
|
|
+ ICON_SELECTOR: '.mdc-text-field__icon',
|
|
|
+ OUTLINE_SELECTOR: '.mdc-notched-outline',
|
|
|
+ LINE_RIPPLE_SELECTOR: '.mdc-line-ripple'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-text-field',
|
|
|
+ DISABLED: 'mdc-text-field--disabled',
|
|
|
+ DENSE: 'mdc-text-field--dense',
|
|
|
+ FOCUSED: 'mdc-text-field--focused',
|
|
|
+ INVALID: 'mdc-text-field--invalid',
|
|
|
+ TEXTAREA: 'mdc-text-field--textarea',
|
|
|
+ OUTLINED: 'mdc-text-field--outlined',
|
|
|
+ WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ LABEL_SCALE: 0.75,
|
|
|
+ DENSE_LABEL_SCALE: 0.923
|
|
|
+};
|
|
|
+
|
|
|
+// whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation
|
|
|
+// under section: `Validation-related attributes`
|
|
|
+var VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength'];
|
|
|
+
|
|
|
+// 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'];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 60 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCTextFieldAdapter */
|
|
|
+/* unused harmony export NativeInputType */
|
|
|
+/* unused harmony export FoundationMapType */
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helper_text_foundation__ = __webpack_require__(27);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__icon_foundation__ = __webpack_require__(28);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * value: string,
|
|
|
+ * disabled: boolean,
|
|
|
+ * badInput: boolean,
|
|
|
+ * validity: {
|
|
|
+ * badInput: boolean,
|
|
|
+ * valid: boolean,
|
|
|
+ * },
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var NativeInputType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * helperText: (!MDCTextFieldHelperTextFoundation|undefined),
|
|
|
+ * leadingIcon: (!MDCTextFieldIconFoundation|undefined),
|
|
|
+ * trailingIcon: (!MDCTextFieldIconFoundation|undefined),
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var FoundationMapType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Text Field.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the Text Field into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldAdapter = function () {
|
|
|
+ function MDCTextFieldAdapter() {
|
|
|
+ _classCallCheck(this, MDCTextFieldAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldAdapter, [{
|
|
|
+ key: 'addClass',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the root Element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeClass',
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the root element contains the given class name.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasClass',
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event handler on the root element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'registerTextFieldInteractionHandler',
|
|
|
+ value: function registerTextFieldInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event handler on the root element for a given event.
|
|
|
+ * @param {string} type
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deregisterTextFieldInteractionHandler',
|
|
|
+ value: function deregisterTextFieldInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event listener on the native input element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'registerInputInteractionHandler',
|
|
|
+ value: function registerInputInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event listener on the native input element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deregisterInputInteractionHandler',
|
|
|
+ value: function deregisterInputInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers a validation attribute change listener on the input element.
|
|
|
+ * Handler accepts list of attribute names.
|
|
|
+ * @param {function(!Array<string>): undefined} handler
|
|
|
+ * @return {!MutationObserver}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'registerValidationAttributeChangeHandler',
|
|
|
+ value: function registerValidationAttributeChangeHandler(handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Disconnects a validation attribute observer on the input element.
|
|
|
+ * @param {!MutationObserver} observer
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deregisterValidationAttributeChangeHandler',
|
|
|
+ value: function deregisterValidationAttributeChangeHandler(observer) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns an object representing the native text input element, with a
|
|
|
+ * similar API shape. The object returned should include the value, disabled
|
|
|
+ * and badInput properties, as well as the checkValidity() function. We never
|
|
|
+ * alter the value within our code, however we do update the disabled
|
|
|
+ * property, so if you choose to duck-type the return value for this method
|
|
|
+ * in your implementation it's important to keep this in mind. Also note that
|
|
|
+ * this method can return null, which the foundation will handle gracefully.
|
|
|
+ * @return {?Element|?NativeInputType}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNativeInput',
|
|
|
+ value: function getNativeInput() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the textfield is focused.
|
|
|
+ * We achieve this via `document.activeElement === this.root_`.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isFocused',
|
|
|
+ value: function isFocused() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the direction of the root element is set to RTL.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isRtl',
|
|
|
+ value: function isRtl() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the line ripple.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateLineRipple',
|
|
|
+ value: function activateLineRipple() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the line ripple.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivateLineRipple',
|
|
|
+ value: function deactivateLineRipple() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the transform origin of the line ripple.
|
|
|
+ * @param {number} normalizedX
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setLineRippleTransformOrigin',
|
|
|
+ value: function setLineRippleTransformOrigin(normalizedX) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Only implement if label exists.
|
|
|
+ * Shakes label if shouldShake is true.
|
|
|
+ * @param {boolean} shouldShake
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shakeLabel',
|
|
|
+ value: function shakeLabel(shouldShake) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Only implement if label exists.
|
|
|
+ * Floats the label above the input element if shouldFloat is true.
|
|
|
+ * @param {boolean} shouldFloat
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'floatLabel',
|
|
|
+ value: function floatLabel(shouldFloat) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if label element exists, false if it doesn't.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasLabel',
|
|
|
+ value: function hasLabel() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Only implement if label exists.
|
|
|
+ * Returns width of label in pixels.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getLabelWidth',
|
|
|
+ value: function getLabelWidth() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if outline element exists, false if it doesn't.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasOutline',
|
|
|
+ value: function hasOutline() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Only implement if outline element exists.
|
|
|
+ * Updates SVG Path and outline element based on the
|
|
|
+ * label element width and RTL context.
|
|
|
+ * @param {number} labelWidth
|
|
|
+ * @param {boolean=} isRtl
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notchOutline',
|
|
|
+ value: function notchOutline(labelWidth, isRtl) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Only implement if outline element exists.
|
|
|
+ * Closes notch in outline element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closeOutline',
|
|
|
+ value: function closeOutline() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 61 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Text Field Helper Text.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the TextField helper text into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCTextFieldHelperTextAdapter = function () {
|
|
|
+ function MDCTextFieldHelperTextAdapter() {
|
|
|
+ _classCallCheck(this, MDCTextFieldHelperTextAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldHelperTextAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the helper text element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the helper text element.
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether or not the helper text element contains the given class.
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets an attribute with a given value on the helper text element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from the helper text element.
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttr",
|
|
|
+ value: function removeAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content for the helper text element.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setContent",
|
|
|
+ value: function setContent(content) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldHelperTextAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldHelperTextAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 62 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Text Field Icon.
|
|
|
+ *
|
|
|
+ * Defines the shape of the adapter expected by the foundation. Implement this
|
|
|
+ * adapter to integrate the text field icon into your framework. See
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
|
|
|
+ * for more information.
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCTextFieldIconAdapter = function () {
|
|
|
+ function MDCTextFieldIconAdapter() {
|
|
|
+ _classCallCheck(this, MDCTextFieldIconAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldIconAdapter, [{
|
|
|
+ key: "getAttr",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Gets the value of an attribute on the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+ value: function getAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets an attribute on the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from the icon element.
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttr",
|
|
|
+ value: function removeAttr(attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the icon element.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setContent",
|
|
|
+ value: function setContent(content) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers an event listener on the icon element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deregisters an event listener on the icon element for a given event.
|
|
|
+ * @param {string} evtType
|
|
|
+ * @param {function(!Event): undefined} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(evtType, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits a custom event "MDCTextField:icon" denoting a user has clicked the icon.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyIconAction",
|
|
|
+ value: function notifyIconAction() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldIconAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldIconAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 63 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__ = __webpack_require__(64);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__ = __webpack_require__(65);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_chips_index__ = __webpack_require__(71);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__ = __webpack_require__(75);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_dom_index__ = __webpack_require__(81);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__ = __webpack_require__(82);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__ = __webpack_require__(17);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__ = __webpack_require__(89);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__ = __webpack_require__(93);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__ = __webpack_require__(96);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__ = __webpack_require__(100);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__ = __webpack_require__(104);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__ = __webpack_require__(18);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__material_list_index__ = __webpack_require__(15);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__material_menu_index__ = __webpack_require__(43);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__ = __webpack_require__(45);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__ = __webpack_require__(22);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__material_radio_index__ = __webpack_require__(113);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__material_select_index__ = __webpack_require__(117);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__material_slider_index__ = __webpack_require__(123);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__ = __webpack_require__(125);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__material_switch_index__ = __webpack_require__(128);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__material_tab_index__ = __webpack_require__(25);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__ = __webpack_require__(137);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__ = __webpack_require__(54);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__ = __webpack_require__(56);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__ = __webpack_require__(145);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__ = __webpack_require__(151);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__ = __webpack_require__(154);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "autoInit", function() { return __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "base", function() { return __WEBPACK_IMPORTED_MODULE_1__material_base_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "checkbox", function() { return __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "chips", function() { return __WEBPACK_IMPORTED_MODULE_3__material_chips_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "dialog", function() { return __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "dom", function() { return __WEBPACK_IMPORTED_MODULE_5__material_dom_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "drawer", function() { return __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "floatingLabel", function() { return __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "formField", function() { return __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "gridList", function() { return __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "iconButton", function() { return __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "iconToggle", function() { return __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "lineRipple", function() { return __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "linearProgress", function() { return __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "list", function() { return __WEBPACK_IMPORTED_MODULE_14__material_list_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "menu", function() { return __WEBPACK_IMPORTED_MODULE_15__material_menu_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "menuSurface", function() { return __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "notchedOutline", function() { return __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "radio", function() { return __WEBPACK_IMPORTED_MODULE_18__material_radio_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "ripple", function() { return __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_20__material_select_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "selectionControl", function() { return __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "slider", function() { return __WEBPACK_IMPORTED_MODULE_22__material_slider_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "switchControl", function() { return __WEBPACK_IMPORTED_MODULE_24__material_switch_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "snackbar", function() { return __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tab", function() { return __WEBPACK_IMPORTED_MODULE_25__material_tab_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabBar", function() { return __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabIndicator", function() { return __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabScroller", function() { return __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "textField", function() { return __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "toolbar", function() { return __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "topAppBar", function() { return __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// Register all components
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCCheckbox', __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__["MDCCheckbox"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCChip', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__["MDCChip"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCChipSet', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__["MDCChipSet"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCDialog', __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__["MDCDialog"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCDrawer', __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__["MDCDrawer"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCFloatingLabel', __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__["MDCFloatingLabel"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCFormField', __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__["MDCFormField"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCRipple', __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__["MDCRipple"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCGridList', __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__["MDCGridList"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCIconButtonToggle', __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__["MDCIconButtonToggle"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCIconToggle', __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__["MDCIconToggle"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCLineRipple', __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__["MDCLineRipple"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCLinearProgress', __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__["MDCLinearProgress"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCList', __WEBPACK_IMPORTED_MODULE_14__material_list_index__["MDCList"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCNotchedOutline', __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__["MDCNotchedOutline"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCRadio', __WEBPACK_IMPORTED_MODULE_18__material_radio_index__["MDCRadio"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSnackbar', __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__["MDCSnackbar"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTabBar', __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__["MDCTabBar"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTextField', __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__["MDCTextField"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCMenu', __WEBPACK_IMPORTED_MODULE_15__material_menu_index__["MDCMenu"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCMenuSurface', __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__["MDCMenuSurface"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSelect', __WEBPACK_IMPORTED_MODULE_20__material_select_index__["MDCSelect"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSlider', __WEBPACK_IMPORTED_MODULE_22__material_slider_index__["MDCSlider"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSwitch', __WEBPACK_IMPORTED_MODULE_24__material_switch_index__["MDCSwitch"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCToolbar', __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__["MDCToolbar"]);
|
|
|
+__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTopAppBar', __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__["MDCTopAppBar"]);
|
|
|
+
|
|
|
+// Export all components.
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 64 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (immutable) */ __webpack_exports__["a"] = mdcAutoInit;
|
|
|
+/**
|
|
|
+ * @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 registry = Object.create(null);
|
|
|
+
|
|
|
+var CONSOLE_WARN = console.warn.bind(console);
|
|
|
+
|
|
|
+function _emit(evtType, evtData) {
|
|
|
+ var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
|
+
|
|
|
+ var evt = void 0;
|
|
|
+ if (typeof CustomEvent === 'function') {
|
|
|
+ evt = new CustomEvent(evtType, {
|
|
|
+ detail: evtData,
|
|
|
+ bubbles: shouldBubble
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ evt = document.createEvent('CustomEvent');
|
|
|
+ evt.initCustomEvent(evtType, shouldBubble, false, evtData);
|
|
|
+ }
|
|
|
+
|
|
|
+ document.dispatchEvent(evt);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Auto-initializes all mdc components on a page.
|
|
|
+ */
|
|
|
+function mdcAutoInit() {
|
|
|
+ var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
|
|
|
+ var warn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CONSOLE_WARN;
|
|
|
+
|
|
|
+ var components = [];
|
|
|
+ var nodes = root.querySelectorAll('[data-mdc-auto-init]');
|
|
|
+ for (var i = 0, node; node = nodes[i]; i++) {
|
|
|
+ var ctorName = node.dataset.mdcAutoInit;
|
|
|
+ if (!ctorName) {
|
|
|
+ throw new Error('(mdc-auto-init) Constructor name must be given.');
|
|
|
+ }
|
|
|
+
|
|
|
+ var Ctor = registry[ctorName];
|
|
|
+ if (typeof Ctor !== 'function') {
|
|
|
+ throw new Error('(mdc-auto-init) Could not find constructor in registry for ' + ctorName);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (node[ctorName]) {
|
|
|
+ warn('(mdc-auto-init) Component already initialized for ' + node + '. Skipping...');
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO: Should we make an eslint rule for an attachTo() static method?
|
|
|
+ var component = Ctor.attachTo(node);
|
|
|
+ Object.defineProperty(node, ctorName, {
|
|
|
+ value: component,
|
|
|
+ writable: false,
|
|
|
+ enumerable: false,
|
|
|
+ configurable: true
|
|
|
+ });
|
|
|
+ components.push(component);
|
|
|
+ }
|
|
|
+
|
|
|
+ _emit('MDCAutoInit:End', {});
|
|
|
+ return components;
|
|
|
+}
|
|
|
+
|
|
|
+mdcAutoInit.register = function (componentName, Ctor) {
|
|
|
+ var warn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : CONSOLE_WARN;
|
|
|
+
|
|
|
+ if (typeof Ctor !== 'function') {
|
|
|
+ throw new Error('(mdc-auto-init) Invalid Ctor value ' + Ctor + '. Expected function');
|
|
|
+ }
|
|
|
+ if (registry[componentName]) {
|
|
|
+ warn('(mdc-auto-init) Overriding registration for ' + componentName + ' with ' + Ctor + '. ' + ('Was: ' + registry[componentName]));
|
|
|
+ }
|
|
|
+ registry[componentName] = Ctor;
|
|
|
+};
|
|
|
+
|
|
|
+mdcAutoInit.deregister = function (componentName) {
|
|
|
+ delete registry[componentName];
|
|
|
+};
|
|
|
+
|
|
|
+mdcAutoInit.deregisterAll = function () {
|
|
|
+ Object.keys(registry).forEach(this.deregister, this);
|
|
|
+};
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 65 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCCheckbox", function() { return MDCCheckbox; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_animation_index__ = __webpack_require__(9);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(68);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_ripple_util__ = __webpack_require__(6);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCCheckboxFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCCheckboxFoundation>
|
|
|
+ * @implements {MDCSelectionControl}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCCheckbox = function (_MDCComponent) {
|
|
|
+ _inherits(MDCCheckbox, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCCheckbox, [{
|
|
|
+ key: 'nativeCb_',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the state of the native control element, or null if the native control element is not present.
|
|
|
+ * @return {?MDCSelectionControlState}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
|
|
|
+
|
|
|
+ var cbEl = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
|
|
|
+ return cbEl;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCCheckbox(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCCheckbox() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCCheckbox);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCCheckbox.__proto__ || Object.getPrototypeOf(MDCCheckbox)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_ = _this.initRipple_();
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleChange_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleAnimationEnd_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCCheckbox, [{
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.handleChange_ = function () {
|
|
|
+ return _this2.foundation_.handleChange();
|
|
|
+ };
|
|
|
+ this.handleAnimationEnd_ = function () {
|
|
|
+ return _this2.foundation_.handleAnimationEnd();
|
|
|
+ };
|
|
|
+ this.nativeCb_.addEventListener('change', this.handleChange_);
|
|
|
+ this.listen(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__["a" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initRipple_',
|
|
|
+ value: function initRipple_() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_5__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ isUnbounded: function isUnbounded() {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return _this3.nativeCb_[MATCHES](':active');
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this3.nativeCb_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this3.nativeCb_.removeEventListener(type, handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"](this.root_, foundation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCCheckboxFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this4.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this4.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setNativeControlAttr: function setNativeControlAttr(attr, value) {
|
|
|
+ return _this4.nativeCb_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeNativeControlAttr: function removeNativeControlAttr(attr) {
|
|
|
+ return _this4.nativeCb_.removeAttribute(attr);
|
|
|
+ },
|
|
|
+ getNativeControl: function getNativeControl() {
|
|
|
+ return _this4.nativeCb_;
|
|
|
+ },
|
|
|
+ isIndeterminate: function isIndeterminate() {
|
|
|
+ return _this4.indeterminate;
|
|
|
+ },
|
|
|
+ isChecked: function isChecked() {
|
|
|
+ return _this4.checked;
|
|
|
+ },
|
|
|
+ hasNativeControl: function hasNativeControl() {
|
|
|
+ return !!_this4.nativeCb_;
|
|
|
+ },
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled(disabled) {
|
|
|
+ return _this4.nativeCb_.disabled = disabled;
|
|
|
+ },
|
|
|
+ forceLayout: function forceLayout() {
|
|
|
+ return _this4.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ isAttachedToDOM: function isAttachedToDOM() {
|
|
|
+ return Boolean(_this4.root_.parentNode);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.ripple_.destroy();
|
|
|
+ this.nativeCb_.removeEventListener('change', this.handleChange_);
|
|
|
+ this.unlisten(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__["a" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);
|
|
|
+ _get(MDCCheckbox.prototype.__proto__ || Object.getPrototypeOf(MDCCheckbox.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'checked',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeCb_.checked;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} checked */
|
|
|
+ ,
|
|
|
+ set: function set(checked) {
|
|
|
+ this.nativeCb_.checked = checked;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'indeterminate',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeCb_.indeterminate;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} indeterminate */
|
|
|
+ ,
|
|
|
+ set: function set(indeterminate) {
|
|
|
+ this.nativeCb_.indeterminate = indeterminate;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeCb_.disabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {?string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'value',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeCb_.value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {?string} value */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.nativeCb_.value = value;
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCCheckbox;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 66 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(29);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(67);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(6);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * isActivated: (boolean|undefined),
|
|
|
+ * hasDeactivationUXRun: (boolean|undefined),
|
|
|
+ * wasActivatedByPointer: (boolean|undefined),
|
|
|
+ * wasElementMadeActive: (boolean|undefined),
|
|
|
+ * activationEvent: (!Event|undefined),
|
|
|
+ * isProgrammatic: (boolean|undefined)
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var ActivationStateType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * activate: (string|undefined),
|
|
|
+ * deactivate: (string|undefined),
|
|
|
+ * focus: (string|undefined),
|
|
|
+ * blur: (string|undefined)
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var ListenerInfoType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * activate: function(!Event),
|
|
|
+ * deactivate: function(!Event=),
|
|
|
+ * focus: function(),
|
|
|
+ * blur: function()
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var ListenersType = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * x: number,
|
|
|
+ * y: number
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+var PointType = void 0;
|
|
|
+
|
|
|
+// 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'];
|
|
|
+
|
|
|
+// Tracks activations that have occurred on the current frame, to avoid simultaneous nested activations
|
|
|
+/** @type {!Array<!EventTarget>} */
|
|
|
+var activatedTargets = [];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCRippleAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCRippleFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCRippleFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCRippleFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ browserSupportsCssVars: function browserSupportsCssVars() /* boolean - cached */{},
|
|
|
+ isUnbounded: function isUnbounded() /* boolean */{},
|
|
|
+ isSurfaceActive: function isSurfaceActive() /* boolean */{},
|
|
|
+ isSurfaceDisabled: function isSurfaceDisabled() /* boolean */{},
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ containsEventTarget: function containsEventTarget() /* target: !EventTarget */{},
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ registerDocumentInteractionHandler: function registerDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
|
|
|
+ updateCssVariable: function updateCssVariable() /* varName: string, value: string */{},
|
|
|
+ computeBoundingRect: function computeBoundingRect() /* ClientRect */{},
|
|
|
+ getWindowPageOffset: function getWindowPageOffset() /* {x: number, y: number} */{}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCRippleFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCRippleFoundation);
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCRippleFoundation.__proto__ || Object.getPrototypeOf(MDCRippleFoundation)).call(this, _extends(MDCRippleFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.layoutFrame_ = 0;
|
|
|
+
|
|
|
+ /** @private {!ClientRect} */
|
|
|
+ _this.frame_ = /** @type {!ClientRect} */{ width: 0, height: 0 };
|
|
|
+
|
|
|
+ /** @private {!ActivationStateType} */
|
|
|
+ _this.activationState_ = _this.defaultActivationState_();
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.initialSize_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.maxRadius_ = 0;
|
|
|
+
|
|
|
+ /** @private {function(!Event)} */
|
|
|
+ _this.activateHandler_ = function (e) {
|
|
|
+ return _this.activate_(e);
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {function(!Event=)} */
|
|
|
+ _this.deactivateHandler_ = function () {
|
|
|
+ return _this.deactivate_();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {function(!Event=)} */
|
|
|
+ _this.focusHandler_ = function () {
|
|
|
+ return _this.handleFocus();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {function(!Event=)} */
|
|
|
+ _this.blurHandler_ = function () {
|
|
|
+ return _this.handleBlur();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.resizeHandler_ = function () {
|
|
|
+ return _this.layout();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {{left: number, top:number}} */
|
|
|
+ _this.unboundedCoords_ = {
|
|
|
+ left: 0,
|
|
|
+ top: 0
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.fgScale_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.activationTimer_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.fgDeactivationRemovalTimer_ = 0;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.activationAnimationHasEnded_ = false;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.activationTimerCallback_ = function () {
|
|
|
+ _this.activationAnimationHasEnded_ = true;
|
|
|
+ _this.runDeactivationUXLogicIfReady_();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {!Event|undefined} */
|
|
|
+ _this.previousActivationEvent_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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.
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCRippleFoundation, [{
|
|
|
+ key: 'supportsPressRipple_',
|
|
|
+ value: function supportsPressRipple_() {
|
|
|
+ return this.adapter_.browserSupportsCssVars();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!ActivationStateType}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultActivationState_',
|
|
|
+ value: function defaultActivationState_() {
|
|
|
+ return {
|
|
|
+ isActivated: false,
|
|
|
+ hasDeactivationUXRun: false,
|
|
|
+ wasActivatedByPointer: false,
|
|
|
+ wasElementMadeActive: false,
|
|
|
+ activationEvent: undefined,
|
|
|
+ isProgrammatic: false
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @override */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var supportsPressRipple = this.supportsPressRipple_();
|
|
|
+
|
|
|
+ this.registerRootHandlers_(supportsPressRipple);
|
|
|
+
|
|
|
+ if (supportsPressRipple) {
|
|
|
+ var _MDCRippleFoundation$ = MDCRippleFoundation.cssClasses,
|
|
|
+ ROOT = _MDCRippleFoundation$.ROOT,
|
|
|
+ UNBOUNDED = _MDCRippleFoundation$.UNBOUNDED;
|
|
|
+
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ _this2.adapter_.addClass(ROOT);
|
|
|
+ if (_this2.adapter_.isUnbounded()) {
|
|
|
+ _this2.adapter_.addClass(UNBOUNDED);
|
|
|
+ // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple
|
|
|
+ _this2.layoutInternal_();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @override */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = 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 _MDCRippleFoundation$2 = MDCRippleFoundation.cssClasses,
|
|
|
+ ROOT = _MDCRippleFoundation$2.ROOT,
|
|
|
+ UNBOUNDED = _MDCRippleFoundation$2.UNBOUNDED;
|
|
|
+
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ _this3.adapter_.removeClass(ROOT);
|
|
|
+ _this3.adapter_.removeClass(UNBOUNDED);
|
|
|
+ _this3.removeCssVars_();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.deregisterRootHandlers_();
|
|
|
+ this.deregisterDeactivationHandlers_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} supportsPressRipple Passed from init to save a redundant function call
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'registerRootHandlers_',
|
|
|
+ value: function registerRootHandlers_(supportsPressRipple) {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ if (supportsPressRipple) {
|
|
|
+ ACTIVATION_EVENT_TYPES.forEach(function (type) {
|
|
|
+ _this4.adapter_.registerInteractionHandler(type, _this4.activateHandler_);
|
|
|
+ });
|
|
|
+ if (this.adapter_.isUnbounded()) {
|
|
|
+ this.adapter_.registerResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.registerInteractionHandler('focus', this.focusHandler_);
|
|
|
+ this.adapter_.registerInteractionHandler('blur', this.blurHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event} e
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'registerDeactivationHandlers_',
|
|
|
+ value: function registerDeactivationHandlers_(e) {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ if (e.type === 'keydown') {
|
|
|
+ this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);
|
|
|
+ } else {
|
|
|
+ POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {
|
|
|
+ _this5.adapter_.registerDocumentInteractionHandler(type, _this5.deactivateHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deregisterRootHandlers_',
|
|
|
+ value: function deregisterRootHandlers_() {
|
|
|
+ var _this6 = this;
|
|
|
+
|
|
|
+ ACTIVATION_EVENT_TYPES.forEach(function (type) {
|
|
|
+ _this6.adapter_.deregisterInteractionHandler(type, _this6.activateHandler_);
|
|
|
+ });
|
|
|
+ this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);
|
|
|
+ this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);
|
|
|
+
|
|
|
+ if (this.adapter_.isUnbounded()) {
|
|
|
+ this.adapter_.deregisterResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deregisterDeactivationHandlers_',
|
|
|
+ value: function deregisterDeactivationHandlers_() {
|
|
|
+ var _this7 = this;
|
|
|
+
|
|
|
+ this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);
|
|
|
+ POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {
|
|
|
+ _this7.adapter_.deregisterDocumentInteractionHandler(type, _this7.deactivateHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeCssVars_',
|
|
|
+ value: function removeCssVars_() {
|
|
|
+ var _this8 = this;
|
|
|
+
|
|
|
+ var strings = MDCRippleFoundation.strings;
|
|
|
+
|
|
|
+ Object.keys(strings).forEach(function (k) {
|
|
|
+ if (k.indexOf('VAR_') === 0) {
|
|
|
+ _this8.adapter_.updateCssVariable(strings[k], null);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event=} e
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate_',
|
|
|
+ value: function activate_(e) {
|
|
|
+ var _this9 = 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 && e !== undefined && previousActivationEvent.type !== e.type;
|
|
|
+ if (isSameInteraction) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ activationState.isActivated = true;
|
|
|
+ activationState.isProgrammatic = e === undefined;
|
|
|
+ activationState.activationEvent = e;
|
|
|
+ activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : e !== undefined && (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown');
|
|
|
+
|
|
|
+ var hasActivatedChild = e !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {
|
|
|
+ return _this9.adapter_.containsEventTarget(target);
|
|
|
+ });
|
|
|
+ if (hasActivatedChild) {
|
|
|
+ // Immediately reset activation state, while preserving logic that prevents touch follow-on events
|
|
|
+ this.resetActivationState_();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e !== undefined) {
|
|
|
+ activatedTargets.push( /** @type {!EventTarget} */e.target);
|
|
|
+ this.registerDeactivationHandlers_(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ activationState.wasElementMadeActive = this.checkElementMadeActive_(e);
|
|
|
+ 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 && e !== undefined && (e.key === ' ' || e.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 = _this9.checkElementMadeActive_(e);
|
|
|
+ if (activationState.wasElementMadeActive) {
|
|
|
+ _this9.animateActivation_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!activationState.wasElementMadeActive) {
|
|
|
+ // Reset activation state immediately if element was not made active.
|
|
|
+ _this9.activationState_ = _this9.defaultActivationState_();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event=} e
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'checkElementMadeActive_',
|
|
|
+ value: function checkElementMadeActive_(e) {
|
|
|
+ return e !== undefined && e.type === 'keydown' ? this.adapter_.isSurfaceActive() : true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event=} event Optional event containing position information.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate(event) {
|
|
|
+ this.activate_(event);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'animateActivation_',
|
|
|
+ value: function animateActivation_() {
|
|
|
+ var _this10 = this;
|
|
|
+
|
|
|
+ var _MDCRippleFoundation$3 = MDCRippleFoundation.strings,
|
|
|
+ VAR_FG_TRANSLATE_START = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_START,
|
|
|
+ VAR_FG_TRANSLATE_END = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_END;
|
|
|
+ var _MDCRippleFoundation$4 = MDCRippleFoundation.cssClasses,
|
|
|
+ FG_DEACTIVATION = _MDCRippleFoundation$4.FG_DEACTIVATION,
|
|
|
+ FG_ACTIVATION = _MDCRippleFoundation$4.FG_ACTIVATION;
|
|
|
+ var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;
|
|
|
+
|
|
|
+
|
|
|
+ this.layoutInternal_();
|
|
|
+
|
|
|
+ var translateStart = '';
|
|
|
+ var translateEnd = '';
|
|
|
+
|
|
|
+ if (!this.adapter_.isUnbounded()) {
|
|
|
+ var _getFgTranslationCoor = this.getFgTranslationCoordinates_(),
|
|
|
+ startPoint = _getFgTranslationCoor.startPoint,
|
|
|
+ endPoint = _getFgTranslationCoor.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 _this10.activationTimerCallback_();
|
|
|
+ }, DEACTIVATION_TIMEOUT_MS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @private
|
|
|
+ * @return {{startPoint: PointType, endPoint: PointType}}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getFgTranslationCoordinates_',
|
|
|
+ value: function getFgTranslationCoordinates_() {
|
|
|
+ var _activationState_ = this.activationState_,
|
|
|
+ activationEvent = _activationState_.activationEvent,
|
|
|
+ wasActivatedByPointer = _activationState_.wasActivatedByPointer;
|
|
|
+
|
|
|
+
|
|
|
+ var startPoint = void 0;
|
|
|
+ if (wasActivatedByPointer) {
|
|
|
+ startPoint = Object(__WEBPACK_IMPORTED_MODULE_3__util__["getNormalizedEventCoords"])(
|
|
|
+ /** @type {!Event} */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 };
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'runDeactivationUXLogicIfReady_',
|
|
|
+ value: function runDeactivationUXLogicIfReady_() {
|
|
|
+ var _this11 = 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 _activationState_2 = this.activationState_,
|
|
|
+ hasDeactivationUXRun = _activationState_2.hasDeactivationUXRun,
|
|
|
+ isActivated = _activationState_2.isActivated;
|
|
|
+
|
|
|
+ var activationHasEnded = hasDeactivationUXRun || !isActivated;
|
|
|
+
|
|
|
+ if (activationHasEnded && this.activationAnimationHasEnded_) {
|
|
|
+ this.rmBoundedActivationClasses_();
|
|
|
+ this.adapter_.addClass(FG_DEACTIVATION);
|
|
|
+ this.fgDeactivationRemovalTimer_ = setTimeout(function () {
|
|
|
+ _this11.adapter_.removeClass(FG_DEACTIVATION);
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].FG_DEACTIVATION_MS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'rmBoundedActivationClasses_',
|
|
|
+ value: function rmBoundedActivationClasses_() {
|
|
|
+ var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;
|
|
|
+
|
|
|
+ this.adapter_.removeClass(FG_ACTIVATION);
|
|
|
+ this.activationAnimationHasEnded_ = false;
|
|
|
+ this.adapter_.computeBoundingRect();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'resetActivationState_',
|
|
|
+ value: function resetActivationState_() {
|
|
|
+ var _this12 = 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 _this12.previousActivationEvent_ = undefined;
|
|
|
+ }, MDCRippleFoundation.numbers.TAP_DELAY_MS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate_',
|
|
|
+ value: function deactivate_() {
|
|
|
+ var _this13 = 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 = /** @type {!ActivationStateType} */_extends({}, activationState);
|
|
|
+
|
|
|
+ if (activationState.isProgrammatic) {
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ return _this13.animateDeactivation_(state);
|
|
|
+ });
|
|
|
+ this.resetActivationState_();
|
|
|
+ } else {
|
|
|
+ this.deregisterDeactivationHandlers_();
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ _this13.activationState_.hasDeactivationUXRun = true;
|
|
|
+ _this13.animateDeactivation_(state);
|
|
|
+ _this13.resetActivationState_();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.deactivate_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!ActivationStateType} options
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'animateDeactivation_',
|
|
|
+ value: function animateDeactivation_(_ref) {
|
|
|
+ var wasActivatedByPointer = _ref.wasActivatedByPointer,
|
|
|
+ wasElementMadeActive = _ref.wasElementMadeActive;
|
|
|
+
|
|
|
+ if (wasActivatedByPointer || wasElementMadeActive) {
|
|
|
+ this.runDeactivationUXLogicIfReady_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ var _this14 = this;
|
|
|
+
|
|
|
+ if (this.layoutFrame_) {
|
|
|
+ cancelAnimationFrame(this.layoutFrame_);
|
|
|
+ }
|
|
|
+ this.layoutFrame_ = requestAnimationFrame(function () {
|
|
|
+ _this14.layoutInternal_();
|
|
|
+ _this14.layoutFrame_ = 0;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'layoutInternal_',
|
|
|
+ value: function layoutInternal_() {
|
|
|
+ var _this15 = 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(_this15.frame_.width, 2) + Math.pow(_this15.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_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'updateLayoutCssVars_',
|
|
|
+ value: function updateLayoutCssVars_() {
|
|
|
+ var _MDCRippleFoundation$5 = MDCRippleFoundation.strings,
|
|
|
+ VAR_FG_SIZE = _MDCRippleFoundation$5.VAR_FG_SIZE,
|
|
|
+ VAR_LEFT = _MDCRippleFoundation$5.VAR_LEFT,
|
|
|
+ VAR_TOP = _MDCRippleFoundation$5.VAR_TOP,
|
|
|
+ VAR_FG_SCALE = _MDCRippleFoundation$5.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');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} unbounded */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setUnbounded',
|
|
|
+ value: function setUnbounded(unbounded) {
|
|
|
+ var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;
|
|
|
+
|
|
|
+ if (unbounded) {
|
|
|
+ this.adapter_.addClass(UNBOUNDED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(UNBOUNDED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleFocus',
|
|
|
+ value: function handleFocus() {
|
|
|
+ var _this16 = this;
|
|
|
+
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ return _this16.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleBlur',
|
|
|
+ value: function handleBlur() {
|
|
|
+ var _this17 = this;
|
|
|
+
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ return _this17.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRippleFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCRippleFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 67 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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 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.
|
|
|
+ ROOT: 'mdc-ripple-upgraded',
|
|
|
+ UNBOUNDED: 'mdc-ripple-upgraded--unbounded',
|
|
|
+ BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',
|
|
|
+ FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',
|
|
|
+ FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation'
|
|
|
+};
|
|
|
+
|
|
|
+var strings = {
|
|
|
+ VAR_LEFT: '--mdc-ripple-left',
|
|
|
+ VAR_TOP: '--mdc-ripple-top',
|
|
|
+ VAR_FG_SIZE: '--mdc-ripple-fg-size',
|
|
|
+ VAR_FG_SCALE: '--mdc-ripple-fg-scale',
|
|
|
+ VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',
|
|
|
+ VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end'
|
|
|
+};
|
|
|
+
|
|
|
+var numbers = {
|
|
|
+ PADDING: 10,
|
|
|
+ INITIAL_ORIGIN_SCALE: 0.6,
|
|
|
+ DEACTIVATION_TIMEOUT_MS: 225, // Corresponds to $mdc-ripple-translate-duration (i.e. activation animation duration)
|
|
|
+ FG_DEACTIVATION_MS: 150, // Corresponds to $mdc-ripple-fade-out-duration (i.e. deactivation animation duration)
|
|
|
+ TAP_DELAY_MS: 300 };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 68 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(69);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(70);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/** @const {!Array<string>} */
|
|
|
+var CB_PROTO_PROPS = ['checked', 'indeterminate'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCCheckboxAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCCheckboxFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCCheckboxFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCCheckboxFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {numbers} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCCheckboxAdapter} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCCheckboxAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setNativeControlAttr: function setNativeControlAttr() /* attr: string, value: string */{},
|
|
|
+ removeNativeControlAttr: function removeNativeControlAttr() /* attr: string */{},
|
|
|
+ getNativeControl: function getNativeControl() /* !MDCSelectionControlState */{},
|
|
|
+ forceLayout: function forceLayout() {},
|
|
|
+ isAttachedToDOM: function isAttachedToDOM() /* boolean */{},
|
|
|
+ isIndeterminate: function isIndeterminate() /* boolean */{},
|
|
|
+ isChecked: function isChecked() /* boolean */{},
|
|
|
+ hasNativeControl: function hasNativeControl() /* boolean */{},
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCCheckboxFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCCheckboxFoundation);
|
|
|
+
|
|
|
+ /** @private {string} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCCheckboxFoundation.__proto__ || Object.getPrototypeOf(MDCCheckboxFoundation)).call(this, _extends(MDCCheckboxFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.currentCheckState_ = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INIT;
|
|
|
+
|
|
|
+ /** @private {string} */
|
|
|
+ _this.currentAnimationClass_ = '';
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.animEndLatchTimer_ = 0;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.enableAnimationEndHandler_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @override */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCCheckboxFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.currentCheckState_ = this.determineCheckState_();
|
|
|
+ this.updateAriaChecked_();
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].UPGRADED);
|
|
|
+ this.installPropertyChangeHooks_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @override */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.uninstallPropertyChangeHooks_();
|
|
|
+ clearTimeout(this.animEndLatchTimer_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(disabled) {
|
|
|
+ this.adapter_.setNativeControlDisabled(disabled);
|
|
|
+ if (disabled) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles the animationend event for the checkbox
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleAnimationEnd',
|
|
|
+ value: function handleAnimationEnd() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ if (!this.enableAnimationEndHandler_) return;
|
|
|
+
|
|
|
+ clearTimeout(this.animEndLatchTimer_);
|
|
|
+
|
|
|
+ this.animEndLatchTimer_ = setTimeout(function () {
|
|
|
+ _this2.adapter_.removeClass(_this2.currentAnimationClass_);
|
|
|
+ _this2.enableAnimationEndHandler_ = false;
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* numbers */].ANIM_END_LATCH_MS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles the change event for the checkbox
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChange',
|
|
|
+ value: function handleChange() {
|
|
|
+ this.transitionCheckState_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'installPropertyChangeHooks_',
|
|
|
+ value: function installPropertyChangeHooks_() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ var nativeCb = this.getNativeControl_();
|
|
|
+ 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)) {
|
|
|
+ var nativeCbDesc = /** @type {!ObjectPropertyDescriptor} */{
|
|
|
+ get: desc.get,
|
|
|
+ set: function set(state) {
|
|
|
+ desc.set.call(nativeCb, state);
|
|
|
+ _this3.transitionCheckState_();
|
|
|
+ },
|
|
|
+ configurable: desc.configurable,
|
|
|
+ enumerable: desc.enumerable
|
|
|
+ };
|
|
|
+ Object.defineProperty(nativeCb, controlState, nativeCbDesc);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'uninstallPropertyChangeHooks_',
|
|
|
+ value: function uninstallPropertyChangeHooks_() {
|
|
|
+ var nativeCb = this.getNativeControl_();
|
|
|
+ var cbProto = Object.getPrototypeOf(nativeCb);
|
|
|
+
|
|
|
+ CB_PROTO_PROPS.forEach(function (controlState) {
|
|
|
+ var desc = /** @type {!ObjectPropertyDescriptor} */Object.getOwnPropertyDescriptor(cbProto, controlState);
|
|
|
+ if (validDescriptor(desc)) {
|
|
|
+ Object.defineProperty(nativeCb, controlState, desc);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'transitionCheckState_',
|
|
|
+ value: function transitionCheckState_() {
|
|
|
+ if (!this.adapter_.hasNativeControl()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var oldState = this.currentCheckState_;
|
|
|
+ var newState = this.determineCheckState_();
|
|
|
+
|
|
|
+ if (oldState === newState) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.updateAriaChecked_();
|
|
|
+
|
|
|
+ // 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'determineCheckState_',
|
|
|
+ value: function determineCheckState_() {
|
|
|
+ var TRANSITION_STATE_INDETERMINATE = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INDETERMINATE,
|
|
|
+ TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_CHECKED,
|
|
|
+ TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_UNCHECKED;
|
|
|
+
|
|
|
+
|
|
|
+ if (this.adapter_.isIndeterminate()) {
|
|
|
+ return TRANSITION_STATE_INDETERMINATE;
|
|
|
+ }
|
|
|
+ return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} oldState
|
|
|
+ * @param {string} newState
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getTransitionAnimationClass_',
|
|
|
+ value: function getTransitionAnimationClass_(oldState, newState) {
|
|
|
+ var TRANSITION_STATE_INIT = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INIT,
|
|
|
+ TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_CHECKED,
|
|
|
+ TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_UNCHECKED;
|
|
|
+ var _MDCCheckboxFoundatio = MDCCheckboxFoundation.cssClasses,
|
|
|
+ ANIM_UNCHECKED_CHECKED = _MDCCheckboxFoundatio.ANIM_UNCHECKED_CHECKED,
|
|
|
+ ANIM_UNCHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_UNCHECKED_INDETERMINATE,
|
|
|
+ ANIM_CHECKED_UNCHECKED = _MDCCheckboxFoundatio.ANIM_CHECKED_UNCHECKED,
|
|
|
+ ANIM_CHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_CHECKED_INDETERMINATE,
|
|
|
+ ANIM_INDETERMINATE_CHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_CHECKED,
|
|
|
+ ANIM_INDETERMINATE_UNCHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_UNCHECKED;
|
|
|
+
|
|
|
+
|
|
|
+ switch (oldState) {
|
|
|
+ case TRANSITION_STATE_INIT:
|
|
|
+ if (newState === TRANSITION_STATE_UNCHECKED) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ // fallthrough
|
|
|
+ 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;
|
|
|
+ // TRANSITION_STATE_INDETERMINATE
|
|
|
+ default:
|
|
|
+ return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateAriaChecked_',
|
|
|
+ value: function updateAriaChecked_() {
|
|
|
+ // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.
|
|
|
+ if (this.adapter_.isIndeterminate()) {
|
|
|
+ this.adapter_.setNativeControlAttr(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ARIA_CHECKED_ATTR, __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* 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(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ARIA_CHECKED_ATTR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectionControlState}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNativeControl_',
|
|
|
+ value: function getNativeControl_() {
|
|
|
+ return this.adapter_.getNativeControl() || {
|
|
|
+ checked: false,
|
|
|
+ indeterminate: false,
|
|
|
+ disabled: false,
|
|
|
+ value: null
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCCheckboxFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {ObjectPropertyDescriptor|undefined} inputPropDesc
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+function validDescriptor(inputPropDesc) {
|
|
|
+ return !!inputPropDesc && typeof inputPropDesc.set === 'function';
|
|
|
+}
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCCheckboxFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 69 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Checkbox. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - event handlers
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCCheckboxAdapter = function () {
|
|
|
+ function MDCCheckboxAdapter() {
|
|
|
+ _classCallCheck(this, MDCCheckboxAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCCheckboxAdapter, [{
|
|
|
+ key: 'addClass',
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeClass',
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets an attribute with a given value on the input element.
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setNativeControlAttr',
|
|
|
+ value: function setNativeControlAttr(attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from the input element.
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeNativeControlAttr',
|
|
|
+ value: function removeNativeControlAttr(attr) {}
|
|
|
+
|
|
|
+ /** @return {!MDCSelectionControlState} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNativeControl',
|
|
|
+ value: function getNativeControl() {}
|
|
|
+ }, {
|
|
|
+ key: 'forceLayout',
|
|
|
+ value: function forceLayout() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isAttachedToDOM',
|
|
|
+ value: function isAttachedToDOM() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isIndeterminate',
|
|
|
+ value: function isIndeterminate() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isChecked',
|
|
|
+ value: function isChecked() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hasNativeControl',
|
|
|
+ value: function hasNativeControl() {}
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setNativeControlDisabled',
|
|
|
+ value: function setNativeControlDisabled(disabled) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCCheckboxAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCCheckboxAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 70 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @const {string} */
|
|
|
+var ROOT = 'mdc-checkbox';
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ UPGRADED: 'mdc-checkbox--upgraded',
|
|
|
+ CHECKED: 'mdc-checkbox--checked',
|
|
|
+ INDETERMINATE: 'mdc-checkbox--indeterminate',
|
|
|
+ DISABLED: 'mdc-checkbox--disabled',
|
|
|
+ ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',
|
|
|
+ ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',
|
|
|
+ ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',
|
|
|
+ ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',
|
|
|
+ ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',
|
|
|
+ ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ NATIVE_CONTROL_SELECTOR: '.' + ROOT + '__native-control',
|
|
|
+ TRANSITION_STATE_INIT: 'init',
|
|
|
+ TRANSITION_STATE_CHECKED: 'checked',
|
|
|
+ TRANSITION_STATE_UNCHECKED: 'unchecked',
|
|
|
+ TRANSITION_STATE_INDETERMINATE: 'indeterminate',
|
|
|
+ ARIA_CHECKED_ATTR: 'aria-checked',
|
|
|
+ ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ ANIM_END_LATCH_MS: 250
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 71 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__chip_index__ = __webpack_require__(30);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__chip_set_index__ = __webpack_require__(72);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipFoundation", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__["b"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChip", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipSetFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__["b"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipSet", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__["a"]; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 72 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChipSet; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(34);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(73);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chip_index__ = __webpack_require__(30);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 idCounter = 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCChipSetFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCChipSet = function (_MDCComponent) {
|
|
|
+ _inherits(MDCChipSet, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCChipSet() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCChipSet);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @type {!Array<!MDCChip>} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCChipSet.__proto__ || Object.getPrototypeOf(MDCChipSet)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.chips;
|
|
|
+ /** @private {(function(!Element): !MDCChip)} */
|
|
|
+ _this.chipFactory_;
|
|
|
+
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleChipInteraction_;
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleChipSelection_;
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleChipRemoval_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCChipSet}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCChipSet, [{
|
|
|
+ key: 'initialize',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {(function(!Element): !MDCChip)=} chipFactory A function which
|
|
|
+ * creates a new MDCChip.
|
|
|
+ */
|
|
|
+ value: function initialize() {
|
|
|
+ var chipFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__chip_index__["a" /* MDCChip */](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.chipFactory_ = chipFactory;
|
|
|
+ this.chips = this.instantiateChips_(this.chipFactory_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.chips.forEach(function (chip) {
|
|
|
+ if (chip.selected) {
|
|
|
+ _this2.foundation_.select(chip.id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.handleChipInteraction_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleChipInteraction(evt.detail.chipId);
|
|
|
+ };
|
|
|
+ this.handleChipSelection_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);
|
|
|
+ };
|
|
|
+ this.handleChipRemoval_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleChipRemoval(evt.detail.chipId);
|
|
|
+ };
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.chips.forEach(function (chip) {
|
|
|
+ chip.destroy();
|
|
|
+ });
|
|
|
+
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);
|
|
|
+
|
|
|
+ _get(MDCChipSet.prototype.__proto__ || Object.getPrototypeOf(MDCChipSet.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a new chip object to the chip set from the given chip element.
|
|
|
+ * @param {!Element} chipEl
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'addChip',
|
|
|
+ value: function addChip(chipEl) {
|
|
|
+ chipEl.id = chipEl.id || 'mdc-chip-' + ++idCounter;
|
|
|
+ this.chips.push(this.chipFactory_(chipEl));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns an array of the IDs of all selected chips.
|
|
|
+ * @return {!Array<string>}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCChipSetFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCChipSetAdapter} */_extends({
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this3.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ removeChip: function removeChip(chipId) {
|
|
|
+ var index = _this3.findChipIndex_(chipId);
|
|
|
+ if (index >= 0) {
|
|
|
+ _this3.chips[index].destroy();
|
|
|
+ _this3.chips.splice(index, 1);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setSelected: function setSelected(chipId, selected) {
|
|
|
+ var index = _this3.findChipIndex_(chipId);
|
|
|
+ if (index >= 0) {
|
|
|
+ _this3.chips[index].selected = selected;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Instantiates chip components on all of the chip set's child chip elements.
|
|
|
+ * @param {(function(!Element): !MDCChip)} chipFactory
|
|
|
+ * @return {!Array<!MDCChip>}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'instantiateChips_',
|
|
|
+ value: function instantiateChips_(chipFactory) {
|
|
|
+ var chipElements = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.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.
|
|
|
+ * @param {string} chipId
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'findChipIndex_',
|
|
|
+ value: function findChipIndex_(chipId) {
|
|
|
+ for (var i = 0; i < this.chips.length; i++) {
|
|
|
+ if (this.chips[i].id === chipId) {
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'selectedChipIds',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getSelectedChipIds();
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCChipSet(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChipSet;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 73 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(34);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__chip_foundation__ = __webpack_require__(32);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(74);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// eslint-disable-next-line no-unused-vars
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCChipSetAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCChipSetFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCChipSetFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCChipSetFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCChipSetAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCChipSetAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCChipSetAdapter} */{
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ removeChip: function removeChip() {},
|
|
|
+ setSelected: function setSelected() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCChipSetAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCChipSetFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCChipSetFoundation);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.
|
|
|
+ * @private {!Array<string>}
|
|
|
+ */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCChipSetFoundation.__proto__ || Object.getPrototypeOf(MDCChipSetFoundation)).call(this, _extends(MDCChipSetFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.selectedChipIds_ = [];
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns an array of the IDs of all selected chips.
|
|
|
+ * @return {!Array<string>}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCChipSetFoundation, [{
|
|
|
+ key: 'getSelectedChipIds',
|
|
|
+ value: function getSelectedChipIds() {
|
|
|
+ return this.selectedChipIds_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Toggles selection of the chip with the given id.
|
|
|
+ * @private
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'toggleSelect_',
|
|
|
+ value: function toggleSelect_(chipId) {
|
|
|
+ if (this.selectedChipIds_.indexOf(chipId) >= 0) {
|
|
|
+ this.deselect_(chipId);
|
|
|
+ } else {
|
|
|
+ this.select(chipId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant.
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'select',
|
|
|
+ value: function select(chipId) {
|
|
|
+ if (this.selectedChipIds_.indexOf(chipId) >= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deselects the chip with the given id.
|
|
|
+ * @private
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deselect_',
|
|
|
+ value: function deselect_(chipId) {
|
|
|
+ var index = this.selectedChipIds_.indexOf(chipId);
|
|
|
+ if (index >= 0) {
|
|
|
+ this.selectedChipIds_.splice(index, 1);
|
|
|
+ this.adapter_.setSelected(chipId, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles a chip interaction event
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChipInteraction',
|
|
|
+ value: function handleChipInteraction(chipId) {
|
|
|
+ if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].CHOICE) || this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].FILTER)) {
|
|
|
+ this.toggleSelect_(chipId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip.
|
|
|
+ * @param {string} chipId
|
|
|
+ * @param {boolean} selected
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChipSelection',
|
|
|
+ value: function handleChipSelection(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.
|
|
|
+ * @param {string} chipId
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChipRemoval',
|
|
|
+ value: function handleChipRemoval(chipId) {
|
|
|
+ this.deselect_(chipId);
|
|
|
+ this.adapter_.removeChip(chipId);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCChipSetFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCChipSetFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 74 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ CHIP_SELECTOR: '.mdc-chip'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ CHOICE: 'mdc-chip-set--choice',
|
|
|
+ FILTER: 'mdc-chip-set--filter'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 75 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDialog", function() { return MDCDialog; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(76);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(79);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__ = __webpack_require__(13);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap__ = __webpack_require__(35);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_focus_trap__);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDialogFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 strings = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings;
|
|
|
+
|
|
|
+var MDCDialog = function (_MDCComponent) {
|
|
|
+ _inherits(MDCDialog, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCDialog() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCDialog);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @type {!Array<!MDCRipple>}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCDialog.__proto__ || Object.getPrototypeOf(MDCDialog)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.buttonRipples_;
|
|
|
+
|
|
|
+ /** @private {!Array<!Element>} */
|
|
|
+ _this.buttons_;
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.defaultButton_;
|
|
|
+
|
|
|
+ /** @private {!Element} */
|
|
|
+ _this.container_;
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.content_;
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.initialFocusEl_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.focusTrapFactory_;
|
|
|
+
|
|
|
+ /** @private {!FocusTrapInstance} */
|
|
|
+ _this.focusTrap_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleInteraction_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleDocumentKeydown_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleOpening_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleClosing_;
|
|
|
+
|
|
|
+ /** @private {Function} */
|
|
|
+ _this.layout_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCDialog, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_5_focus_trap___default.a;
|
|
|
+ var initialFocusEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
|
+
|
|
|
+ this.container_ = /** @type {!Element} */this.root_.querySelector(strings.CONTAINER_SELECTOR);
|
|
|
+ this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR);
|
|
|
+ this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR));
|
|
|
+ this.defaultButton_ = this.root_.querySelector(strings.DEFAULT_BUTTON_SELECTOR);
|
|
|
+ this.buttonRipples_ = [];
|
|
|
+ this.focusTrapFactory_ = focusTrapFactory;
|
|
|
+ this.initialFocusEl_ = initialFocusEl;
|
|
|
+
|
|
|
+ for (var i = 0, buttonEl; buttonEl = this.buttons_[i]; i++) {
|
|
|
+ this.buttonRipples_.push(new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](buttonEl));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_3__util__["createFocusTrapInstance"](this.container_, this.focusTrapFactory_, this.initialFocusEl_);
|
|
|
+
|
|
|
+ this.handleInteraction_ = this.foundation_.handleInteraction.bind(this.foundation_);
|
|
|
+ this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_);
|
|
|
+ this.layout_ = this.layout.bind(this);
|
|
|
+
|
|
|
+ var LAYOUT_EVENTS = ['resize', 'orientationchange'];
|
|
|
+ this.handleOpening_ = function () {
|
|
|
+ LAYOUT_EVENTS.forEach(function (type) {
|
|
|
+ return window.addEventListener(type, _this2.layout_);
|
|
|
+ });
|
|
|
+ document.addEventListener('keydown', _this2.handleDocumentKeydown_);
|
|
|
+ };
|
|
|
+ this.handleClosing_ = function () {
|
|
|
+ LAYOUT_EVENTS.forEach(function (type) {
|
|
|
+ return window.removeEventListener(type, _this2.layout_);
|
|
|
+ });
|
|
|
+ document.removeEventListener('keydown', _this2.handleDocumentKeydown_);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.listen('click', this.handleInteraction_);
|
|
|
+ this.listen('keydown', this.handleInteraction_);
|
|
|
+ this.listen(strings.OPENING_EVENT, this.handleOpening_);
|
|
|
+ this.listen(strings.CLOSING_EVENT, this.handleClosing_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.unlisten('click', this.handleInteraction_);
|
|
|
+ this.unlisten('keydown', this.handleInteraction_);
|
|
|
+ this.unlisten(strings.OPENING_EVENT, this.handleOpening_);
|
|
|
+ this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);
|
|
|
+ this.handleClosing_();
|
|
|
+
|
|
|
+ this.buttonRipples_.forEach(function (ripple) {
|
|
|
+ return ripple.destroy();
|
|
|
+ });
|
|
|
+ _get(MDCDialog.prototype.__proto__ || Object.getPrototypeOf(MDCDialog.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ this.foundation_.layout();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ this.foundation_.open();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string=} action
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
|
+
|
|
|
+ this.foundation_.close(action);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this3.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ addBodyClass: function addBodyClass(className) {
|
|
|
+ return document.body.classList.add(className);
|
|
|
+ },
|
|
|
+ removeBodyClass: function removeBodyClass(className) {
|
|
|
+ return document.body.classList.remove(className);
|
|
|
+ },
|
|
|
+ eventTargetMatches: function eventTargetMatches(target, selector) {
|
|
|
+ return Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["matches"])(target, selector);
|
|
|
+ },
|
|
|
+ trapFocus: function trapFocus() {
|
|
|
+ return _this3.focusTrap_.activate();
|
|
|
+ },
|
|
|
+ releaseFocus: function releaseFocus() {
|
|
|
+ return _this3.focusTrap_.deactivate();
|
|
|
+ },
|
|
|
+ isContentScrollable: function isContentScrollable() {
|
|
|
+ return !!_this3.content_ && __WEBPACK_IMPORTED_MODULE_3__util__["isScrollable"]( /** @type {!Element} */_this3.content_);
|
|
|
+ },
|
|
|
+ areButtonsStacked: function areButtonsStacked() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__util__["areTopsMisaligned"](_this3.buttons_);
|
|
|
+ },
|
|
|
+ getActionFromEvent: function getActionFromEvent(event) {
|
|
|
+ var element = Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["closest"])(event.target, '[' + strings.ACTION_ATTRIBUTE + ']');
|
|
|
+ return element && element.getAttribute(strings.ACTION_ATTRIBUTE);
|
|
|
+ },
|
|
|
+ clickDefaultButton: function clickDefaultButton() {
|
|
|
+ if (_this3.defaultButton_) {
|
|
|
+ _this3.defaultButton_.click();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ reverseButtons: function reverseButtons() {
|
|
|
+ _this3.buttons_.reverse();
|
|
|
+ _this3.buttons_.forEach(function (button) {
|
|
|
+ return button.parentElement.appendChild(button);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ notifyOpening: function notifyOpening() {
|
|
|
+ return _this3.emit(strings.OPENING_EVENT, {});
|
|
|
+ },
|
|
|
+ notifyOpened: function notifyOpened() {
|
|
|
+ return _this3.emit(strings.OPENED_EVENT, {});
|
|
|
+ },
|
|
|
+ notifyClosing: function notifyClosing(action) {
|
|
|
+ return _this3.emit(strings.CLOSING_EVENT, action ? { action: action } : {});
|
|
|
+ },
|
|
|
+ notifyClosed: function notifyClosed(action) {
|
|
|
+ return _this3.emit(strings.CLOSED_EVENT, action ? { action: action } : {});
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'isOpen',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isOpen();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'escapeKeyAction',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getEscapeKeyAction();
|
|
|
+ },
|
|
|
+ set: function set(action) {
|
|
|
+ this.foundation_.setEscapeKeyAction(action);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'scrimClickAction',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getScrimClickAction();
|
|
|
+ },
|
|
|
+ set: function set(action) {
|
|
|
+ this.foundation_.setScrimClickAction(action);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'autoStackButtons',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getAutoStackButtons();
|
|
|
+ },
|
|
|
+ set: function set(autoStack) {
|
|
|
+ this.foundation_.setAutoStackButtons(autoStack);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCDialog(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDialog;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 76 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(77);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(78);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCDialogFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCDialogFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCDialogFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCDialogAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ hasClass: function hasClass() /* className: string */{},
|
|
|
+ addBodyClass: function addBodyClass() /* className: string */{},
|
|
|
+ removeBodyClass: function removeBodyClass() /* className: string */{},
|
|
|
+ eventTargetMatches: function eventTargetMatches() /* target: !EventTarget, selector: string */{},
|
|
|
+ trapFocus: function trapFocus() {},
|
|
|
+ releaseFocus: function releaseFocus() {},
|
|
|
+ isContentScrollable: function isContentScrollable() {},
|
|
|
+ areButtonsStacked: function areButtonsStacked() {},
|
|
|
+ getActionFromEvent: function getActionFromEvent() /* event: !Event */{},
|
|
|
+ clickDefaultButton: function clickDefaultButton() {},
|
|
|
+ reverseButtons: function reverseButtons() {},
|
|
|
+ notifyOpening: function notifyOpening() {},
|
|
|
+ notifyOpened: function notifyOpened() {},
|
|
|
+ notifyClosing: function notifyClosing() /* action: ?string */{},
|
|
|
+ notifyClosed: function notifyClosed() /* action: ?string */{}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCDialogAdapter=} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCDialogFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCDialogFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCDialogFoundation.__proto__ || Object.getPrototypeOf(MDCDialogFoundation)).call(this, _extends(MDCDialogFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.isOpen_ = false;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.animationFrame_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.animationTimer_ = 0;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.layoutFrame_ = 0;
|
|
|
+
|
|
|
+ /** @private {string} */
|
|
|
+ _this.escapeKeyAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSE_ACTION;
|
|
|
+
|
|
|
+ /** @private {string} */
|
|
|
+ _this.scrimClickAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSE_ACTION;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.autoStackButtons_ = true;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.areButtonsStacked_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCDialogFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED)) {
|
|
|
+ this.setAutoStackButtons(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ if (this.isOpen_) {
|
|
|
+ this.close(__WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].DESTROY_ACTION);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.animationFrame_) {
|
|
|
+ cancelAnimationFrame(this.animationFrame_);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.animationTimer_) {
|
|
|
+ clearTimeout(this.animationTimer_);
|
|
|
+ this.handleAnimationTimerEnd_();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.layoutFrame_) {
|
|
|
+ cancelAnimationFrame(this.layoutFrame_);
|
|
|
+ this.layoutFrame_ = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.isOpen_ = true;
|
|
|
+ this.adapter_.notifyOpening();
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
|
|
|
+
|
|
|
+ // Wait a frame once display is no longer "none", to establish basis for animation
|
|
|
+ this.runNextAnimationFrame_(function () {
|
|
|
+ _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
|
|
|
+ _this2.adapter_.addBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLL_LOCK);
|
|
|
+
|
|
|
+ _this2.layout();
|
|
|
+
|
|
|
+ _this2.animationTimer_ = setTimeout(function () {
|
|
|
+ _this2.handleAnimationTimerEnd_();
|
|
|
+ _this2.adapter_.trapFocus();
|
|
|
+ _this2.adapter_.notifyOpened();
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DIALOG_ANIMATION_OPEN_TIME_MS);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string=} action
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
|
+
|
|
|
+ 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_.releaseFocus();
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
|
|
|
+ this.adapter_.removeBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLL_LOCK);
|
|
|
+
|
|
|
+ clearTimeout(this.animationTimer_);
|
|
|
+ this.animationTimer_ = setTimeout(function () {
|
|
|
+ _this3.handleAnimationTimerEnd_();
|
|
|
+ _this3.adapter_.notifyClosed(action);
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DIALOG_ANIMATION_CLOSE_TIME_MS);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'isOpen',
|
|
|
+ value: function isOpen() {
|
|
|
+ return this.isOpen_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getEscapeKeyAction',
|
|
|
+ value: function getEscapeKeyAction() {
|
|
|
+ return this.escapeKeyAction_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} action */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setEscapeKeyAction',
|
|
|
+ value: function setEscapeKeyAction(action) {
|
|
|
+ this.escapeKeyAction_ = action;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrimClickAction',
|
|
|
+ value: function getScrimClickAction() {
|
|
|
+ return this.scrimClickAction_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} action */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setScrimClickAction',
|
|
|
+ value: function setScrimClickAction(action) {
|
|
|
+ this.scrimClickAction_ = action;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAutoStackButtons',
|
|
|
+ value: function getAutoStackButtons() {
|
|
|
+ return this.autoStackButtons_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} autoStack */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAutoStackButtons',
|
|
|
+ value: function setAutoStackButtons(autoStack) {
|
|
|
+ this.autoStackButtons_ = autoStack;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ if (this.layoutFrame_) {
|
|
|
+ cancelAnimationFrame(this.layoutFrame_);
|
|
|
+ }
|
|
|
+ this.layoutFrame_ = requestAnimationFrame(function () {
|
|
|
+ _this4.layoutInternal_();
|
|
|
+ _this4.layoutFrame_ = 0;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layoutInternal_',
|
|
|
+ value: function layoutInternal_() {
|
|
|
+ if (this.autoStackButtons_) {
|
|
|
+ this.detectStackedButtons_();
|
|
|
+ }
|
|
|
+ this.detectScrollableContent_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'detectStackedButtons_',
|
|
|
+ value: function detectStackedButtons_() {
|
|
|
+ // Remove the class first to let us measure the buttons' natural positions.
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED);
|
|
|
+
|
|
|
+ var areButtonsStacked = this.adapter_.areButtonsStacked();
|
|
|
+
|
|
|
+ if (areButtonsStacked) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (areButtonsStacked !== this.areButtonsStacked_) {
|
|
|
+ this.adapter_.reverseButtons();
|
|
|
+ this.areButtonsStacked_ = areButtonsStacked;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'detectScrollableContent_',
|
|
|
+ value: function detectScrollableContent_() {
|
|
|
+ // Remove the class first to let us measure the natural height of the content.
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLLABLE);
|
|
|
+ if (this.adapter_.isContentScrollable()) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLLABLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleInteraction',
|
|
|
+ value: function handleInteraction(evt) {
|
|
|
+ var isClick = evt.type === 'click';
|
|
|
+ var isEnter = evt.key === 'Enter' || evt.keyCode === 13;
|
|
|
+
|
|
|
+ // Check for scrim click first since it doesn't require querying ancestors
|
|
|
+ if (isClick && this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].SCRIM_SELECTOR) && this.scrimClickAction_ !== '') {
|
|
|
+ this.close(this.scrimClickAction_);
|
|
|
+ } else if (isClick || evt.key === 'Space' || evt.keyCode === 32 || isEnter) {
|
|
|
+ var action = this.adapter_.getActionFromEvent(evt);
|
|
|
+ if (action) {
|
|
|
+ this.close(action);
|
|
|
+ } else if (isEnter && !this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].SUPPRESS_DEFAULT_PRESS_SELECTOR)) {
|
|
|
+ this.adapter_.clickDefaultButton();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!KeyboardEvent} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleDocumentKeydown',
|
|
|
+ value: function handleDocumentKeydown(evt) {
|
|
|
+ if ((evt.key === 'Escape' || evt.keyCode === 27) && this.escapeKeyAction_ !== '') {
|
|
|
+ this.close(this.escapeKeyAction_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleAnimationTimerEnd_',
|
|
|
+ value: function handleAnimationTimerEnd_() {
|
|
|
+ this.animationTimer_ = 0;
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.
|
|
|
+ * @param {Function} callback
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'runNextAnimationFrame_',
|
|
|
+ value: function runNextAnimationFrame_(callback) {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ cancelAnimationFrame(this.animationFrame_);
|
|
|
+ this.animationFrame_ = requestAnimationFrame(function () {
|
|
|
+ _this5.animationFrame_ = 0;
|
|
|
+ clearTimeout(_this5.animationTimer_);
|
|
|
+ _this5.animationTimer_ = setTimeout(callback, 0);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDialogFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCFoundation"]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCDialogFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 77 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Dialog. Provides an interface for managing:
|
|
|
+ * - CSS classes
|
|
|
+ * - DOM
|
|
|
+ * - Event handlers
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCDialogAdapter = function () {
|
|
|
+ function MDCDialogAdapter() {
|
|
|
+ _classCallCheck(this, MDCDialogAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCDialogAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addBodyClass",
|
|
|
+ value: function addBodyClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeBodyClass",
|
|
|
+ value: function removeBodyClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!EventTarget} target
|
|
|
+ * @param {string} selector
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "eventTargetMatches",
|
|
|
+ value: function eventTargetMatches(target, selector) {}
|
|
|
+ }, {
|
|
|
+ key: "trapFocus",
|
|
|
+ value: function trapFocus() {}
|
|
|
+ }, {
|
|
|
+ key: "releaseFocus",
|
|
|
+ value: function releaseFocus() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "isContentScrollable",
|
|
|
+ value: function isContentScrollable() {}
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "areButtonsStacked",
|
|
|
+ value: function areButtonsStacked() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Event} event
|
|
|
+ * @return {?string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getActionFromEvent",
|
|
|
+ value: function getActionFromEvent(event) {}
|
|
|
+ }, {
|
|
|
+ key: "clickDefaultButton",
|
|
|
+ value: function clickDefaultButton() {}
|
|
|
+ }, {
|
|
|
+ key: "reverseButtons",
|
|
|
+ value: function reverseButtons() {}
|
|
|
+ }, {
|
|
|
+ key: "notifyOpening",
|
|
|
+ value: function notifyOpening() {}
|
|
|
+ }, {
|
|
|
+ key: "notifyOpened",
|
|
|
+ value: function notifyOpened() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} action
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyClosing",
|
|
|
+ value: function notifyClosing(action) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} action
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyClosed",
|
|
|
+ value: function notifyClosed(action) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDialogAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCDialogAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 78 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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 cssClasses = {
|
|
|
+ OPEN: 'mdc-dialog--open',
|
|
|
+ OPENING: 'mdc-dialog--opening',
|
|
|
+ CLOSING: 'mdc-dialog--closing',
|
|
|
+ SCROLLABLE: 'mdc-dialog--scrollable',
|
|
|
+ STACKED: 'mdc-dialog--stacked',
|
|
|
+ SCROLL_LOCK: 'mdc-dialog-scroll-lock'
|
|
|
+};
|
|
|
+
|
|
|
+var strings = {
|
|
|
+ SCRIM_SELECTOR: '.mdc-dialog__scrim',
|
|
|
+ CONTAINER_SELECTOR: '.mdc-dialog__container',
|
|
|
+ SURFACE_SELECTOR: '.mdc-dialog__surface',
|
|
|
+ CONTENT_SELECTOR: '.mdc-dialog__content',
|
|
|
+ BUTTON_SELECTOR: '.mdc-dialog__button',
|
|
|
+ DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',
|
|
|
+ SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '),
|
|
|
+
|
|
|
+ OPENING_EVENT: 'MDCDialog:opening',
|
|
|
+ OPENED_EVENT: 'MDCDialog:opened',
|
|
|
+ CLOSING_EVENT: 'MDCDialog:closing',
|
|
|
+ CLOSED_EVENT: 'MDCDialog:closed',
|
|
|
+
|
|
|
+ ACTION_ATTRIBUTE: 'data-mdc-dialog-action',
|
|
|
+
|
|
|
+ CLOSE_ACTION: 'close',
|
|
|
+ DESTROY_ACTION: 'destroy'
|
|
|
+};
|
|
|
+
|
|
|
+var numbers = {
|
|
|
+ DIALOG_ANIMATION_OPEN_TIME_MS: 150,
|
|
|
+ DIALOG_ANIMATION_CLOSE_TIME_MS: 75
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 79 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFocusTrapInstance", function() { return createFocusTrapInstance; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScrollable", function() { return isScrollable; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areTopsMisaligned", function() { return areTopsMisaligned; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(35);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Element} surfaceEl
|
|
|
+ * @param {?Element=} initialFocusEl
|
|
|
+ * @param {function(!Element, !FocusTrapCreateOptions): !FocusTrapInstance} focusTrapFactory
|
|
|
+ * @return {!FocusTrapInstance}
|
|
|
+ */
|
|
|
+function createFocusTrapInstance(surfaceEl) {
|
|
|
+ var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;
|
|
|
+ var initialFocusEl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
|
+
|
|
|
+ return focusTrapFactory(surfaceEl, {
|
|
|
+ initialFocus: initialFocusEl,
|
|
|
+ escapeDeactivates: false, // Dialog foundation handles escape key
|
|
|
+ clickOutsideDeactivates: true });
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Element} el
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function isScrollable(el) {
|
|
|
+ return el.scrollHeight > el.offsetHeight;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Array<!Element>|!NodeList} els
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function areTopsMisaligned(els) {
|
|
|
+ var tops = new Set();
|
|
|
+ [].forEach.call(els, function (el) {
|
|
|
+ return tops.add(el.offsetTop);
|
|
|
+ });
|
|
|
+ return tops.size > 1;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 80 */
|
|
|
+/***/ (function(module, exports) {
|
|
|
+
|
|
|
+module.exports = function(el) {
|
|
|
+ var basicTabbables = [];
|
|
|
+ var orderedTabbables = [];
|
|
|
+
|
|
|
+ // A node is "available" if
|
|
|
+ // - it's computed style
|
|
|
+ var isUnavailable = createIsUnavailable();
|
|
|
+
|
|
|
+ var candidateSelectors = [
|
|
|
+ 'input',
|
|
|
+ 'select',
|
|
|
+ 'a[href]',
|
|
|
+ 'textarea',
|
|
|
+ 'button',
|
|
|
+ '[tabindex]',
|
|
|
+ ];
|
|
|
+
|
|
|
+ var candidates = el.querySelectorAll(candidateSelectors);
|
|
|
+
|
|
|
+ var candidate, candidateIndex;
|
|
|
+ for (var i = 0, l = candidates.length; i < l; i++) {
|
|
|
+ candidate = candidates[i];
|
|
|
+ candidateIndex = parseInt(candidate.getAttribute('tabindex'), 10) || candidate.tabIndex;
|
|
|
+
|
|
|
+ if (
|
|
|
+ candidateIndex < 0
|
|
|
+ || (candidate.tagName === 'INPUT' && candidate.type === 'hidden')
|
|
|
+ || candidate.disabled
|
|
|
+ || isUnavailable(candidate)
|
|
|
+ ) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (candidateIndex === 0) {
|
|
|
+ basicTabbables.push(candidate);
|
|
|
+ } else {
|
|
|
+ orderedTabbables.push({
|
|
|
+ tabIndex: candidateIndex,
|
|
|
+ node: candidate,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var tabbableNodes = orderedTabbables
|
|
|
+ .sort(function(a, b) {
|
|
|
+ return a.tabIndex - b.tabIndex;
|
|
|
+ })
|
|
|
+ .map(function(a) {
|
|
|
+ return a.node
|
|
|
+ });
|
|
|
+
|
|
|
+ Array.prototype.push.apply(tabbableNodes, basicTabbables);
|
|
|
+
|
|
|
+ return tabbableNodes;
|
|
|
+}
|
|
|
+
|
|
|
+function createIsUnavailable() {
|
|
|
+ // Node cache must be refreshed on every check, in case
|
|
|
+ // the content of the element has changed
|
|
|
+ var isOffCache = [];
|
|
|
+
|
|
|
+ // "off" means `display: none;`, as opposed to "hidden",
|
|
|
+ // which means `visibility: hidden;`. getComputedStyle
|
|
|
+ // accurately reflects visiblity in context but not
|
|
|
+ // "off" state, so we need to recursively check parents.
|
|
|
+
|
|
|
+ function isOff(node, nodeComputedStyle) {
|
|
|
+ if (node === document.documentElement) return false;
|
|
|
+
|
|
|
+ // Find the cached node (Array.prototype.find not available in IE9)
|
|
|
+ for (var i = 0, length = isOffCache.length; i < length; i++) {
|
|
|
+ if (isOffCache[i][0] === node) return isOffCache[i][1];
|
|
|
+ }
|
|
|
+
|
|
|
+ nodeComputedStyle = nodeComputedStyle || window.getComputedStyle(node);
|
|
|
+
|
|
|
+ var result = false;
|
|
|
+
|
|
|
+ if (nodeComputedStyle.display === 'none') {
|
|
|
+ result = true;
|
|
|
+ } else if (node.parentNode) {
|
|
|
+ result = isOff(node.parentNode);
|
|
|
+ }
|
|
|
+
|
|
|
+ isOffCache.push([node, result]);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ return function isUnavailable(node) {
|
|
|
+ if (node === document.documentElement) return false;
|
|
|
+
|
|
|
+ var computedStyle = window.getComputedStyle(node);
|
|
|
+
|
|
|
+ if (isOff(node, computedStyle)) return true;
|
|
|
+
|
|
|
+ return computedStyle.visibility === 'hidden';
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 81 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ponyfill__ = __webpack_require__(13);
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "ponyfill", function() { return __WEBPACK_IMPORTED_MODULE_0__ponyfill__; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 82 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDrawer", function() { return MDCDrawer; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__ = __webpack_require__(36);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__modal_foundation__ = __webpack_require__(83);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(14);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_index__ = __webpack_require__(15);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__ = __webpack_require__(16);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__constants__ = __webpack_require__(37);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__util__ = __webpack_require__(84);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap__ = __webpack_require__(40);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_focus_trap__);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDismissibleDrawerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCModalDrawerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__modal_foundation__["a"]; });
|
|
|
+/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_7__util__; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCDismissibleDrawerFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCDrawer = function (_MDCComponent) {
|
|
|
+ _inherits(MDCDrawer, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCDrawer() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCDrawer);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCDrawer.__proto__ || Object.getPrototypeOf(MDCDrawer)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.previousFocus_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleKeydown_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleTransitionEnd_;
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.focusTrapFactory_;
|
|
|
+
|
|
|
+ /** @private {!FocusTrapInstance} */
|
|
|
+ _this.focusTrap_;
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.scrim_;
|
|
|
+
|
|
|
+ /** @private {?Function} */
|
|
|
+ _this.handleScrimClick_;
|
|
|
+
|
|
|
+ /** @private {?MDCList} */
|
|
|
+ _this.list_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCDrawer}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCDrawer, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_8_focus_trap___default.a;
|
|
|
+ var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__material_list_index__["MDCList"](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ var listEl = /** @type {!Element} */this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__["a" /* default */].cssClasses.ROOT);
|
|
|
+ if (listEl) {
|
|
|
+ this.list_ = listFactory(listEl);
|
|
|
+ this.list_.wrapFocus = true;
|
|
|
+ }
|
|
|
+ this.focusTrapFactory_ = focusTrapFactory;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses.MODAL;
|
|
|
+
|
|
|
+
|
|
|
+ if (this.root_.classList.contains(MODAL)) {
|
|
|
+ var SCRIM_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].strings.SCRIM_SELECTOR;
|
|
|
+
|
|
|
+ this.scrim_ = /** @type {!Element} */this.root_.parentElement.querySelector(SCRIM_SELECTOR);
|
|
|
+ this.handleScrimClick_ = function () {
|
|
|
+ return (/** @type {!MDCModalDrawerFoundation} */_this2.foundation_.handleScrimClick()
|
|
|
+ );
|
|
|
+ };
|
|
|
+ this.scrim_.addEventListener('click', this.handleScrimClick_);
|
|
|
+ this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_7__util__["createFocusTrapInstance"](this.root_, this.focusTrapFactory_);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.handleKeydown_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleKeydown(evt);
|
|
|
+ };
|
|
|
+ this.handleTransitionEnd_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleTransitionEnd(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.root_.addEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.addEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.root_.removeEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);
|
|
|
+
|
|
|
+ if (this.list_) {
|
|
|
+ this.list_.destroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses.MODAL;
|
|
|
+
|
|
|
+ if (this.root_.classList.contains(MODAL)) {
|
|
|
+ this.scrim_.removeEventListener('click', /** @type {!Function} */this.handleScrimClick_);
|
|
|
+ // Ensure drawer is closed to hide scrim and release focus
|
|
|
+ this.open = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ /** @type {!MDCDrawerAdapter} */
|
|
|
+ var adapter = /** @type {!MDCDrawerAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this3.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ elementHasClass: function elementHasClass(element, className) {
|
|
|
+ return element.classList.contains(className);
|
|
|
+ },
|
|
|
+ saveFocus: function saveFocus() {
|
|
|
+ _this3.previousFocus_ = document.activeElement;
|
|
|
+ },
|
|
|
+ restoreFocus: function restoreFocus() {
|
|
|
+ var previousFocus = _this3.previousFocus_ && _this3.previousFocus_.focus;
|
|
|
+ if (_this3.root_.contains(document.activeElement) && previousFocus) {
|
|
|
+ _this3.previousFocus_.focus();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ focusActiveNavigationItem: function focusActiveNavigationItem() {
|
|
|
+ var activeNavItemEl = _this3.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_ACTIVATED_CLASS);
|
|
|
+ if (activeNavItemEl) {
|
|
|
+ activeNavItemEl.focus();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ notifyClose: function notifyClose() {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__["b" /* strings */].CLOSE_EVENT, {}, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ notifyOpen: function notifyOpen() {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__["b" /* strings */].OPEN_EVENT, {}, true /* shouldBubble */);
|
|
|
+ },
|
|
|
+ trapFocus: function trapFocus() {
|
|
|
+ return _this3.focusTrap_.activate();
|
|
|
+ },
|
|
|
+ releaseFocus: function releaseFocus() {
|
|
|
+ return _this3.focusTrap_.deactivate();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ var _MDCDismissibleDrawer = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses,
|
|
|
+ DISMISSIBLE = _MDCDismissibleDrawer.DISMISSIBLE,
|
|
|
+ MODAL = _MDCDismissibleDrawer.MODAL;
|
|
|
+
|
|
|
+ if (this.root_.classList.contains(DISMISSIBLE)) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */](adapter);
|
|
|
+ } else if (this.root_.classList.contains(MODAL)) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__modal_foundation__["a" /* default */](adapter);
|
|
|
+ } else {
|
|
|
+ throw new Error('MDCDrawer: Failed to instantiate component. Supported variants are ' + DISMISSIBLE + ' and ' + MODAL + '.');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if drawer is in the open position.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isOpen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Toggles the drawer open and closed.
|
|
|
+ * @param {boolean} isOpen
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(isOpen) {
|
|
|
+ if (isOpen) {
|
|
|
+ this.foundation_.open();
|
|
|
+ } else {
|
|
|
+ this.foundation_.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCDrawer(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCDrawer;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 83 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(14);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__ = __webpack_require__(36);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCDismissibleDrawerFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCModalDrawerFoundation = function (_MDCDismissibleDrawer) {
|
|
|
+ _inherits(MDCModalDrawerFoundation, _MDCDismissibleDrawer);
|
|
|
+
|
|
|
+ function MDCModalDrawerFoundation() {
|
|
|
+ _classCallCheck(this, MDCModalDrawerFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCModalDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCModalDrawerFoundation)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCModalDrawerFoundation, [{
|
|
|
+ key: 'opened',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called when drawer finishes open animation.
|
|
|
+ * @override
|
|
|
+ */
|
|
|
+ value: function opened() {
|
|
|
+ this.adapter_.trapFocus();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called when drawer finishes close animation.
|
|
|
+ * @override
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closed',
|
|
|
+ value: function closed() {
|
|
|
+ this.adapter_.releaseFocus();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles click event on scrim.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleScrimClick',
|
|
|
+ value: function handleScrimClick() {
|
|
|
+ this.close();
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCModalDrawerFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCModalDrawerFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 84 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFocusTrapInstance", function() { return createFocusTrapInstance; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(40);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Element} surfaceEl
|
|
|
+ * @param {!Function} focusTrapFactory
|
|
|
+ * @return {!FocusTrapInstance}
|
|
|
+ */
|
|
|
+function createFocusTrapInstance(surfaceEl) {
|
|
|
+ var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;
|
|
|
+
|
|
|
+ return focusTrapFactory(surfaceEl, {
|
|
|
+ clickOutsideDeactivates: true,
|
|
|
+ initialFocus: false, // Navigation drawer handles focusing on active nav item.
|
|
|
+ escapeDeactivates: false, // Navigation drawer handles ESC.
|
|
|
+ returnFocusOnDeactivate: false });
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 85 */
|
|
|
+/***/ (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 = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
|
|
|
+
|
|
|
+function tabbable(el, options) {
|
|
|
+ options = options || {};
|
|
|
+
|
|
|
+ var elementDocument = el.ownerDocument || el;
|
|
|
+ var regularTabbables = [];
|
|
|
+ var orderedTabbables = [];
|
|
|
+
|
|
|
+ var untouchabilityChecker = new UntouchabilityChecker(elementDocument);
|
|
|
+ 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, untouchabilityChecker)) 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, untouchabilityChecker) {
|
|
|
+ if (
|
|
|
+ !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)
|
|
|
+ || isNonTabbableRadio(node)
|
|
|
+ || getTabindex(node) < 0
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+function isTabbable(node, untouchabilityChecker) {
|
|
|
+ if (!node) throw new Error('No node provided');
|
|
|
+ if (matches.call(node, candidateSelector) === false) return false;
|
|
|
+ return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);
|
|
|
+}
|
|
|
+
|
|
|
+function isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {
|
|
|
+ untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);
|
|
|
+ if (
|
|
|
+ node.disabled
|
|
|
+ || isHiddenInput(node)
|
|
|
+ || untouchabilityChecker.isUntouchable(node)
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+var focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');
|
|
|
+function isFocusable(node, untouchabilityChecker) {
|
|
|
+ if (!node) throw new Error('No node provided');
|
|
|
+ if (matches.call(node, focusableCandidateSelector) === false) return false;
|
|
|
+ return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);
|
|
|
+}
|
|
|
+
|
|
|
+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;
|
|
|
+}
|
|
|
+
|
|
|
+// Array.prototype.find not available in IE.
|
|
|
+function find(list, predicate) {
|
|
|
+ for (var i = 0, length = list.length; i < length; i++) {
|
|
|
+ if (predicate(list[i])) return list[i];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+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;
|
|
|
+}
|
|
|
+
|
|
|
+// An element is "untouchable" if *it or one of its ancestors* has
|
|
|
+// `visibility: hidden` or `display: none`.
|
|
|
+function UntouchabilityChecker(elementDocument) {
|
|
|
+ this.doc = elementDocument;
|
|
|
+ // Node cache must be refreshed on every check, in case
|
|
|
+ // the content of the element has changed. The cache contains tuples
|
|
|
+ // mapping nodes to their boolean result.
|
|
|
+ this.cache = [];
|
|
|
+}
|
|
|
+
|
|
|
+// getComputedStyle accurately reflects `visibility: hidden` of ancestors
|
|
|
+// but not `display: none`, so we need to recursively check parents.
|
|
|
+UntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {
|
|
|
+ if (node === this.doc.documentElement) return false;
|
|
|
+
|
|
|
+ // Search for a cached result.
|
|
|
+ var cached = find(this.cache, function(item) {
|
|
|
+ return item === node;
|
|
|
+ });
|
|
|
+ if (cached) return cached[1];
|
|
|
+
|
|
|
+ nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);
|
|
|
+
|
|
|
+ var result = false;
|
|
|
+
|
|
|
+ if (nodeComputedStyle.display === 'none') {
|
|
|
+ result = true;
|
|
|
+ } else if (node.parentNode) {
|
|
|
+ result = this.hasDisplayNone(node.parentNode);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.cache.push([node, result]);
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {
|
|
|
+ if (node === this.doc.documentElement) return false;
|
|
|
+ var computedStyle = this.doc.defaultView.getComputedStyle(node);
|
|
|
+ if (this.hasDisplayNone(node, computedStyle)) return true;
|
|
|
+ return computedStyle.visibility === 'hidden';
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = tabbable;
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 86 */
|
|
|
+/***/ (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
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 87 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(88);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCFloatingLabelAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFloatingLabelFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCFloatingLabelFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCFloatingLabelFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCFloatingLabelAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCFloatingLabelAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCFloatingLabelAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ getWidth: function getWidth() {},
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() {},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCFloatingLabelAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCFloatingLabelFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCFloatingLabelFoundation);
|
|
|
+
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCFloatingLabelFoundation.__proto__ || Object.getPrototypeOf(MDCFloatingLabelFoundation)).call(this, _extends(MDCFloatingLabelFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.shakeAnimationEndHandler_ = function () {
|
|
|
+ return _this.handleShakeAnimationEnd_();
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFloatingLabelFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the width of the label element.
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getWidth',
|
|
|
+ value: function getWidth() {
|
|
|
+ return this.adapter_.getWidth();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Styles the label to produce the label shake for errors.
|
|
|
+ * @param {boolean} shouldShake adds shake class if true,
|
|
|
+ * otherwise removes shake class.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shake',
|
|
|
+ value: function shake(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 {boolean} shouldFloat adds float class if true, otherwise remove
|
|
|
+ * float and shake class to dock label.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'float',
|
|
|
+ value: function float(shouldFloat) {
|
|
|
+ var _MDCFloatingLabelFoun = MDCFloatingLabelFoundation.cssClasses,
|
|
|
+ LABEL_FLOAT_ABOVE = _MDCFloatingLabelFoun.LABEL_FLOAT_ABOVE,
|
|
|
+ LABEL_SHAKE = _MDCFloatingLabelFoun.LABEL_SHAKE;
|
|
|
+
|
|
|
+ if (shouldFloat) {
|
|
|
+ this.adapter_.addClass(LABEL_FLOAT_ABOVE);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(LABEL_FLOAT_ABOVE);
|
|
|
+ this.adapter_.removeClass(LABEL_SHAKE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles an interaction event on the root element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleShakeAnimationEnd_',
|
|
|
+ value: function handleShakeAnimationEnd_() {
|
|
|
+ var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;
|
|
|
+
|
|
|
+ this.adapter_.removeClass(LABEL_SHAKE);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFloatingLabelFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCFloatingLabelFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 88 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',
|
|
|
+ LABEL_SHAKE: 'mdc-floating-label--shake'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 89 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFormField", function() { return MDCFormField; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(90);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFormFieldFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCFormFieldFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFormField = function (_MDCComponent) {
|
|
|
+ _inherits(MDCFormField, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCFormField, [{
|
|
|
+ key: 'input',
|
|
|
+
|
|
|
+
|
|
|
+ /** @param {?MDCSelectionControl} input */
|
|
|
+ set: function set(input) {
|
|
|
+ this.input_ = input;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {?MDCSelectionControl} */
|
|
|
+ ,
|
|
|
+ get: function get() {
|
|
|
+ return this.input_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCFormField(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCFormField() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCFormField);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?MDCSelectionControl} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCFormField.__proto__ || Object.getPrototypeOf(MDCFormField)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.input_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!Element}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCFormField, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {!MDCFormFieldFoundation} */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this2.label_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this2.label_.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ activateInputRipple: function activateInputRipple() {
|
|
|
+ if (_this2.input_ && _this2.input_.ripple) {
|
|
|
+ _this2.input_.ripple.activate();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deactivateInputRipple: function deactivateInputRipple() {
|
|
|
+ if (_this2.input_ && _this2.input_.ripple) {
|
|
|
+ _this2.input_.ripple.deactivate();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'label_',
|
|
|
+ get: function get() {
|
|
|
+ var LABEL_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.LABEL_SELECTOR;
|
|
|
+
|
|
|
+ return (/** @type {!Element} */this.root_.querySelector(LABEL_SELECTOR)
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFormField;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 90 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(91);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(92);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCFormFieldAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFormFieldFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCFormFieldFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCFormFieldFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCFormFieldAdapter} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ activateInputRipple: function activateInputRipple() {},
|
|
|
+ deactivateInputRipple: function deactivateInputRipple() {}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCFormFieldFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCFormFieldFoundation);
|
|
|
+
|
|
|
+ /** @private {!EventListener} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCFormFieldFoundation.__proto__ || Object.getPrototypeOf(MDCFormFieldFoundation)).call(this, _extends(MDCFormFieldFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.clickHandler_ = /** @type {!EventListener} */function () {
|
|
|
+ return _this.handleClick_();
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFormFieldFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.registerInteractionHandler('click', this.clickHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleClick_',
|
|
|
+ value: function handleClick_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.adapter_.activateInputRipple();
|
|
|
+ requestAnimationFrame(function () {
|
|
|
+ return _this2.adapter_.deactivateInputRipple();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFormFieldFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCFormFieldFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 91 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Form Field. Provides an interface for managing
|
|
|
+ * - event handlers
|
|
|
+ * - ripple activation
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCFormFieldAdapter = function () {
|
|
|
+ function MDCFormFieldAdapter() {
|
|
|
+ _classCallCheck(this, MDCFormFieldAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFormFieldAdapter, [{
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} type
|
|
|
+ * @param {!EventListener} handler
|
|
|
+ */
|
|
|
+ value: function registerInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} type
|
|
|
+ * @param {!EventListener} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(type, handler) {}
|
|
|
+ }, {
|
|
|
+ key: "activateInputRipple",
|
|
|
+ value: function activateInputRipple() {}
|
|
|
+ }, {
|
|
|
+ key: "deactivateInputRipple",
|
|
|
+ value: function deactivateInputRipple() {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFormFieldAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCFormFieldAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 92 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-form-field'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ LABEL_SELECTOR: '.mdc-form-field > label'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 93 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCGridList", function() { return MDCGridList; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(94);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCGridListFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCGridList = function (_MDCComponent) {
|
|
|
+ _inherits(MDCGridList, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCGridList() {
|
|
|
+ _classCallCheck(this, MDCGridList);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCGridList.__proto__ || Object.getPrototypeOf(MDCGridList)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCGridList, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ getOffsetWidth: function getOffsetWidth() {
|
|
|
+ return _this2.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ getNumberOfTiles: function getNumberOfTiles() {
|
|
|
+ return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILE_SELECTOR).length;
|
|
|
+ },
|
|
|
+ getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) {
|
|
|
+ return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILE_SELECTOR)[index].offsetWidth;
|
|
|
+ },
|
|
|
+ setStyleForTilesElement: function setStyleForTilesElement(property, value) {
|
|
|
+ _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILES_SELECTOR).style[property] = value;
|
|
|
+ },
|
|
|
+ registerResizeHandler: function registerResizeHandler(handler) {
|
|
|
+ return window.addEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler(handler) {
|
|
|
+ return window.removeEventListener('resize', handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCGridList(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCGridList;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 94 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(95);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCGridListFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCGridListFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCGridListFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ getOffsetWidth: function getOffsetWidth() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getNumberOfTiles: function getNumberOfTiles() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() {
|
|
|
+ return (/* index: number */ /* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setStyleForTilesElement: function setStyleForTilesElement() /* property: string, value: string */{},
|
|
|
+ registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCGridListFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCGridListFoundation);
|
|
|
+
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCGridListFoundation.__proto__ || Object.getPrototypeOf(MDCGridListFoundation)).call(this, _extends(MDCGridListFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.resizeHandler_ = function () {
|
|
|
+ return _this.alignCenter();
|
|
|
+ };
|
|
|
+ _this.resizeFrame_ = 0;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCGridListFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.alignCenter();
|
|
|
+ this.adapter_.registerResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'alignCenter',
|
|
|
+ value: function alignCenter() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ if (this.resizeFrame_ !== 0) {
|
|
|
+ cancelAnimationFrame(this.resizeFrame_);
|
|
|
+ }
|
|
|
+ this.resizeFrame_ = requestAnimationFrame(function () {
|
|
|
+ _this2.alignCenter_();
|
|
|
+ _this2.resizeFrame_ = 0;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'alignCenter_',
|
|
|
+ value: function alignCenter_() {
|
|
|
+ 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;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCFoundation"]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCGridListFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 95 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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 strings = {
|
|
|
+ TILES_SELECTOR: '.mdc-grid-list__tiles',
|
|
|
+ TILE_SELECTOR: '.mdc-grid-tile'
|
|
|
+};
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 96 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconButtonToggle", function() { return MDCIconButtonToggle; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(97);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconButtonToggleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCIconButtonToggleFoundation>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconButtonToggle = function (_MDCComponent) {
|
|
|
+ _inherits(MDCIconButtonToggle, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCIconButtonToggle, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCIconButtonToggle(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCIconButtonToggle() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCIconButtonToggle);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCIconButtonToggle.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_ = _this.initRipple_();
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleClick_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCIconButtonToggle, [{
|
|
|
+ key: 'initRipple_',
|
|
|
+ value: function initRipple_() {
|
|
|
+ var ripple = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"](this.root_);
|
|
|
+ ripple.unbounded = true;
|
|
|
+ return ripple;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.root_.removeEventListener('click', this.handleClick_);
|
|
|
+ this.ripple_.destroy();
|
|
|
+ _get(MDCIconButtonToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCIconButtonToggleFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(attrName, attrValue) {
|
|
|
+ return _this2.root_.setAttribute(attrName, attrValue);
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange(evtData) {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);
|
|
|
+ this.root_.addEventListener('click', this.handleClick_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'on',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isOn();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isOn */
|
|
|
+ ,
|
|
|
+ set: function set(isOn) {
|
|
|
+ this.foundation_.toggle(isOn);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconButtonToggle;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 97 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(98);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(99);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCIconButtonToggleAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconButtonToggleFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCIconButtonToggleFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCIconButtonToggleFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ notifyChange: function notifyChange() {}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCIconButtonToggleFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCIconButtonToggleFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCIconButtonToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconButtonToggleFoundation)).call(this, _extends(MDCIconButtonToggleFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.disabled_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCIconButtonToggleFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_PRESSED, '' + this.isOn());
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleClick',
|
|
|
+ value: function handleClick() {
|
|
|
+ this.toggle();
|
|
|
+ this.adapter_.notifyChange( /** @type {!IconButtonToggleEvent} */{ isOn: this.isOn() });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isOn',
|
|
|
+ value: function isOn() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean=} isOn */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'toggle',
|
|
|
+ value: function toggle() {
|
|
|
+ var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.isOn();
|
|
|
+
|
|
|
+ if (isOn) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_PRESSED, '' + isOn);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconButtonToggleFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/** @record */
|
|
|
+
|
|
|
+
|
|
|
+var IconButtonToggleState = function IconButtonToggleState() {
|
|
|
+ _classCallCheck(this, IconButtonToggleState);
|
|
|
+};
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCIconButtonToggleFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 98 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCIconButtonToggleAdapter */
|
|
|
+/* unused harmony export IconButtonToggleEvent */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Icon Button Toggle. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - inner text
|
|
|
+ * - event handlers
|
|
|
+ * - event dispatch
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconButtonToggleAdapter = function () {
|
|
|
+ function MDCIconButtonToggleAdapter() {
|
|
|
+ _classCallCheck(this, MDCIconButtonToggleAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCIconButtonToggleAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean}
|
|
|
+ * */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "hasClass",
|
|
|
+ value: function hasClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} attrName
|
|
|
+ * @param {string} attrValue
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(attrName, attrValue) {}
|
|
|
+
|
|
|
+ /** @param {!IconButtonToggleEvent} evtData */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyChange",
|
|
|
+ value: function notifyChange(evtData) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconButtonToggleAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * isOn: boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+var IconButtonToggleEvent = void 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 99 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-icon-button',
|
|
|
+ ICON_BUTTON_ON: 'mdc-icon-button--on'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_PRESSED: 'aria-pressed',
|
|
|
+ CHANGE_EVENT: 'MDCIconButtonToggle:change'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 100 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconToggle", function() { return MDCIconToggle; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(101);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconToggleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCIconToggleFoundation>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconToggle = function (_MDCComponent) {
|
|
|
+ _inherits(MDCIconToggle, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCIconToggle, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCIconToggle(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCIconToggle() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCIconToggle);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCIconToggle.__proto__ || Object.getPrototypeOf(MDCIconToggle)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_ = _this.initRipple_();
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!Element} */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCIconToggle, [{
|
|
|
+ key: 'initRipple_',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ value: function initRipple_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ isUnbounded: function isUnbounded() {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return _this2.foundation_.isKeyboardActivated();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"](this.root_, foundation);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.ripple_.destroy();
|
|
|
+ _get(MDCIconToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconToggle.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCIconToggleFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.iconEl_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.iconEl_.classList.remove(className);
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this3.root_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this3.root_.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ setText: function setText(text) {
|
|
|
+ return _this3.iconEl_.textContent = text;
|
|
|
+ },
|
|
|
+ getTabIndex: function getTabIndex() {
|
|
|
+ return (/* number */_this3.root_.tabIndex
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setTabIndex: function setTabIndex(tabIndex) {
|
|
|
+ return _this3.root_.tabIndex = tabIndex;
|
|
|
+ },
|
|
|
+ getAttr: function getAttr(name, value) {
|
|
|
+ return _this3.root_.getAttribute(name, value);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(name, value) {
|
|
|
+ return _this3.root_.setAttribute(name, value);
|
|
|
+ },
|
|
|
+ rmAttr: function rmAttr(name) {
|
|
|
+ return _this3.root_.removeAttribute(name);
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange(evtData) {
|
|
|
+ return _this3.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ this.on = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ARIA_PRESSED) === 'true';
|
|
|
+ this.disabled = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ARIA_DISABLED) === 'true';
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'refreshToggleData',
|
|
|
+ value: function refreshToggleData() {
|
|
|
+ this.foundation_.refreshToggleData();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'iconEl_',
|
|
|
+ get: function get() {
|
|
|
+ var sel = this.root_.dataset['iconInnerSelector'];
|
|
|
+
|
|
|
+ return sel ?
|
|
|
+ /** @type {!Element} */this.root_.querySelector(sel) : this.root_;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'on',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isOn();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isOn */
|
|
|
+ ,
|
|
|
+ set: function set(isOn) {
|
|
|
+ this.foundation_.toggle(isOn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isDisabled();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isDisabled */
|
|
|
+ ,
|
|
|
+ set: function set(isDisabled) {
|
|
|
+ this.foundation_.setDisabled(isDisabled);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconToggle;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 101 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(102);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(103);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCIconToggleAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconToggleFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCIconToggleFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCIconToggleFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ setText: function setText() /* text: string */{},
|
|
|
+ getTabIndex: function getTabIndex() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setTabIndex: function setTabIndex() /* tabIndex: number */{},
|
|
|
+ getAttr: function getAttr() {
|
|
|
+ return (/* name: string */ /* string */''
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setAttr: function setAttr() /* name: string, value: string */{},
|
|
|
+ rmAttr: function rmAttr() /* name: string */{},
|
|
|
+ notifyChange: function notifyChange() /* evtData: IconToggleEvent */{}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCIconToggleFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCIconToggleFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCIconToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconToggleFoundation)).call(this, _extends(MDCIconToggleFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.on_ = false;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.disabled_ = false;
|
|
|
+
|
|
|
+ /** @private {number} */
|
|
|
+ _this.savedTabIndex_ = -1;
|
|
|
+
|
|
|
+ /** @private {?IconToggleState} */
|
|
|
+ _this.toggleOnData_ = null;
|
|
|
+
|
|
|
+ /** @private {?IconToggleState} */
|
|
|
+ _this.toggleOffData_ = null;
|
|
|
+
|
|
|
+ _this.clickHandler_ = /** @private {!EventListener} */function () {
|
|
|
+ return _this.toggleFromEvt_();
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.isHandlingKeydown_ = false;
|
|
|
+
|
|
|
+ _this.keydownHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {
|
|
|
+ if (isSpace(evt)) {
|
|
|
+ _this.isHandlingKeydown_ = true;
|
|
|
+ return evt.preventDefault();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ _this.keyupHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {
|
|
|
+ if (isSpace(evt)) {
|
|
|
+ _this.isHandlingKeydown_ = false;
|
|
|
+ _this.toggleFromEvt_();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCIconToggleFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.refreshToggleData();
|
|
|
+ this.savedTabIndex_ = this.adapter_.getTabIndex();
|
|
|
+ this.adapter_.registerInteractionHandler('click', this.clickHandler_);
|
|
|
+ this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);
|
|
|
+ this.adapter_.registerInteractionHandler('keyup', this.keyupHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'refreshToggleData',
|
|
|
+ value: function refreshToggleData() {
|
|
|
+ var _MDCIconToggleFoundat = MDCIconToggleFoundation.strings,
|
|
|
+ DATA_TOGGLE_ON = _MDCIconToggleFoundat.DATA_TOGGLE_ON,
|
|
|
+ DATA_TOGGLE_OFF = _MDCIconToggleFoundat.DATA_TOGGLE_OFF;
|
|
|
+
|
|
|
+ this.toggleOnData_ = this.parseJsonDataAttr_(DATA_TOGGLE_ON);
|
|
|
+ this.toggleOffData_ = this.parseJsonDataAttr_(DATA_TOGGLE_OFF);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);
|
|
|
+ this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);
|
|
|
+ this.adapter_.deregisterInteractionHandler('keyup', this.keyupHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'toggleFromEvt_',
|
|
|
+ value: function toggleFromEvt_() {
|
|
|
+ this.toggle();
|
|
|
+ var isOn = this.on_;
|
|
|
+
|
|
|
+ this.adapter_.notifyChange( /** @type {!IconToggleEvent} */{ isOn: isOn });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isOn',
|
|
|
+ value: function isOn() {
|
|
|
+ return this.on_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean=} isOn */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'toggle',
|
|
|
+ value: function toggle() {
|
|
|
+ var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.on_;
|
|
|
+
|
|
|
+ this.on_ = isOn;
|
|
|
+
|
|
|
+ var _MDCIconToggleFoundat2 = MDCIconToggleFoundation.strings,
|
|
|
+ ARIA_LABEL = _MDCIconToggleFoundat2.ARIA_LABEL,
|
|
|
+ ARIA_PRESSED = _MDCIconToggleFoundat2.ARIA_PRESSED;
|
|
|
+
|
|
|
+
|
|
|
+ if (this.on_) {
|
|
|
+ this.adapter_.setAttr(ARIA_PRESSED, 'true');
|
|
|
+ } else {
|
|
|
+ this.adapter_.setAttr(ARIA_PRESSED, 'false');
|
|
|
+ }
|
|
|
+
|
|
|
+ var _ref = this.on_ ? this.toggleOffData_ : this.toggleOnData_,
|
|
|
+ classToRemove = _ref.cssClass;
|
|
|
+
|
|
|
+ if (classToRemove) {
|
|
|
+ this.adapter_.removeClass(classToRemove);
|
|
|
+ }
|
|
|
+
|
|
|
+ var _ref2 = this.on_ ? this.toggleOnData_ : this.toggleOffData_,
|
|
|
+ content = _ref2.content,
|
|
|
+ label = _ref2.label,
|
|
|
+ cssClass = _ref2.cssClass;
|
|
|
+
|
|
|
+ if (cssClass) {
|
|
|
+ this.adapter_.addClass(cssClass);
|
|
|
+ }
|
|
|
+ if (content) {
|
|
|
+ this.adapter_.setText(content);
|
|
|
+ }
|
|
|
+ if (label) {
|
|
|
+ this.adapter_.setAttr(ARIA_LABEL, label);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} dataAttr
|
|
|
+ * @return {!IconToggleState}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'parseJsonDataAttr_',
|
|
|
+ value: function parseJsonDataAttr_(dataAttr) {
|
|
|
+ var val = this.adapter_.getAttr(dataAttr);
|
|
|
+ if (!val) {
|
|
|
+ return {};
|
|
|
+ }
|
|
|
+ return (/** @type {!IconToggleState} */JSON.parse(val)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isDisabled',
|
|
|
+ value: function isDisabled() {
|
|
|
+ return this.disabled_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isDisabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(isDisabled) {
|
|
|
+ this.disabled_ = isDisabled;
|
|
|
+
|
|
|
+ var DISABLED = MDCIconToggleFoundation.cssClasses.DISABLED;
|
|
|
+ var ARIA_DISABLED = MDCIconToggleFoundation.strings.ARIA_DISABLED;
|
|
|
+
|
|
|
+
|
|
|
+ if (this.disabled_) {
|
|
|
+ this.savedTabIndex_ = this.adapter_.getTabIndex();
|
|
|
+ this.adapter_.setTabIndex(-1);
|
|
|
+ this.adapter_.setAttr(ARIA_DISABLED, 'true');
|
|
|
+ this.adapter_.addClass(DISABLED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.setTabIndex(this.savedTabIndex_);
|
|
|
+ this.adapter_.rmAttr(ARIA_DISABLED);
|
|
|
+ this.adapter_.removeClass(DISABLED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isKeyboardActivated',
|
|
|
+ value: function isKeyboardActivated() {
|
|
|
+ return this.isHandlingKeydown_;
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconToggleFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * key: string,
|
|
|
+ * keyCode: number
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+var KeyboardKey = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!KeyboardKey} keyboardKey
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function isSpace(keyboardKey) {
|
|
|
+ return keyboardKey.key === 'Space' || keyboardKey.keyCode === 32;
|
|
|
+}
|
|
|
+
|
|
|
+/** @record */
|
|
|
+
|
|
|
+var IconToggleState = function IconToggleState() {
|
|
|
+ _classCallCheck(this, IconToggleState);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * The aria-label value of the icon toggle, or undefined if there is no aria-label.
|
|
|
+ * @export {string|undefined}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+IconToggleState.prototype.label;
|
|
|
+
|
|
|
+/**
|
|
|
+ * The text for the icon toggle, or undefined if there is no text.
|
|
|
+ * @export {string|undefined}
|
|
|
+ */
|
|
|
+IconToggleState.prototype.content;
|
|
|
+
|
|
|
+/**
|
|
|
+ * The CSS class to add to the icon toggle, or undefined if there is no CSS class.
|
|
|
+ * @export {string|undefined}
|
|
|
+ */
|
|
|
+IconToggleState.prototype.cssClass;
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCIconToggleFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 102 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCIconToggleAdapter */
|
|
|
+/* unused harmony export IconToggleEvent */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Icon Toggle. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ * - inner text
|
|
|
+ * - event handlers
|
|
|
+ * - event dispatch
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCIconToggleAdapter = function () {
|
|
|
+ function MDCIconToggleAdapter() {
|
|
|
+ _classCallCheck(this, MDCIconToggleAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCIconToggleAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} type
|
|
|
+ * @param {!EventListener} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "registerInteractionHandler",
|
|
|
+ value: function registerInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} type
|
|
|
+ * @param {!EventListener} handler
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "deregisterInteractionHandler",
|
|
|
+ value: function deregisterInteractionHandler(type, handler) {}
|
|
|
+
|
|
|
+ /** @param {string} text */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setText",
|
|
|
+ value: function setText(text) {}
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getTabIndex",
|
|
|
+ value: function getTabIndex() {}
|
|
|
+
|
|
|
+ /** @param {number} tabIndex */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setTabIndex",
|
|
|
+ value: function setTabIndex(tabIndex) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} name
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getAttr",
|
|
|
+ value: function getAttr(name) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} name
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setAttr",
|
|
|
+ value: function setAttr(name, value) {}
|
|
|
+
|
|
|
+ /** @param {string} name */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "rmAttr",
|
|
|
+ value: function rmAttr(name) {}
|
|
|
+
|
|
|
+ /** @param {!IconToggleEvent} evtData */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifyChange",
|
|
|
+ value: function notifyChange(evtData) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCIconToggleAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef {{
|
|
|
+ * isOn: boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+var IconToggleEvent = void 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 103 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-icon-toggle',
|
|
|
+ DISABLED: 'mdc-icon-toggle--disabled'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ DATA_TOGGLE_ON: 'data-toggle-on',
|
|
|
+ DATA_TOGGLE_OFF: 'data-toggle-off',
|
|
|
+ ARIA_PRESSED: 'aria-pressed',
|
|
|
+ ARIA_DISABLED: 'aria-disabled',
|
|
|
+ ARIA_LABEL: 'aria-label',
|
|
|
+ CHANGE_EVENT: 'MDCIconToggle:change'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 104 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLinearProgress", function() { return MDCLinearProgress; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(105);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLinearProgressFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCLinearProgress = function (_MDCComponent) {
|
|
|
+ _inherits(MDCLinearProgress, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCLinearProgress() {
|
|
|
+ _classCallCheck(this, MDCLinearProgress);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCLinearProgress.__proto__ || Object.getPrototypeOf(MDCLinearProgress)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCLinearProgress, [{
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ this.foundation_.open();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ this.foundation_.close();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ getPrimaryBar: function getPrimaryBar() {
|
|
|
+ return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.PRIMARY_BAR_SELECTOR);
|
|
|
+ },
|
|
|
+ getBuffer: function getBuffer() {
|
|
|
+ return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.BUFFER_SELECTOR);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setStyle: function setStyle(el, styleProperty, value) {
|
|
|
+ return el.style[styleProperty] = value;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'determinate',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setDeterminate(value);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'progress',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setProgress(value);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'buffer',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setBuffer(value);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'reverse',
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setReverse(value);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCLinearProgress(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCLinearProgress;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 105 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_animation_index__ = __webpack_require__(9);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(106);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCLinearProgressFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCLinearProgressFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCLinearProgressFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ getPrimaryBar: function getPrimaryBar() /* el: Element */{},
|
|
|
+ getBuffer: function getBuffer() /* el: Element */{},
|
|
|
+ hasClass: function hasClass() {
|
|
|
+ return (/* className: string */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setStyle: function setStyle() /* el: Element, styleProperty: string, value: string */{}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCLinearProgressFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCLinearProgressFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCLinearProgressFoundation.__proto__ || Object.getPrototypeOf(MDCLinearProgressFoundation)).call(this, _extends(MDCLinearProgressFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCLinearProgressFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.determinate_ = !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
|
|
|
+ this.reverse_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
|
|
|
+ this.progress_ = 0;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setDeterminate',
|
|
|
+ value: function setDeterminate(isDeterminate) {
|
|
|
+ this.determinate_ = isDeterminate;
|
|
|
+ if (this.determinate_) {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
|
|
|
+ this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);
|
|
|
+ } else {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
|
|
|
+ this.setScale_(this.adapter_.getPrimaryBar(), 1);
|
|
|
+ this.setScale_(this.adapter_.getBuffer(), 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setProgress',
|
|
|
+ value: function setProgress(value) {
|
|
|
+ this.progress_ = value;
|
|
|
+ if (this.determinate_) {
|
|
|
+ this.setScale_(this.adapter_.getPrimaryBar(), value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setBuffer',
|
|
|
+ value: function setBuffer(value) {
|
|
|
+ if (this.determinate_) {
|
|
|
+ this.setScale_(this.adapter_.getBuffer(), value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setReverse',
|
|
|
+ value: function setReverse(isReversed) {
|
|
|
+ this.reverse_ = isReversed;
|
|
|
+ if (this.reverse_) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'open',
|
|
|
+ value: function open() {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSED_CLASS);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'close',
|
|
|
+ value: function close() {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSED_CLASS);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setScale_',
|
|
|
+ value: function setScale_(el, scaleValue) {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var value = 'scaleX(' + scaleValue + ')';
|
|
|
+ __WEBPACK_IMPORTED_MODULE_1__material_animation_index__["c" /* transformStyleProperties */].forEach(function (transformStyleProperty) {
|
|
|
+ _this2.adapter_.setStyle(el, transformStyleProperty, value);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCLinearProgressFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCFoundation"]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCLinearProgressFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 106 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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 cssClasses = {
|
|
|
+ CLOSED_CLASS: 'mdc-linear-progress--closed',
|
|
|
+ INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate',
|
|
|
+ REVERSED_CLASS: 'mdc-linear-progress--reversed'
|
|
|
+};
|
|
|
+
|
|
|
+var strings = {
|
|
|
+ PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar',
|
|
|
+ BUFFER_SELECTOR: '.mdc-linear-progress__buffer'
|
|
|
+};
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 107 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(108);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCLineRippleAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCLineRippleFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCLineRippleFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCLineRippleFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCLineRippleAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCLineRippleAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCLineRippleAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ setStyle: function setStyle() {},
|
|
|
+ registerEventHandler: function registerEventHandler() {},
|
|
|
+ deregisterEventHandler: function deregisterEventHandler() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCLineRippleAdapter=} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCLineRippleFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCLineRippleFoundation);
|
|
|
+
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCLineRippleFoundation.__proto__ || Object.getPrototypeOf(MDCLineRippleFoundation)).call(this, _extends(MDCLineRippleFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.transitionEndHandler_ = function (evt) {
|
|
|
+ return _this.handleTransitionEnd(evt);
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCLineRippleFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the line ripple
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate() {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_ACTIVE);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the center of the ripple animation to the given X coordinate.
|
|
|
+ * @param {number} xCoordinate
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setRippleCenter',
|
|
|
+ value: function setRippleCenter(xCoordinate) {
|
|
|
+ this.adapter_.setStyle('transform-origin', xCoordinate + 'px center');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the line ripple
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles a transition end event
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTransitionEnd',
|
|
|
+ value: function handleTransitionEnd(evt) {
|
|
|
+ // Wait for the line ripple to be either transparent or opaque
|
|
|
+ // before emitting the animation end event
|
|
|
+ var isDeactivating = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
|
|
|
+
|
|
|
+ if (evt.propertyName === 'opacity') {
|
|
|
+ if (isDeactivating) {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_ACTIVE);
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCLineRippleFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCLineRippleFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 108 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',
|
|
|
+ LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 109 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCMenuFoundation; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(110);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(19);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__ = __webpack_require__(20);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__ = __webpack_require__(16);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select', 'a'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCMenuAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCMenuFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCMenuFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCMenuFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum{cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum{strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCMenuAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCMenuAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCMenuAdapter} */{
|
|
|
+ addClassToElementAtIndex: function addClassToElementAtIndex() {},
|
|
|
+ removeClassFromElementAtIndex: function removeClassFromElementAtIndex() {},
|
|
|
+ addAttributeToElementAtIndex: function addAttributeToElementAtIndex() {},
|
|
|
+ removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() {},
|
|
|
+ elementContainsClass: function elementContainsClass() {},
|
|
|
+ closeSurface: function closeSurface() {},
|
|
|
+ getElementIndex: function getElementIndex() {},
|
|
|
+ getParentElement: function getParentElement() {},
|
|
|
+ getSelectedElementIndex: function getSelectedElementIndex() {},
|
|
|
+ notifySelected: function notifySelected() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {!MDCMenuAdapter} adapter */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCMenuFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCMenuFoundation);
|
|
|
+
|
|
|
+ /** @type {number} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCMenuFoundation.__proto__ || Object.getPrototypeOf(MDCMenuFoundation)).call(this, _extends(MDCMenuFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.closeAnimationEndTimerId_ = 0;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCMenuFoundation, [{
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ if (this.closeAnimationEndTimerId_) {
|
|
|
+ clearTimeout(this.closeAnimationEndTimerId_);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.closeSurface();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handler function for the keydown events.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown',
|
|
|
+ value: function handleKeydown(evt) {
|
|
|
+ var key = evt.key,
|
|
|
+ keyCode = evt.keyCode;
|
|
|
+
|
|
|
+
|
|
|
+ var isSpace = key === 'Space' || keyCode === 32;
|
|
|
+ var isEnter = key === 'Enter' || keyCode === 13;
|
|
|
+ var isTab = key === 'Tab' || keyCode === 9;
|
|
|
+
|
|
|
+ if (isSpace || isEnter) {
|
|
|
+ this.handleAction_(evt);
|
|
|
+ } else if (isTab) {
|
|
|
+ this.adapter_.closeSurface();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handler function for the click events.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleClick',
|
|
|
+ value: function handleClick(evt) {
|
|
|
+ this.handleAction_(evt);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Combined action handling for click/keypress events.
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleAction_',
|
|
|
+ value: function handleAction_(evt) {
|
|
|
+ var listItem = this.getListItem_( /** @type {HTMLElement} */evt.target);
|
|
|
+ if (listItem) {
|
|
|
+ this.handleSelection(listItem);
|
|
|
+ this.preventDefaultEvent_(evt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handler for a selected list item.
|
|
|
+ * @param {?HTMLElement} listItem
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleSelection',
|
|
|
+ value: function handleSelection(listItem) {
|
|
|
+ var _this2 = 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 () {
|
|
|
+ var selectionGroup = _this2.getSelectionGroup_(listItem);
|
|
|
+
|
|
|
+ if (selectionGroup !== null) {
|
|
|
+ _this2.handleSelectionGroup_( /** @type {!HTMLElement} */selectionGroup, index);
|
|
|
+ }
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].numbers.TRANSITION_CLOSE_DURATION);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles toggling the selected classes in a selection group when a
|
|
|
+ * selection is made.
|
|
|
+ * @param {!HTMLElement} selectionGroup
|
|
|
+ * @param {number} index The selected index value
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleSelectionGroup_',
|
|
|
+ value: function handleSelectionGroup_(selectionGroup, index) {
|
|
|
+ // De-select the previous selection in this group.
|
|
|
+ var selectedIndex = this.adapter_.getSelectedElementIndex(selectionGroup);
|
|
|
+ if (selectedIndex >= 0) {
|
|
|
+ this.adapter_.removeAttributeFromElementAtIndex(selectedIndex, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED_ATTR);
|
|
|
+ this.adapter_.removeClassFromElementAtIndex(selectedIndex, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM);
|
|
|
+ }
|
|
|
+ // Select the new list item in this group.
|
|
|
+ this.adapter_.addClassToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM);
|
|
|
+ this.adapter_.addAttributeToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED_ATTR, 'true');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the parent selection group of an element if one exists.
|
|
|
+ * @param listItem
|
|
|
+ * @return {?HTMLElement} parent selection group element or null.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getSelectionGroup_',
|
|
|
+ value: function getSelectionGroup_(listItem) {
|
|
|
+ var parent = this.adapter_.getParentElement(listItem);
|
|
|
+ var isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTION_GROUP);
|
|
|
+
|
|
|
+ // Iterate through ancestors until we find the group or get to the list.
|
|
|
+ while (!isGroup && !this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.ROOT)) {
|
|
|
+ parent = this.adapter_.getParentElement(parent);
|
|
|
+ isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTION_GROUP);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isGroup) {
|
|
|
+ return parent;
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Find the first ancestor with the mdc-list-item class.
|
|
|
+ * @param {?HTMLElement} target
|
|
|
+ * @return {?HTMLElement}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getListItem_',
|
|
|
+ value: function getListItem_(target) {
|
|
|
+ var isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_CLASS);
|
|
|
+
|
|
|
+ while (!isListItem) {
|
|
|
+ target = this.adapter_.getParentElement(target);
|
|
|
+ if (target) {
|
|
|
+ isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_CLASS);
|
|
|
+ } else {
|
|
|
+ // target has no parent element.
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return target;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Ensures that preventDefault is only called if the containing element doesn't
|
|
|
+ * consume the event, and it will cause an unintended scroll.
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'preventDefaultEvent_',
|
|
|
+ value: function preventDefaultEvent_(evt) {
|
|
|
+ var target = /** @type {!HTMLElement} */evt.target;
|
|
|
+ var tagName = ('' + target.tagName).toLowerCase();
|
|
|
+ if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {
|
|
|
+ evt.preventDefault();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenuFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 110 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* unused harmony export MDCMenuAdapter */
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Menu. Provides an interface for managing
|
|
|
+ * - selected element classes
|
|
|
+ * - get focused elements
|
|
|
+ * - toggling a checkbox inside a list item
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCMenuAdapter = function () {
|
|
|
+ function MDCMenuAdapter() {
|
|
|
+ _classCallCheck(this, MDCMenuAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCMenuAdapter, [{
|
|
|
+ key: "addClassToElementAtIndex",
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds a class to the element at the index provided.
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+ value: function addClassToElementAtIndex(index, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes a class from the element at the index provided
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClassFromElementAtIndex",
|
|
|
+ value: function removeClassFromElementAtIndex(index, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds an attribute, with value, to the element at the index provided.
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} attr
|
|
|
+ * @param {string} value
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "addAttributeToElementAtIndex",
|
|
|
+ value: function addAttributeToElementAtIndex(index, attr, value) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes an attribute from an element at the index provided.
|
|
|
+ * @param {number} index
|
|
|
+ * @param {string} attr
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeAttributeFromElementAtIndex",
|
|
|
+ value: function removeAttributeFromElementAtIndex(index, attr) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if the element contains the className.
|
|
|
+ * @param {?HTMLElement} element
|
|
|
+ * @param {string} className
|
|
|
+ * @return {boolean} true if the element contains the className
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "elementContainsClass",
|
|
|
+ value: function elementContainsClass(element, className) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Closes the menu-surface.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "closeSurface",
|
|
|
+ value: function closeSurface() {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the index for the element provided.
|
|
|
+ * @param {?HTMLElement} element
|
|
|
+ * @return {number} index of the element in the list or -1 if it is not in the list.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getElementIndex",
|
|
|
+ value: function getElementIndex(element) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the parentElement of the provided element.
|
|
|
+ * @param {?HTMLElement} element
|
|
|
+ * @return {?HTMLElement} parentElement of the element provided.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getParentElement",
|
|
|
+ value: function getParentElement(element) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the element within the selectionGroup containing the selected element class.
|
|
|
+ * @param {!HTMLElement} selectionGroup
|
|
|
+ * @return {number} element within the selectionGroup that contains the selected element class.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "getSelectedElementIndex",
|
|
|
+ value: function getSelectedElementIndex(selectionGroup) {}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Emits an event using the evtData.
|
|
|
+ * @param {{
|
|
|
+ * index: number
|
|
|
+ * }} evtData
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "notifySelected",
|
|
|
+ value: function notifySelected(evtData) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCMenuAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 111 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransformPropertyName", function() { return getTransformPropertyName; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @type {string|undefined} */
|
|
|
+var storedTransformPropertyName_ = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Returns the name of the correct transform property to use on the current browser.
|
|
|
+ * @param {!Window} globalObj
|
|
|
+ * @param {boolean=} forceRefresh
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+function getTransformPropertyName(globalObj) {
|
|
|
+ var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
|
+
|
|
|
+ if (storedTransformPropertyName_ === undefined || forceRefresh) {
|
|
|
+ var el = globalObj.document.createElement('div');
|
|
|
+ var transformPropertyName = 'transform' in el.style ? 'transform' : 'webkitTransform';
|
|
|
+ storedTransformPropertyName_ = transformPropertyName;
|
|
|
+ }
|
|
|
+
|
|
|
+ return storedTransformPropertyName_;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 112 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(47);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCNotchedOutlineAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCNotchedOutlineFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCNotchedOutlineFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCNotchedOutlineFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCNotchedOutlineAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCNotchedOutlineAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCNotchedOutlineAdapter} */{
|
|
|
+ getWidth: function getWidth() {},
|
|
|
+ getHeight: function getHeight() {},
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ setOutlinePathAttr: function setOutlinePathAttr() {},
|
|
|
+ getIdleOutlineStyleValue: function getIdleOutlineStyleValue() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCNotchedOutlineAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCNotchedOutlineFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCNotchedOutlineFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCNotchedOutlineFoundation.__proto__ || Object.getPrototypeOf(MDCNotchedOutlineFoundation)).call(this, _extends(MDCNotchedOutlineFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Adds the outline notched selector and updates the notch width
|
|
|
+ * calculated based off of notchWidth and isRtl.
|
|
|
+ * @param {number} notchWidth
|
|
|
+ * @param {boolean=} isRtl
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCNotchedOutlineFoundation, [{
|
|
|
+ key: 'notch',
|
|
|
+ value: function notch(notchWidth) {
|
|
|
+ var isRtl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
|
+ var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
|
|
|
+
|
|
|
+ this.adapter_.addClass(OUTLINE_NOTCHED);
|
|
|
+ this.updateSvgPath_(notchWidth, isRtl);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Removes notched outline selector to close the notch in the outline.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'closeNotch',
|
|
|
+ value: function closeNotch() {
|
|
|
+ var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
|
|
|
+
|
|
|
+ this.adapter_.removeClass(OUTLINE_NOTCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates the SVG path of the focus outline element based on the notchWidth
|
|
|
+ * and the RTL context.
|
|
|
+ * @param {number} notchWidth
|
|
|
+ * @param {boolean=} isRtl
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'updateSvgPath_',
|
|
|
+ value: function updateSvgPath_(notchWidth, isRtl) {
|
|
|
+ // Fall back to reading a specific corner's style because Firefox doesn't report the style on border-radius.
|
|
|
+ var radiusStyleValue = this.adapter_.getIdleOutlineStyleValue('border-radius') || this.adapter_.getIdleOutlineStyleValue('border-top-left-radius');
|
|
|
+ var radius = parseFloat(radiusStyleValue);
|
|
|
+ var width = this.adapter_.getWidth();
|
|
|
+ var height = this.adapter_.getHeight();
|
|
|
+ var cornerWidth = radius + 1.2;
|
|
|
+ var leadingStrokeLength = Math.max(0, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].MIN_LEADING_STROKE_EDGE_POSITION - radius - 1.2);
|
|
|
+
|
|
|
+ // If the notchWidth is 0, the the notched outline doesn't need to add padding.
|
|
|
+ var paddedNotchWidth = 0;
|
|
|
+ if (notchWidth > 0) {
|
|
|
+ paddedNotchWidth = notchWidth + 2 * __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].NOTCH_GUTTER_SIZE;
|
|
|
+ }
|
|
|
+
|
|
|
+ // The right, bottom, and left sides of the outline follow the same SVG path.
|
|
|
+ var pathMiddle = 'a' + radius + ',' + radius + ' 0 0 1 ' + radius + ',' + radius + 'v' + (height - 2 * cornerWidth) + 'a' + radius + ',' + radius + ' 0 0 1 ' + -radius + ',' + radius + 'h' + (-width + 2 * cornerWidth) + 'a' + radius + ',' + radius + ' 0 0 1 ' + -radius + ',' + -radius + 'v' + (-height + 2 * cornerWidth) + 'a' + radius + ',' + radius + ' 0 0 1 ' + radius + ',' + -radius;
|
|
|
+
|
|
|
+ var path = void 0;
|
|
|
+ if (!isRtl) {
|
|
|
+ path = 'M' + (cornerWidth + leadingStrokeLength + paddedNotchWidth) + ',' + 1 + 'h' + (width - 2 * cornerWidth - paddedNotchWidth - leadingStrokeLength) + pathMiddle + 'h' + leadingStrokeLength;
|
|
|
+ } else {
|
|
|
+ path = 'M' + (width - cornerWidth - leadingStrokeLength) + ',' + 1 + 'h' + leadingStrokeLength + pathMiddle + 'h' + (width - 2 * cornerWidth - paddedNotchWidth - leadingStrokeLength);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.setOutlinePathAttr(path);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCNotchedOutlineFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCNotchedOutlineFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 113 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRadio", function() { return MDCRadio; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(114);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRadioFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCRadioFoundation>
|
|
|
+ * @implements {MDCSelectionControl}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCRadio = function (_MDCComponent) {
|
|
|
+ _inherits(MDCRadio, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCRadio, [{
|
|
|
+ key: 'checked',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeControl_.checked;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} checked */
|
|
|
+ ,
|
|
|
+ set: function set(checked) {
|
|
|
+ this.nativeControl_.checked = checked;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeControl_.disabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {?string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'value',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeControl_.value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {?string} value */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.nativeControl_.value = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCRadio(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCRadio() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCRadio);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCRadio.__proto__ || Object.getPrototypeOf(MDCRadio)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_ = _this.initRipple_();
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCRadio, [{
|
|
|
+ key: 'initRipple_',
|
|
|
+ value: function initRipple_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ isUnbounded: function isUnbounded() {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ // Radio buttons technically go "active" whenever there is *any* keyboard interaction. This is not the
|
|
|
+ // UI we desire.
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this2.nativeControl_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this2.nativeControl_.removeEventListener(type, handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"](this.root_, foundation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the state of the native control element, or null if the native control element is not present.
|
|
|
+ * @return {?MDCSelectionControlState}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.ripple_.destroy();
|
|
|
+ _get(MDCRadio.prototype.__proto__ || Object.getPrototypeOf(MDCRadio.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRadioFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled(disabled) {
|
|
|
+ return _this3.nativeControl_.disabled = disabled;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'nativeControl_',
|
|
|
+ get: function get() {
|
|
|
+ var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
|
|
|
+
|
|
|
+ var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
|
|
|
+ return el;
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRadio;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 114 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(115);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(116);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCRadioAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCRadioFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCRadioFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ function MDCRadioFoundation() {
|
|
|
+ _classCallCheck(this, MDCRadioFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCRadioFoundation.__proto__ || Object.getPrototypeOf(MDCRadioFoundation)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCRadioFoundation, [{
|
|
|
+ key: 'setDisabled',
|
|
|
+
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+ value: function setDisabled(disabled) {
|
|
|
+ var DISABLED = MDCRadioFoundation.cssClasses.DISABLED;
|
|
|
+
|
|
|
+ this.adapter_.setNativeControlDisabled(disabled);
|
|
|
+ if (disabled) {
|
|
|
+ this.adapter_.addClass(DISABLED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(DISABLED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRadioAdapter} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCRadioAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRadioFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCRadioFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 115 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Radio. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCRadioAdapter = function () {
|
|
|
+ function MDCRadioAdapter() {
|
|
|
+ _classCallCheck(this, MDCRadioAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCRadioAdapter, [{
|
|
|
+ key: 'addClass',
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'removeClass',
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setNativeControlDisabled',
|
|
|
+ value: function setNativeControlDisabled(disabled) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCRadioAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCRadioAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 116 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ROOT: 'mdc-radio',
|
|
|
+ DISABLED: 'mdc-radio--disabled'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 117 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelect", function() { return MDCSelect; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__ = __webpack_require__(17);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__ = __webpack_require__(18);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_index__ = __webpack_require__(43);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__ = __webpack_require__(22);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__foundation__ = __webpack_require__(118);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__constants__ = __webpack_require__(51);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__adapter__ = __webpack_require__(48);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__icon_index__ = __webpack_require__(23);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helper_text_index__ = __webpack_require__(24);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__ = __webpack_require__(21);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_menu_constants__ = __webpack_require__(19);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectFoundation", function() { return __WEBPACK_IMPORTED_MODULE_6__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+// Closure has issues with {this as that} syntax.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+var VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCSelectFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelect = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSelect, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCSelect() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCSelect);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCSelect.__proto__ || Object.getPrototypeOf(MDCSelect)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.nativeControl_;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.selectedText_;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.hiddenInput_;
|
|
|
+ /** @private {?MDCSelectIcon} */
|
|
|
+ _this.leadingIcon_;
|
|
|
+ /** @private {?MDCSelectHelperText} */
|
|
|
+ _this.helperText_;
|
|
|
+ /** @private {?Element} */
|
|
|
+ _this.menuElement_;
|
|
|
+ /** @type {?MDCMenu} */
|
|
|
+ _this.menu_;
|
|
|
+ /** @type {?MDCRipple} */
|
|
|
+ _this.ripple;
|
|
|
+ /** @private {?MDCLineRipple} */
|
|
|
+ _this.lineRipple_;
|
|
|
+ /** @private {?MDCFloatingLabel} */
|
|
|
+ _this.label_;
|
|
|
+ /** @private {?MDCNotchedOutline} */
|
|
|
+ _this.outline_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleChange_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleFocus_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleBlur_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleClick_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleKeydown_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleMenuOpened_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleMenuClosed_;
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.handleMenuSelected_;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.menuOpened_ = false;
|
|
|
+ /** @private {!MutationObserver} */
|
|
|
+ _this.validationObserver_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCSelect}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCSelect, [{
|
|
|
+ key: 'layout',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Recomputes the outline SVG path for the outline element.
|
|
|
+ */
|
|
|
+ value: function layout() {
|
|
|
+ this.foundation_.layout();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which creates a new MDCLineRipple.
|
|
|
+ * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which creates a new MDCFloatingLabel.
|
|
|
+ * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which creates a new MDCNotchedOutline.
|
|
|
+ * @param {(function(!Element): !MDCMenu)=} menuFactory A function which creates a new MDCMenu.
|
|
|
+ * @param {(function(!Element): !MDCSelectIcon)=} iconFactory A function which creates a new MDCSelectIcon.
|
|
|
+ * @param {(function(!Element): !MDCSelectHelperText)=} helperTextFactory A function which creates a new
|
|
|
+ * MDCSelectHelperText.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var labelFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__["MDCFloatingLabel"](el);
|
|
|
+ };
|
|
|
+ var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__["MDCLineRipple"](el);
|
|
|
+ };
|
|
|
+ var outlineFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__["MDCNotchedOutline"](el);
|
|
|
+ };
|
|
|
+ var menuFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__material_menu_index__["MDCMenu"](el);
|
|
|
+ };
|
|
|
+ var iconFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_9__icon_index__["a" /* MDCSelectIcon */](el);
|
|
|
+ };
|
|
|
+ var helperTextFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_10__helper_text_index__["a" /* MDCSelectHelperText */](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.nativeControl_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].NATIVE_CONTROL_SELECTOR);
|
|
|
+ this.selectedText_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_TEXT_SELECTOR);
|
|
|
+
|
|
|
+ if (this.selectedText_) {
|
|
|
+ this.enhancedSelectSetup_(menuFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LABEL_SELECTOR);
|
|
|
+ if (labelElement) {
|
|
|
+ this.label_ = labelFactory(labelElement);
|
|
|
+ }
|
|
|
+ var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LINE_RIPPLE_SELECTOR);
|
|
|
+ if (lineRippleElement) {
|
|
|
+ this.lineRipple_ = lineRippleFactory(lineRippleElement);
|
|
|
+ }
|
|
|
+ var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].OUTLINE_SELECTOR);
|
|
|
+ if (outlineElement) {
|
|
|
+ this.outline_ = outlineFactory(outlineElement);
|
|
|
+ }
|
|
|
+
|
|
|
+ var leadingIcon = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LEADING_ICON_SELECTOR);
|
|
|
+ if (leadingIcon) {
|
|
|
+ this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].WITH_LEADING_ICON);
|
|
|
+ this.leadingIcon_ = iconFactory(leadingIcon);
|
|
|
+
|
|
|
+ if (this.menuElement_) {
|
|
|
+ this.menuElement_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].WITH_LEADING_ICON);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+ if (element.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_CONTROLS)) {
|
|
|
+ var helperTextElement = document.getElementById(element.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_CONTROLS));
|
|
|
+ if (helperTextElement) {
|
|
|
+ this.helperText_ = helperTextFactory(helperTextElement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].OUTLINED)) {
|
|
|
+ this.ripple = this.initRipple_();
|
|
|
+ }
|
|
|
+
|
|
|
+ // The required state needs to be sync'd before the mutation observer is added.
|
|
|
+ this.initialSyncRequiredState_();
|
|
|
+ this.addMutationObserverForRequired_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles setup for the enhanced menu.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'enhancedSelectSetup_',
|
|
|
+ value: function enhancedSelectSetup_(menuFactory) {
|
|
|
+ var isDisabled = this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');
|
|
|
+ this.hiddenInput_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].HIDDEN_INPUT_SELECTOR);
|
|
|
+ this.menuElement_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].MENU_SELECTOR);
|
|
|
+ this.menu_ = menuFactory(this.menuElement_);
|
|
|
+ this.menu_.hoistMenuToBody();
|
|
|
+ this.menu_.setAnchorElement( /** @type {!HTMLElement} */this.root_);
|
|
|
+ this.menu_.setAnchorCorner(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["a" /* Corner */].BOTTOM_START);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @private
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initRipple_',
|
|
|
+ value: function initRipple_() {
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return element.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return element.removeEventListener(type, handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"](this.root_, foundation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Initializes the select's event listeners and internal state based
|
|
|
+ * on the environment's state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.handleChange_ = function () {
|
|
|
+ return _this2.foundation_.handleChange( /* didChange */true);
|
|
|
+ };
|
|
|
+ this.handleFocus_ = function () {
|
|
|
+ return _this2.foundation_.handleFocus();
|
|
|
+ };
|
|
|
+ this.handleBlur_ = function () {
|
|
|
+ return _this2.foundation_.handleBlur();
|
|
|
+ };
|
|
|
+ this.handleClick_ = function (evt) {
|
|
|
+ if (_this2.selectedText_) _this2.selectedText_.focus();
|
|
|
+ _this2.foundation_.handleClick(_this2.getNormalizedXCoordinate_(evt));
|
|
|
+ };
|
|
|
+ this.handleKeydown_ = function (evt) {
|
|
|
+ return _this2.foundation_.handleKeydown(evt);
|
|
|
+ };
|
|
|
+ this.handleMenuSelected_ = function (evtData) {
|
|
|
+ return _this2.selectedIndex = evtData.detail.index;
|
|
|
+ };
|
|
|
+ this.handleMenuOpened_ = function () {
|
|
|
+ // Menu should open to the last selected element.
|
|
|
+ if (_this2.selectedIndex >= 0) {
|
|
|
+ _this2.menu_.items[_this2.selectedIndex].focus();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ this.handleMenuClosed_ = function () {
|
|
|
+ // menuOpened_ 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.
|
|
|
+ _this2.menuOpened_ = false;
|
|
|
+ _this2.selectedText_.removeAttribute('aria-expanded');
|
|
|
+ if (document.activeElement !== _this2.selectedText_) {
|
|
|
+ _this2.foundation_.handleBlur();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+
|
|
|
+ element.addEventListener('change', this.handleChange_);
|
|
|
+ element.addEventListener('focus', this.handleFocus_);
|
|
|
+ element.addEventListener('blur', this.handleBlur_);
|
|
|
+
|
|
|
+ ['mousedown', 'touchstart'].forEach(function (evtType) {
|
|
|
+ element.addEventListener(evtType, _this2.handleClick_);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (this.menuElement_) {
|
|
|
+ this.selectedText_.addEventListener('keydown', this.handleKeydown_);
|
|
|
+ this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);
|
|
|
+ this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].OPENED_EVENT, this.handleMenuOpened_);
|
|
|
+ this.menu_.listen(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__["b" /* 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(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* 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(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) {
|
|
|
+ this.disabled = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+
|
|
|
+ element.removeEventListener('change', this.handleChange_);
|
|
|
+ element.removeEventListener('focus', this.handleFocus_);
|
|
|
+ element.removeEventListener('blur', this.handleBlur_);
|
|
|
+ element.removeEventListener('keydown', this.handleKeydown_);
|
|
|
+ ['mousedown', 'touchstart'].forEach(function (evtType) {
|
|
|
+ element.removeEventListener(evtType, _this3.handleClick_);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (this.menu_) {
|
|
|
+ this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);
|
|
|
+ this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].OPENED_EVENT, this.handleMenuOpened_);
|
|
|
+ this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__["b" /* 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ _get(MDCSelect.prototype.__proto__ || Object.getPrototypeOf(MDCSelect.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSelectFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_6__foundation__["a" /* default */](
|
|
|
+ /** @type {!MDCSelectAdapter} */_extends(this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_()), this.getFoundationMap_());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * getValue: function(): string,
|
|
|
+ * setValue: function(string): string,
|
|
|
+ * openMenu: function(): void,
|
|
|
+ * closeMenu: function(): void,
|
|
|
+ * isMenuOpen: function(): boolean,
|
|
|
+ * setSelectedIndex: function(number): void,
|
|
|
+ * setDisabled: function(boolean): void
|
|
|
+ * }}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNativeSelectAdapterMethods_',
|
|
|
+ value: function getNativeSelectAdapterMethods_() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ getValue: function getValue() {
|
|
|
+ return _this4.nativeControl_.value;
|
|
|
+ },
|
|
|
+ setValue: function setValue(value) {
|
|
|
+ return _this4.nativeControl_.value = value;
|
|
|
+ },
|
|
|
+ openMenu: function openMenu() {},
|
|
|
+ closeMenu: function closeMenu() {},
|
|
|
+ isMenuOpen: function isMenuOpen() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ setSelectedIndex: function setSelectedIndex(index) {
|
|
|
+ _this4.nativeControl_.selectedIndex = index;
|
|
|
+ },
|
|
|
+ setDisabled: function setDisabled(isDisabled) {
|
|
|
+ return _this4.nativeControl_.disabled = isDisabled;
|
|
|
+ },
|
|
|
+ setValid: function setValid(isValid) {
|
|
|
+ isValid ? _this4.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID) : _this4.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID);
|
|
|
+ },
|
|
|
+ checkValidity: function checkValidity() {
|
|
|
+ return _this4.nativeControl_.checkValidity();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * getValue: function(): string,
|
|
|
+ * setValue: function(string): string,
|
|
|
+ * openMenu: function(): void,
|
|
|
+ * closeMenu: function(): void,
|
|
|
+ * isMenuOpen: function(): boolean,
|
|
|
+ * setSelectedIndex: function(number): void,
|
|
|
+ * setDisabled: function(boolean): void
|
|
|
+ * }}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getEnhancedSelectAdapterMethods_',
|
|
|
+ value: function getEnhancedSelectAdapterMethods_() {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ getValue: function getValue() {
|
|
|
+ var listItem = _this5.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
|
|
|
+ if (listItem && listItem.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR)) {
|
|
|
+ return listItem.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR);
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ },
|
|
|
+ setValue: function setValue(value) {
|
|
|
+ var element =
|
|
|
+ /** @type {HTMLElement} */_this5.menuElement_.querySelector('[' + __WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR + '="' + value + '"]');
|
|
|
+ _this5.setEnhancedSelectedIndex_(element ? _this5.menu_.items.indexOf(element) : -1);
|
|
|
+ },
|
|
|
+ openMenu: function openMenu() {
|
|
|
+ if (_this5.menu_ && !_this5.menu_.open) {
|
|
|
+ _this5.menu_.open = true;
|
|
|
+ _this5.menuOpened_ = true;
|
|
|
+ _this5.selectedText_.setAttribute('aria-expanded', 'true');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ closeMenu: function closeMenu() {
|
|
|
+ if (_this5.menu_ && _this5.menu_.open) {
|
|
|
+ _this5.menu_.open = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ isMenuOpen: function isMenuOpen() {
|
|
|
+ return _this5.menu_ && _this5.menuOpened_;
|
|
|
+ },
|
|
|
+ setSelectedIndex: function setSelectedIndex(index) {
|
|
|
+ _this5.setEnhancedSelectedIndex_(index);
|
|
|
+ },
|
|
|
+ setDisabled: function setDisabled(isDisabled) {
|
|
|
+ _this5.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');
|
|
|
+ _this5.selectedText_.setAttribute('aria-disabled', isDisabled.toString());
|
|
|
+ if (_this5.hiddenInput_) {
|
|
|
+ _this5.hiddenInput_.disabled = isDisabled;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ checkValidity: function checkValidity() {
|
|
|
+ var classList = _this5.root_.classList;
|
|
|
+ if (classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED) && !classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* 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 _this5.selectedIndex !== -1 && (_this5.selectedIndex !== 0 || _this5.value);
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setValid: function setValid(isValid) {
|
|
|
+ _this5.selectedText_.setAttribute('aria-invalid', (!isValid).toString());
|
|
|
+ isValid ? _this5.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID) : _this5.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * addClass: function(string): void,
|
|
|
+ * removeClass: function(string): void,
|
|
|
+ * hasClass: function(string): void,
|
|
|
+ * isRtl: function(): boolean,
|
|
|
+ * setRippleCenter: function(number): void,
|
|
|
+ * activateBottomLine: function(): void,
|
|
|
+ * deactivateBottomLine: function(): void,
|
|
|
+ * notifyChange: function(string): void
|
|
|
+ * }}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getCommonAdapterMethods_',
|
|
|
+ value: function getCommonAdapterMethods_() {
|
|
|
+ var _this6 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this6.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this6.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this6.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ isRtl: function isRtl() {
|
|
|
+ return window.getComputedStyle(_this6.root_).getPropertyValue('direction') === 'rtl';
|
|
|
+ },
|
|
|
+ setRippleCenter: function setRippleCenter(normalizedX) {
|
|
|
+ return _this6.lineRipple_ && _this6.lineRipple_.setRippleCenter(normalizedX);
|
|
|
+ },
|
|
|
+ activateBottomLine: function activateBottomLine() {
|
|
|
+ return _this6.lineRipple_ && _this6.lineRipple_.activate();
|
|
|
+ },
|
|
|
+ deactivateBottomLine: function deactivateBottomLine() {
|
|
|
+ return _this6.lineRipple_ && _this6.lineRipple_.deactivate();
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange(value) {
|
|
|
+ var index = _this6.selectedIndex;
|
|
|
+ _this6.emit(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].CHANGE_EVENT, { value: value, index: index }, true /* shouldBubble */);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * hasOutline: function(): boolean,
|
|
|
+ * notchOutline: function(number, boolean): undefined,
|
|
|
+ * closeOutline: function(): undefined,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getOutlineAdapterMethods_',
|
|
|
+ value: function getOutlineAdapterMethods_() {
|
|
|
+ var _this7 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ hasOutline: function hasOutline() {
|
|
|
+ return !!_this7.outline_;
|
|
|
+ },
|
|
|
+ notchOutline: function notchOutline(labelWidth, isRtl) {
|
|
|
+ if (_this7.outline_) {
|
|
|
+ _this7.outline_.notch(labelWidth, isRtl);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ closeOutline: function closeOutline() {
|
|
|
+ if (_this7.outline_) {
|
|
|
+ _this7.outline_.closeNotch();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * floatLabel: function(boolean): undefined,
|
|
|
+ * getLabelWidth: function(): number,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getLabelAdapterMethods_',
|
|
|
+ value: function getLabelAdapterMethods_() {
|
|
|
+ var _this8 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ floatLabel: function floatLabel(shouldFloat) {
|
|
|
+ if (_this8.label_) {
|
|
|
+ _this8.label_.float(shouldFloat);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getLabelWidth: function getLabelWidth() {
|
|
|
+ return _this8.label_ ? _this8.label_.getWidth() : 0;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Calculates where the line ripple should start based on the x coordinate within the component.
|
|
|
+ * @param {!(MouseEvent|TouchEvent)} evt
|
|
|
+ * @return {number} normalizedX
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNormalizedXCoordinate_',
|
|
|
+ value: function getNormalizedXCoordinate_(evt) {
|
|
|
+ var targetClientRect = evt.target.getBoundingClientRect();
|
|
|
+ var xCoordinate = evt.clientX;
|
|
|
+ return xCoordinate - targetClientRect.left;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns a map of all subcomponents to subfoundations.
|
|
|
+ * @return {!FoundationMapType}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getFoundationMap_',
|
|
|
+ value: function getFoundationMap_() {
|
|
|
+ return {
|
|
|
+ leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,
|
|
|
+ helperText: this.helperText_ ? this.helperText_.foundation : undefined
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the selected index of the enhanced menu.
|
|
|
+ * @param {number} index
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setEnhancedSelectedIndex_',
|
|
|
+ value: function setEnhancedSelectedIndex_(index) {
|
|
|
+ var selectedItem = this.menu_.items[index];
|
|
|
+ this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : '';
|
|
|
+ var previouslySelected = this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
|
|
|
+
|
|
|
+ if (previouslySelected) {
|
|
|
+ previouslySelected.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].SELECTED_ITEM_CLASS);
|
|
|
+ previouslySelected.removeAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_SELECTED_ATTR);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (selectedItem) {
|
|
|
+ selectedItem.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].SELECTED_ITEM_CLASS);
|
|
|
+ selectedItem.setAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* 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(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR) || '' : '';
|
|
|
+ }
|
|
|
+
|
|
|
+ this.layout();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncRequiredState_',
|
|
|
+ value: function initialSyncRequiredState_() {
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+ var isRequired = element.required || element.getAttribute('aria-required') === 'true' || this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ if (isRequired) {
|
|
|
+ if (this.nativeControl_) {
|
|
|
+ this.nativeControl_.required = true;
|
|
|
+ } else {
|
|
|
+ this.selectedText_.setAttribute('aria-required', 'true');
|
|
|
+ }
|
|
|
+ this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'addMutationObserverForRequired_',
|
|
|
+ value: function addMutationObserverForRequired_() {
|
|
|
+ var _this9 = this;
|
|
|
+
|
|
|
+ var observerHandler = function observerHandler(attributesList) {
|
|
|
+ attributesList.some(function (attributeName) {
|
|
|
+ if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {
|
|
|
+ if (_this9.selectedText_) {
|
|
|
+ if (_this9.selectedText_.getAttribute('aria-required') === 'true') {
|
|
|
+ _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ } else {
|
|
|
+ _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (_this9.nativeControl_.required) {
|
|
|
+ _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ } else {
|
|
|
+ _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ var getAttributesList = function getAttributesList(mutationsList) {
|
|
|
+ return mutationsList.map(function (mutation) {
|
|
|
+ return mutation.attributeName;
|
|
|
+ });
|
|
|
+ };
|
|
|
+ var observer = new MutationObserver(function (mutationsList) {
|
|
|
+ return observerHandler(getAttributesList(mutationsList));
|
|
|
+ });
|
|
|
+ var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
|
|
|
+ observer.observe(element, { attributes: true });
|
|
|
+ this.validationObserver_ = observer;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'value',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The value of the select.
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} value The value to set on the select.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setValue(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number} The selected index of the select.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'selectedIndex',
|
|
|
+ get: function get() {
|
|
|
+ var selectedIndex = void 0;
|
|
|
+ if (this.menuElement_) {
|
|
|
+ var selectedEl = /** @type {!HTMLElement} */this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
|
|
|
+ selectedIndex = this.menu_.items.indexOf(selectedEl);
|
|
|
+ } else {
|
|
|
+ selectedIndex = this.nativeControl_.selectedIndex;
|
|
|
+ }
|
|
|
+ return selectedIndex;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} selectedIndex The index of the option to be set on the select.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(selectedIndex) {
|
|
|
+ this.foundation_.setSelectedIndex(selectedIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} True if the select is disabled.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} disabled Sets the select disabled or enabled.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the leading icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'leadingIconAriaLabel',
|
|
|
+ set: function set(label) {
|
|
|
+ this.foundation_.setLeadingIconAriaLabel(label);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the leading icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'leadingIconContent',
|
|
|
+ set: function set(content) {
|
|
|
+ this.foundation_.setLeadingIconContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the helper text.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'helperTextContent',
|
|
|
+ set: function set(content) {
|
|
|
+ this.foundation_.setHelperTextContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the current invalid state of the select.
|
|
|
+ * @param {boolean} isValid
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'valid',
|
|
|
+ set: function set(isValid) {
|
|
|
+ this.foundation_.setValid(isValid);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Checks if the select is in a valid state.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isValid();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the control to the required state.
|
|
|
+ * @param {boolean} isRequired
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'required',
|
|
|
+ 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');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether the select is required.
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ get: function get() {
|
|
|
+ if (this.nativeControl_) {
|
|
|
+ return this.nativeControl_.required;
|
|
|
+ } else {
|
|
|
+ return this.selectedText_.getAttribute('aria-required') === 'true';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSelect(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelect;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 118 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(48);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_index__ = __webpack_require__(23);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helper_text_index__ = __webpack_require__(24);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(51);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCSelectAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSelectFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSelectFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCSelectAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCSelectAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCSelectAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ hasClass: function hasClass() {
|
|
|
+ return (/* className: string */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ activateBottomLine: function activateBottomLine() {},
|
|
|
+ deactivateBottomLine: function deactivateBottomLine() {},
|
|
|
+ setValue: function setValue() {},
|
|
|
+ getValue: function getValue() {},
|
|
|
+ isRtl: function isRtl() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ floatLabel: function floatLabel() /* value: boolean */{},
|
|
|
+ getLabelWidth: function getLabelWidth() {},
|
|
|
+ hasOutline: function hasOutline() {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ notchOutline: function notchOutline() /* labelWidth: number, isRtl: boolean */{},
|
|
|
+ closeOutline: function closeOutline() {},
|
|
|
+ openMenu: function openMenu() {},
|
|
|
+ closeMenu: function closeMenu() {},
|
|
|
+ isMenuOpen: function isMenuOpen() {},
|
|
|
+ setSelectedIndex: function setSelectedIndex() {},
|
|
|
+ setDisabled: function setDisabled() {},
|
|
|
+ setRippleCenter: function setRippleCenter() {},
|
|
|
+ notifyChange: function notifyChange() {},
|
|
|
+ checkValidity: function checkValidity() {},
|
|
|
+ setValid: function setValid() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCSelectAdapter} adapter
|
|
|
+ * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSelectFoundation(adapter) {
|
|
|
+ var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCSelectFoundation);
|
|
|
+
|
|
|
+ /** @type {!MDCSelectIconFoundation|undefined} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCSelectFoundation.__proto__ || Object.getPrototypeOf(MDCSelectFoundation)).call(this, _extends(MDCSelectFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.leadingIcon_ = foundationMap.leadingIcon;
|
|
|
+ /** @type {!MDCSelectHelperTextFoundation|undefined} */
|
|
|
+ _this.helperText_ = foundationMap.helperText;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectFoundation, [{
|
|
|
+ key: 'setSelectedIndex',
|
|
|
+ value: function setSelectedIndex(index) {
|
|
|
+ this.adapter_.setSelectedIndex(index);
|
|
|
+ this.adapter_.closeMenu();
|
|
|
+ var didChange = true;
|
|
|
+ this.handleChange(didChange);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setValue',
|
|
|
+ value: function setValue(value) {
|
|
|
+ this.adapter_.setValue(value);
|
|
|
+ var didChange = true;
|
|
|
+ this.handleChange(didChange);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getValue',
|
|
|
+ value: function getValue() {
|
|
|
+ return this.adapter_.getValue();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(isDisabled) {
|
|
|
+ isDisabled ? this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].DISABLED) : this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ this.adapter_.setDisabled(isDisabled);
|
|
|
+ this.adapter_.closeMenu();
|
|
|
+
|
|
|
+ if (this.leadingIcon_) {
|
|
|
+ this.leadingIcon_.setDisabled(isDisabled);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} content Sets the content of the helper text.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setHelperTextContent',
|
|
|
+ value: function setHelperTextContent(content) {
|
|
|
+ if (this.helperText_) {
|
|
|
+ this.helperText_.setContent(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ var openNotch = this.getValue().length > 0;
|
|
|
+ this.notchOutline(openNotch);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles value changes, via change event or programmatic updates.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChange',
|
|
|
+ value: function handleChange() {
|
|
|
+ var didChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
|
+
|
|
|
+ var value = this.getValue();
|
|
|
+ var optionHasValue = value.length > 0;
|
|
|
+ var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+
|
|
|
+ this.notchOutline(optionHasValue);
|
|
|
+
|
|
|
+ if (!this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* 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.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleFocus',
|
|
|
+ value: function handleFocus() {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
|
|
|
+ this.adapter_.floatLabel(true);
|
|
|
+ this.notchOutline(true);
|
|
|
+ this.adapter_.activateBottomLine();
|
|
|
+ if (this.helperText_) {
|
|
|
+ this.helperText_.showToScreenReader();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles blur events from select element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleBlur',
|
|
|
+ value: function handleBlur() {
|
|
|
+ if (this.adapter_.isMenuOpen()) return;
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
|
|
|
+ this.handleChange(false);
|
|
|
+ this.adapter_.deactivateBottomLine();
|
|
|
+
|
|
|
+ var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].REQUIRED);
|
|
|
+
|
|
|
+ if (isRequired) {
|
|
|
+ this.setValid(this.isValid());
|
|
|
+ if (this.helperText_) {
|
|
|
+ this.helperText_.setValidity(this.isValid());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleClick',
|
|
|
+ value: function handleClick(normalizedX) {
|
|
|
+ if (this.adapter_.isMenuOpen()) return;
|
|
|
+ this.adapter_.setRippleCenter(normalizedX);
|
|
|
+
|
|
|
+ this.adapter_.openMenu();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown',
|
|
|
+ value: function handleKeydown(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(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {
|
|
|
+ this.adapter_.openMenu();
|
|
|
+ event.preventDefault();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Opens/closes the notched outline.
|
|
|
+ * @param {boolean} openNotch
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notchOutline',
|
|
|
+ value: function notchOutline(openNotch) {
|
|
|
+ if (!this.adapter_.hasOutline()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var isFocused = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
|
|
|
+
|
|
|
+ if (openNotch) {
|
|
|
+ var labelScale = __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* numbers */].LABEL_SCALE;
|
|
|
+ var labelWidth = this.adapter_.getLabelWidth() * labelScale;
|
|
|
+ var isRtl = this.adapter_.isRtl();
|
|
|
+ this.adapter_.notchOutline(labelWidth, isRtl);
|
|
|
+ } else if (!isFocused) {
|
|
|
+ this.adapter_.closeOutline();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the leading icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setLeadingIconAriaLabel',
|
|
|
+ value: function setLeadingIconAriaLabel(label) {
|
|
|
+ if (this.leadingIcon_) {
|
|
|
+ this.leadingIcon_.setAriaLabel(label);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the leading icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setLeadingIconContent',
|
|
|
+ value: function setLeadingIconContent(content) {
|
|
|
+ if (this.leadingIcon_) {
|
|
|
+ this.leadingIcon_.setContent(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setValid',
|
|
|
+ value: function setValid(isValid) {
|
|
|
+ this.adapter_.setValid(isValid);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'isValid',
|
|
|
+ value: function isValid() {
|
|
|
+ return this.adapter_.checkValidity();
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCFoundation"]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSelectFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 119 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(120);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCSelectIconAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectIconFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSelectIconFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSelectIconFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCSelectIconAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCSelectIconAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCSelectIconAdapter} */{
|
|
|
+ getAttr: function getAttr() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ removeAttr: function removeAttr() {},
|
|
|
+ setContent: function setContent() {},
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() {},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() {},
|
|
|
+ notifyIconAction: function notifyIconAction() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCSelectIconAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSelectIconFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCSelectIconFoundation);
|
|
|
+
|
|
|
+ /** @private {string?} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCSelectIconFoundation.__proto__ || Object.getPrototypeOf(MDCSelectIconFoundation)).call(this, _extends(MDCSelectIconFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.savedTabIndex_ = null;
|
|
|
+
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ _this.interactionHandler_ = function (evt) {
|
|
|
+ return _this.handleInteraction(evt);
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSelectIconFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.savedTabIndex_ = this.adapter_.getAttr('tabindex');
|
|
|
+
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(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', __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */].ICON_ROLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} label */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setAriaLabel',
|
|
|
+ value: function setAriaLabel(label) {
|
|
|
+ this.adapter_.setAttr('aria-label', label);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {string} content */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setContent',
|
|
|
+ value: function setContent(content) {
|
|
|
+ this.adapter_.setContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles an interaction event
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleInteraction',
|
|
|
+ value: function handleInteraction(evt) {
|
|
|
+ if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
|
|
|
+ this.adapter_.notifyIconAction();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectIconFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSelectIconFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 120 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ICON_EVENT: 'MDCSelect:icon',
|
|
|
+ ICON_ROLE: 'button'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 121 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(122);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCSelectHelperTextAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSelectHelperTextFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSelectHelperTextFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSelectHelperTextFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCSelectHelperTextAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCSelectHelperTextAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCSelectHelperTextAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ removeAttr: function removeAttr() {},
|
|
|
+ setContent: function setContent() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCSelectHelperTextAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSelectHelperTextFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCSelectHelperTextFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSelectHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCSelectHelperTextFoundation)).call(this, _extends(MDCSelectHelperTextFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the content of the helper text field.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCSelectHelperTextFoundation, [{
|
|
|
+ key: 'setContent',
|
|
|
+ value: function setContent(content) {
|
|
|
+ this.adapter_.setContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} isPersistent Sets the persistency of the helper text. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setPersistent',
|
|
|
+ value: function setPersistent(isPersistent) {
|
|
|
+ if (isPersistent) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} isValidation True to make the helper text act as an
|
|
|
+ * error validation message.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValidation',
|
|
|
+ value: function setValidation(isValidation) {
|
|
|
+ if (isValidation) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** Makes the helper text visible to the screen reader. */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'showToScreenReader',
|
|
|
+ value: function showToScreenReader() {
|
|
|
+ this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the validity of the helper text based on the select validity.
|
|
|
+ * @param {boolean} selectIsValid
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValidity',
|
|
|
+ value: function setValidity(selectIsValid) {
|
|
|
+ var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
|
|
|
+ var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
|
|
|
+ var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;
|
|
|
+
|
|
|
+ if (validationMsgNeedsDisplay) {
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE, 'alert');
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
|
|
|
+ this.hide_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Hides the help text from screen readers.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'hide_',
|
|
|
+ value: function hide_() {
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN, 'true');
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSelectHelperTextFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSelectHelperTextFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 122 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_HIDDEN: 'aria-hidden',
|
|
|
+ ROLE: 'role'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent',
|
|
|
+ HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 123 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSlider", function() { return MDCSlider; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(52);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(53);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(124);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSliderFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCSliderFoundation>
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSlider = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSlider, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCSlider, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSlider(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSlider() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCSlider);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @type {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCSlider.__proto__ || Object.getPrototypeOf(MDCSlider)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.thumbContainer_;
|
|
|
+ /** @type {?Element} */
|
|
|
+ _this.track_;
|
|
|
+ /** @type {?Element} */
|
|
|
+ _this.pinValueMarker_;
|
|
|
+ /** @type {?Element} */
|
|
|
+ _this.trackMarkerContainer_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCSlider, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ this.thumbContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].THUMB_CONTAINER_SELECTOR);
|
|
|
+ this.track_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].TRACK_SELECTOR);
|
|
|
+ this.pinValueMarker_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].PIN_VALUE_MARKER_SELECTOR);
|
|
|
+ this.trackMarkerContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].TRACK_MARKER_CONTAINER_SELECTOR);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCSliderFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */](
|
|
|
+ /** @type {!MDCSliderAdapter} */{
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ getAttribute: function getAttribute(name) {
|
|
|
+ return _this2.root_.getAttribute(name);
|
|
|
+ },
|
|
|
+ setAttribute: function setAttribute(name, value) {
|
|
|
+ return _this2.root_.setAttribute(name, value);
|
|
|
+ },
|
|
|
+ removeAttribute: function removeAttribute(name) {
|
|
|
+ return _this2.root_.removeAttribute(name);
|
|
|
+ },
|
|
|
+ computeBoundingRect: function computeBoundingRect() {
|
|
|
+ return _this2.root_.getBoundingClientRect();
|
|
|
+ },
|
|
|
+ getTabIndex: function getTabIndex() {
|
|
|
+ return _this2.root_.tabIndex;
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ _this2.root_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ _this2.root_.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(type, handler) {
|
|
|
+ _this2.thumbContainer_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(type, handler) {
|
|
|
+ _this2.thumbContainer_.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ registerBodyInteractionHandler: function registerBodyInteractionHandler(type, handler) {
|
|
|
+ document.body.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(type, handler) {
|
|
|
+ document.body.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ registerResizeHandler: function registerResizeHandler(handler) {
|
|
|
+ window.addEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler(handler) {
|
|
|
+ window.removeEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ notifyInput: function notifyInput() {
|
|
|
+ _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].INPUT_EVENT, _this2);
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange() {
|
|
|
+ _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].CHANGE_EVENT, _this2);
|
|
|
+ },
|
|
|
+ setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) {
|
|
|
+ _this2.thumbContainer_.style.setProperty(propertyName, value);
|
|
|
+ },
|
|
|
+ setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) {
|
|
|
+ _this2.track_.style.setProperty(propertyName, value);
|
|
|
+ },
|
|
|
+ setMarkerValue: function setMarkerValue(value) {
|
|
|
+ _this2.pinValueMarker_.innerText = value;
|
|
|
+ },
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ _this2.trackMarkerContainer_.appendChild(frag);
|
|
|
+ },
|
|
|
+ removeTrackMarkers: function removeTrackMarkers() {
|
|
|
+ while (_this2.trackMarkerContainer_.firstChild) {
|
|
|
+ _this2.trackMarkerContainer_.removeChild(_this2.trackMarkerContainer_.firstChild);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty(propertyName, value) {
|
|
|
+ // We remove and append new nodes, thus, the last track marker must be dynamically found.
|
|
|
+ var lastTrackMarker = _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].LAST_TRACK_MARKER_SELECTOR);
|
|
|
+ lastTrackMarker.style.setProperty(propertyName, value);
|
|
|
+ },
|
|
|
+ isRTL: function isRTL() {
|
|
|
+ return getComputedStyle(_this2.root_).direction === 'rtl';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var origValueNow = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUENOW));
|
|
|
+ this.min = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUEMIN)) || this.min;
|
|
|
+ this.max = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUEMAX)) || this.max;
|
|
|
+ this.step = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].STEP_DATA_ATTR)) || this.step;
|
|
|
+ this.value = origValueNow || this.value;
|
|
|
+ this.disabled = this.root_.hasAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_DISABLED) && this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_DISABLED) !== 'false';
|
|
|
+ this.foundation_.setupTrackMarker();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ this.foundation_.layout();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number=} amount */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'stepUp',
|
|
|
+ value: function stepUp() {
|
|
|
+ var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;
|
|
|
+
|
|
|
+ this.value += amount;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number=} amount */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'stepDown',
|
|
|
+ value: function stepDown() {
|
|
|
+ var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;
|
|
|
+
|
|
|
+ this.value -= amount;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'value',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} value */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setValue(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'min',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getMin();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} min */
|
|
|
+ ,
|
|
|
+ set: function set(min) {
|
|
|
+ this.foundation_.setMin(min);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'max',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getMax();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} max */
|
|
|
+ ,
|
|
|
+ set: function set(max) {
|
|
|
+ this.foundation_.setMax(max);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'step',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getStep();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} step */
|
|
|
+ ,
|
|
|
+ set: function set(step) {
|
|
|
+ this.foundation_.setStep(step);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isDisabled();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSlider;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 124 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(52);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(53);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_animation_index__ = __webpack_require__(9);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_base_foundation__ = __webpack_require__(0);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var KEY_IDS = {
|
|
|
+ ARROW_LEFT: 'ArrowLeft',
|
|
|
+ ARROW_RIGHT: 'ArrowRight',
|
|
|
+ ARROW_UP: 'ArrowUp',
|
|
|
+ ARROW_DOWN: 'ArrowDown',
|
|
|
+ HOME: 'Home',
|
|
|
+ END: 'End',
|
|
|
+ PAGE_UP: 'PageUp',
|
|
|
+ PAGE_DOWN: 'PageDown'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var MOVE_EVENT_MAP = {
|
|
|
+ 'mousedown': 'mousemove',
|
|
|
+ 'touchstart': 'touchmove',
|
|
|
+ 'pointerdown': 'pointermove'
|
|
|
+};
|
|
|
+
|
|
|
+var DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart'];
|
|
|
+var UP_EVENTS = ['mouseup', 'pointerup', 'touchend'];
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCSliderAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSliderFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSliderFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSliderFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {cssClasses} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {strings} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {numbers} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCSliderAdapter} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCSliderAdapter} */{
|
|
|
+ hasClass: function hasClass() {
|
|
|
+ return (/* className: string */ /* boolean */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ getAttribute: function getAttribute() {
|
|
|
+ return (/* name: string */ /* string|null */null
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setAttribute: function setAttribute() /* name: string, value: string */{},
|
|
|
+ removeAttribute: function removeAttribute() /* name: string */{},
|
|
|
+ computeBoundingRect: function computeBoundingRect() {
|
|
|
+ return (/* ClientRect */{
|
|
|
+ top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getTabIndex: function getTabIndex() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ registerBodyInteractionHandler: function registerBodyInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() /* type: string, handler: EventListener */{},
|
|
|
+ registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
|
|
|
+ notifyInput: function notifyInput() {},
|
|
|
+ notifyChange: function notifyChange() {},
|
|
|
+ setThumbContainerStyleProperty: function setThumbContainerStyleProperty() /* propertyName: string, value: string */{},
|
|
|
+ setTrackStyleProperty: function setTrackStyleProperty() /* propertyName: string, value: string */{},
|
|
|
+ setMarkerValue: function setMarkerValue() /* value: number */{},
|
|
|
+ appendTrackMarkers: function appendTrackMarkers() /* numMarkers: number */{},
|
|
|
+ removeTrackMarkers: function removeTrackMarkers() {},
|
|
|
+ setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() /* propertyName: string, value: string */{},
|
|
|
+ isRTL: function isRTL() {
|
|
|
+ return (/* boolean */false
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Creates a new instance of MDCSliderFoundation
|
|
|
+ * @param {?MDCSliderAdapter} adapter
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSliderFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCSliderFoundation);
|
|
|
+
|
|
|
+ /** @private {?ClientRect} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCSliderFoundation.__proto__ || Object.getPrototypeOf(MDCSliderFoundation)).call(this, _extends(MDCSliderFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.rect_ = null;
|
|
|
+ // 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.updateUIFrame_ = 0;
|
|
|
+ _this.thumbContainerPointerHandler_ = function () {
|
|
|
+ _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;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSliderFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.isDiscrete_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].IS_DISCRETE);
|
|
|
+ this.hasTrackMarker_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].HAS_TRACK_MARKER);
|
|
|
+ DOWN_EVENTS.forEach(function (evtName) {
|
|
|
+ return _this2.adapter_.registerInteractionHandler(evtName, _this2.interactionStartHandler_);
|
|
|
+ });
|
|
|
+ this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);
|
|
|
+ this.adapter_.registerInteractionHandler('focus', this.focusHandler_);
|
|
|
+ this.adapter_.registerInteractionHandler('blur', this.blurHandler_);
|
|
|
+ DOWN_EVENTS.forEach(function (evtName) {
|
|
|
+ _this2.adapter_.registerThumbContainerInteractionHandler(evtName, _this2.thumbContainerPointerHandler_);
|
|
|
+ });
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ DOWN_EVENTS.forEach(function (evtName) {
|
|
|
+ _this3.adapter_.deregisterInteractionHandler(evtName, _this3.interactionStartHandler_);
|
|
|
+ });
|
|
|
+ this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);
|
|
|
+ this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);
|
|
|
+ this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);
|
|
|
+ DOWN_EVENTS.forEach(function (evtName) {
|
|
|
+ _this3.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this3.thumbContainerPointerHandler_);
|
|
|
+ });
|
|
|
+ this.adapter_.deregisterResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setupTrackMarker',
|
|
|
+ value: function setupTrackMarker() {
|
|
|
+ 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;
|
|
|
+ var flex = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["b" /* getCorrectPropertyName */])(window, 'flex');
|
|
|
+ this.adapter_.setLastTrackMarkersStyleProperty(flex, String(lastStepRatio));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+ value: function layout() {
|
|
|
+ this.rect_ = this.adapter_.computeBoundingRect();
|
|
|
+ this.updateUIForCurrentValue_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getValue',
|
|
|
+ value: function getValue() {
|
|
|
+ return this.value_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} value */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValue',
|
|
|
+ value: function setValue(value) {
|
|
|
+ this.setValue_(value, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getMax',
|
|
|
+ value: function getMax() {
|
|
|
+ return this.max_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} max */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setMax',
|
|
|
+ value: function setMax(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(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUEMAX, String(this.max_));
|
|
|
+ this.setupTrackMarker();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getMin',
|
|
|
+ value: function getMin() {
|
|
|
+ return this.min_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} min */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setMin',
|
|
|
+ value: function setMin(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(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUEMIN, String(this.min_));
|
|
|
+ this.setupTrackMarker();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getStep',
|
|
|
+ value: function getStep() {
|
|
|
+ return this.step_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {number} step */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setStep',
|
|
|
+ value: function setStep(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();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isDisabled',
|
|
|
+ value: function isDisabled() {
|
|
|
+ return this.disabled_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(disabled) {
|
|
|
+ this.disabled_ = disabled;
|
|
|
+ this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].DISABLED, this.disabled_);
|
|
|
+ if (this.disabled_) {
|
|
|
+ this.savedTabIndex_ = this.adapter_.getTabIndex();
|
|
|
+ this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_DISABLED, 'true');
|
|
|
+ this.adapter_.removeAttribute('tabindex');
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_DISABLED);
|
|
|
+ if (!isNaN(this.savedTabIndex_)) {
|
|
|
+ this.adapter_.setAttribute('tabindex', String(this.savedTabIndex_));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called when the user starts interacting with the slider
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleDown_',
|
|
|
+ value: function handleDown_(evt) {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ if (this.disabled_) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.preventFocusState_ = true;
|
|
|
+ this.setInTransit_(!this.handlingThumbTargetEvt_);
|
|
|
+ this.handlingThumbTargetEvt_ = false;
|
|
|
+ this.setActive_(true);
|
|
|
+
|
|
|
+ var moveHandler = function moveHandler(evt) {
|
|
|
+ _this4.handleMove_(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 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() {
|
|
|
+ _this4.handleUp_();
|
|
|
+ _this4.adapter_.deregisterBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);
|
|
|
+ UP_EVENTS.forEach(function (evtName) {
|
|
|
+ return _this4.adapter_.deregisterBodyInteractionHandler(evtName, upHandler);
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ this.adapter_.registerBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);
|
|
|
+ UP_EVENTS.forEach(function (evtName) {
|
|
|
+ return _this4.adapter_.registerBodyInteractionHandler(evtName, upHandler);
|
|
|
+ });
|
|
|
+ this.setValueFromEvt_(evt);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called when the user moves the slider
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleMove_',
|
|
|
+ value: function handleMove_(evt) {
|
|
|
+ evt.preventDefault();
|
|
|
+ this.setValueFromEvt_(evt);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called when the user's interaction with the slider ends
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleUp_',
|
|
|
+ value: function handleUp_() {
|
|
|
+ this.setActive_(false);
|
|
|
+ this.adapter_.notifyChange();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the pageX of the event
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getPageX_',
|
|
|
+ value: function getPageX_(evt) {
|
|
|
+ if (evt.targetTouches && evt.targetTouches.length > 0) {
|
|
|
+ return evt.targetTouches[0].pageX;
|
|
|
+ }
|
|
|
+ return evt.pageX;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the slider value from an event
|
|
|
+ * @param {!Event} evt
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValueFromEvt_',
|
|
|
+ value: function setValueFromEvt_(evt) {
|
|
|
+ var pageX = this.getPageX_(evt);
|
|
|
+ var value = this.computeValueFromPageX_(pageX);
|
|
|
+ this.setValue_(value, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Computes the new value from the pageX position
|
|
|
+ * @param {number} pageX
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeValueFromPageX_',
|
|
|
+ value: function computeValueFromPageX_(pageX) {
|
|
|
+ var max = this.max_,
|
|
|
+ min = this.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
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeydown_',
|
|
|
+ value: function handleKeydown_(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(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
|
|
|
+ this.setValue_(value, true);
|
|
|
+ this.adapter_.notifyChange();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the computed name of the event
|
|
|
+ * @param {!Event} kbdEvt
|
|
|
+ * @return {string}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getKeyId_',
|
|
|
+ value: function getKeyId_(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
|
|
|
+ * @param {string} keyId
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getValueForKeyId_',
|
|
|
+ value: function getValueForKeyId_(keyId) {
|
|
|
+ var max = this.max_,
|
|
|
+ min = this.min_,
|
|
|
+ step = this.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 * __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */].PAGE_FACTOR;
|
|
|
+ case KEY_IDS.PAGE_DOWN:
|
|
|
+ return this.value_ - delta * __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */].PAGE_FACTOR;
|
|
|
+ default:
|
|
|
+ return NaN;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleFocus_',
|
|
|
+ value: function handleFocus_() {
|
|
|
+ if (this.preventFocusState_) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handleBlur_',
|
|
|
+ value: function handleBlur_() {
|
|
|
+ this.preventFocusState_ = false;
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the value of the slider
|
|
|
+ * @param {number} value
|
|
|
+ * @param {boolean} shouldFireInput
|
|
|
+ * @param {boolean=} force
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValue_',
|
|
|
+ value: function setValue_(value, shouldFireInput) {
|
|
|
+ var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
|
+
|
|
|
+ if (value === this.value_ && !force) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var min = this.min_,
|
|
|
+ max = this.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(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUENOW, String(this.value_));
|
|
|
+ this.updateUIForCurrentValue_();
|
|
|
+
|
|
|
+ if (shouldFireInput) {
|
|
|
+ this.adapter_.notifyInput();
|
|
|
+ if (this.isDiscrete_) {
|
|
|
+ this.adapter_.setMarkerValue(value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Calculates the quantized value
|
|
|
+ * @param {number} value
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'quantize_',
|
|
|
+ value: function quantize_(value) {
|
|
|
+ var numSteps = Math.round(value / this.step_);
|
|
|
+ var quantizedVal = numSteps * this.step_;
|
|
|
+ return quantizedVal;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateUIForCurrentValue_',
|
|
|
+ value: function updateUIForCurrentValue_() {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ var max = this.max_,
|
|
|
+ min = this.min_,
|
|
|
+ value = this.value_;
|
|
|
+
|
|
|
+ var pctComplete = (value - min) / (max - min);
|
|
|
+ var translatePx = pctComplete * this.rect_.width;
|
|
|
+ if (this.adapter_.isRTL()) {
|
|
|
+ translatePx = this.rect_.width - translatePx;
|
|
|
+ }
|
|
|
+
|
|
|
+ var transformProp = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["b" /* getCorrectPropertyName */])(window, 'transform');
|
|
|
+ var transitionendEvtName = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["a" /* getCorrectEventName */])(window, 'transitionend');
|
|
|
+
|
|
|
+ if (this.inTransit_) {
|
|
|
+ var onTransitionEnd = function onTransitionEnd() {
|
|
|
+ _this5.setInTransit_(false);
|
|
|
+ _this5.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);
|
|
|
+ };
|
|
|
+ this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.updateUIFrame_ = 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.
|
|
|
+ _this5.adapter_.setThumbContainerStyleProperty(transformProp, 'translateX(' + translatePx + 'px) translateX(-50%)');
|
|
|
+ _this5.adapter_.setTrackStyleProperty(transformProp, 'scaleX(' + pctComplete + ')');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Toggles the active state of the slider
|
|
|
+ * @param {boolean} active
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setActive_',
|
|
|
+ value: function setActive_(active) {
|
|
|
+ this.active_ = active;
|
|
|
+ this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].ACTIVE, this.active_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Toggles the inTransit state of the slider
|
|
|
+ * @param {boolean} inTransit
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setInTransit_',
|
|
|
+ value: function setInTransit_(inTransit) {
|
|
|
+ this.inTransit_ = inTransit;
|
|
|
+ this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].IN_TRANSIT, this.inTransit_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Conditionally adds or removes a class based on shouldBePresent
|
|
|
+ * @param {string} className
|
|
|
+ * @param {boolean} shouldBePresent
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'toggleClass_',
|
|
|
+ value: function toggleClass_(className, shouldBePresent) {
|
|
|
+ if (shouldBePresent) {
|
|
|
+ this.adapter_.addClass(className);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(className);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSliderFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_3__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSliderFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 125 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSnackbar", function() { return MDCSnackbar; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(126);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_animation_index__ = __webpack_require__(9);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSnackbarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCSnackbar = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSnackbar, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCSnackbar() {
|
|
|
+ _classCallCheck(this, MDCSnackbar);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSnackbar.__proto__ || Object.getPrototypeOf(MDCSnackbar)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSnackbar, [{
|
|
|
+ key: 'show',
|
|
|
+ value: function show(data) {
|
|
|
+ this.foundation_.show(data);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var _MDCSnackbarFoundatio = __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings,
|
|
|
+ TEXT_SELECTOR = _MDCSnackbarFoundatio.TEXT_SELECTOR,
|
|
|
+ ACTION_BUTTON_SELECTOR = _MDCSnackbarFoundatio.ACTION_BUTTON_SELECTOR;
|
|
|
+
|
|
|
+ var getText = function getText() {
|
|
|
+ return _this2.root_.querySelector(TEXT_SELECTOR);
|
|
|
+ };
|
|
|
+ var getActionButton = function getActionButton() {
|
|
|
+ return _this2.root_.querySelector(ACTION_BUTTON_SELECTOR);
|
|
|
+ };
|
|
|
+
|
|
|
+ /* eslint brace-style: "off" */
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setAriaHidden: function setAriaHidden() {
|
|
|
+ return _this2.root_.setAttribute('aria-hidden', 'true');
|
|
|
+ },
|
|
|
+ unsetAriaHidden: function unsetAriaHidden() {
|
|
|
+ return _this2.root_.removeAttribute('aria-hidden');
|
|
|
+ },
|
|
|
+ setActionAriaHidden: function setActionAriaHidden() {
|
|
|
+ return getActionButton().setAttribute('aria-hidden', 'true');
|
|
|
+ },
|
|
|
+ unsetActionAriaHidden: function unsetActionAriaHidden() {
|
|
|
+ return getActionButton().removeAttribute('aria-hidden');
|
|
|
+ },
|
|
|
+ setActionText: function setActionText(text) {
|
|
|
+ getActionButton().textContent = text;
|
|
|
+ },
|
|
|
+ setMessageText: function setMessageText(text) {
|
|
|
+ getText().textContent = text;
|
|
|
+ },
|
|
|
+ setFocus: function setFocus() {
|
|
|
+ return getActionButton().focus();
|
|
|
+ },
|
|
|
+ isFocused: function isFocused() {
|
|
|
+ return document.activeElement === getActionButton();
|
|
|
+ },
|
|
|
+ visibilityIsHidden: function visibilityIsHidden() {
|
|
|
+ return document.hidden;
|
|
|
+ },
|
|
|
+ registerCapturedBlurHandler: function registerCapturedBlurHandler(handler) {
|
|
|
+ return getActionButton().addEventListener('blur', handler, true);
|
|
|
+ },
|
|
|
+ deregisterCapturedBlurHandler: function deregisterCapturedBlurHandler(handler) {
|
|
|
+ return getActionButton().removeEventListener('blur', handler, true);
|
|
|
+ },
|
|
|
+ registerVisibilityChangeHandler: function registerVisibilityChangeHandler(handler) {
|
|
|
+ return document.addEventListener('visibilitychange', handler);
|
|
|
+ },
|
|
|
+ deregisterVisibilityChangeHandler: function deregisterVisibilityChangeHandler(handler) {
|
|
|
+ return document.removeEventListener('visibilitychange', handler);
|
|
|
+ },
|
|
|
+ registerCapturedInteractionHandler: function registerCapturedInteractionHandler(evt, handler) {
|
|
|
+ return document.body.addEventListener(evt, handler, true);
|
|
|
+ },
|
|
|
+ deregisterCapturedInteractionHandler: function deregisterCapturedInteractionHandler(evt, handler) {
|
|
|
+ return document.body.removeEventListener(evt, handler, true);
|
|
|
+ },
|
|
|
+ registerActionClickHandler: function registerActionClickHandler(handler) {
|
|
|
+ return getActionButton().addEventListener('click', handler);
|
|
|
+ },
|
|
|
+ deregisterActionClickHandler: function deregisterActionClickHandler(handler) {
|
|
|
+ return getActionButton().removeEventListener('click', handler);
|
|
|
+ },
|
|
|
+ registerTransitionEndHandler: function registerTransitionEndHandler(handler) {
|
|
|
+ return _this2.root_.addEventListener(Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["a" /* getCorrectEventName */])(window, 'transitionend'), handler);
|
|
|
+ },
|
|
|
+ deregisterTransitionEndHandler: function deregisterTransitionEndHandler(handler) {
|
|
|
+ return _this2.root_.removeEventListener(Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["a" /* getCorrectEventName */])(window, 'transitionend'), handler);
|
|
|
+ },
|
|
|
+ notifyShow: function notifyShow() {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.SHOW_EVENT);
|
|
|
+ },
|
|
|
+ notifyHide: function notifyHide() {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.HIDE_EVENT);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'dismissesOnAction',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.dismissesOnAction();
|
|
|
+ },
|
|
|
+ set: function set(dismissesOnAction) {
|
|
|
+ this.foundation_.setDismissOnAction(dismissesOnAction);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSnackbar(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSnackbar;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 126 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(127);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCSnackbarFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSnackbarFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSnackbarFoundation, [{
|
|
|
+ key: 'active',
|
|
|
+ get: function get() {
|
|
|
+ return this.active_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setAriaHidden: function setAriaHidden() {},
|
|
|
+ unsetAriaHidden: function unsetAriaHidden() {},
|
|
|
+ setActionAriaHidden: function setActionAriaHidden() {},
|
|
|
+ unsetActionAriaHidden: function unsetActionAriaHidden() {},
|
|
|
+ setActionText: function setActionText() /* actionText: string */{},
|
|
|
+ setMessageText: function setMessageText() /* message: string */{},
|
|
|
+ setFocus: function setFocus() {},
|
|
|
+ isFocused: function isFocused() {
|
|
|
+ return (/* boolean */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ visibilityIsHidden: function visibilityIsHidden() {
|
|
|
+ return (/* boolean */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ registerCapturedBlurHandler: function registerCapturedBlurHandler() /* handler: EventListener */{},
|
|
|
+ deregisterCapturedBlurHandler: function deregisterCapturedBlurHandler() /* handler: EventListener */{},
|
|
|
+ registerVisibilityChangeHandler: function registerVisibilityChangeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterVisibilityChangeHandler: function deregisterVisibilityChangeHandler() /* handler: EventListener */{},
|
|
|
+ registerCapturedInteractionHandler: function registerCapturedInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ deregisterCapturedInteractionHandler: function deregisterCapturedInteractionHandler() /* evtType: string, handler: EventListener */{},
|
|
|
+ registerActionClickHandler: function registerActionClickHandler() /* handler: EventListener */{},
|
|
|
+ deregisterActionClickHandler: function deregisterActionClickHandler() /* handler: EventListener */{},
|
|
|
+ registerTransitionEndHandler: function registerTransitionEndHandler() /* handler: EventListener */{},
|
|
|
+ deregisterTransitionEndHandler: function deregisterTransitionEndHandler() /* handler: EventListener */{},
|
|
|
+ notifyShow: function notifyShow() {},
|
|
|
+ notifyHide: function notifyHide() {}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSnackbarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCSnackbarFoundation);
|
|
|
+
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCSnackbarFoundation.__proto__ || Object.getPrototypeOf(MDCSnackbarFoundation)).call(this, _extends(MDCSnackbarFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.active_ = false;
|
|
|
+ _this.actionWasClicked_ = false;
|
|
|
+ _this.dismissOnAction_ = true;
|
|
|
+ _this.firstFocus_ = true;
|
|
|
+ _this.pointerDownRecognized_ = false;
|
|
|
+ _this.snackbarHasFocus_ = false;
|
|
|
+ _this.snackbarData_ = null;
|
|
|
+ _this.queue_ = [];
|
|
|
+ _this.actionClickHandler_ = function () {
|
|
|
+ _this.actionWasClicked_ = true;
|
|
|
+ _this.invokeAction_();
|
|
|
+ };
|
|
|
+ _this.visibilitychangeHandler_ = function () {
|
|
|
+ clearTimeout(_this.timeoutId_);
|
|
|
+ _this.snackbarHasFocus_ = true;
|
|
|
+
|
|
|
+ if (!_this.adapter_.visibilityIsHidden()) {
|
|
|
+ setTimeout(_this.cleanup_.bind(_this), _this.snackbarData_.timeout || __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* numbers */].MESSAGE_TIMEOUT);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ _this.interactionHandler_ = function (evt) {
|
|
|
+ if (evt.type === 'focus' && !_this.adapter_.isFocused()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (evt.type === 'touchstart' || evt.type === 'mousedown') {
|
|
|
+ _this.pointerDownRecognized_ = true;
|
|
|
+ }
|
|
|
+ _this.handlePossibleTabKeyboardFocus_(evt);
|
|
|
+
|
|
|
+ if (evt.type === 'focus') {
|
|
|
+ _this.pointerDownRecognized_ = false;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ _this.blurHandler_ = function () {
|
|
|
+ clearTimeout(_this.timeoutId_);
|
|
|
+ _this.snackbarHasFocus_ = false;
|
|
|
+ _this.timeoutId_ = setTimeout(_this.cleanup_.bind(_this), _this.snackbarData_.timeout || __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* numbers */].MESSAGE_TIMEOUT);
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSnackbarFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.adapter_.registerActionClickHandler(this.actionClickHandler_);
|
|
|
+ this.adapter_.setAriaHidden();
|
|
|
+ this.adapter_.setActionAriaHidden();
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ this.adapter_.deregisterActionClickHandler(this.actionClickHandler_);
|
|
|
+ this.adapter_.deregisterCapturedBlurHandler(this.blurHandler_);
|
|
|
+ this.adapter_.deregisterVisibilityChangeHandler(this.visibilitychangeHandler_);
|
|
|
+ ['touchstart', 'mousedown', 'focus'].forEach(function (evtType) {
|
|
|
+ _this2.adapter_.deregisterCapturedInteractionHandler(evtType, _this2.interactionHandler_);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'dismissesOnAction',
|
|
|
+ value: function dismissesOnAction() {
|
|
|
+ return this.dismissOnAction_;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setDismissOnAction',
|
|
|
+ value: function setDismissOnAction(dismissOnAction) {
|
|
|
+ this.dismissOnAction_ = !!dismissOnAction;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'show',
|
|
|
+ value: function show(data) {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ if (!data) {
|
|
|
+ throw new Error('Please provide a data object with at least a message to display.');
|
|
|
+ }
|
|
|
+ if (!data.message) {
|
|
|
+ throw new Error('Please provide a message to be displayed.');
|
|
|
+ }
|
|
|
+ if (data.actionHandler && !data.actionText) {
|
|
|
+ throw new Error('Please provide action text with the handler.');
|
|
|
+ }
|
|
|
+ if (this.active) {
|
|
|
+ this.queue_.push(data);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ clearTimeout(this.timeoutId_);
|
|
|
+ this.snackbarData_ = data;
|
|
|
+ this.firstFocus_ = true;
|
|
|
+ this.adapter_.registerVisibilityChangeHandler(this.visibilitychangeHandler_);
|
|
|
+ this.adapter_.registerCapturedBlurHandler(this.blurHandler_);
|
|
|
+ ['touchstart', 'mousedown', 'focus'].forEach(function (evtType) {
|
|
|
+ _this3.adapter_.registerCapturedInteractionHandler(evtType, _this3.interactionHandler_);
|
|
|
+ });
|
|
|
+
|
|
|
+ var ACTIVE = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].ACTIVE,
|
|
|
+ MULTILINE = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].MULTILINE,
|
|
|
+ ACTION_ON_BOTTOM = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].ACTION_ON_BOTTOM;
|
|
|
+
|
|
|
+
|
|
|
+ this.adapter_.setMessageText(this.snackbarData_.message);
|
|
|
+
|
|
|
+ if (this.snackbarData_.multiline) {
|
|
|
+ this.adapter_.addClass(MULTILINE);
|
|
|
+ if (this.snackbarData_.actionOnBottom) {
|
|
|
+ this.adapter_.addClass(ACTION_ON_BOTTOM);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.snackbarData_.actionHandler) {
|
|
|
+ this.adapter_.setActionText(this.snackbarData_.actionText);
|
|
|
+ this.actionHandler_ = this.snackbarData_.actionHandler;
|
|
|
+ this.setActionHidden_(false);
|
|
|
+ } else {
|
|
|
+ this.setActionHidden_(true);
|
|
|
+ this.actionHandler_ = null;
|
|
|
+ this.adapter_.setActionText(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.active_ = true;
|
|
|
+ this.adapter_.addClass(ACTIVE);
|
|
|
+ this.adapter_.unsetAriaHidden();
|
|
|
+ this.adapter_.notifyShow();
|
|
|
+
|
|
|
+ this.timeoutId_ = setTimeout(this.cleanup_.bind(this), this.snackbarData_.timeout || __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* numbers */].MESSAGE_TIMEOUT);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'handlePossibleTabKeyboardFocus_',
|
|
|
+ value: function handlePossibleTabKeyboardFocus_() {
|
|
|
+ var hijackFocus = this.firstFocus_ && !this.pointerDownRecognized_;
|
|
|
+
|
|
|
+ if (hijackFocus) {
|
|
|
+ this.setFocusOnAction_();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.firstFocus_ = false;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setFocusOnAction_',
|
|
|
+ value: function setFocusOnAction_() {
|
|
|
+ this.adapter_.setFocus();
|
|
|
+ this.snackbarHasFocus_ = true;
|
|
|
+ this.firstFocus_ = false;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'invokeAction_',
|
|
|
+ value: function invokeAction_() {
|
|
|
+ try {
|
|
|
+ if (!this.actionHandler_) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.actionHandler_();
|
|
|
+ } finally {
|
|
|
+ if (this.dismissOnAction_) {
|
|
|
+ this.cleanup_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'cleanup_',
|
|
|
+ value: function cleanup_() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ var allowDismissal = !this.snackbarHasFocus_ || this.actionWasClicked_;
|
|
|
+
|
|
|
+ if (allowDismissal) {
|
|
|
+ var ACTIVE = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].ACTIVE,
|
|
|
+ MULTILINE = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].MULTILINE,
|
|
|
+ ACTION_ON_BOTTOM = __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */].ACTION_ON_BOTTOM;
|
|
|
+
|
|
|
+
|
|
|
+ this.adapter_.removeClass(ACTIVE);
|
|
|
+
|
|
|
+ var handler = function handler() {
|
|
|
+ clearTimeout(_this4.timeoutId_);
|
|
|
+ _this4.adapter_.deregisterTransitionEndHandler(handler);
|
|
|
+ _this4.adapter_.removeClass(MULTILINE);
|
|
|
+ _this4.adapter_.removeClass(ACTION_ON_BOTTOM);
|
|
|
+ _this4.setActionHidden_(true);
|
|
|
+ _this4.adapter_.setAriaHidden();
|
|
|
+ _this4.active_ = false;
|
|
|
+ _this4.snackbarHasFocus_ = false;
|
|
|
+ _this4.adapter_.notifyHide();
|
|
|
+ _this4.showNext_();
|
|
|
+ };
|
|
|
+
|
|
|
+ this.adapter_.registerTransitionEndHandler(handler);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'showNext_',
|
|
|
+ value: function showNext_() {
|
|
|
+ if (!this.queue_.length) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.show(this.queue_.shift());
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setActionHidden_',
|
|
|
+ value: function setActionHidden_(isHidden) {
|
|
|
+ if (isHidden) {
|
|
|
+ this.adapter_.setActionAriaHidden();
|
|
|
+ } else {
|
|
|
+ this.adapter_.unsetActionAriaHidden();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSnackbarFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCFoundation"]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSnackbarFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 127 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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 cssClasses = {
|
|
|
+ ROOT: 'mdc-snackbar',
|
|
|
+ TEXT: 'mdc-snackbar__text',
|
|
|
+ ACTION_WRAPPER: 'mdc-snackbar__action-wrapper',
|
|
|
+ ACTION_BUTTON: 'mdc-snackbar__action-button',
|
|
|
+ ACTIVE: 'mdc-snackbar--active',
|
|
|
+ MULTILINE: 'mdc-snackbar--multiline',
|
|
|
+ ACTION_ON_BOTTOM: 'mdc-snackbar--action-on-bottom'
|
|
|
+};
|
|
|
+
|
|
|
+var strings = {
|
|
|
+ TEXT_SELECTOR: '.mdc-snackbar__text',
|
|
|
+ ACTION_WRAPPER_SELECTOR: '.mdc-snackbar__action-wrapper',
|
|
|
+ ACTION_BUTTON_SELECTOR: '.mdc-snackbar__action-button',
|
|
|
+ SHOW_EVENT: 'MDCSnackbar:show',
|
|
|
+ HIDE_EVENT: 'MDCSnackbar:hide'
|
|
|
+};
|
|
|
+
|
|
|
+var numbers = {
|
|
|
+ MESSAGE_TIMEOUT: 2750
|
|
|
+};
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 128 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSwitch", function() { return MDCSwitch; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(4);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(129);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_util__ = __webpack_require__(6);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSwitchFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends MDCComponent<!MDCSwitchFoundation>
|
|
|
+ * @implements {MDCSelectionControl}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSwitch = function (_MDCComponent) {
|
|
|
+ _inherits(MDCSwitch, _MDCComponent);
|
|
|
+
|
|
|
+ _createClass(MDCSwitch, null, [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCSwitch(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSwitch() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCSwitch);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!MDCRipple} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCSwitch.__proto__ || Object.getPrototypeOf(MDCSwitch)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.ripple_ = _this.initRipple_();
|
|
|
+
|
|
|
+ /** @private {!Function} */
|
|
|
+ _this.changeHandler_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSwitch, [{
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCSwitch.prototype.__proto__ || Object.getPrototypeOf(MDCSwitch.prototype), 'destroy', this).call(this);
|
|
|
+ this.ripple_.destroy();
|
|
|
+ this.nativeControl_.removeEventListener('change', this.changeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ this.changeHandler_ = this.foundation_.handleChange.bind(this.foundation_);
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the state of the native control element, or null if the native control element is not present.
|
|
|
+ * @return {?MDCSelectionControlState}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initRipple_',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCRipple}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ value: function initRipple_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var RIPPLE_SURFACE_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.RIPPLE_SURFACE_SELECTOR;
|
|
|
+
|
|
|
+ var rippleSurface = /** @type {!Element} */this.root_.querySelector(RIPPLE_SURFACE_SELECTOR);
|
|
|
+
|
|
|
+ var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_4__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"].createAdapter(this), {
|
|
|
+ isUnbounded: function isUnbounded() {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return _this2.nativeControl_[MATCHES](':active');
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return rippleSurface.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return rippleSurface.classList.remove(className);
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this2.nativeControl_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this2.nativeControl_.removeEventListener(type, handler);
|
|
|
+ },
|
|
|
+ updateCssVariable: function updateCssVariable(varName, value) {
|
|
|
+ return rippleSurface.style.setProperty(varName, value);
|
|
|
+ },
|
|
|
+ computeBoundingRect: function computeBoundingRect() {
|
|
|
+ return rippleSurface.getBoundingClientRect();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"](this.root_, foundation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCSwitchFoundation} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setNativeControlChecked: function setNativeControlChecked(checked) {
|
|
|
+ return _this3.nativeControl_.checked = checked;
|
|
|
+ },
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled(disabled) {
|
|
|
+ return _this3.nativeControl_.disabled = disabled;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCRipple} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'nativeControl_',
|
|
|
+ get: function get() {
|
|
|
+ var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
|
|
|
+
|
|
|
+ var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
|
|
|
+ return el;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'ripple',
|
|
|
+ get: function get() {
|
|
|
+ return this.ripple_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'checked',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeControl_.checked;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} checked */
|
|
|
+ ,
|
|
|
+ set: function set(checked) {
|
|
|
+ this.foundation_.setChecked(checked);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.nativeControl_.disabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSwitch;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 129 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(130);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(131);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCSwitchAdapter>}
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSwitchFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCSwitchFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCSwitchFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {!MDCSwitchAdapter} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCSwitchAdapter} */{
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ setNativeControlChecked: function setNativeControlChecked() /* checked: boolean */{},
|
|
|
+ setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCSwitchFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCSwitchFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSwitchFoundation.__proto__ || Object.getPrototypeOf(MDCSwitchFoundation)).call(this, _extends(MDCSwitchFoundation.defaultAdapter, adapter)));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} checked */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCSwitchFoundation, [{
|
|
|
+ key: 'setChecked',
|
|
|
+ value: function setChecked(checked) {
|
|
|
+ this.adapter_.setNativeControlChecked(checked);
|
|
|
+ this.updateCheckedStyling_(checked);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(disabled) {
|
|
|
+ this.adapter_.setNativeControlDisabled(disabled);
|
|
|
+ if (disabled) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].DISABLED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles the change event for the switch native control.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleChange',
|
|
|
+ value: function handleChange(evt) {
|
|
|
+ this.updateCheckedStyling_(evt.target.checked);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates the styling of the switch based on its checked state.
|
|
|
+ * @param {boolean} checked
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'updateCheckedStyling_',
|
|
|
+ value: function updateCheckedStyling_(checked) {
|
|
|
+ if (checked) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKED);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSwitchFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSwitchFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 130 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/* eslint no-unused-vars: [2, {"args": "none"}] */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Adapter for MDC Switch. Provides an interface for managing
|
|
|
+ * - classes
|
|
|
+ * - dom
|
|
|
+ *
|
|
|
+ * Additionally, provides type information for the adapter to the Closure
|
|
|
+ * compiler.
|
|
|
+ *
|
|
|
+ * Implement this adapter for your framework of choice to delegate updates to
|
|
|
+ * the component in your framework of choice. See architecture documentation
|
|
|
+ * for more details.
|
|
|
+ * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
|
|
|
+ *
|
|
|
+ * @record
|
|
|
+ */
|
|
|
+var MDCSwitchAdapter = function () {
|
|
|
+ function MDCSwitchAdapter() {
|
|
|
+ _classCallCheck(this, MDCSwitchAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSwitchAdapter, [{
|
|
|
+ key: "addClass",
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+ value: function addClass(className) {}
|
|
|
+
|
|
|
+ /** @param {string} className */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "removeClass",
|
|
|
+ value: function removeClass(className) {}
|
|
|
+
|
|
|
+ /** @param {boolean} checked */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setNativeControlChecked",
|
|
|
+ value: function setNativeControlChecked(checked) {}
|
|
|
+
|
|
|
+ /** @param {boolean} disabled */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: "setNativeControlDisabled",
|
|
|
+ value: function setNativeControlDisabled(disabled) {}
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSwitchAdapter;
|
|
|
+}();
|
|
|
+
|
|
|
+/* unused harmony default export */ var _unused_webpack_default_export = (MDCSwitchAdapter);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 131 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ CHECKED: 'mdc-switch--checked',
|
|
|
+ DISABLED: 'mdc-switch--disabled'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',
|
|
|
+ RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 132 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ACTIVE: 'mdc-tab-indicator--active',
|
|
|
+ FADE: 'mdc-tab-indicator--fade',
|
|
|
+ NO_TRANSITION: 'mdc-tab-indicator--no-transition'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ CONTENT_SELECTOR: '.mdc-tab-indicator__content'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 133 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(26);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTabIndicatorFoundation}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCSlidingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {
|
|
|
+ _inherits(MDCSlidingTabIndicatorFoundation, _MDCTabIndicatorFound);
|
|
|
+
|
|
|
+ function MDCSlidingTabIndicatorFoundation() {
|
|
|
+ _classCallCheck(this, MDCSlidingTabIndicatorFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCSlidingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCSlidingTabIndicatorFoundation)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCSlidingTabIndicatorFoundation, [{
|
|
|
+ key: 'activate',
|
|
|
+
|
|
|
+ /** @param {!ClientRect=} previousIndicatorClientRect */
|
|
|
+ value: function activate(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(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].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(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].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(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.NO_TRANSITION);
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
|
|
|
+ this.adapter_.setContentStyleProperty('transform', '');
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCSlidingTabIndicatorFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCSlidingTabIndicatorFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 134 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(26);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTabIndicatorFoundation}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFadingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {
|
|
|
+ _inherits(MDCFadingTabIndicatorFoundation, _MDCTabIndicatorFound);
|
|
|
+
|
|
|
+ function MDCFadingTabIndicatorFoundation() {
|
|
|
+ _classCallCheck(this, MDCFadingTabIndicatorFoundation);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCFadingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCFadingTabIndicatorFoundation)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFadingTabIndicatorFoundation, [{
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate() {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFadingTabIndicatorFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCFadingTabIndicatorFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 135 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(10);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(136);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTabAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTabFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTabFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @see MDCTabAdapter for typing information
|
|
|
+ * @return {!MDCTabAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTabAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ setAttr: function setAttr() {},
|
|
|
+ activateIndicator: function activateIndicator() {},
|
|
|
+ deactivateIndicator: function deactivateIndicator() {},
|
|
|
+ notifyInteracted: function notifyInteracted() {},
|
|
|
+ getOffsetLeft: function getOffsetLeft() {},
|
|
|
+ getOffsetWidth: function getOffsetWidth() {},
|
|
|
+ getContentOffsetLeft: function getContentOffsetLeft() {},
|
|
|
+ getContentOffsetWidth: function getContentOffsetWidth() {},
|
|
|
+ focus: function focus() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {!MDCTabAdapter} adapter */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTabFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTabFoundation.__proto__ || Object.getPrototypeOf(MDCTabFoundation)).call(this, _extends(MDCTabFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.focusOnActivate_ = true;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles the "click" event
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTabFoundation, [{
|
|
|
+ key: 'handleClick',
|
|
|
+ value: function handleClick() {
|
|
|
+ // 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the Tab's active state
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isActive',
|
|
|
+ value: function isActive() {
|
|
|
+ return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets whether the tab should focus itself when activated
|
|
|
+ * @param {boolean} focusOnActivate
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setFocusOnActivate',
|
|
|
+ value: function setFocusOnActivate(focusOnActivate) {
|
|
|
+ this.focusOnActivate_ = focusOnActivate;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the Tab
|
|
|
+ * @param {!ClientRect=} previousIndicatorClientRect
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activate',
|
|
|
+ value: function activate(previousIndicatorClientRect) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'true');
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].TABINDEX, '0');
|
|
|
+ this.adapter_.activateIndicator(previousIndicatorClientRect);
|
|
|
+ if (this.focusOnActivate_) {
|
|
|
+ this.adapter_.focus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the Tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivate',
|
|
|
+ value: function deactivate() {
|
|
|
+ // Early exit
|
|
|
+ if (!this.isActive()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'false');
|
|
|
+ this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].TABINDEX, '-1');
|
|
|
+ this.adapter_.deactivateIndicator();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the dimensions of the Tab
|
|
|
+ * @return {!MDCTabDimensions}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeDimensions',
|
|
|
+ value: function computeDimensions() {
|
|
|
+ var rootWidth = this.adapter_.getOffsetWidth();
|
|
|
+ var rootLeft = this.adapter_.getOffsetLeft();
|
|
|
+ var contentWidth = this.adapter_.getContentOffsetWidth();
|
|
|
+ var contentLeft = this.adapter_.getContentOffsetLeft();
|
|
|
+
|
|
|
+ return {
|
|
|
+ rootLeft: rootLeft,
|
|
|
+ rootRight: rootLeft + rootWidth,
|
|
|
+ contentLeft: rootLeft + contentLeft,
|
|
|
+ contentRight: rootLeft + contentLeft + contentWidth
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 136 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ ACTIVE: 'mdc-tab--active'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_SELECTED: 'aria-selected',
|
|
|
+ RIPPLE_SELECTOR: '.mdc-tab__ripple',
|
|
|
+ CONTENT_SELECTOR: '.mdc-tab__content',
|
|
|
+ TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator',
|
|
|
+ TABINDEX: 'tabIndex',
|
|
|
+ INTERACTED_EVENT: 'MDCTab:interacted'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 137 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabBar", function() { return MDCTabBar; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_tab_index__ = __webpack_require__(25);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__ = __webpack_require__(56);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(58);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(143);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTabBarFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabBar = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTabBar, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCTabBar() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTabBar);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {!Array<!MDCTab>} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTabBar.__proto__ || Object.getPrototypeOf(MDCTabBar)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.tabList_;
|
|
|
+
|
|
|
+ /** @type {(function(!Element): !MDCTab)} */
|
|
|
+ _this.tabFactory_;
|
|
|
+
|
|
|
+ /** @private {?MDCTabScroller} */
|
|
|
+ _this.tabScroller_;
|
|
|
+
|
|
|
+ /** @type {(function(!Element): !MDCTabScroller)} */
|
|
|
+ _this.tabScrollerFactory_;
|
|
|
+
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleTabInteraction_;
|
|
|
+
|
|
|
+ /** @private {?function(?Event): undefined} */
|
|
|
+ _this.handleKeyDown_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTabBar}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTabBar, [{
|
|
|
+ key: 'initialize',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {(function(!Element): !MDCTab)=} tabFactory A function which creates a new MDCTab
|
|
|
+ * @param {(function(!Element): !MDCTabScroller)=} tabScrollerFactory A function which creates a new MDCTabScroller
|
|
|
+ */
|
|
|
+ value: function initialize() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var tabFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTab"](el);
|
|
|
+ };
|
|
|
+ var tabScrollerFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__["MDCTabScroller"](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.tabFactory_ = tabFactory;
|
|
|
+ this.tabScrollerFactory_ = tabScrollerFactory;
|
|
|
+
|
|
|
+ this.tabList_ = this.getTabElements_().map(function (el) {
|
|
|
+ return _this2.tabFactory_(el);
|
|
|
+ });
|
|
|
+
|
|
|
+ var tabScrollerElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_SCROLLER_SELECTOR);
|
|
|
+ if (tabScrollerElement) {
|
|
|
+ this.tabScroller_ = this.tabScrollerFactory_(tabScrollerElement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDOM',
|
|
|
+ value: function initialSyncWithDOM() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ this.handleTabInteraction_ = function (evt) {
|
|
|
+ return _this3.foundation_.handleTabInteraction(evt);
|
|
|
+ };
|
|
|
+ this.handleKeyDown_ = function (evt) {
|
|
|
+ return _this3.foundation_.handleKeyDown(evt);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTabFoundation"].strings.INTERACTED_EVENT, this.handleTabInteraction_);
|
|
|
+ this.root_.addEventListener('keydown', this.handleKeyDown_);
|
|
|
+
|
|
|
+ for (var i = 0; i < this.tabList_.length; i++) {
|
|
|
+ if (this.tabList_[i].active) {
|
|
|
+ this.scrollIntoView(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCTabBar.prototype.__proto__ || Object.getPrototypeOf(MDCTabBar.prototype), 'destroy', this).call(this);
|
|
|
+ this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTabFoundation"].strings.INTERACTED_EVENT, this.handleTabInteraction_);
|
|
|
+ this.root_.removeEventListener('keydown', this.handleKeyDown_);
|
|
|
+ this.tabList_.forEach(function (tab) {
|
|
|
+ return tab.destroy();
|
|
|
+ });
|
|
|
+ this.tabScroller_.destroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabBarFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */](
|
|
|
+ /** @type {!MDCTabBarAdapter} */{
|
|
|
+ scrollTo: function scrollTo(scrollX) {
|
|
|
+ return _this4.tabScroller_.scrollTo(scrollX);
|
|
|
+ },
|
|
|
+ incrementScroll: function incrementScroll(scrollXIncrement) {
|
|
|
+ return _this4.tabScroller_.incrementScroll(scrollXIncrement);
|
|
|
+ },
|
|
|
+ getScrollPosition: function getScrollPosition() {
|
|
|
+ return _this4.tabScroller_.getScrollPosition();
|
|
|
+ },
|
|
|
+ getScrollContentWidth: function getScrollContentWidth() {
|
|
|
+ return _this4.tabScroller_.getScrollContentWidth();
|
|
|
+ },
|
|
|
+ getOffsetWidth: function getOffsetWidth() {
|
|
|
+ return _this4.root_.offsetWidth;
|
|
|
+ },
|
|
|
+ isRTL: function isRTL() {
|
|
|
+ return window.getComputedStyle(_this4.root_).getPropertyValue('direction') === 'rtl';
|
|
|
+ },
|
|
|
+ setActiveTab: function setActiveTab(index) {
|
|
|
+ return _this4.foundation_.activateTab(index);
|
|
|
+ },
|
|
|
+ activateTabAtIndex: function activateTabAtIndex(index, clientRect) {
|
|
|
+ return _this4.tabList_[index].activate(clientRect);
|
|
|
+ },
|
|
|
+ deactivateTabAtIndex: function deactivateTabAtIndex(index) {
|
|
|
+ return _this4.tabList_[index].deactivate();
|
|
|
+ },
|
|
|
+ focusTabAtIndex: function focusTabAtIndex(index) {
|
|
|
+ return _this4.tabList_[index].focus();
|
|
|
+ },
|
|
|
+ getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) {
|
|
|
+ return _this4.tabList_[index].computeIndicatorClientRect();
|
|
|
+ },
|
|
|
+ getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) {
|
|
|
+ return _this4.tabList_[index].computeDimensions();
|
|
|
+ },
|
|
|
+ getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {
|
|
|
+ for (var i = 0; i < _this4.tabList_.length; i++) {
|
|
|
+ if (_this4.tabList_[i].active) {
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ },
|
|
|
+ getFocusedTabIndex: function getFocusedTabIndex() {
|
|
|
+ var tabElements = _this4.getTabElements_();
|
|
|
+ var activeElement = document.activeElement;
|
|
|
+ return tabElements.indexOf(activeElement);
|
|
|
+ },
|
|
|
+ getIndexOfTab: function getIndexOfTab(tabToFind) {
|
|
|
+ return _this4.tabList_.indexOf(tabToFind);
|
|
|
+ },
|
|
|
+ getTabListLength: function getTabListLength() {
|
|
|
+ return _this4.tabList_.length;
|
|
|
+ },
|
|
|
+ notifyTabActivated: function notifyTabActivated(index) {
|
|
|
+ return _this4.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_ACTIVATED_EVENT, { index: index }, true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the tab at the given index
|
|
|
+ * @param {number} index The index of the tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateTab',
|
|
|
+ value: function activateTab(index) {
|
|
|
+ this.foundation_.activateTab(index);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scrolls the tab at the given index into view
|
|
|
+ * @param {number} index THe index of the tab
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollIntoView',
|
|
|
+ value: function scrollIntoView(index) {
|
|
|
+ this.foundation_.scrollIntoView(index);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getTabElements_',
|
|
|
+ value: function getTabElements_() {
|
|
|
+ return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_SELECTOR));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'focusOnActivate',
|
|
|
+ set: function set(focusOnActivate) {
|
|
|
+ this.tabList_.forEach(function (tab) {
|
|
|
+ return tab.focusOnActivate = focusOnActivate;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'useAutomaticActivation',
|
|
|
+ set: function set(useAutomaticActivation) {
|
|
|
+ this.foundation_.setUseAutomaticActivation(useAutomaticActivation);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTabBar(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabBar;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 138 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(57);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(5);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__rtl_scroller__ = __webpack_require__(11);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__ = __webpack_require__(139);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__ = __webpack_require__(140);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__ = __webpack_require__(141);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTabScrollerAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTabScrollerFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @see MDCTabScrollerAdapter for typing information
|
|
|
+ * @return {!MDCTabScrollerAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTabScrollerAdapter} */{
|
|
|
+ eventTargetMatchesSelector: function eventTargetMatchesSelector() {},
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ addScrollAreaClass: function addScrollAreaClass() {},
|
|
|
+ setScrollAreaStyleProperty: function setScrollAreaStyleProperty() {},
|
|
|
+ setScrollContentStyleProperty: function setScrollContentStyleProperty() {},
|
|
|
+ getScrollContentStyleValue: function getScrollContentStyleValue() {},
|
|
|
+ setScrollAreaScrollLeft: function setScrollAreaScrollLeft() {},
|
|
|
+ getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {},
|
|
|
+ getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {},
|
|
|
+ getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {},
|
|
|
+ computeScrollAreaClientRect: function computeScrollAreaClientRect() {},
|
|
|
+ computeScrollContentClientRect: function computeScrollContentClientRect() {},
|
|
|
+ computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @param {!MDCTabScrollerAdapter} adapter */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabScrollerFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTabScrollerFoundation);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This boolean controls whether we should handle the transitionend and interaction events during the animation.
|
|
|
+ * @private {boolean}
|
|
|
+ */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTabScrollerFoundation.__proto__ || Object.getPrototypeOf(MDCTabScrollerFoundation)).call(this, _extends(MDCTabScrollerFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.isAnimating_ = false;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * The MDCTabScrollerRTL instance varies per browser and allows us to encapsulate the peculiar browser behavior
|
|
|
+ * of RTL scrolling in it's own class.
|
|
|
+ * @private {?MDCTabScrollerRTL}
|
|
|
+ */
|
|
|
+ _this.rtlScrollerInstance_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ // 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
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getScrollPosition',
|
|
|
+ value: function getScrollPosition() {
|
|
|
+ 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
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleInteraction',
|
|
|
+ value: function handleInteraction() {
|
|
|
+ // 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
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTransitionEnd',
|
|
|
+ value: function handleTransitionEnd(evt) {
|
|
|
+ // Early exit if we aren't animating or the event was triggered by a different element.
|
|
|
+ if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evt.target, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.isAnimating_ = false;
|
|
|
+ this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Increment the scroll value by the scrollXIncrement
|
|
|
+ * @param {number} scrollXIncrement The value by which to increment the scroll position
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScroll',
|
|
|
+ value: function incrementScroll(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
|
|
|
+ * @param {number} scrollX
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollTo',
|
|
|
+ value: function scrollTo(scrollX) {
|
|
|
+ if (this.isRTL_()) {
|
|
|
+ return this.scrollToRTL_(scrollX);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.scrollTo_(scrollX);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the appropriate version of the MDCTabScrollerRTL
|
|
|
+ * @return {!MDCTabScrollerRTL}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getRTLScroller',
|
|
|
+ value: function getRTLScroller() {
|
|
|
+ if (!this.rtlScrollerInstance_) {
|
|
|
+ this.rtlScrollerInstance_ = this.rtlScrollerFactory_();
|
|
|
+ }
|
|
|
+
|
|
|
+ return this.rtlScrollerInstance_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the translateX value from a CSS matrix transform function string
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateCurrentTranslateX_',
|
|
|
+ value: function calculateCurrentTranslateX_() {
|
|
|
+ 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 results = /\((.+)\)/.exec(transformValue)[1];
|
|
|
+ var parts = results.split(',');
|
|
|
+ return parseFloat(parts[4]);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Calculates a safe scroll value that is > 0 and < the max scroll value
|
|
|
+ * @param {number} scrollX The distance to scroll
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'clampScrollValue_',
|
|
|
+ value: function clampScrollValue_(scrollX) {
|
|
|
+ var edges = this.calculateScrollEdges_();
|
|
|
+ return Math.min(Math.max(edges.left, scrollX), edges.right);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'computeCurrentScrollPositionRTL_',
|
|
|
+ value: function computeCurrentScrollPositionRTL_() {
|
|
|
+ var translateX = this.calculateCurrentTranslateX_();
|
|
|
+ return this.getRTLScroller().getScrollPositionRTL(translateX);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabScrollerHorizontalEdges}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollEdges_',
|
|
|
+ value: function calculateScrollEdges_() {
|
|
|
+ var contentWidth = this.adapter_.getScrollContentOffsetWidth();
|
|
|
+ var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
|
|
|
+ return (/** @type {!MDCTabScrollerHorizontalEdges} */{
|
|
|
+ left: 0,
|
|
|
+ right: contentWidth - rootWidth
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Internal scroll method
|
|
|
+ * @param {number} scrollX The new scroll position
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollTo_',
|
|
|
+ value: function scrollTo_(scrollX) {
|
|
|
+ var currentScrollX = this.getScrollPosition();
|
|
|
+ var safeScrollX = this.clampScrollValue_(scrollX);
|
|
|
+ var scrollDelta = safeScrollX - currentScrollX;
|
|
|
+ this.animate_( /** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: safeScrollX,
|
|
|
+ scrollDelta: scrollDelta
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Internal RTL scroll method
|
|
|
+ * @param {number} scrollX The new scroll position
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollToRTL_',
|
|
|
+ value: function scrollToRTL_(scrollX) {
|
|
|
+ var animation = this.getRTLScroller().scrollToRTL(scrollX);
|
|
|
+ this.animate_(animation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Internal increment scroll method
|
|
|
+ * @param {number} scrollX The new scroll position increment
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScroll_',
|
|
|
+ value: function incrementScroll_(scrollX) {
|
|
|
+ var currentScrollX = this.getScrollPosition();
|
|
|
+ var targetScrollX = scrollX + currentScrollX;
|
|
|
+ var safeScrollX = this.clampScrollValue_(targetScrollX);
|
|
|
+ var scrollDelta = safeScrollX - currentScrollX;
|
|
|
+ this.animate_( /** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: safeScrollX,
|
|
|
+ scrollDelta: scrollDelta
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Internal incremenet scroll RTL method
|
|
|
+ * @param {number} scrollX The new scroll position RTL increment
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScrollRTL_',
|
|
|
+ value: function incrementScrollRTL_(scrollX) {
|
|
|
+ var animation = this.getRTLScroller().incrementScrollRTL(scrollX);
|
|
|
+ this.animate_(animation);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Animates the tab scrolling
|
|
|
+ * @param {!MDCTabScrollerAnimation} animation The animation to apply
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'animate_',
|
|
|
+ value: function animate_(animation) {
|
|
|
+ var _this2 = 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 () {
|
|
|
+ _this2.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
|
|
|
+ _this2.adapter_.setScrollContentStyleProperty('transform', 'none');
|
|
|
+ });
|
|
|
+
|
|
|
+ this.isAnimating_ = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Stops scroll animation
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'stopScrollAnimation_',
|
|
|
+ value: function stopScrollAnimation_() {
|
|
|
+ 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
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAnimatingScrollPosition_',
|
|
|
+ value: function getAnimatingScrollPosition_() {
|
|
|
+ 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
|
|
|
+ * @return {!MDCTabScrollerRTL}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'rtlScrollerFactory_',
|
|
|
+ value: function rtlScrollerFactory_() {
|
|
|
+ // 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 __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__["a" /* default */](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 __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__["a" /* default */](this.adapter_);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__["a" /* default */](this.adapter_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isRTL_',
|
|
|
+ value: function isRTL_() {
|
|
|
+ return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 139 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(5);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTabScrollerRTL}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerRTLDefault = function (_MDCTabScrollerRTL) {
|
|
|
+ _inherits(MDCTabScrollerRTLDefault, _MDCTabScrollerRTL);
|
|
|
+
|
|
|
+ function MDCTabScrollerRTLDefault() {
|
|
|
+ _classCallCheck(this, MDCTabScrollerRTLDefault);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTabScrollerRTLDefault.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLDefault)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerRTLDefault, [{
|
|
|
+ key: 'getScrollPositionRTL',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+ value: function getScrollPositionRTL() {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+
|
|
|
+ var _calculateScrollEdges = this.calculateScrollEdges_(),
|
|
|
+ right = _calculateScrollEdges.right;
|
|
|
+ // Scroll values on most browsers are ints instead of floats so we round
|
|
|
+
|
|
|
+
|
|
|
+ return Math.round(right - currentScrollLeft);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollToRTL',
|
|
|
+ value: function scrollToRTL(scrollX) {
|
|
|
+ var edges = this.calculateScrollEdges_();
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: clampedScrollLeft - currentScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScrollRTL',
|
|
|
+ value: function incrementScrollRTL(scrollX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: clampedScrollLeft - currentScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAnimatingScrollPosition',
|
|
|
+ value: function getAnimatingScrollPosition(scrollX) {
|
|
|
+ return scrollX;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabScrollerHorizontalEdges}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollEdges_',
|
|
|
+ value: function calculateScrollEdges_() {
|
|
|
+ var contentWidth = this.adapter_.getScrollContentOffsetWidth();
|
|
|
+ var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
|
|
|
+ return (/** @type {!MDCTabScrollerHorizontalEdges} */{
|
|
|
+ left: 0,
|
|
|
+ right: contentWidth - rootWidth
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'clampScrollValue_',
|
|
|
+ value: function clampScrollValue_(scrollX) {
|
|
|
+ var edges = this.calculateScrollEdges_();
|
|
|
+ return Math.min(Math.max(edges.left, scrollX), edges.right);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerRTLDefault;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLDefault);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 140 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(5);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTabScrollerRTL}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerRTLNegative = function (_MDCTabScrollerRTL) {
|
|
|
+ _inherits(MDCTabScrollerRTLNegative, _MDCTabScrollerRTL);
|
|
|
+
|
|
|
+ function MDCTabScrollerRTLNegative() {
|
|
|
+ _classCallCheck(this, MDCTabScrollerRTLNegative);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTabScrollerRTLNegative.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLNegative)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerRTLNegative, [{
|
|
|
+ key: 'getScrollPositionRTL',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} translateX The current translateX position
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+ value: function getScrollPositionRTL(translateX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ return Math.round(translateX - currentScrollLeft);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollToRTL',
|
|
|
+ value: function scrollToRTL(scrollX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(-scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: clampedScrollLeft - currentScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScrollRTL',
|
|
|
+ value: function incrementScrollRTL(scrollX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: clampedScrollLeft - currentScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @param {number} translateX
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAnimatingScrollPosition',
|
|
|
+ value: function getAnimatingScrollPosition(scrollX, translateX) {
|
|
|
+ return scrollX - translateX;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabScrollerHorizontalEdges}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollEdges_',
|
|
|
+ value: function calculateScrollEdges_() {
|
|
|
+ var contentWidth = this.adapter_.getScrollContentOffsetWidth();
|
|
|
+ var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
|
|
|
+ return (/** @type {!MDCTabScrollerHorizontalEdges} */{
|
|
|
+ left: rootWidth - contentWidth,
|
|
|
+ right: 0
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'clampScrollValue_',
|
|
|
+ value: function clampScrollValue_(scrollX) {
|
|
|
+ var edges = this.calculateScrollEdges_();
|
|
|
+ return Math.max(Math.min(edges.right, scrollX), edges.left);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerRTLNegative;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLNegative);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 141 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(5);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTabScrollerRTL}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabScrollerRTLReverse = function (_MDCTabScrollerRTL) {
|
|
|
+ _inherits(MDCTabScrollerRTLReverse, _MDCTabScrollerRTL);
|
|
|
+
|
|
|
+ function MDCTabScrollerRTLReverse() {
|
|
|
+ _classCallCheck(this, MDCTabScrollerRTLReverse);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTabScrollerRTLReverse.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLReverse)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTabScrollerRTLReverse, [{
|
|
|
+ key: 'getScrollPositionRTL',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} translateX
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+ value: function getScrollPositionRTL(translateX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ // Scroll values on most browsers are ints instead of floats so we round
|
|
|
+ return Math.round(currentScrollLeft - translateX);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollToRTL',
|
|
|
+ value: function scrollToRTL(scrollX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: currentScrollLeft - clampedScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {!MDCTabScrollerAnimation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'incrementScrollRTL',
|
|
|
+ value: function incrementScrollRTL(scrollX) {
|
|
|
+ var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
|
|
|
+ var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);
|
|
|
+ return (/** @type {!MDCTabScrollerAnimation} */{
|
|
|
+ finalScrollPosition: clampedScrollLeft,
|
|
|
+ scrollDelta: currentScrollLeft - clampedScrollLeft
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getAnimatingScrollPosition',
|
|
|
+ value: function getAnimatingScrollPosition(scrollX, translateX) {
|
|
|
+ return scrollX + translateX;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTabScrollerHorizontalEdges}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollEdges_',
|
|
|
+ value: function calculateScrollEdges_() {
|
|
|
+ var contentWidth = this.adapter_.getScrollContentOffsetWidth();
|
|
|
+ var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
|
|
|
+ return (/** @type {!MDCTabScrollerHorizontalEdges} */{
|
|
|
+ left: contentWidth - rootWidth,
|
|
|
+ right: 0
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} scrollX
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'clampScrollValue_',
|
|
|
+ value: function clampScrollValue_(scrollX) {
|
|
|
+ var edges = this.calculateScrollEdges_();
|
|
|
+ return Math.min(Math.max(edges.right, scrollX), edges.left);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTabScrollerRTLReverse;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLReverse);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 142 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "computeHorizontalScrollbarHeight", function() { return computeHorizontalScrollbarHeight; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMatchesProperty", function() { return getMatchesProperty; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(57);
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.
|
|
|
+ * @private {number|undefined}
|
|
|
+ */
|
|
|
+var horizontalScrollbarHeight_ = void 0;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 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).
|
|
|
+ * @param {!Document} documentObj
|
|
|
+ * @param {boolean=} shouldCacheResult
|
|
|
+ * @return {number}
|
|
|
+ */
|
|
|
+function computeHorizontalScrollbarHeight(documentObj) {
|
|
|
+ var shouldCacheResult = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
|
+
|
|
|
+ if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {
|
|
|
+ return horizontalScrollbarHeight_;
|
|
|
+ }
|
|
|
+
|
|
|
+ var el = documentObj.createElement('div');
|
|
|
+ el.classList.add(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].SCROLL_TEST);
|
|
|
+ documentObj.body.appendChild(el);
|
|
|
+
|
|
|
+ var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;
|
|
|
+ documentObj.body.removeChild(el);
|
|
|
+
|
|
|
+ if (shouldCacheResult) {
|
|
|
+ horizontalScrollbarHeight_ = horizontalScrollbarHeight;
|
|
|
+ }
|
|
|
+ return horizontalScrollbarHeight;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @param {!Object} HTMLElementPrototype
|
|
|
+ * @return {!Array<string>}
|
|
|
+ */
|
|
|
+function getMatchesProperty(HTMLElementPrototype) {
|
|
|
+ return ['msMatchesSelector', 'matches'].filter(function (p) {
|
|
|
+ return p in HTMLElementPrototype;
|
|
|
+ }).pop();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 143 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(144);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(58);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_tab_adapter__ = __webpack_require__(10);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @type {Set<string>}
|
|
|
+ */
|
|
|
+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(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY);
|
|
|
+ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY);
|
|
|
+ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY);
|
|
|
+ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].HOME_KEY);
|
|
|
+ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY);
|
|
|
+ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @type {Map<number, string>}
|
|
|
+ */
|
|
|
+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(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ARROW_LEFT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY);
|
|
|
+KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ARROW_RIGHT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY);
|
|
|
+KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].END_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY);
|
|
|
+KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].HOME_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].HOME_KEY);
|
|
|
+KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ENTER_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY);
|
|
|
+KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].SPACE_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTabBarAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTabBarFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTabBarFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTabBarFoundation, null, [{
|
|
|
+ key: 'strings',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {number} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @see MDCTabBarAdapter for typing information
|
|
|
+ * @return {!MDCTabBarAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTabBarAdapter} */{
|
|
|
+ scrollTo: function scrollTo() {},
|
|
|
+ incrementScroll: function incrementScroll() {},
|
|
|
+ getScrollPosition: function getScrollPosition() {},
|
|
|
+ getScrollContentWidth: function getScrollContentWidth() {},
|
|
|
+ getOffsetWidth: function getOffsetWidth() {},
|
|
|
+ isRTL: function isRTL() {},
|
|
|
+ setActiveTab: function setActiveTab() {},
|
|
|
+ activateTabAtIndex: function activateTabAtIndex() {},
|
|
|
+ deactivateTabAtIndex: function deactivateTabAtIndex() {},
|
|
|
+ focusTabAtIndex: function focusTabAtIndex() {},
|
|
|
+ getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() {},
|
|
|
+ getTabDimensionsAtIndex: function getTabDimensionsAtIndex() {},
|
|
|
+ getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {},
|
|
|
+ getFocusedTabIndex: function getFocusedTabIndex() {},
|
|
|
+ getIndexOfTab: function getIndexOfTab() {},
|
|
|
+ getTabListLength: function getTabListLength() {},
|
|
|
+ notifyTabActivated: function notifyTabActivated() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTabBarAdapter} adapter
|
|
|
+ * */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTabBarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTabBarFoundation);
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTabBarFoundation.__proto__ || Object.getPrototypeOf(MDCTabBarFoundation)).call(this, _extends(MDCTabBarFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.useAutomaticActivation_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Switches between automatic and manual activation modes.
|
|
|
+ * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples.
|
|
|
+ * @param {boolean} useAutomaticActivation
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTabBarFoundation, [{
|
|
|
+ key: 'setUseAutomaticActivation',
|
|
|
+ value: function setUseAutomaticActivation(useAutomaticActivation) {
|
|
|
+ this.useAutomaticActivation_ = useAutomaticActivation;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the tab at the given index
|
|
|
+ * @param {number} index
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateTab',
|
|
|
+ value: function activateTab(index) {
|
|
|
+ var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();
|
|
|
+ if (!this.indexIsInRange_(index) || index === previousActiveIndex) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.deactivateTabAtIndex(previousActiveIndex);
|
|
|
+ this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));
|
|
|
+ this.scrollIntoView(index);
|
|
|
+
|
|
|
+ this.adapter_.notifyTabActivated(index);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles the keydown event
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleKeyDown',
|
|
|
+ value: function handleKeyDown(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
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTabInteraction',
|
|
|
+ value: function handleTabInteraction(evt) {
|
|
|
+ this.adapter_.setActiveTab(this.adapter_.getIndexOfTab(evt.detail.tab));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scrolls the tab at the given index into view
|
|
|
+ * @param {number} index The tab index to make visible
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollIntoView',
|
|
|
+ value: function scrollIntoView(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 {number} origin The original index from which to determine the destination
|
|
|
+ * @param {string} key The name of the key
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'determineTargetFromKey_',
|
|
|
+ value: function determineTargetFromKey_(origin, key) {
|
|
|
+ var isRTL = this.isRTL_();
|
|
|
+ var maxIndex = this.adapter_.getTabListLength() - 1;
|
|
|
+ var shouldGoToEnd = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY;
|
|
|
+ var shouldDecrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY && isRTL;
|
|
|
+ var shouldIncrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* 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 {number} index The index of the tab
|
|
|
+ * @param {number} nextIndex The index of the next tab
|
|
|
+ * @param {number} scrollPosition The current scroll position
|
|
|
+ * @param {number} barWidth The width of the Tab Bar
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollIncrement_',
|
|
|
+ value: function calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth) {
|
|
|
+ var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);
|
|
|
+ var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;
|
|
|
+ var relativeContentRight = nextTabDimensions.contentRight - scrollPosition;
|
|
|
+ var leftIncrement = relativeContentRight - __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
|
|
|
+ var rightIncrement = relativeContentLeft + __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* 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 {number} index The index of the tab
|
|
|
+ * @param {number} nextIndex The index of the next tab
|
|
|
+ * @param {number} scrollPosition The current scroll position
|
|
|
+ * @param {number} barWidth The width of the Tab Bar
|
|
|
+ * @param {number} scrollContentWidth The width of the scroll content
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'calculateScrollIncrementRTL_',
|
|
|
+ value: function calculateScrollIncrementRTL_(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 + __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
|
|
|
+ var rightIncrement = relativeContentLeft - __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* 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 {number} index The index of the tab
|
|
|
+ * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab
|
|
|
+ * @param {number} scrollPosition The current scroll position
|
|
|
+ * @param {number} barWidth The width of the tab bar
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'findAdjacentTabIndexClosestToEdge_',
|
|
|
+ value: function findAdjacentTabIndexClosestToEdge_(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 {number} index The index of the tab
|
|
|
+ * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab
|
|
|
+ * @param {number} scrollPosition The current scroll position
|
|
|
+ * @param {number} barWidth The width of the tab bar
|
|
|
+ * @param {number} scrollContentWidth The width of the scroller content
|
|
|
+ * @return {number}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'findAdjacentTabIndexClosestToEdgeRTL_',
|
|
|
+ value: function findAdjacentTabIndexClosestToEdgeRTL_(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 {!Event} evt The keydown event
|
|
|
+ * @return {string}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getKeyFromEvent_',
|
|
|
+ value: function getKeyFromEvent_(evt) {
|
|
|
+ if (ACCEPTABLE_KEYS.has(evt.key)) {
|
|
|
+ return evt.key;
|
|
|
+ }
|
|
|
+
|
|
|
+ return KEYCODE_MAP.get(evt.keyCode);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'isActivationKey_',
|
|
|
+ value: function isActivationKey_(key) {
|
|
|
+ return key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns whether a given index is inclusively between the ends
|
|
|
+ * @param {number} index The index to test
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'indexIsInRange_',
|
|
|
+ value: function indexIsInRange_(index) {
|
|
|
+ return index >= 0 && index < this.adapter_.getTabListLength();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the view's RTL property
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isRTL_',
|
|
|
+ value: function isRTL_() {
|
|
|
+ return this.adapter_.isRTL();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scrolls the tab at the given index into view for left-to-right useragents
|
|
|
+ * @param {number} index The index of the tab to scroll into view
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollIntoView_',
|
|
|
+ value: function scrollIntoView_(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 {number} index The tab index to make visible
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'scrollIntoViewRTL_',
|
|
|
+ value: function scrollIntoViewRTL_(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;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTabBarFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 144 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return numbers; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',
|
|
|
+ TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',
|
|
|
+ TAB_SELECTOR: '.mdc-tab',
|
|
|
+ ARROW_LEFT_KEY: 'ArrowLeft',
|
|
|
+ ARROW_RIGHT_KEY: 'ArrowRight',
|
|
|
+ END_KEY: 'End',
|
|
|
+ HOME_KEY: 'Home',
|
|
|
+ ENTER_KEY: 'Enter',
|
|
|
+ SPACE_KEY: 'Space'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {number} */
|
|
|
+var numbers = {
|
|
|
+ EXTRA_SCROLL_AMOUNT: 20,
|
|
|
+ ARROW_LEFT_KEYCODE: 37,
|
|
|
+ ARROW_RIGHT_KEYCODE: 39,
|
|
|
+ END_KEYCODE: 35,
|
|
|
+ HOME_KEYCODE: 36,
|
|
|
+ ENTER_KEYCODE: 13,
|
|
|
+ SPACE_KEYCODE: 32
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 145 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextField", function() { return MDCTextField; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_util__ = __webpack_require__(6);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(59);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__adapter__ = __webpack_require__(60);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__foundation__ = __webpack_require__(148);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__ = __webpack_require__(18);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helper_text_index__ = __webpack_require__(149);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__icon_index__ = __webpack_require__(150);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__material_floating_label_index__ = __webpack_require__(17);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_notched_outline_index__ = __webpack_require__(22);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldFoundation", function() { return __WEBPACK_IMPORTED_MODULE_5__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldHelperText", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldHelperTextFoundation", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["b"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldIcon", function() { return __WEBPACK_IMPORTED_MODULE_8__icon_index__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldIconFoundation", function() { return __WEBPACK_IMPORTED_MODULE_8__icon_index__["b"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTextFieldFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextField = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTextField, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCTextField() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTextField);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTextField.__proto__ || Object.getPrototypeOf(MDCTextField)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.input_;
|
|
|
+ /** @type {?MDCRipple} */
|
|
|
+ _this.ripple;
|
|
|
+ /** @private {?MDCLineRipple} */
|
|
|
+ _this.lineRipple_;
|
|
|
+ /** @private {?MDCTextFieldHelperText} */
|
|
|
+ _this.helperText_;
|
|
|
+ /** @private {?MDCTextFieldIcon} */
|
|
|
+ _this.leadingIcon_;
|
|
|
+ /** @private {?MDCTextFieldIcon} */
|
|
|
+ _this.trailingIcon_;
|
|
|
+ /** @private {?MDCFloatingLabel} */
|
|
|
+ _this.label_;
|
|
|
+ /** @private {?MDCNotchedOutline} */
|
|
|
+ _this.outline_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTextField}
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ _createClass(MDCTextField, [{
|
|
|
+ key: 'initialize',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {(function(!Element): !MDCRipple)=} rippleFactory A function which
|
|
|
+ * creates a new MDCRipple.
|
|
|
+ * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which
|
|
|
+ * creates a new MDCLineRipple.
|
|
|
+ * @param {(function(!Element): !MDCTextFieldHelperText)=} helperTextFactory A function which
|
|
|
+ * creates a new MDCTextFieldHelperText.
|
|
|
+ * @param {(function(!Element): !MDCTextFieldIcon)=} iconFactory A function which
|
|
|
+ * creates a new MDCTextFieldIcon.
|
|
|
+ * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which
|
|
|
+ * creates a new MDCFloatingLabel.
|
|
|
+ * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which
|
|
|
+ * creates a new MDCNotchedOutline.
|
|
|
+ */
|
|
|
+ value: function initialize() {
|
|
|
+ var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
|
|
|
+ };
|
|
|
+ var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__["MDCLineRipple"](el);
|
|
|
+ };
|
|
|
+ var helperTextFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["a" /* MDCTextFieldHelperText */](el);
|
|
|
+ };
|
|
|
+ var iconFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_8__icon_index__["a" /* MDCTextFieldIcon */](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ var labelFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_9__material_floating_label_index__["MDCFloatingLabel"](el);
|
|
|
+ };
|
|
|
+ var outlineFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_10__material_notched_outline_index__["MDCNotchedOutline"](el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.input_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
|
|
|
+ var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].LABEL_SELECTOR);
|
|
|
+ if (labelElement) {
|
|
|
+ this.label_ = labelFactory(labelElement);
|
|
|
+ }
|
|
|
+ var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].LINE_RIPPLE_SELECTOR);
|
|
|
+ if (lineRippleElement) {
|
|
|
+ this.lineRipple_ = lineRippleFactory(lineRippleElement);
|
|
|
+ }
|
|
|
+ var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].OUTLINE_SELECTOR);
|
|
|
+ if (outlineElement) {
|
|
|
+ this.outline_ = outlineFactory(outlineElement);
|
|
|
+ }
|
|
|
+ if (this.input_.hasAttribute(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].ARIA_CONTROLS)) {
|
|
|
+ var helperTextElement = document.getElementById(this.input_.getAttribute(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].ARIA_CONTROLS));
|
|
|
+ if (helperTextElement) {
|
|
|
+ this.helperText_ = helperTextFactory(helperTextElement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var iconElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* 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(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].WITH_LEADING_ICON)) {
|
|
|
+ this.leadingIcon_ = iconFactory(iconElements[0]);
|
|
|
+ } else {
|
|
|
+ this.trailingIcon_ = iconFactory(iconElements[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.ripple = null;
|
|
|
+ if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].TEXTAREA) && !this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].OUTLINED)) {
|
|
|
+ var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_2__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
|
|
|
+ var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter( /** @type {!RippleCapableSurface} */this), {
|
|
|
+ isSurfaceActive: function isSurfaceActive() {
|
|
|
+ return _this2.input_[MATCHES](':active');
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(type, handler) {
|
|
|
+ return _this2.input_.addEventListener(type, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
|
|
|
+ return _this2.input_.removeEventListener(type, handler);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var foundation = new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](adapter);
|
|
|
+ this.ripple = rippleFactory(this.root_, foundation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ if (this.ripple) {
|
|
|
+ this.ripple.destroy();
|
|
|
+ }
|
|
|
+ if (this.lineRipple_) {
|
|
|
+ this.lineRipple_.destroy();
|
|
|
+ }
|
|
|
+ if (this.helperText_) {
|
|
|
+ this.helperText_.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();
|
|
|
+ }
|
|
|
+ _get(MDCTextField.prototype.__proto__ || Object.getPrototypeOf(MDCTextField.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Initiliazes the Text Field's internal state based on the environment's
|
|
|
+ * state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'initialSyncWithDom',
|
|
|
+ value: function initialSyncWithDom() {
|
|
|
+ this.disabled = this.input_.disabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The value of the input.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'layout',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Recomputes the outline SVG path for the outline element.
|
|
|
+ */
|
|
|
+ value: function layout() {
|
|
|
+ var openNotch = this.foundation_.shouldFloat;
|
|
|
+ this.foundation_.notchOutline(openNotch);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTextFieldFoundation}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_5__foundation__["a" /* default */](
|
|
|
+ /** @type {!MDCTextFieldAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this3.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this3.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this3.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) {
|
|
|
+ return _this3.root_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) {
|
|
|
+ return _this3.root_.removeEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler(handler) {
|
|
|
+ var getAttributesList = function getAttributesList(mutationsList) {
|
|
|
+ return mutationsList.map(function (mutation) {
|
|
|
+ return mutation.attributeName;
|
|
|
+ });
|
|
|
+ };
|
|
|
+ var observer = new MutationObserver(function (mutationsList) {
|
|
|
+ return handler(getAttributesList(mutationsList));
|
|
|
+ });
|
|
|
+ var targetNode = _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
|
|
|
+ var config = { attributes: true };
|
|
|
+ observer.observe(targetNode, config);
|
|
|
+ return observer;
|
|
|
+ },
|
|
|
+ deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) {
|
|
|
+ return observer.disconnect();
|
|
|
+ },
|
|
|
+ isFocused: function isFocused() {
|
|
|
+ return document.activeElement === _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
|
|
|
+ },
|
|
|
+ isRtl: function isRtl() {
|
|
|
+ return window.getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';
|
|
|
+ }
|
|
|
+ }, this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_()), this.getFoundationMap_());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * shakeLabel: function(boolean): undefined,
|
|
|
+ * floatLabel: function(boolean): undefined,
|
|
|
+ * hasLabel: function(): boolean,
|
|
|
+ * getLabelWidth: function(): number,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getLabelAdapterMethods_',
|
|
|
+ value: function getLabelAdapterMethods_() {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ shakeLabel: function shakeLabel(shouldShake) {
|
|
|
+ return _this4.label_.shake(shouldShake);
|
|
|
+ },
|
|
|
+ floatLabel: function floatLabel(shouldFloat) {
|
|
|
+ return _this4.label_.float(shouldFloat);
|
|
|
+ },
|
|
|
+ hasLabel: function hasLabel() {
|
|
|
+ return !!_this4.label_;
|
|
|
+ },
|
|
|
+ getLabelWidth: function getLabelWidth() {
|
|
|
+ return _this4.label_.getWidth();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * activateLineRipple: function(): undefined,
|
|
|
+ * deactivateLineRipple: function(): undefined,
|
|
|
+ * setLineRippleTransformOrigin: function(number): undefined,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getLineRippleAdapterMethods_',
|
|
|
+ value: function getLineRippleAdapterMethods_() {
|
|
|
+ var _this5 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ activateLineRipple: function activateLineRipple() {
|
|
|
+ if (_this5.lineRipple_) {
|
|
|
+ _this5.lineRipple_.activate();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deactivateLineRipple: function deactivateLineRipple() {
|
|
|
+ if (_this5.lineRipple_) {
|
|
|
+ _this5.lineRipple_.deactivate();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) {
|
|
|
+ if (_this5.lineRipple_) {
|
|
|
+ _this5.lineRipple_.setRippleCenter(normalizedX);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * notchOutline: function(number, boolean): undefined,
|
|
|
+ * hasOutline: function(): boolean,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getOutlineAdapterMethods_',
|
|
|
+ value: function getOutlineAdapterMethods_() {
|
|
|
+ var _this6 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ notchOutline: function notchOutline(labelWidth, isRtl) {
|
|
|
+ return _this6.outline_.notch(labelWidth, isRtl);
|
|
|
+ },
|
|
|
+ closeOutline: function closeOutline() {
|
|
|
+ return _this6.outline_.closeNotch();
|
|
|
+ },
|
|
|
+ hasOutline: function hasOutline() {
|
|
|
+ return !!_this6.outline_;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!{
|
|
|
+ * registerInputInteractionHandler: function(string, function()): undefined,
|
|
|
+ * deregisterInputInteractionHandler: function(string, function()): undefined,
|
|
|
+ * getNativeInput: function(): ?Element,
|
|
|
+ * }}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getInputAdapterMethods_',
|
|
|
+ value: function getInputAdapterMethods_() {
|
|
|
+ var _this7 = this;
|
|
|
+
|
|
|
+ return {
|
|
|
+ registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) {
|
|
|
+ return _this7.input_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) {
|
|
|
+ return _this7.input_.removeEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ getNativeInput: function getNativeInput() {
|
|
|
+ return _this7.input_;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns a map of all subcomponents to subfoundations.
|
|
|
+ * @return {!FoundationMapType}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getFoundationMap_',
|
|
|
+ value: function getFoundationMap_() {
|
|
|
+ return {
|
|
|
+ helperText: this.helperText_ ? this.helperText_.foundation : undefined,
|
|
|
+ leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,
|
|
|
+ trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'value',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} value The value to set on the input.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(value) {
|
|
|
+ this.foundation_.setValue(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} True if the Text Field is disabled.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'disabled',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isDisabled();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} disabled Sets the Text Field disabled or enabled.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(disabled) {
|
|
|
+ this.foundation_.setDisabled(disabled);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} valid True if the Text Field is valid.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'valid',
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_.isValid();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} valid Sets the Text Field valid or invalid.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(valid) {
|
|
|
+ this.foundation_.setValid(valid);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} True if the Text Field is required.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'required',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.required;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} required Sets the Text Field to required.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(required) {
|
|
|
+ this.input_.required = required;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The input element's validation pattern.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'pattern',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.pattern;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} pattern Sets the input element's validation pattern.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(pattern) {
|
|
|
+ this.input_.pattern = pattern;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number} The input element's minLength.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'minLength',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.minLength;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} minLength Sets the input element's minLength.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(minLength) {
|
|
|
+ this.input_.minLength = minLength;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {number} The input element's maxLength.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'maxLength',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.maxLength;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {number} maxLength Sets the input element's maxLength.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(maxLength) {
|
|
|
+ // Chrome throws exception if maxLength is set < 0
|
|
|
+ if (maxLength < 0) {
|
|
|
+ this.input_.removeAttribute('maxLength');
|
|
|
+ } else {
|
|
|
+ this.input_.maxLength = maxLength;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The input element's min.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'min',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.min;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} min Sets the input element's min.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(min) {
|
|
|
+ this.input_.min = min;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The input element's max.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'max',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.max;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} max Sets the input element's max.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(max) {
|
|
|
+ this.input_.max = max;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The input element's step.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'step',
|
|
|
+ get: function get() {
|
|
|
+ return this.input_.step;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} step Sets the input element's step.
|
|
|
+ */
|
|
|
+ ,
|
|
|
+ set: function set(step) {
|
|
|
+ this.input_.step = step;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the helper text element content.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'helperTextContent',
|
|
|
+ set: function set(content) {
|
|
|
+ this.foundation_.setHelperTextContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the leading icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'leadingIconAriaLabel',
|
|
|
+ set: function set(label) {
|
|
|
+ this.foundation_.setLeadingIconAriaLabel(label);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the leading icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'leadingIconContent',
|
|
|
+ set: function set(content) {
|
|
|
+ this.foundation_.setLeadingIconContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the trailing icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'trailingIconAriaLabel',
|
|
|
+ set: function set(label) {
|
|
|
+ this.foundation_.setTrailingIconAriaLabel(label);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the trailing icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'trailingIconContent',
|
|
|
+ set: function set(content) {
|
|
|
+ this.foundation_.setTrailingIconContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Enables or disables the use of native validation. Use this for custom validation.
|
|
|
+ * @param {boolean} useNativeValidation Set this to false to ignore native input validation.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'useNativeValidation',
|
|
|
+ set: function set(useNativeValidation) {
|
|
|
+ this.foundation_.setUseNativeValidation(useNativeValidation);
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTextField(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextField;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 146 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ARIA_HIDDEN: 'aria-hidden',
|
|
|
+ ROLE: 'role'
|
|
|
+};
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var cssClasses = {
|
|
|
+ HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',
|
|
|
+ HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 147 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+/** @enum {string} */
|
|
|
+var strings = {
|
|
|
+ ICON_EVENT: 'MDCTextField:icon',
|
|
|
+ ICON_ROLE: 'button'
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 148 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_foundation__ = __webpack_require__(27);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_foundation__ = __webpack_require__(28);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(60);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(59);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-disable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+/* eslint-enable no-unused-vars */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCFoundation<!MDCTextFieldAdapter>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCTextFieldFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldFoundation, [{
|
|
|
+ key: 'shouldShake',
|
|
|
+
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ get: function get() {
|
|
|
+ return !this.isValid() && !this.isFocused_ && !!this.getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shouldAlwaysFloat_',
|
|
|
+ get: function get() {
|
|
|
+ var type = this.getNativeInput_().type;
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* ALWAYS_FLOAT_TYPES */].indexOf(type) >= 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shouldFloat',
|
|
|
+ get: function get() {
|
|
|
+ return this.shouldAlwaysFloat_ || this.isFocused_ || !!this.getValue() || this.isBadInput_();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@see MDCTextFieldAdapter} for typing information on parameters and return
|
|
|
+ * types.
|
|
|
+ * @return {!MDCTextFieldAdapter}
|
|
|
+ */
|
|
|
+
|
|
|
+ }], [{
|
|
|
+ key: 'cssClasses',
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @return enum {string} */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_4__constants__["d" /* numbers */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return (/** @type {!MDCTextFieldAdapter} */{
|
|
|
+ addClass: function addClass() {},
|
|
|
+ removeClass: function removeClass() {},
|
|
|
+ hasClass: function hasClass() {},
|
|
|
+ registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {},
|
|
|
+ deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {},
|
|
|
+ registerInputInteractionHandler: function registerInputInteractionHandler() {},
|
|
|
+ deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {},
|
|
|
+ registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {},
|
|
|
+ deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {},
|
|
|
+ getNativeInput: function getNativeInput() {},
|
|
|
+ isFocused: function isFocused() {},
|
|
|
+ isRtl: function isRtl() {},
|
|
|
+ activateLineRipple: function activateLineRipple() {},
|
|
|
+ deactivateLineRipple: function deactivateLineRipple() {},
|
|
|
+ setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {},
|
|
|
+ shakeLabel: function shakeLabel() {},
|
|
|
+ floatLabel: function floatLabel() {},
|
|
|
+ hasLabel: function hasLabel() {},
|
|
|
+ getLabelWidth: function getLabelWidth() {},
|
|
|
+ hasOutline: function hasOutline() {},
|
|
|
+ notchOutline: function notchOutline() {},
|
|
|
+ closeOutline: function closeOutline() {}
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTextFieldAdapter} adapter
|
|
|
+ * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.
|
|
|
+ */
|
|
|
+
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCTextFieldFoundation(adapter) {
|
|
|
+ var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTextFieldFoundation);
|
|
|
+
|
|
|
+ /** @type {!MDCTextFieldHelperTextFoundation|undefined} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTextFieldFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldFoundation)).call(this, _extends(MDCTextFieldFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.helperText_ = foundationMap.helperText;
|
|
|
+ /** @type {!MDCTextFieldIconFoundation|undefined} */
|
|
|
+ _this.leadingIcon_ = foundationMap.leadingIcon;
|
|
|
+ /** @type {!MDCTextFieldIconFoundation|undefined} */
|
|
|
+ _this.trailingIcon_ = foundationMap.trailingIcon;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.isFocused_ = false;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.receivedUserInput_ = false;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.useCustomValidityChecking_ = false;
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.isValid_ = true;
|
|
|
+
|
|
|
+ /** @private {boolean} */
|
|
|
+ _this.useNativeValidation_ = true;
|
|
|
+
|
|
|
+ /** @private {function(): undefined} */
|
|
|
+ _this.inputFocusHandler_ = function () {
|
|
|
+ return _this.activateFocus();
|
|
|
+ };
|
|
|
+ /** @private {function(): undefined} */
|
|
|
+ _this.inputBlurHandler_ = function () {
|
|
|
+ return _this.deactivateFocus();
|
|
|
+ };
|
|
|
+ /** @private {function(): undefined} */
|
|
|
+ _this.inputInputHandler_ = function () {
|
|
|
+ return _this.autoCompleteFocus();
|
|
|
+ };
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ _this.setPointerXOffset_ = function (evt) {
|
|
|
+ return _this.setTransformOrigin(evt);
|
|
|
+ };
|
|
|
+ /** @private {function(!Event): undefined} */
|
|
|
+ _this.textFieldInteractionHandler_ = function () {
|
|
|
+ return _this.handleTextFieldInteraction();
|
|
|
+ };
|
|
|
+ /** @private {function(!Array): undefined} */
|
|
|
+ _this.validationAttributeChangeHandler_ = function (attributesList) {
|
|
|
+ return _this.handleValidationAttributeChange(attributesList);
|
|
|
+ };
|
|
|
+
|
|
|
+ /** @private {!MutationObserver} */
|
|
|
+ _this.validationObserver_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ var _this2 = 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_);
|
|
|
+ ['mousedown', 'touchstart'].forEach(function (evtType) {
|
|
|
+ _this2.adapter_.registerInputInteractionHandler(evtType, _this2.setPointerXOffset_);
|
|
|
+ });
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this2.adapter_.registerTextFieldInteractionHandler(evtType, _this2.textFieldInteractionHandler_);
|
|
|
+ });
|
|
|
+ this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);
|
|
|
+ this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);
|
|
|
+ this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);
|
|
|
+ ['mousedown', 'touchstart'].forEach(function (evtType) {
|
|
|
+ _this3.adapter_.deregisterInputInteractionHandler(evtType, _this3.setPointerXOffset_);
|
|
|
+ });
|
|
|
+ ['click', 'keydown'].forEach(function (evtType) {
|
|
|
+ _this3.adapter_.deregisterTextFieldInteractionHandler(evtType, _this3.textFieldInteractionHandler_);
|
|
|
+ });
|
|
|
+ this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles user interactions with the Text Field.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleTextFieldInteraction',
|
|
|
+ value: function handleTextFieldInteraction() {
|
|
|
+ if (this.adapter_.getNativeInput().disabled) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.receivedUserInput_ = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Handles validation attribute changes
|
|
|
+ * @param {!Array<string>} attributesList
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'handleValidationAttributeChange',
|
|
|
+ value: function handleValidationAttributeChange(attributesList) {
|
|
|
+ var _this4 = this;
|
|
|
+
|
|
|
+ attributesList.some(function (attributeName) {
|
|
|
+ if (__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* VALIDATION_ATTR_WHITELIST */].indexOf(attributeName) > -1) {
|
|
|
+ _this4.styleValidity_(true);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Opens/closes the notched outline.
|
|
|
+ * @param {boolean} openNotch
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'notchOutline',
|
|
|
+ value: function notchOutline(openNotch) {
|
|
|
+ if (!this.adapter_.hasOutline()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (openNotch) {
|
|
|
+ var isDense = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].DENSE);
|
|
|
+ var labelScale = isDense ? __WEBPACK_IMPORTED_MODULE_4__constants__["d" /* numbers */].DENSE_LABEL_SCALE : __WEBPACK_IMPORTED_MODULE_4__constants__["d" /* numbers */].LABEL_SCALE;
|
|
|
+ var labelWidth = this.adapter_.getLabelWidth() * labelScale;
|
|
|
+ var isRtl = this.adapter_.isRtl();
|
|
|
+ this.adapter_.notchOutline(labelWidth, isRtl);
|
|
|
+ } else {
|
|
|
+ this.adapter_.closeOutline();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the text field focus state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'activateFocus',
|
|
|
+ value: function activateFocus() {
|
|
|
+ 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.
|
|
|
+ * @param {!Event} evt
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setTransformOrigin',
|
|
|
+ value: function setTransformOrigin(evt) {
|
|
|
+ var targetClientRect = evt.target.getBoundingClientRect();
|
|
|
+ var evtCoords = { x: evt.clientX, y: evt.clientY };
|
|
|
+ var normalizedX = evtCoords.x - targetClientRect.left;
|
|
|
+ this.adapter_.setLineRippleTransformOrigin(normalizedX);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activates the Text Field's focus state in cases when the input value
|
|
|
+ * changes without user input (e.g. programatically).
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'autoCompleteFocus',
|
|
|
+ value: function autoCompleteFocus() {
|
|
|
+ if (!this.receivedUserInput_) {
|
|
|
+ this.activateFocus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Deactivates the Text Field's focus state.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'deactivateFocus',
|
|
|
+ value: function deactivateFocus() {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {string} The value of the input Element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getValue',
|
|
|
+ value: function getValue() {
|
|
|
+ return this.getNativeInput_().value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} value The value to set on the input Element.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValue',
|
|
|
+ value: function setValue(value) {
|
|
|
+ this.getNativeInput_().value = value;
|
|
|
+ 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 {boolean} If a custom validity is set, returns that value.
|
|
|
+ * Otherwise, returns the result of native validity checks.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isValid',
|
|
|
+ value: function isValid() {
|
|
|
+ return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} isValid Sets the validity state of the Text Field.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setValid',
|
|
|
+ value: function setValid(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 {boolean} useNativeValidation Set this to false to ignore native input validation.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setUseNativeValidation',
|
|
|
+ value: function setUseNativeValidation(useNativeValidation) {
|
|
|
+ this.useNativeValidation_ = useNativeValidation;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} True if the Text Field is disabled.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isDisabled',
|
|
|
+ value: function isDisabled() {
|
|
|
+ return this.getNativeInput_().disabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {boolean} disabled Sets the text-field disabled or enabled.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setDisabled',
|
|
|
+ value: function setDisabled(disabled) {
|
|
|
+ this.getNativeInput_().disabled = disabled;
|
|
|
+ this.styleDisabled_(disabled);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} content Sets the content of the helper text.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setHelperTextContent',
|
|
|
+ value: function setHelperTextContent(content) {
|
|
|
+ if (this.helperText_) {
|
|
|
+ this.helperText_.setContent(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the leading icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setLeadingIconAriaLabel',
|
|
|
+ value: function setLeadingIconAriaLabel(label) {
|
|
|
+ if (this.leadingIcon_) {
|
|
|
+ this.leadingIcon_.setAriaLabel(label);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the leading icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setLeadingIconContent',
|
|
|
+ value: function setLeadingIconContent(content) {
|
|
|
+ if (this.leadingIcon_) {
|
|
|
+ this.leadingIcon_.setContent(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the aria label of the trailing icon.
|
|
|
+ * @param {string} label
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setTrailingIconAriaLabel',
|
|
|
+ value: function setTrailingIconAriaLabel(label) {
|
|
|
+ if (this.trailingIcon_) {
|
|
|
+ this.trailingIcon_.setAriaLabel(label);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text content of the trailing icon.
|
|
|
+ * @param {string} content
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'setTrailingIconContent',
|
|
|
+ value: function setTrailingIconContent(content) {
|
|
|
+ if (this.trailingIcon_) {
|
|
|
+ this.trailingIcon_.setContent(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} True if the Text Field input fails in converting the
|
|
|
+ * user-supplied value.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isBadInput_',
|
|
|
+ value: function isBadInput_() {
|
|
|
+ return this.getNativeInput_().validity.badInput;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {boolean} The result of native validity checking
|
|
|
+ * (ValidityState.valid).
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'isNativeInputValid_',
|
|
|
+ value: function isNativeInputValid_() {
|
|
|
+ return this.getNativeInput_().validity.valid;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Styles the component based on the validity state.
|
|
|
+ * @param {boolean} isValid
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'styleValidity_',
|
|
|
+ value: function styleValidity_(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.
|
|
|
+ * @param {boolean} isFocused
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'styleFocused_',
|
|
|
+ value: function styleFocused_(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.
|
|
|
+ * @param {boolean} isDisabled
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'styleDisabled_',
|
|
|
+ value: function styleDisabled_(isDisabled) {
|
|
|
+ var _MDCTextFieldFoundati = MDCTextFieldFoundation.cssClasses,
|
|
|
+ DISABLED = _MDCTextFieldFoundati.DISABLED,
|
|
|
+ INVALID = _MDCTextFieldFoundati.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 {!Element|!NativeInputType} The native text input from the
|
|
|
+ * host environment, or a dummy if none exists.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getNativeInput_',
|
|
|
+ value: function getNativeInput_() {
|
|
|
+ return this.adapter_.getNativeInput() ||
|
|
|
+ /** @type {!NativeInputType} */{
|
|
|
+ value: '',
|
|
|
+ disabled: false,
|
|
|
+ validity: {
|
|
|
+ badInput: false,
|
|
|
+ valid: true
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 149 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCTextFieldHelperText; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(61);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(27);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTextFieldHelperTextFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldHelperText = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTextFieldHelperText, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCTextFieldHelperText() {
|
|
|
+ _classCallCheck(this, MDCTextFieldHelperText);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTextFieldHelperText.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperText)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldHelperText, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTextFieldHelperTextFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCTextFieldHelperTextAdapter} */_extends({
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(attr, value) {
|
|
|
+ return _this2.root_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeAttr: function removeAttr(attr) {
|
|
|
+ return _this2.root_.removeAttribute(attr);
|
|
|
+ },
|
|
|
+ setContent: function setContent(content) {
|
|
|
+ _this2.root_.textContent = content;
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'foundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTextFieldHelperTextFoundation}
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTextFieldHelperText}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTextFieldHelperText(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldHelperText;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 150 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCTextFieldIcon; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(28);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTextFieldIconFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTextFieldIcon = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTextFieldIcon, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCTextFieldIcon() {
|
|
|
+ _classCallCheck(this, MDCTextFieldIcon);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCTextFieldIcon.__proto__ || Object.getPrototypeOf(MDCTextFieldIcon)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTextFieldIcon, [{
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTextFieldIconFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCTextFieldIconAdapter} */_extends({
|
|
|
+ getAttr: function getAttr(attr) {
|
|
|
+ return _this2.root_.getAttribute(attr);
|
|
|
+ },
|
|
|
+ setAttr: function setAttr(attr, value) {
|
|
|
+ return _this2.root_.setAttribute(attr, value);
|
|
|
+ },
|
|
|
+ removeAttr: function removeAttr(attr) {
|
|
|
+ return _this2.root_.removeAttribute(attr);
|
|
|
+ },
|
|
|
+ setContent: function setContent(content) {
|
|
|
+ _this2.root_.textContent = content;
|
|
|
+ },
|
|
|
+ registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.addEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
|
|
|
+ return _this2.root_.removeEventListener(evtType, handler);
|
|
|
+ },
|
|
|
+ notifyIconAction: function notifyIconAction() {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'foundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTextFieldIconFoundation}
|
|
|
+ */
|
|
|
+ get: function get() {
|
|
|
+ return this.foundation_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTextFieldIcon}
|
|
|
+ */
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTextFieldIcon(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTextFieldIcon;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 151 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCToolbar", function() { return MDCToolbar; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_index__ = __webpack_require__(3);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(152);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCToolbarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCToolbar = function (_MDCComponent) {
|
|
|
+ _inherits(MDCToolbar, _MDCComponent);
|
|
|
+
|
|
|
+ function MDCToolbar() {
|
|
|
+ _classCallCheck(this, MDCToolbar);
|
|
|
+
|
|
|
+ return _possibleConstructorReturn(this, (MDCToolbar.__proto__ || Object.getPrototypeOf(MDCToolbar)).apply(this, arguments));
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCToolbar, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ this.ripples_ = [].map.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_SELECTOR), function (icon) {
|
|
|
+ var ripple = __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].attachTo(icon);
|
|
|
+ ripple.unbounded = true;
|
|
|
+ return ripple;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.ripples_.forEach(function (ripple) {
|
|
|
+ ripple.destroy();
|
|
|
+ });
|
|
|
+ _get(MDCToolbar.prototype.__proto__ || Object.getPrototypeOf(MDCToolbar.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ registerScrollHandler: function registerScrollHandler(handler) {
|
|
|
+ return window.addEventListener('scroll', handler);
|
|
|
+ },
|
|
|
+ deregisterScrollHandler: function deregisterScrollHandler(handler) {
|
|
|
+ return window.removeEventListener('scroll', handler);
|
|
|
+ },
|
|
|
+ registerResizeHandler: function registerResizeHandler(handler) {
|
|
|
+ return window.addEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler(handler) {
|
|
|
+ return window.removeEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ getViewportWidth: function getViewportWidth() {
|
|
|
+ return window.innerWidth;
|
|
|
+ },
|
|
|
+ getViewportScrollY: function getViewportScrollY() {
|
|
|
+ return window.pageYOffset;
|
|
|
+ },
|
|
|
+ getOffsetHeight: function getOffsetHeight() {
|
|
|
+ return _this2.root_.offsetHeight;
|
|
|
+ },
|
|
|
+ getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
|
|
|
+ return _this2.firstRowElement_.offsetHeight;
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange(evtData) {
|
|
|
+ return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
|
|
|
+ },
|
|
|
+ setStyle: function setStyle(property, value) {
|
|
|
+ return _this2.root_.style.setProperty(property, value);
|
|
|
+ },
|
|
|
+ setStyleForTitleElement: function setStyleForTitleElement(property, value) {
|
|
|
+ return _this2.titleElement_.style.setProperty(property, value);
|
|
|
+ },
|
|
|
+ setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {
|
|
|
+ return _this2.firstRowElement_.style.setProperty(property, value);
|
|
|
+ },
|
|
|
+ setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {
|
|
|
+ if (_this2.fixedAdjustElement) {
|
|
|
+ _this2.fixedAdjustElement.style.setProperty(property, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'firstRowElement_',
|
|
|
+ get: function get() {
|
|
|
+ return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.FIRST_ROW_SELECTOR);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'titleElement_',
|
|
|
+ get: function get() {
|
|
|
+ return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.TITLE_SELECTOR);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'fixedAdjustElement',
|
|
|
+ set: function set(fixedAdjustElement) {
|
|
|
+ this.fixedAdjustElement_ = fixedAdjustElement;
|
|
|
+ this.foundation_.updateAdjustElementStyles();
|
|
|
+ },
|
|
|
+ get: function get() {
|
|
|
+ return this.fixedAdjustElement_;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCToolbar(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCToolbar;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_index__["MDCComponent"]);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 152 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(153);
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 MDCToolbarFoundation = function (_MDCFoundation) {
|
|
|
+ _inherits(MDCToolbarFoundation, _MDCFoundation);
|
|
|
+
|
|
|
+ _createClass(MDCToolbarFoundation, null, [{
|
|
|
+ key: 'cssClasses',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'strings',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'numbers',
|
|
|
+ get: function get() {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* numbers */];
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'defaultAdapter',
|
|
|
+ get: function get() {
|
|
|
+ return {
|
|
|
+ hasClass: function hasClass() {
|
|
|
+ return (/* className: string */ /* boolean */false
|
|
|
+ );
|
|
|
+ },
|
|
|
+ addClass: function addClass() /* className: string */{},
|
|
|
+ removeClass: function removeClass() /* className: string */{},
|
|
|
+ registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},
|
|
|
+ deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},
|
|
|
+ registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
|
|
|
+ getViewportWidth: function getViewportWidth() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getViewportScrollY: function getViewportScrollY() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getOffsetHeight: function getOffsetHeight() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
|
|
|
+ return (/* number */0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ notifyChange: function notifyChange() /* evtData: {flexibleExpansionRatio: number} */{},
|
|
|
+ setStyle: function setStyle() /* property: string, value: string */{},
|
|
|
+ setStyleForTitleElement: function setStyleForTitleElement() /* property: string, value: string */{},
|
|
|
+ setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() /* property: string, value: string */{},
|
|
|
+ setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() /* property: string, value: string */{}
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ function MDCToolbarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCToolbarFoundation);
|
|
|
+
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCToolbarFoundation.__proto__ || Object.getPrototypeOf(MDCToolbarFoundation)).call(this, _extends(MDCToolbarFoundation.defaultAdapter, adapter)));
|
|
|
+
|
|
|
+ _this.resizeHandler_ = function () {
|
|
|
+ return _this.checkRowHeight_();
|
|
|
+ };
|
|
|
+ _this.scrollHandler_ = function () {
|
|
|
+ return _this.updateToolbarStyles_();
|
|
|
+ };
|
|
|
+ _this.checkRowHeightFrame_ = 0;
|
|
|
+ _this.scrollFrame_ = 0;
|
|
|
+ _this.executedLastChange_ = false;
|
|
|
+
|
|
|
+ _this.calculations_ = {
|
|
|
+ toolbarRowHeight: 0,
|
|
|
+ // Calculated Height ratio. We use ratio to calculate corresponding heights in resize event.
|
|
|
+ toolbarRatio: 0, // The ratio of toolbar height to row height
|
|
|
+ flexibleExpansionRatio: 0, // The ratio of flexible space height to row height
|
|
|
+ maxTranslateYRatio: 0, // The ratio of max toolbar move up distance to row height
|
|
|
+ scrollThresholdRatio: 0, // The ratio of max scrollTop that we should listen to to row height
|
|
|
+ // Derived Heights based on the above key ratios.
|
|
|
+ toolbarHeight: 0,
|
|
|
+ flexibleExpansionHeight: 0, // Flexible row minus toolbar height (derived)
|
|
|
+ maxTranslateYDistance: 0, // When toolbar only fix last row (derived)
|
|
|
+ scrollThreshold: 0
|
|
|
+ };
|
|
|
+ // Toolbar fixed behavior
|
|
|
+ // If toolbar is fixed
|
|
|
+ _this.fixed_ = false;
|
|
|
+ // If fixed is targeted only at the last row
|
|
|
+ _this.fixedLastrow_ = false;
|
|
|
+ // Toolbar flexible behavior
|
|
|
+ // If the first row is flexible
|
|
|
+ _this.hasFlexibleRow_ = false;
|
|
|
+ // If use the default behavior
|
|
|
+ _this.useFlexDefaultBehavior_ = false;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCToolbarFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ this.fixed_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED);
|
|
|
+ this.fixedLastrow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED_LASTROW) & this.fixed_;
|
|
|
+ this.hasFlexibleRow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.TOOLBAR_ROW_FLEXIBLE);
|
|
|
+ if (this.hasFlexibleRow_) {
|
|
|
+ this.useFlexDefaultBehavior_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);
|
|
|
+ }
|
|
|
+ this.initKeyRatio_();
|
|
|
+ this.setKeyHeights_();
|
|
|
+ this.adapter_.registerResizeHandler(this.resizeHandler_);
|
|
|
+ this.adapter_.registerScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.adapter_.deregisterResizeHandler(this.resizeHandler_);
|
|
|
+ this.adapter_.deregisterScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateAdjustElementStyles',
|
|
|
+ value: function updateAdjustElementStyles() {
|
|
|
+ if (this.fixed_) {
|
|
|
+ this.adapter_.setStyleForFixedAdjustElement('margin-top', this.calculations_.toolbarHeight + 'px');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getFlexibleExpansionRatio_',
|
|
|
+ value: function getFlexibleExpansionRatio_(scrollTop) {
|
|
|
+ // To prevent division by zero when there is no flexibleExpansionHeight
|
|
|
+ var delta = 0.0001;
|
|
|
+ return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'checkRowHeight_',
|
|
|
+ value: function checkRowHeight_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ cancelAnimationFrame(this.checkRowHeightFrame_);
|
|
|
+ this.checkRowHeightFrame_ = requestAnimationFrame(function () {
|
|
|
+ return _this2.setKeyHeights_();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setKeyHeights_',
|
|
|
+ value: function setKeyHeights_() {
|
|
|
+ var newToolbarRowHeight = this.getRowHeight_();
|
|
|
+ if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {
|
|
|
+ this.calculations_.toolbarRowHeight = newToolbarRowHeight;
|
|
|
+ this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;
|
|
|
+ this.calculations_.flexibleExpansionHeight = this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;
|
|
|
+ this.calculations_.maxTranslateYDistance = this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;
|
|
|
+ this.calculations_.scrollThreshold = this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;
|
|
|
+ this.updateAdjustElementStyles();
|
|
|
+ this.updateToolbarStyles_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateToolbarStyles_',
|
|
|
+ value: function updateToolbarStyles_() {
|
|
|
+ var _this3 = this;
|
|
|
+
|
|
|
+ cancelAnimationFrame(this.scrollFrame_);
|
|
|
+ this.scrollFrame_ = requestAnimationFrame(function () {
|
|
|
+ var scrollTop = _this3.adapter_.getViewportScrollY();
|
|
|
+ var hasScrolledOutOfThreshold = _this3.scrolledOutOfThreshold_(scrollTop);
|
|
|
+
|
|
|
+ if (hasScrolledOutOfThreshold && _this3.executedLastChange_) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var flexibleExpansionRatio = _this3.getFlexibleExpansionRatio_(scrollTop);
|
|
|
+
|
|
|
+ _this3.updateToolbarFlexibleState_(flexibleExpansionRatio);
|
|
|
+ if (_this3.fixedLastrow_) {
|
|
|
+ _this3.updateToolbarFixedState_(scrollTop);
|
|
|
+ }
|
|
|
+ if (_this3.hasFlexibleRow_) {
|
|
|
+ _this3.updateFlexibleRowElementStyles_(flexibleExpansionRatio);
|
|
|
+ }
|
|
|
+ _this3.executedLastChange_ = hasScrolledOutOfThreshold;
|
|
|
+ _this3.adapter_.notifyChange({ flexibleExpansionRatio: flexibleExpansionRatio });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'scrolledOutOfThreshold_',
|
|
|
+ value: function scrolledOutOfThreshold_(scrollTop) {
|
|
|
+ return scrollTop > this.calculations_.scrollThreshold;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'initKeyRatio_',
|
|
|
+ value: function initKeyRatio_() {
|
|
|
+ var toolbarRowHeight = this.getRowHeight_();
|
|
|
+ var firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;
|
|
|
+ this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;
|
|
|
+ this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;
|
|
|
+ this.calculations_.maxTranslateYRatio = this.fixedLastrow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;
|
|
|
+ this.calculations_.scrollThresholdRatio = (this.fixedLastrow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'getRowHeight_',
|
|
|
+ value: function getRowHeight_() {
|
|
|
+ var breakpoint = MDCToolbarFoundation.numbers.TOOLBAR_MOBILE_BREAKPOINT;
|
|
|
+ return this.adapter_.getViewportWidth() < breakpoint ? MDCToolbarFoundation.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : MDCToolbarFoundation.numbers.TOOLBAR_ROW_HEIGHT;
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateToolbarFlexibleState_',
|
|
|
+ value: function updateToolbarFlexibleState_(flexibleExpansionRatio) {
|
|
|
+ this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);
|
|
|
+ this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);
|
|
|
+ if (flexibleExpansionRatio === 1) {
|
|
|
+ this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);
|
|
|
+ } else if (flexibleExpansionRatio === 0) {
|
|
|
+ this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateToolbarFixedState_',
|
|
|
+ value: function updateToolbarFixedState_(scrollTop) {
|
|
|
+ var translateDistance = Math.max(0, Math.min(scrollTop - this.calculations_.flexibleExpansionHeight, this.calculations_.maxTranslateYDistance));
|
|
|
+ this.adapter_.setStyle('transform', 'translateY(' + -translateDistance + 'px)');
|
|
|
+
|
|
|
+ if (translateDistance === this.calculations_.maxTranslateYDistance) {
|
|
|
+ this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);
|
|
|
+ } else {
|
|
|
+ this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateFlexibleRowElementStyles_',
|
|
|
+ value: function updateFlexibleRowElementStyles_(flexibleExpansionRatio) {
|
|
|
+ if (this.fixed_) {
|
|
|
+ var height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;
|
|
|
+ this.adapter_.setStyleForFlexibleRowElement('height', height + this.calculations_.toolbarRowHeight + 'px');
|
|
|
+ }
|
|
|
+ if (this.useFlexDefaultBehavior_) {
|
|
|
+ this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'updateElementStylesDefaultBehavior_',
|
|
|
+ value: function updateElementStylesDefaultBehavior_(flexibleExpansionRatio) {
|
|
|
+ var maxTitleSize = MDCToolbarFoundation.numbers.MAX_TITLE_SIZE;
|
|
|
+ var minTitleSize = MDCToolbarFoundation.numbers.MIN_TITLE_SIZE;
|
|
|
+ var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;
|
|
|
+
|
|
|
+ this.adapter_.setStyleForTitleElement('font-size', currentTitleSize + 'rem');
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCToolbarFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCToolbarFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 153 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
|
|
|
+/**
|
|
|
+ * @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 cssClasses = {
|
|
|
+ FIXED: 'mdc-toolbar--fixed',
|
|
|
+ FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',
|
|
|
+ FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',
|
|
|
+ TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',
|
|
|
+ FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',
|
|
|
+ FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',
|
|
|
+ FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized'
|
|
|
+};
|
|
|
+
|
|
|
+var strings = {
|
|
|
+ TITLE_SELECTOR: '.mdc-toolbar__title',
|
|
|
+ ICON_SELECTOR: '.mdc-toolbar__icon',
|
|
|
+ FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',
|
|
|
+ CHANGE_EVENT: 'MDCToolbar:change'
|
|
|
+};
|
|
|
+
|
|
|
+var numbers = {
|
|
|
+ MAX_TITLE_SIZE: 2.125,
|
|
|
+ MIN_TITLE_SIZE: 1.25,
|
|
|
+ TOOLBAR_ROW_HEIGHT: 64,
|
|
|
+ TOOLBAR_ROW_MOBILE_HEIGHT: 56,
|
|
|
+ TOOLBAR_MOBILE_BREAKPOINT: 600
|
|
|
+};
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 154 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
|
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBar", function() { return MDCTopAppBar; });
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(7);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(8);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(12);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__ = __webpack_require__(155);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__short_foundation__ = __webpack_require__(156);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__standard_foundation__ = __webpack_require__(157);
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBarBaseFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_7__standard_foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFixedTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__["a"]; });
|
|
|
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCShortTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_6__short_foundation__["a"]; });
|
|
|
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
+
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCComponent<!MDCTopAppBarBaseFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTopAppBar = function (_MDCComponent) {
|
|
|
+ _inherits(MDCTopAppBar, _MDCComponent);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {...?} args
|
|
|
+ */
|
|
|
+ function MDCTopAppBar() {
|
|
|
+ var _ref;
|
|
|
+
|
|
|
+ _classCallCheck(this, MDCTopAppBar);
|
|
|
+
|
|
|
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
+ args[_key] = arguments[_key];
|
|
|
+ }
|
|
|
+
|
|
|
+ /** @private {?Element} */
|
|
|
+ var _this = _possibleConstructorReturn(this, (_ref = MDCTopAppBar.__proto__ || Object.getPrototypeOf(MDCTopAppBar)).call.apply(_ref, [this].concat(args)));
|
|
|
+
|
|
|
+ _this.navIcon_;
|
|
|
+ /** @type {?Array<MDCRipple>} */
|
|
|
+ _this.iconRipples_;
|
|
|
+ /** @type {Object} */
|
|
|
+ _this.scrollTarget_;
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTopAppBar, [{
|
|
|
+ key: 'initialize',
|
|
|
+ value: function initialize() {
|
|
|
+ var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
|
|
|
+ return __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"].attachTo(el);
|
|
|
+ };
|
|
|
+
|
|
|
+ this.navIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].NAVIGATION_ICON_SELECTOR);
|
|
|
+
|
|
|
+ // Get all icons in the toolbar and instantiate the ripples
|
|
|
+ var icons = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* 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;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ this.iconRipples_.forEach(function (iconRipple) {
|
|
|
+ return iconRipple.destroy();
|
|
|
+ });
|
|
|
+ _get(MDCTopAppBar.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBar.prototype), 'destroy', this).call(this);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'setScrollTarget',
|
|
|
+ value: function setScrollTarget(target) {
|
|
|
+ this.foundation_.destroyScrollHandler();
|
|
|
+ this.scrollTarget_ = target;
|
|
|
+ this.foundation_.initScrollHandler();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!Element} root
|
|
|
+ * @return {!MDCTopAppBar}
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'getDefaultFoundation',
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return {!MDCTopAppBarBaseFoundation}
|
|
|
+ */
|
|
|
+ value: function getDefaultFoundation() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ /** @type {!MDCTopAppBarAdapter} */
|
|
|
+ var adapter = /** @type {!MDCTopAppBarAdapter} */_extends({
|
|
|
+ hasClass: function hasClass(className) {
|
|
|
+ return _this2.root_.classList.contains(className);
|
|
|
+ },
|
|
|
+ addClass: function addClass(className) {
|
|
|
+ return _this2.root_.classList.add(className);
|
|
|
+ },
|
|
|
+ removeClass: function removeClass(className) {
|
|
|
+ return _this2.root_.classList.remove(className);
|
|
|
+ },
|
|
|
+ setStyle: function setStyle(property, value) {
|
|
|
+ return _this2.root_.style.setProperty(property, value);
|
|
|
+ },
|
|
|
+ getTopAppBarHeight: function getTopAppBarHeight() {
|
|
|
+ return _this2.root_.clientHeight;
|
|
|
+ },
|
|
|
+ registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler(evtType, handler) {
|
|
|
+ if (_this2.navIcon_) {
|
|
|
+ _this2.navIcon_.addEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler(evtType, handler) {
|
|
|
+ if (_this2.navIcon_) {
|
|
|
+ _this2.navIcon_.removeEventListener(evtType, handler);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ notifyNavigationIconClicked: function notifyNavigationIconClicked() {
|
|
|
+ _this2.emit(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].NAVIGATION_EVENT, {});
|
|
|
+ },
|
|
|
+ registerScrollHandler: function registerScrollHandler(handler) {
|
|
|
+ return _this2.scrollTarget_.addEventListener('scroll', handler);
|
|
|
+ },
|
|
|
+ deregisterScrollHandler: function deregisterScrollHandler(handler) {
|
|
|
+ return _this2.scrollTarget_.removeEventListener('scroll', handler);
|
|
|
+ },
|
|
|
+ registerResizeHandler: function registerResizeHandler(handler) {
|
|
|
+ return window.addEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ deregisterResizeHandler: function deregisterResizeHandler(handler) {
|
|
|
+ return window.removeEventListener('resize', handler);
|
|
|
+ },
|
|
|
+ getViewportScrollY: function getViewportScrollY() {
|
|
|
+ return _this2.scrollTarget_[_this2.scrollTarget_ === window ? 'pageYOffset' : 'scrollTop'];
|
|
|
+ },
|
|
|
+ getTotalActionItems: function getTotalActionItems() {
|
|
|
+ return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ACTION_ITEM_SELECTOR).length;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.scrollTarget_ = window;
|
|
|
+
|
|
|
+ /** @type {!MDCTopAppBarBaseFoundation} */
|
|
|
+ var foundation = void 0;
|
|
|
+ if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].SHORT_CLASS)) {
|
|
|
+ foundation = new __WEBPACK_IMPORTED_MODULE_6__short_foundation__["a" /* default */](adapter);
|
|
|
+ } else if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].FIXED_CLASS)) {
|
|
|
+ foundation = new __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__["a" /* default */](adapter);
|
|
|
+ } else {
|
|
|
+ foundation = new __WEBPACK_IMPORTED_MODULE_7__standard_foundation__["a" /* default */](adapter);
|
|
|
+ }
|
|
|
+
|
|
|
+ return foundation;
|
|
|
+ }
|
|
|
+ }], [{
|
|
|
+ key: 'attachTo',
|
|
|
+ value: function attachTo(root) {
|
|
|
+ return new MDCTopAppBar(root);
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTopAppBar;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__["a" /* default */]);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 155 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(8);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(7);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(12);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTopAppBarFoundation<!MDCFixedTopAppBarFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCFixedTopAppBarFoundation = function (_MDCTopAppBarFoundati) {
|
|
|
+ _inherits(MDCFixedTopAppBarFoundation, _MDCTopAppBarFoundati);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTopAppBarAdapter} adapter
|
|
|
+ */
|
|
|
+ function MDCFixedTopAppBarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCFixedTopAppBarFoundation);
|
|
|
+
|
|
|
+ /** State variable for the previous scroll iteration top app bar state */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCFixedTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation)).call(this, adapter));
|
|
|
+
|
|
|
+ _this.wasScrolled_ = false;
|
|
|
+
|
|
|
+ _this.scrollHandler_ = function () {
|
|
|
+ return _this.fixedScrollHandler_();
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCFixedTopAppBarFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'init', this).call(this);
|
|
|
+ this.adapter_.registerScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'destroy', this).call(this);
|
|
|
+ this.adapter_.deregisterScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scroll handler for applying/removing the modifier class
|
|
|
+ * on the fixed top app bar.
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'fixedScrollHandler_',
|
|
|
+ value: function fixedScrollHandler_() {
|
|
|
+ var currentScroll = this.adapter_.getViewportScrollY();
|
|
|
+
|
|
|
+ if (currentScroll <= 0) {
|
|
|
+ if (this.wasScrolled_) {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FIXED_SCROLLED_CLASS);
|
|
|
+ this.wasScrolled_ = false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!this.wasScrolled_) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FIXED_SCROLLED_CLASS);
|
|
|
+ this.wasScrolled_ = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCFixedTopAppBarFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCFixedTopAppBarFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 156 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(7);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @extends {MDCTopAppBarBaseFoundation<!MDCShortTopAppBarFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCShortTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {
|
|
|
+ _inherits(MDCShortTopAppBarFoundation, _MDCTopAppBarBaseFoun);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTopAppBarAdapter} adapter
|
|
|
+ */
|
|
|
+ function MDCShortTopAppBarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCShortTopAppBarFoundation);
|
|
|
+
|
|
|
+ // State variable for the current top app bar state
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCShortTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation)).call(this, adapter));
|
|
|
+
|
|
|
+ _this.isCollapsed = false;
|
|
|
+
|
|
|
+ _this.scrollHandler_ = function () {
|
|
|
+ return _this.shortAppBarScrollHandler_();
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCShortTopAppBarFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'init', this).call(this);
|
|
|
+ var isAlwaysCollapsed = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
|
|
|
+
|
|
|
+ if (this.adapter_.getTotalActionItems() > 0) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_HAS_ACTION_ITEM_CLASS);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!isAlwaysCollapsed) {
|
|
|
+ this.adapter_.registerScrollHandler(this.scrollHandler_);
|
|
|
+ this.shortAppBarScrollHandler_();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'destroy', this).call(this);
|
|
|
+ this.adapter_.deregisterScrollHandler(this.scrollHandler_);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scroll handler for applying/removing the collapsed modifier class
|
|
|
+ * on the short top app bar.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'shortAppBarScrollHandler_',
|
|
|
+ value: function shortAppBarScrollHandler_() {
|
|
|
+ var currentScroll = this.adapter_.getViewportScrollY();
|
|
|
+
|
|
|
+ if (currentScroll <= 0) {
|
|
|
+ if (this.isCollapsed) {
|
|
|
+ this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
|
|
|
+ this.isCollapsed = false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!this.isCollapsed) {
|
|
|
+ this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
|
|
|
+ this.isCollapsed = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCShortTopAppBarFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCShortTopAppBarFoundation);
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+/* 157 */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(7);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);
|
|
|
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);
|
|
|
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
+
|
|
|
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
|
+
|
|
|
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
+
|
|
|
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
+
|
|
|
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
+
|
|
|
+/**
|
|
|
+ * @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 INITIAL_VALUE = 0;
|
|
|
+/**
|
|
|
+ * @extends {MDCTopAppBarBaseFoundation<!MDCTopAppBarFoundation>}
|
|
|
+ * @final
|
|
|
+ */
|
|
|
+
|
|
|
+var MDCTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {
|
|
|
+ _inherits(MDCTopAppBarFoundation, _MDCTopAppBarBaseFoun);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {!MDCTopAppBarAdapter} adapter
|
|
|
+ */
|
|
|
+ function MDCTopAppBarFoundation(adapter) {
|
|
|
+ _classCallCheck(this, MDCTopAppBarFoundation);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used for diffs of current scroll position vs previous scroll position
|
|
|
+ * @private {number}
|
|
|
+ */
|
|
|
+ var _this = _possibleConstructorReturn(this, (MDCTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation)).call(this, adapter));
|
|
|
+
|
|
|
+ _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to verify when the top app bar is completely showing or completely hidden
|
|
|
+ * @private {number}
|
|
|
+ */
|
|
|
+ _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * wasDocked_ is used to indicate if the top app bar was docked in the previous
|
|
|
+ * scroll handler iteration.
|
|
|
+ * @private {boolean}
|
|
|
+ */
|
|
|
+ _this.wasDocked_ = true;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * isDockedShowing_ is used to indicate if the top app bar is docked in the fully
|
|
|
+ * shown position.
|
|
|
+ * @private {boolean}
|
|
|
+ */
|
|
|
+ _this.isDockedShowing_ = true;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Variable for current scroll position of the top app bar
|
|
|
+ * @private {number}
|
|
|
+ */
|
|
|
+ _this.currentAppBarOffsetTop_ = 0;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Used to prevent the top app bar from being scrolled out of view during resize events
|
|
|
+ * @private {boolean} */
|
|
|
+ _this.isCurrentlyBeingResized_ = false;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * The timeout that's used to throttle the resize events
|
|
|
+ * @private {number}
|
|
|
+ */
|
|
|
+ _this.resizeThrottleId_ = INITIAL_VALUE;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize
|
|
|
+ * @private {number}
|
|
|
+ */
|
|
|
+ _this.resizeDebounceId_ = INITIAL_VALUE;
|
|
|
+
|
|
|
+ _this.scrollHandler_ = function () {
|
|
|
+ return _this.topAppBarScrollHandler_();
|
|
|
+ };
|
|
|
+ _this.resizeHandler_ = function () {
|
|
|
+ return _this.topAppBarResizeHandler_();
|
|
|
+ };
|
|
|
+ return _this;
|
|
|
+ }
|
|
|
+
|
|
|
+ _createClass(MDCTopAppBarFoundation, [{
|
|
|
+ key: 'init',
|
|
|
+ value: function init() {
|
|
|
+ _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'init', this).call(this);
|
|
|
+ this.adapter_.registerScrollHandler(this.scrollHandler_);
|
|
|
+ this.adapter_.registerResizeHandler(this.resizeHandler_);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ key: 'destroy',
|
|
|
+ value: function destroy() {
|
|
|
+ _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'destroy', this).call(this);
|
|
|
+ this.adapter_.deregisterScrollHandler(this.scrollHandler_);
|
|
|
+ this.adapter_.deregisterResizeHandler(this.resizeHandler_);
|
|
|
+ this.adapter_.setStyle('top', '');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Function to determine if the DOM needs to update.
|
|
|
+ * @return {boolean}
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'checkForUpdate_',
|
|
|
+ value: function checkForUpdate_() {
|
|
|
+ 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.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'moveTopAppBar_',
|
|
|
+ value: function moveTopAppBar_() {
|
|
|
+ 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 = -__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].MAX_TOP_APP_BAR_HEIGHT;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.adapter_.setStyle('top', offset + 'px');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Scroll handler for the default scroll behavior of the top app bar.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'topAppBarScrollHandler_',
|
|
|
+ value: function topAppBarScrollHandler_() {
|
|
|
+ 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.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'topAppBarResizeHandler_',
|
|
|
+ value: function topAppBarResizeHandler_() {
|
|
|
+ var _this2 = this;
|
|
|
+
|
|
|
+ // Throttle resize events 10 p/s
|
|
|
+ if (!this.resizeThrottleId_) {
|
|
|
+ this.resizeThrottleId_ = setTimeout(function () {
|
|
|
+ _this2.resizeThrottleId_ = INITIAL_VALUE;
|
|
|
+ _this2.throttledResizeHandler_();
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.isCurrentlyBeingResized_ = true;
|
|
|
+
|
|
|
+ if (this.resizeDebounceId_) {
|
|
|
+ clearTimeout(this.resizeDebounceId_);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.resizeDebounceId_ = setTimeout(function () {
|
|
|
+ _this2.topAppBarScrollHandler_();
|
|
|
+ _this2.isCurrentlyBeingResized_ = false;
|
|
|
+ _this2.resizeDebounceId_ = INITIAL_VALUE;
|
|
|
+ }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Throttled function that updates the top app bar scrolled values if the
|
|
|
+ * top app bar height changes.
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+
|
|
|
+ }, {
|
|
|
+ key: 'throttledResizeHandler_',
|
|
|
+ value: function throttledResizeHandler_() {
|
|
|
+ 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.topAppBarScrollHandler_();
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+
|
|
|
+ return MDCTopAppBarFoundation;
|
|
|
+}(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]);
|
|
|
+
|
|
|
+/* harmony default export */ __webpack_exports__["a"] = (MDCTopAppBarFoundation);
|
|
|
+
|
|
|
+/***/ })
|
|
|
+/******/ ]);
|
|
|
+});
|
|
|
+//# sourceMappingURL=material-components-web.js.map
|