@limetech/lime-elements 37.45.1 → 37.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/cjs/component-cba208a8.js +2448 -0
- package/dist/cjs/component-cba208a8.js.map +1 -0
- package/dist/cjs/{dom-ee8ee17d.js → debounce-2e5f4b7e.js} +1 -31
- package/dist/cjs/debounce-2e5f4b7e.js.map +1 -0
- package/dist/cjs/dom-81eaa633.js +34 -0
- package/dist/cjs/dom-81eaa633.js.map +1 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/{limel-action-bar_3.cjs.entry.js → limel-action-bar_4.cjs.entry.js} +68 -1
- package/dist/cjs/limel-action-bar_4.cjs.entry.js.map +1 -0
- package/dist/cjs/{limel-breadcrumbs_7.cjs.entry.js → limel-breadcrumbs_5.cjs.entry.js} +412 -3357
- package/dist/cjs/limel-breadcrumbs_5.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-dynamic-label_4.cjs.entry.js +610 -0
- package/dist/cjs/limel-dynamic-label_4.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-form.cjs.entry.js +1 -1
- package/dist/cjs/limel-form.cjs.entry.js.map +1 -1
- package/dist/cjs/{limel-portal.cjs.entry.js → limel-icon_2.cjs.entry.js} +201 -1
- package/dist/cjs/limel-icon_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-picker.cjs.entry.js +3 -2
- package/dist/cjs/limel-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +303 -16
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/{link-helper-b7e6c8df.js → link-helper-563b01c0.js} +3 -1
- package/dist/cjs/link-helper-563b01c0.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{translations-988a3f51.js → translations-83a68e56.js} +25 -1
- package/dist/cjs/translations-83a68e56.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/chip/chip.js +2 -2
- package/dist/collection/components/text-editor/link-menu/editor-link-menu.css +12 -0
- package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +201 -0
- package/dist/collection/components/text-editor/link-menu/editor-link-menu.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js +72 -11
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js +6 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/types.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/link-plugin.js +172 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/link-plugin.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.css +4 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +62 -6
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/translations/da.js +4 -0
- package/dist/collection/translations/da.js.map +1 -1
- package/dist/collection/translations/en.js +4 -0
- package/dist/collection/translations/en.js.map +1 -1
- package/dist/collection/translations/fi.js +4 -0
- package/dist/collection/translations/fi.js.map +1 -1
- package/dist/collection/translations/nl.js +4 -0
- package/dist/collection/translations/nl.js.map +1 -1
- package/dist/collection/translations/no.js +4 -0
- package/dist/collection/translations/no.js.map +1 -1
- package/dist/collection/translations/sv.js +4 -0
- package/dist/collection/translations/sv.js.map +1 -1
- package/dist/collection/util/link-helper.js +1 -1
- package/dist/collection/util/link-helper.js.map +1 -1
- package/dist/esm/component-db286494.js +2440 -0
- package/dist/esm/component-db286494.js.map +1 -0
- package/dist/esm/{dom-ae531ebc.js → debounce-9a05c91c.js} +2 -31
- package/dist/esm/debounce-9a05c91c.js.map +1 -0
- package/dist/esm/dom-0b0170a0.js +32 -0
- package/dist/esm/dom-0b0170a0.js.map +1 -0
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/{limel-action-bar_3.entry.js → limel-action-bar_4.entry.js} +68 -2
- package/dist/esm/limel-action-bar_4.entry.js.map +1 -0
- package/dist/esm/{limel-breadcrumbs_7.entry.js → limel-breadcrumbs_5.entry.js} +404 -3347
- package/dist/esm/limel-breadcrumbs_5.entry.js.map +1 -0
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-chip_2.entry.js +2 -2
- package/dist/esm/limel-dynamic-label_4.entry.js +603 -0
- package/dist/esm/limel-dynamic-label_4.entry.js.map +1 -0
- package/dist/esm/limel-file-viewer.entry.js +1 -1
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-form.entry.js +1 -1
- package/dist/esm/limel-form.entry.js.map +1 -1
- package/dist/esm/{limel-portal.entry.js → limel-icon_2.entry.js} +201 -2
- package/dist/esm/limel-icon_2.entry.js.map +1 -0
- package/dist/esm/limel-picker.entry.js +2 -1
- package/dist/esm/limel-picker.entry.js.map +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +303 -16
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-snackbar.entry.js +1 -1
- package/dist/esm/{link-helper-725a9166.js → link-helper-2a16b323.js} +2 -2
- package/dist/esm/link-helper-2a16b323.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{translations-e73d7840.js → translations-5ae8ec7b.js} +25 -1
- package/dist/esm/translations-5ae8ec7b.js.map +1 -0
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -1
- package/dist/lime-elements/p-18c97232.js +2 -0
- package/dist/lime-elements/p-18c97232.js.map +1 -0
- package/dist/lime-elements/{p-5cfed8a8.entry.js → p-26a43fd9.entry.js} +5 -5
- package/dist/lime-elements/p-29e0e5bd.js +2 -0
- package/dist/lime-elements/p-29e0e5bd.js.map +1 -0
- package/dist/lime-elements/{p-dfc28411.entry.js → p-42b6ba6d.entry.js} +2 -2
- package/dist/lime-elements/{p-c8ce7cd4.entry.js → p-4bd0b7fb.entry.js} +2 -2
- package/dist/lime-elements/p-50b604b9.entry.js +2 -0
- package/dist/lime-elements/p-50b604b9.entry.js.map +1 -0
- package/dist/lime-elements/{p-ab13cb4a.entry.js → p-5e2604e5.entry.js} +2 -2
- package/dist/lime-elements/p-5e7b7b03.js +2 -0
- package/dist/lime-elements/p-5e7b7b03.js.map +1 -0
- package/dist/lime-elements/{p-516619d3.js → p-6465625e.js} +2 -2
- package/dist/lime-elements/p-6465625e.js.map +1 -0
- package/dist/lime-elements/{p-7681dae8.entry.js → p-70bfa812.entry.js} +2 -2
- package/dist/lime-elements/p-8d71c9e5.entry.js +2 -0
- package/dist/lime-elements/p-8d71c9e5.entry.js.map +1 -0
- package/dist/lime-elements/{p-e3eb403a.entry.js → p-91a8c244.entry.js} +2 -2
- package/dist/lime-elements/p-b8bfe44d.entry.js +2 -0
- package/dist/lime-elements/{p-3f4d2f62.entry.js.map → p-b8bfe44d.entry.js.map} +1 -1
- package/dist/lime-elements/p-bcfb5db5.entry.js +68 -0
- package/dist/lime-elements/p-bcfb5db5.entry.js.map +1 -0
- package/dist/lime-elements/p-d4d2593b.entry.js +2 -0
- package/dist/lime-elements/p-d4d2593b.entry.js.map +1 -0
- package/dist/lime-elements/p-eb9ab3d4.entry.js +2 -0
- package/dist/lime-elements/p-eb9ab3d4.entry.js.map +1 -0
- package/dist/lime-elements/p-f764b655.js +200 -0
- package/dist/lime-elements/p-f764b655.js.map +1 -0
- package/dist/lime-elements/{p-cfe4e725.entry.js → p-fe5e8f22.entry.js} +2 -2
- package/dist/lime-elements/{p-cfe4e725.entry.js.map → p-fe5e8f22.entry.js.map} +1 -1
- package/dist/types/components/file-viewer/file-viewer.d.ts +126 -0
- package/dist/types/components/progress-flow/progress-flow-item/progress-flow-item.d.ts +36 -0
- package/dist/types/components/progress-flow/progress-flow.d.ts +49 -0
- package/dist/types/components/text-editor/link-menu/editor-link-menu.d.ts +47 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-commands.d.ts +5 -2
- package/dist/types/components/text-editor/prosemirror-adapter/menu/types.d.ts +49 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/link-plugin.d.ts +9 -0
- package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +15 -3
- package/dist/types/components.d.ts +79 -0
- package/dist/types/translations/da.d.ts +4 -0
- package/dist/types/translations/en.d.ts +4 -0
- package/dist/types/translations/fi.d.ts +4 -0
- package/dist/types/translations/nl.d.ts +4 -0
- package/dist/types/translations/no.d.ts +4 -0
- package/dist/types/translations/sv.d.ts +4 -0
- package/dist/types/util/link-helper.d.ts +1 -0
- package/package.json +2 -2
- package/dist/cjs/dom-ee8ee17d.js.map +0 -1
- package/dist/cjs/limel-action-bar_3.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-dynamic-label_2.cjs.entry.js +0 -91
- package/dist/cjs/limel-dynamic-label_2.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-icon.cjs.entry.js +0 -208
- package/dist/cjs/limel-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-portal.cjs.entry.js.map +0 -1
- package/dist/cjs/link-helper-b7e6c8df.js.map +0 -1
- package/dist/cjs/translations-988a3f51.js.map +0 -1
- package/dist/esm/dom-ae531ebc.js.map +0 -1
- package/dist/esm/limel-action-bar_3.entry.js.map +0 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js.map +0 -1
- package/dist/esm/limel-dynamic-label_2.entry.js +0 -86
- package/dist/esm/limel-dynamic-label_2.entry.js.map +0 -1
- package/dist/esm/limel-icon.entry.js +0 -204
- package/dist/esm/limel-icon.entry.js.map +0 -1
- package/dist/esm/limel-portal.entry.js.map +0 -1
- package/dist/esm/link-helper-725a9166.js.map +0 -1
- package/dist/esm/translations-e73d7840.js.map +0 -1
- package/dist/lime-elements/p-2f453044.entry.js +0 -266
- package/dist/lime-elements/p-2f453044.entry.js.map +0 -1
- package/dist/lime-elements/p-35a4a846.entry.js +0 -2
- package/dist/lime-elements/p-35a4a846.entry.js.map +0 -1
- package/dist/lime-elements/p-3ae3b23e.entry.js +0 -2
- package/dist/lime-elements/p-3ae3b23e.entry.js.map +0 -1
- package/dist/lime-elements/p-3f4d2f62.entry.js +0 -2
- package/dist/lime-elements/p-516619d3.js.map +0 -1
- package/dist/lime-elements/p-5c9fbe6f.entry.js +0 -2
- package/dist/lime-elements/p-5c9fbe6f.entry.js.map +0 -1
- package/dist/lime-elements/p-714d6937.js +0 -2
- package/dist/lime-elements/p-714d6937.js.map +0 -1
- package/dist/lime-elements/p-a2d19673.entry.js +0 -2
- package/dist/lime-elements/p-a2d19673.entry.js.map +0 -1
- package/dist/lime-elements/p-cd6b9ff0.js +0 -2
- package/dist/lime-elements/p-cd6b9ff0.js.map +0 -1
- package/dist/lime-elements/p-f548d996.entry.js +0 -2
- package/dist/lime-elements/p-f548d996.entry.js.map +0 -1
- /package/dist/lime-elements/{p-5cfed8a8.entry.js.map → p-26a43fd9.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-dfc28411.entry.js.map → p-42b6ba6d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-c8ce7cd4.entry.js.map → p-4bd0b7fb.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-ab13cb4a.entry.js.map → p-5e2604e5.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-7681dae8.entry.js.map → p-70bfa812.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-e3eb403a.entry.js.map → p-91a8c244.entry.js.map} +0 -0
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, g as getElement
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-6156b4fd.js';
|
|
2
2
|
import { m as makeEnterClickable, r as removeEnterClickable } from './make-enter-clickable-a30589fb.js';
|
|
3
3
|
import { c as createRandomString } from './random-string-812b1c35.js';
|
|
4
4
|
import { g as getIconName, a as getIconColor } from './get-icon-props-0b65f85e.js';
|
|
5
5
|
import { b as TAB_KEY_CODE, T as TAB, A as ARROW_UP, e as ARROW_UP_KEY_CODE, f as ARROW_DOWN, g as ARROW_DOWN_KEY_CODE, E as ESCAPE, a as ENTER, c as ESCAPE_KEY_CODE, d as ENTER_KEY_CODE, S as SPACE, h as SPACE_KEY_CODE, k as ARROW_LEFT, l as ARROW_LEFT_KEY_CODE, m as ARROW_RIGHT, n as ARROW_RIGHT_KEY_CODE } from './keycodes-bf11a644.js';
|
|
6
|
-
import { g as getHref, a as getTarget } from './link-helper-
|
|
6
|
+
import { g as getHref, a as getTarget } from './link-helper-2a16b323.js';
|
|
7
7
|
import { g as globalConfig } from './config-656a588f.js';
|
|
8
8
|
import { M as MDCTextField } from './component-58f68f3e.js';
|
|
9
|
-
import { d as debounce
|
|
10
|
-
import { C as CheckboxTemplate } from './checkbox.template-c42b7020.js';
|
|
11
|
-
import { _ as __extends, a as __assign, M as MDCFoundation, b as MDCComponent, c as __values } from './component-8b6ce3e9.js';
|
|
12
|
-
import { m as matches, c as closest } from './ponyfill-30263d5e.js';
|
|
9
|
+
import { d as debounce } from './debounce-9a05c91c.js';
|
|
13
10
|
import { i as isFunction } from './eq-c1c7f528.js';
|
|
14
11
|
import { z as zipObject } from './zipObject-2bb1968e.js';
|
|
15
|
-
import {
|
|
12
|
+
import { _ as __extends, a as __assign, M as MDCFoundation, b as MDCComponent } from './component-8b6ce3e9.js';
|
|
13
|
+
import { c as closest } from './ponyfill-30263d5e.js';
|
|
14
|
+
import { M as MDCMenuSurfaceFoundation, c as cssClasses$1, a as MDCListFoundation, n as numbers$1, b as MDCMenuSurface, d as MDCList } from './component-db286494.js';
|
|
16
15
|
import { M as MDCRipple } from './component-f972b8db.js';
|
|
17
16
|
import './component-fc0a08f6.js';
|
|
18
17
|
import './isObject-c74e273c.js';
|
|
@@ -22,6 +21,7 @@ import './isObjectLike-38996507.js';
|
|
|
22
21
|
import './_assignValue-fb2bf80a.js';
|
|
23
22
|
import './_defineProperty-2105cb48.js';
|
|
24
23
|
import './_getNative-93d6bfe9.js';
|
|
24
|
+
import './util-f1bde91c.js';
|
|
25
25
|
|
|
26
26
|
const breadcrumbsCss = "@charset \"UTF-8\";:host(limel-breadcrumbs){--limel-breadcrumbs-item-height:1.5rem;--limel-breadcrumbs-gap:0.75rem;--limel-breadcrumbs-gap:0.75rem;--limel-breadcrumbs-item-text-color:var(\n --breadcrumbs-item-text-color,\n rgb(var(--contrast-1500))\n );--limel-overflow-mask-horizontal:linear-gradient(\n to right,\n transparent 0%,\n black calc(0% + var(--limel-left-edge-fade-width, 1rem)),\n black calc(100% - var(--limel-right-edge-fade-width, 1rem)),\n transparent 100%\n );-webkit-mask-image:var(--limel-overflow-mask-horizontal);mask-image:var(--limel-overflow-mask-horizontal);padding-left:var(--limel-left-edge-fade-width, 1rem);padding-right:var(--limel-right-edge-fade-width, 1rem);--limel-left-edge-fade-width:0.5rem;--limel-right-edge-fade-width:0.5rem}ol,li,.step{all:unset}*{box-sizing:border-box}ol{padding:0.5rem;gap:var(--limel-breadcrumbs-gap)}.step{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:0.25rem;max-width:var(--breadcrumbs-item-max-width, 10rem);height:var(--limel-breadcrumbs-item-height);color:var(--limel-breadcrumbs-item-text-color);border-radius:100vw;font-size:0.875rem;padding:0 0.25rem}.step:not(:has(.text)){padding:0 0.125rem}.step:not(.last):focus{outline:none}.step:not(.last):focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.step:not(.last):after{content:var(--limel-breadcrumbs-divider);display:flex;align-items:center;justify-content:center;width:var(--limel-breadcrumbs-gap);position:absolute;top:0;right:calc(var(--limel-breadcrumbs-gap) * -1);bottom:0;left:auto;text-align:center}a.step{position:relative;cursor:pointer;transition:color 0.2s ease;color:var(--limel-breadcrumbs-item-text-color)}a.step:before{transition:opacity 0.2s ease, transform 0.3s ease-out;content:\"\";position:absolute;inset:auto 0 0 0;width:calc(100% - 0.5rem);margin:auto;height:0.125rem;border-radius:1rem;background-color:currentColor;opacity:0;transform:scale(0.6)}a.step:hover{color:rgb(var(--color-blue-default))}a.step:hover:before{opacity:0.3;transform:scale(1)}button.step:not(.last){transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--limel-breadcrumbs-item-text-color);background-color:transparent}button.step:not(.last):hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}button.step:not(.last):active{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.08rem, 0)}limel-icon{flex-shrink:0;width:calc(var(--limel-breadcrumbs-item-height) - 0.25rem);height:calc(var(--limel-breadcrumbs-item-height) - 0.25rem)}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 0.25rem}.last{opacity:0.7}:host(limel-breadcrumbs){box-sizing:border-box;display:flex;width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;direction:rtl}:host(limel-breadcrumbs)::-webkit-scrollbar{display:none}ol{display:flex;flex-direction:row-reverse;justify-content:flex-end;margin-right:auto}.step{direction:ltr}";
|
|
27
27
|
|
|
@@ -626,3258 +626,431 @@ const InputField = class {
|
|
|
626
626
|
};
|
|
627
627
|
InputField.style = inputFieldCss;
|
|
628
628
|
|
|
629
|
-
|
|
630
|
-
* @license
|
|
631
|
-
* Copyright 2018 Google Inc.
|
|
632
|
-
*
|
|
633
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
634
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
635
|
-
* in the Software without restriction, including without limitation the rights
|
|
636
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
637
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
638
|
-
* furnished to do so, subject to the following conditions:
|
|
639
|
-
*
|
|
640
|
-
* The above copyright notice and this permission notice shall be included in
|
|
641
|
-
* all copies or substantial portions of the Software.
|
|
642
|
-
*
|
|
643
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
644
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
645
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
646
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
647
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
648
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
649
|
-
* THE SOFTWARE.
|
|
650
|
-
*/
|
|
651
|
-
var _a, _b;
|
|
652
|
-
var cssClasses$2 = {
|
|
653
|
-
LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',
|
|
654
|
-
LIST_ITEM_CLASS: 'mdc-list-item',
|
|
655
|
-
LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled',
|
|
656
|
-
LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',
|
|
657
|
-
LIST_ITEM_TEXT_CLASS: 'mdc-list-item__text',
|
|
658
|
-
LIST_ITEM_PRIMARY_TEXT_CLASS: 'mdc-list-item__primary-text',
|
|
659
|
-
ROOT: 'mdc-list',
|
|
660
|
-
};
|
|
661
|
-
var evolutionClassNameMap = (_a = {},
|
|
662
|
-
_a["" + cssClasses$2.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-list-item--activated',
|
|
663
|
-
_a["" + cssClasses$2.LIST_ITEM_CLASS] = 'mdc-list-item',
|
|
664
|
-
_a["" + cssClasses$2.LIST_ITEM_DISABLED_CLASS] = 'mdc-list-item--disabled',
|
|
665
|
-
_a["" + cssClasses$2.LIST_ITEM_SELECTED_CLASS] = 'mdc-list-item--selected',
|
|
666
|
-
_a["" + cssClasses$2.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-list-item__primary-text',
|
|
667
|
-
_a["" + cssClasses$2.ROOT] = 'mdc-list',
|
|
668
|
-
_a);
|
|
669
|
-
var deprecatedClassNameMap = (_b = {},
|
|
670
|
-
_b["" + cssClasses$2.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-deprecated-list-item--activated',
|
|
671
|
-
_b["" + cssClasses$2.LIST_ITEM_CLASS] = 'mdc-deprecated-list-item',
|
|
672
|
-
_b["" + cssClasses$2.LIST_ITEM_DISABLED_CLASS] = 'mdc-deprecated-list-item--disabled',
|
|
673
|
-
_b["" + cssClasses$2.LIST_ITEM_SELECTED_CLASS] = 'mdc-deprecated-list-item--selected',
|
|
674
|
-
_b["" + cssClasses$2.LIST_ITEM_TEXT_CLASS] = 'mdc-deprecated-list-item__text',
|
|
675
|
-
_b["" + cssClasses$2.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-deprecated-list-item__primary-text',
|
|
676
|
-
_b["" + cssClasses$2.ROOT] = 'mdc-deprecated-list',
|
|
677
|
-
_b);
|
|
678
|
-
var strings$2 = {
|
|
679
|
-
ACTION_EVENT: 'MDCList:action',
|
|
680
|
-
ARIA_CHECKED: 'aria-checked',
|
|
681
|
-
ARIA_CHECKED_CHECKBOX_SELECTOR: '[role="checkbox"][aria-checked="true"]',
|
|
682
|
-
ARIA_CHECKED_RADIO_SELECTOR: '[role="radio"][aria-checked="true"]',
|
|
683
|
-
ARIA_CURRENT: 'aria-current',
|
|
684
|
-
ARIA_DISABLED: 'aria-disabled',
|
|
685
|
-
ARIA_ORIENTATION: 'aria-orientation',
|
|
686
|
-
ARIA_ORIENTATION_HORIZONTAL: 'horizontal',
|
|
687
|
-
ARIA_ROLE_CHECKBOX_SELECTOR: '[role="checkbox"]',
|
|
688
|
-
ARIA_SELECTED: 'aria-selected',
|
|
689
|
-
ARIA_INTERACTIVE_ROLES_SELECTOR: '[role="listbox"], [role="menu"]',
|
|
690
|
-
ARIA_MULTI_SELECTABLE_SELECTOR: '[aria-multiselectable="true"]',
|
|
691
|
-
CHECKBOX_RADIO_SELECTOR: 'input[type="checkbox"], input[type="radio"]',
|
|
692
|
-
CHECKBOX_SELECTOR: 'input[type="checkbox"]',
|
|
693
|
-
CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: "\n ." + cssClasses$2.LIST_ITEM_CLASS + " button:not(:disabled),\n ." + cssClasses$2.LIST_ITEM_CLASS + " a,\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " button:not(:disabled),\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " a\n ",
|
|
694
|
-
DEPRECATED_SELECTOR: '.mdc-deprecated-list',
|
|
695
|
-
FOCUSABLE_CHILD_ELEMENTS: "\n ." + cssClasses$2.LIST_ITEM_CLASS + " button:not(:disabled),\n ." + cssClasses$2.LIST_ITEM_CLASS + " a,\n ." + cssClasses$2.LIST_ITEM_CLASS + " input[type=\"radio\"]:not(:disabled),\n ." + cssClasses$2.LIST_ITEM_CLASS + " input[type=\"checkbox\"]:not(:disabled),\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " button:not(:disabled),\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " a,\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " input[type=\"radio\"]:not(:disabled),\n ." + deprecatedClassNameMap[cssClasses$2.LIST_ITEM_CLASS] + " input[type=\"checkbox\"]:not(:disabled)\n ",
|
|
696
|
-
RADIO_SELECTOR: 'input[type="radio"]',
|
|
697
|
-
SELECTED_ITEM_SELECTOR: '[aria-selected="true"], [aria-current="true"]',
|
|
698
|
-
};
|
|
699
|
-
var numbers$2 = {
|
|
700
|
-
UNSET_INDEX: -1,
|
|
701
|
-
TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS: 300
|
|
702
|
-
};
|
|
703
|
-
var evolutionAttribute = 'evolution';
|
|
704
|
-
|
|
705
|
-
/**
|
|
706
|
-
* @license
|
|
707
|
-
* Copyright 2020 Google Inc.
|
|
708
|
-
*
|
|
709
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
710
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
711
|
-
* in the Software without restriction, including without limitation the rights
|
|
712
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
713
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
714
|
-
* furnished to do so, subject to the following conditions:
|
|
715
|
-
*
|
|
716
|
-
* The above copyright notice and this permission notice shall be included in
|
|
717
|
-
* all copies or substantial portions of the Software.
|
|
718
|
-
*
|
|
719
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
720
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
721
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
722
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
723
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
724
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
725
|
-
* THE SOFTWARE.
|
|
726
|
-
*/
|
|
727
|
-
/**
|
|
728
|
-
* KEY provides normalized string values for keys.
|
|
729
|
-
*/
|
|
730
|
-
var KEY = {
|
|
731
|
-
UNKNOWN: 'Unknown',
|
|
732
|
-
BACKSPACE: 'Backspace',
|
|
733
|
-
ENTER: 'Enter',
|
|
734
|
-
SPACEBAR: 'Spacebar',
|
|
735
|
-
PAGE_UP: 'PageUp',
|
|
736
|
-
PAGE_DOWN: 'PageDown',
|
|
737
|
-
END: 'End',
|
|
738
|
-
HOME: 'Home',
|
|
739
|
-
ARROW_LEFT: 'ArrowLeft',
|
|
740
|
-
ARROW_UP: 'ArrowUp',
|
|
741
|
-
ARROW_RIGHT: 'ArrowRight',
|
|
742
|
-
ARROW_DOWN: 'ArrowDown',
|
|
743
|
-
DELETE: 'Delete',
|
|
744
|
-
ESCAPE: 'Escape',
|
|
745
|
-
TAB: 'Tab',
|
|
746
|
-
};
|
|
747
|
-
var normalizedKeys = new Set();
|
|
748
|
-
// IE11 has no support for new Map with iterable so we need to initialize this
|
|
749
|
-
// by hand.
|
|
750
|
-
normalizedKeys.add(KEY.BACKSPACE);
|
|
751
|
-
normalizedKeys.add(KEY.ENTER);
|
|
752
|
-
normalizedKeys.add(KEY.SPACEBAR);
|
|
753
|
-
normalizedKeys.add(KEY.PAGE_UP);
|
|
754
|
-
normalizedKeys.add(KEY.PAGE_DOWN);
|
|
755
|
-
normalizedKeys.add(KEY.END);
|
|
756
|
-
normalizedKeys.add(KEY.HOME);
|
|
757
|
-
normalizedKeys.add(KEY.ARROW_LEFT);
|
|
758
|
-
normalizedKeys.add(KEY.ARROW_UP);
|
|
759
|
-
normalizedKeys.add(KEY.ARROW_RIGHT);
|
|
760
|
-
normalizedKeys.add(KEY.ARROW_DOWN);
|
|
761
|
-
normalizedKeys.add(KEY.DELETE);
|
|
762
|
-
normalizedKeys.add(KEY.ESCAPE);
|
|
763
|
-
normalizedKeys.add(KEY.TAB);
|
|
764
|
-
var KEY_CODE = {
|
|
765
|
-
BACKSPACE: 8,
|
|
766
|
-
ENTER: 13,
|
|
767
|
-
SPACEBAR: 32,
|
|
768
|
-
PAGE_UP: 33,
|
|
769
|
-
PAGE_DOWN: 34,
|
|
770
|
-
END: 35,
|
|
771
|
-
HOME: 36,
|
|
772
|
-
ARROW_LEFT: 37,
|
|
773
|
-
ARROW_UP: 38,
|
|
774
|
-
ARROW_RIGHT: 39,
|
|
775
|
-
ARROW_DOWN: 40,
|
|
776
|
-
DELETE: 46,
|
|
777
|
-
ESCAPE: 27,
|
|
778
|
-
TAB: 9,
|
|
779
|
-
};
|
|
780
|
-
var mappedKeyCodes = new Map();
|
|
781
|
-
// IE11 has no support for new Map with iterable so we need to initialize this
|
|
782
|
-
// by hand.
|
|
783
|
-
mappedKeyCodes.set(KEY_CODE.BACKSPACE, KEY.BACKSPACE);
|
|
784
|
-
mappedKeyCodes.set(KEY_CODE.ENTER, KEY.ENTER);
|
|
785
|
-
mappedKeyCodes.set(KEY_CODE.SPACEBAR, KEY.SPACEBAR);
|
|
786
|
-
mappedKeyCodes.set(KEY_CODE.PAGE_UP, KEY.PAGE_UP);
|
|
787
|
-
mappedKeyCodes.set(KEY_CODE.PAGE_DOWN, KEY.PAGE_DOWN);
|
|
788
|
-
mappedKeyCodes.set(KEY_CODE.END, KEY.END);
|
|
789
|
-
mappedKeyCodes.set(KEY_CODE.HOME, KEY.HOME);
|
|
790
|
-
mappedKeyCodes.set(KEY_CODE.ARROW_LEFT, KEY.ARROW_LEFT);
|
|
791
|
-
mappedKeyCodes.set(KEY_CODE.ARROW_UP, KEY.ARROW_UP);
|
|
792
|
-
mappedKeyCodes.set(KEY_CODE.ARROW_RIGHT, KEY.ARROW_RIGHT);
|
|
793
|
-
mappedKeyCodes.set(KEY_CODE.ARROW_DOWN, KEY.ARROW_DOWN);
|
|
794
|
-
mappedKeyCodes.set(KEY_CODE.DELETE, KEY.DELETE);
|
|
795
|
-
mappedKeyCodes.set(KEY_CODE.ESCAPE, KEY.ESCAPE);
|
|
796
|
-
mappedKeyCodes.set(KEY_CODE.TAB, KEY.TAB);
|
|
797
|
-
var navigationKeys = new Set();
|
|
798
|
-
// IE11 has no support for new Set with iterable so we need to initialize this
|
|
799
|
-
// by hand.
|
|
800
|
-
navigationKeys.add(KEY.PAGE_UP);
|
|
801
|
-
navigationKeys.add(KEY.PAGE_DOWN);
|
|
802
|
-
navigationKeys.add(KEY.END);
|
|
803
|
-
navigationKeys.add(KEY.HOME);
|
|
804
|
-
navigationKeys.add(KEY.ARROW_LEFT);
|
|
805
|
-
navigationKeys.add(KEY.ARROW_UP);
|
|
806
|
-
navigationKeys.add(KEY.ARROW_RIGHT);
|
|
807
|
-
navigationKeys.add(KEY.ARROW_DOWN);
|
|
808
|
-
/**
|
|
809
|
-
* normalizeKey returns the normalized string for a navigational action.
|
|
810
|
-
*/
|
|
811
|
-
function normalizeKey(evt) {
|
|
812
|
-
var key = evt.key;
|
|
813
|
-
// If the event already has a normalized key, return it
|
|
814
|
-
if (normalizedKeys.has(key)) {
|
|
815
|
-
return key;
|
|
816
|
-
}
|
|
817
|
-
// tslint:disable-next-line:deprecation
|
|
818
|
-
var mappedKey = mappedKeyCodes.get(evt.keyCode);
|
|
819
|
-
if (mappedKey) {
|
|
820
|
-
return mappedKey;
|
|
821
|
-
}
|
|
822
|
-
return KEY.UNKNOWN;
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
/**
|
|
826
|
-
* @license
|
|
827
|
-
* Copyright 2020 Google Inc.
|
|
828
|
-
*
|
|
829
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
830
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
831
|
-
* in the Software without restriction, including without limitation the rights
|
|
832
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
833
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
834
|
-
* furnished to do so, subject to the following conditions:
|
|
835
|
-
*
|
|
836
|
-
* The above copyright notice and this permission notice shall be included in
|
|
837
|
-
* all copies or substantial portions of the Software.
|
|
838
|
-
*
|
|
839
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
840
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
841
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
842
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
843
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
844
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
845
|
-
* THE SOFTWARE.
|
|
846
|
-
*/
|
|
847
|
-
var ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];
|
|
848
|
-
/**
|
|
849
|
-
* Ensures that preventDefault is only called if the containing element
|
|
850
|
-
* doesn't consume the event, and it will cause an unintended scroll.
|
|
851
|
-
*
|
|
852
|
-
* @param evt keyboard event to be prevented.
|
|
853
|
-
*/
|
|
854
|
-
var preventDefaultEvent = function (evt) {
|
|
855
|
-
var target = evt.target;
|
|
856
|
-
if (!target) {
|
|
857
|
-
return;
|
|
858
|
-
}
|
|
859
|
-
var tagName = ("" + target.tagName).toLowerCase();
|
|
860
|
-
if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {
|
|
861
|
-
evt.preventDefault();
|
|
862
|
-
}
|
|
863
|
-
};
|
|
864
|
-
|
|
865
|
-
/**
|
|
866
|
-
* @license
|
|
867
|
-
* Copyright 2020 Google Inc.
|
|
868
|
-
*
|
|
869
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
870
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
871
|
-
* in the Software without restriction, including without limitation the rights
|
|
872
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
873
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
874
|
-
* furnished to do so, subject to the following conditions:
|
|
875
|
-
*
|
|
876
|
-
* The above copyright notice and this permission notice shall be included in
|
|
877
|
-
* all copies or substantial portions of the Software.
|
|
878
|
-
*
|
|
879
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
880
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
881
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
882
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
883
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
884
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
885
|
-
* THE SOFTWARE.
|
|
886
|
-
*/
|
|
887
|
-
/**
|
|
888
|
-
* Initializes a state object for typeahead. Use the same reference for calls to
|
|
889
|
-
* typeahead functions.
|
|
890
|
-
*
|
|
891
|
-
* @return The current state of the typeahead process. Each state reference
|
|
892
|
-
* represents a typeahead instance as the reference is typically mutated
|
|
893
|
-
* in-place.
|
|
894
|
-
*/
|
|
895
|
-
function initState() {
|
|
896
|
-
var state = {
|
|
897
|
-
bufferClearTimeout: 0,
|
|
898
|
-
currentFirstChar: '',
|
|
899
|
-
sortedIndexCursor: 0,
|
|
900
|
-
typeaheadBuffer: '',
|
|
901
|
-
};
|
|
902
|
-
return state;
|
|
903
|
-
}
|
|
904
|
-
/**
|
|
905
|
-
* Initializes typeahead state by indexing the current list items by primary
|
|
906
|
-
* text into the sortedIndexByFirstChar data structure.
|
|
907
|
-
*
|
|
908
|
-
* @param listItemCount numer of items in the list
|
|
909
|
-
* @param getPrimaryTextByItemIndex function that returns the primary text at a
|
|
910
|
-
* given index
|
|
911
|
-
*
|
|
912
|
-
* @return Map that maps the first character of the primary text to the full
|
|
913
|
-
* list text and it's index
|
|
914
|
-
*/
|
|
915
|
-
function initSortedIndex(listItemCount, getPrimaryTextByItemIndex) {
|
|
916
|
-
var sortedIndexByFirstChar = new Map();
|
|
917
|
-
// Aggregate item text to index mapping
|
|
918
|
-
for (var i = 0; i < listItemCount; i++) {
|
|
919
|
-
var primaryText = getPrimaryTextByItemIndex(i).trim();
|
|
920
|
-
if (!primaryText) {
|
|
921
|
-
continue;
|
|
922
|
-
}
|
|
923
|
-
var firstChar = primaryText[0].toLowerCase();
|
|
924
|
-
if (!sortedIndexByFirstChar.has(firstChar)) {
|
|
925
|
-
sortedIndexByFirstChar.set(firstChar, []);
|
|
926
|
-
}
|
|
927
|
-
sortedIndexByFirstChar.get(firstChar).push({ text: primaryText.toLowerCase(), index: i });
|
|
928
|
-
}
|
|
929
|
-
// Sort the mapping
|
|
930
|
-
// TODO(b/157162694): Investigate replacing forEach with Map.values()
|
|
931
|
-
sortedIndexByFirstChar.forEach(function (values) {
|
|
932
|
-
values.sort(function (first, second) {
|
|
933
|
-
return first.index - second.index;
|
|
934
|
-
});
|
|
935
|
-
});
|
|
936
|
-
return sortedIndexByFirstChar;
|
|
937
|
-
}
|
|
938
|
-
/**
|
|
939
|
-
* Given the next desired character from the user, it attempts to find the next
|
|
940
|
-
* list option matching the buffer. Wraps around if at the end of options.
|
|
941
|
-
*
|
|
942
|
-
* @param opts Options and accessors
|
|
943
|
-
* - nextChar - the next character to match against items
|
|
944
|
-
* - sortedIndexByFirstChar - output of `initSortedIndex(...)`
|
|
945
|
-
* - focusedItemIndex - the index of the currently focused item
|
|
946
|
-
* - focusItemAtIndex - function that focuses a list item at given index
|
|
947
|
-
* - skipFocus - whether or not to focus the matched item
|
|
948
|
-
* - isItemAtIndexDisabled - function that determines whether an item at a
|
|
949
|
-
* given index is disabled
|
|
950
|
-
* @param state The typeahead state instance. See `initState`.
|
|
951
|
-
*
|
|
952
|
-
* @return The index of the matched item, or -1 if no match.
|
|
953
|
-
*/
|
|
954
|
-
function matchItem(opts, state) {
|
|
955
|
-
var nextChar = opts.nextChar, focusItemAtIndex = opts.focusItemAtIndex, sortedIndexByFirstChar = opts.sortedIndexByFirstChar, focusedItemIndex = opts.focusedItemIndex, skipFocus = opts.skipFocus, isItemAtIndexDisabled = opts.isItemAtIndexDisabled;
|
|
956
|
-
clearTimeout(state.bufferClearTimeout);
|
|
957
|
-
state.bufferClearTimeout = setTimeout(function () {
|
|
958
|
-
clearBuffer(state);
|
|
959
|
-
}, numbers$2.TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS);
|
|
960
|
-
state.typeaheadBuffer = state.typeaheadBuffer + nextChar;
|
|
961
|
-
var index;
|
|
962
|
-
if (state.typeaheadBuffer.length === 1) {
|
|
963
|
-
index = matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state);
|
|
964
|
-
}
|
|
965
|
-
else {
|
|
966
|
-
index = matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state);
|
|
967
|
-
}
|
|
968
|
-
if (index !== -1 && !skipFocus) {
|
|
969
|
-
focusItemAtIndex(index);
|
|
970
|
-
}
|
|
971
|
-
return index;
|
|
972
|
-
}
|
|
973
|
-
/**
|
|
974
|
-
* Matches the user's single input character in the buffer to the
|
|
975
|
-
* next option that begins with such character. Wraps around if at
|
|
976
|
-
* end of options. Returns -1 if no match is found.
|
|
977
|
-
*/
|
|
978
|
-
function matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state) {
|
|
979
|
-
var firstChar = state.typeaheadBuffer[0];
|
|
980
|
-
var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);
|
|
981
|
-
if (!itemsMatchingFirstChar) {
|
|
982
|
-
return -1;
|
|
983
|
-
}
|
|
984
|
-
// Has the same firstChar been recently matched?
|
|
985
|
-
// Also, did starting index remain the same between key presses?
|
|
986
|
-
// If both hold true, simply increment index.
|
|
987
|
-
if (firstChar === state.currentFirstChar &&
|
|
988
|
-
itemsMatchingFirstChar[state.sortedIndexCursor].index ===
|
|
989
|
-
focusedItemIndex) {
|
|
990
|
-
state.sortedIndexCursor =
|
|
991
|
-
(state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;
|
|
992
|
-
var newIndex = itemsMatchingFirstChar[state.sortedIndexCursor].index;
|
|
993
|
-
if (!isItemAtIndexDisabled(newIndex)) {
|
|
994
|
-
return newIndex;
|
|
995
|
-
}
|
|
996
|
-
}
|
|
997
|
-
// If we're here, it means one of the following happened:
|
|
998
|
-
// - either firstChar or startingIndex has changed, invalidating the
|
|
999
|
-
// cursor.
|
|
1000
|
-
// - The next item of typeahead is disabled, so we have to look further.
|
|
1001
|
-
state.currentFirstChar = firstChar;
|
|
1002
|
-
var newCursorPosition = -1;
|
|
1003
|
-
var cursorPosition;
|
|
1004
|
-
// Find the first non-disabled item as a fallback.
|
|
1005
|
-
for (cursorPosition = 0; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {
|
|
1006
|
-
if (!isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {
|
|
1007
|
-
newCursorPosition = cursorPosition;
|
|
1008
|
-
break;
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
1011
|
-
// Advance cursor to first item matching the firstChar that is positioned
|
|
1012
|
-
// after starting item. Cursor is unchanged from fallback if there's no
|
|
1013
|
-
// such item.
|
|
1014
|
-
for (; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {
|
|
1015
|
-
if (itemsMatchingFirstChar[cursorPosition].index > focusedItemIndex &&
|
|
1016
|
-
!isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {
|
|
1017
|
-
newCursorPosition = cursorPosition;
|
|
1018
|
-
break;
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
1021
|
-
if (newCursorPosition !== -1) {
|
|
1022
|
-
state.sortedIndexCursor = newCursorPosition;
|
|
1023
|
-
return itemsMatchingFirstChar[state.sortedIndexCursor].index;
|
|
1024
|
-
}
|
|
1025
|
-
return -1;
|
|
1026
|
-
}
|
|
1027
|
-
/**
|
|
1028
|
-
* Attempts to find the next item that matches all of the typeahead buffer.
|
|
1029
|
-
* Wraps around if at end of options. Returns -1 if no match is found.
|
|
1030
|
-
*/
|
|
1031
|
-
function matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state) {
|
|
1032
|
-
var firstChar = state.typeaheadBuffer[0];
|
|
1033
|
-
var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);
|
|
1034
|
-
if (!itemsMatchingFirstChar) {
|
|
1035
|
-
return -1;
|
|
1036
|
-
}
|
|
1037
|
-
// Do nothing if text already matches
|
|
1038
|
-
var startingItem = itemsMatchingFirstChar[state.sortedIndexCursor];
|
|
1039
|
-
if (startingItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0 &&
|
|
1040
|
-
!isItemAtIndexDisabled(startingItem.index)) {
|
|
1041
|
-
return startingItem.index;
|
|
1042
|
-
}
|
|
1043
|
-
// Find next item that matches completely; if no match, we'll eventually
|
|
1044
|
-
// loop around to same position
|
|
1045
|
-
var cursorPosition = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;
|
|
1046
|
-
var nextCursorPosition = -1;
|
|
1047
|
-
while (cursorPosition !== state.sortedIndexCursor) {
|
|
1048
|
-
var currentItem = itemsMatchingFirstChar[cursorPosition];
|
|
1049
|
-
var matches = currentItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0;
|
|
1050
|
-
var isEnabled = !isItemAtIndexDisabled(currentItem.index);
|
|
1051
|
-
if (matches && isEnabled) {
|
|
1052
|
-
nextCursorPosition = cursorPosition;
|
|
1053
|
-
break;
|
|
1054
|
-
}
|
|
1055
|
-
cursorPosition = (cursorPosition + 1) % itemsMatchingFirstChar.length;
|
|
1056
|
-
}
|
|
1057
|
-
if (nextCursorPosition !== -1) {
|
|
1058
|
-
state.sortedIndexCursor = nextCursorPosition;
|
|
1059
|
-
return itemsMatchingFirstChar[state.sortedIndexCursor].index;
|
|
1060
|
-
}
|
|
1061
|
-
return -1;
|
|
1062
|
-
}
|
|
1063
|
-
/**
|
|
1064
|
-
* Whether or not the given typeahead instaance state is currently typing.
|
|
1065
|
-
*
|
|
1066
|
-
* @param state The typeahead state instance. See `initState`.
|
|
1067
|
-
*/
|
|
1068
|
-
function isTypingInProgress(state) {
|
|
1069
|
-
return state.typeaheadBuffer.length > 0;
|
|
1070
|
-
}
|
|
1071
|
-
/**
|
|
1072
|
-
* Clears the typeahaed buffer so that it resets item matching to the first
|
|
1073
|
-
* character.
|
|
1074
|
-
*
|
|
1075
|
-
* @param state The typeahead state instance. See `initState`.
|
|
1076
|
-
*/
|
|
1077
|
-
function clearBuffer(state) {
|
|
1078
|
-
state.typeaheadBuffer = '';
|
|
1079
|
-
}
|
|
1080
|
-
/**
|
|
1081
|
-
* Given a keydown event, it calculates whether or not to automatically focus a
|
|
1082
|
-
* list item depending on what was typed mimicing the typeahead functionality of
|
|
1083
|
-
* a standard <select> element that is open.
|
|
1084
|
-
*
|
|
1085
|
-
* @param opts Options and accessors
|
|
1086
|
-
* - event - the KeyboardEvent to handle and parse
|
|
1087
|
-
* - sortedIndexByFirstChar - output of `initSortedIndex(...)`
|
|
1088
|
-
* - focusedItemIndex - the index of the currently focused item
|
|
1089
|
-
* - focusItemAtIndex - function that focuses a list item at given index
|
|
1090
|
-
* - isItemAtFocusedIndexDisabled - whether or not the currently focused item
|
|
1091
|
-
* is disabled
|
|
1092
|
-
* - isTargetListItem - whether or not the event target is a list item
|
|
1093
|
-
* @param state The typeahead state instance. See `initState`.
|
|
1094
|
-
*
|
|
1095
|
-
* @returns index of the item matched by the keydown. -1 if not matched.
|
|
1096
|
-
*/
|
|
1097
|
-
function handleKeydown(opts, state) {
|
|
1098
|
-
var event = opts.event, isTargetListItem = opts.isTargetListItem, focusedItemIndex = opts.focusedItemIndex, focusItemAtIndex = opts.focusItemAtIndex, sortedIndexByFirstChar = opts.sortedIndexByFirstChar, isItemAtIndexDisabled = opts.isItemAtIndexDisabled;
|
|
1099
|
-
var isArrowLeft = normalizeKey(event) === 'ArrowLeft';
|
|
1100
|
-
var isArrowUp = normalizeKey(event) === 'ArrowUp';
|
|
1101
|
-
var isArrowRight = normalizeKey(event) === 'ArrowRight';
|
|
1102
|
-
var isArrowDown = normalizeKey(event) === 'ArrowDown';
|
|
1103
|
-
var isHome = normalizeKey(event) === 'Home';
|
|
1104
|
-
var isEnd = normalizeKey(event) === 'End';
|
|
1105
|
-
var isEnter = normalizeKey(event) === 'Enter';
|
|
1106
|
-
var isSpace = normalizeKey(event) === 'Spacebar';
|
|
1107
|
-
if (event.ctrlKey || event.metaKey || isArrowLeft || isArrowUp ||
|
|
1108
|
-
isArrowRight || isArrowDown || isHome || isEnd || isEnter) {
|
|
1109
|
-
return -1;
|
|
1110
|
-
}
|
|
1111
|
-
var isCharacterKey = !isSpace && event.key.length === 1;
|
|
1112
|
-
if (isCharacterKey) {
|
|
1113
|
-
preventDefaultEvent(event);
|
|
1114
|
-
var matchItemOpts = {
|
|
1115
|
-
focusItemAtIndex: focusItemAtIndex,
|
|
1116
|
-
focusedItemIndex: focusedItemIndex,
|
|
1117
|
-
nextChar: event.key.toLowerCase(),
|
|
1118
|
-
sortedIndexByFirstChar: sortedIndexByFirstChar,
|
|
1119
|
-
skipFocus: false,
|
|
1120
|
-
isItemAtIndexDisabled: isItemAtIndexDisabled,
|
|
1121
|
-
};
|
|
1122
|
-
return matchItem(matchItemOpts, state);
|
|
1123
|
-
}
|
|
1124
|
-
if (!isSpace) {
|
|
1125
|
-
return -1;
|
|
1126
|
-
}
|
|
1127
|
-
if (isTargetListItem) {
|
|
1128
|
-
preventDefaultEvent(event);
|
|
1129
|
-
}
|
|
1130
|
-
var typeaheadOnListItem = isTargetListItem && isTypingInProgress(state);
|
|
1131
|
-
if (typeaheadOnListItem) {
|
|
1132
|
-
var matchItemOpts = {
|
|
1133
|
-
focusItemAtIndex: focusItemAtIndex,
|
|
1134
|
-
focusedItemIndex: focusedItemIndex,
|
|
1135
|
-
nextChar: ' ',
|
|
1136
|
-
sortedIndexByFirstChar: sortedIndexByFirstChar,
|
|
1137
|
-
skipFocus: false,
|
|
1138
|
-
isItemAtIndexDisabled: isItemAtIndexDisabled,
|
|
1139
|
-
};
|
|
1140
|
-
// space participates in typeahead matching if in rapid typing mode
|
|
1141
|
-
return matchItem(matchItemOpts, state);
|
|
1142
|
-
}
|
|
1143
|
-
return -1;
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1146
|
-
/**
|
|
1147
|
-
* @license
|
|
1148
|
-
* Copyright 2018 Google Inc.
|
|
1149
|
-
*
|
|
1150
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1151
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
1152
|
-
* in the Software without restriction, including without limitation the rights
|
|
1153
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
1154
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
1155
|
-
* furnished to do so, subject to the following conditions:
|
|
1156
|
-
*
|
|
1157
|
-
* The above copyright notice and this permission notice shall be included in
|
|
1158
|
-
* all copies or substantial portions of the Software.
|
|
1159
|
-
*
|
|
1160
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1161
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1162
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1163
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1164
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1165
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
1166
|
-
* THE SOFTWARE.
|
|
1167
|
-
*/
|
|
1168
|
-
function isNumberArray(selectedIndex) {
|
|
1169
|
-
return selectedIndex instanceof Array;
|
|
1170
|
-
}
|
|
1171
|
-
var MDCListFoundation = /** @class */ (function (_super) {
|
|
1172
|
-
__extends(MDCListFoundation, _super);
|
|
1173
|
-
function MDCListFoundation(adapter) {
|
|
1174
|
-
var _this = _super.call(this, __assign(__assign({}, MDCListFoundation.defaultAdapter), adapter)) || this;
|
|
1175
|
-
_this.wrapFocus = false;
|
|
1176
|
-
_this.isVertical = true;
|
|
1177
|
-
_this.isSingleSelectionList = false;
|
|
1178
|
-
_this.selectedIndex = numbers$2.UNSET_INDEX;
|
|
1179
|
-
_this.focusedItemIndex = numbers$2.UNSET_INDEX;
|
|
1180
|
-
_this.useActivatedClass = false;
|
|
1181
|
-
_this.useSelectedAttr = false;
|
|
1182
|
-
_this.ariaCurrentAttrValue = null;
|
|
1183
|
-
_this.isCheckboxList = false;
|
|
1184
|
-
_this.isRadioList = false;
|
|
1185
|
-
_this.hasTypeahead = false;
|
|
1186
|
-
// Transiently holds current typeahead prefix from user.
|
|
1187
|
-
_this.typeaheadState = initState();
|
|
1188
|
-
_this.sortedIndexByFirstChar = new Map();
|
|
1189
|
-
return _this;
|
|
1190
|
-
}
|
|
1191
|
-
Object.defineProperty(MDCListFoundation, "strings", {
|
|
1192
|
-
get: function () {
|
|
1193
|
-
return strings$2;
|
|
1194
|
-
},
|
|
1195
|
-
enumerable: false,
|
|
1196
|
-
configurable: true
|
|
1197
|
-
});
|
|
1198
|
-
Object.defineProperty(MDCListFoundation, "cssClasses", {
|
|
1199
|
-
get: function () {
|
|
1200
|
-
return cssClasses$2;
|
|
1201
|
-
},
|
|
1202
|
-
enumerable: false,
|
|
1203
|
-
configurable: true
|
|
1204
|
-
});
|
|
1205
|
-
Object.defineProperty(MDCListFoundation, "numbers", {
|
|
1206
|
-
get: function () {
|
|
1207
|
-
return numbers$2;
|
|
1208
|
-
},
|
|
1209
|
-
enumerable: false,
|
|
1210
|
-
configurable: true
|
|
1211
|
-
});
|
|
1212
|
-
Object.defineProperty(MDCListFoundation, "defaultAdapter", {
|
|
1213
|
-
get: function () {
|
|
1214
|
-
return {
|
|
1215
|
-
addClassForElementIndex: function () { return undefined; },
|
|
1216
|
-
focusItemAtIndex: function () { return undefined; },
|
|
1217
|
-
getAttributeForElementIndex: function () { return null; },
|
|
1218
|
-
getFocusedElementIndex: function () { return 0; },
|
|
1219
|
-
getListItemCount: function () { return 0; },
|
|
1220
|
-
hasCheckboxAtIndex: function () { return false; },
|
|
1221
|
-
hasRadioAtIndex: function () { return false; },
|
|
1222
|
-
isCheckboxCheckedAtIndex: function () { return false; },
|
|
1223
|
-
isFocusInsideList: function () { return false; },
|
|
1224
|
-
isRootFocused: function () { return false; },
|
|
1225
|
-
listItemAtIndexHasClass: function () { return false; },
|
|
1226
|
-
notifyAction: function () { return undefined; },
|
|
1227
|
-
removeClassForElementIndex: function () { return undefined; },
|
|
1228
|
-
setAttributeForElementIndex: function () { return undefined; },
|
|
1229
|
-
setCheckedCheckboxOrRadioAtIndex: function () { return undefined; },
|
|
1230
|
-
setTabIndexForListItemChildren: function () { return undefined; },
|
|
1231
|
-
getPrimaryTextAtIndex: function () { return ''; },
|
|
1232
|
-
};
|
|
1233
|
-
},
|
|
1234
|
-
enumerable: false,
|
|
1235
|
-
configurable: true
|
|
1236
|
-
});
|
|
1237
|
-
MDCListFoundation.prototype.layout = function () {
|
|
1238
|
-
if (this.adapter.getListItemCount() === 0) {
|
|
1239
|
-
return;
|
|
1240
|
-
}
|
|
1241
|
-
// TODO(b/172274142): consider all items when determining the list's type.
|
|
1242
|
-
if (this.adapter.hasCheckboxAtIndex(0)) {
|
|
1243
|
-
this.isCheckboxList = true;
|
|
1244
|
-
}
|
|
1245
|
-
else if (this.adapter.hasRadioAtIndex(0)) {
|
|
1246
|
-
this.isRadioList = true;
|
|
1247
|
-
}
|
|
1248
|
-
else {
|
|
1249
|
-
this.maybeInitializeSingleSelection();
|
|
1250
|
-
}
|
|
1251
|
-
if (this.hasTypeahead) {
|
|
1252
|
-
this.sortedIndexByFirstChar = this.typeaheadInitSortedIndex();
|
|
1253
|
-
}
|
|
1254
|
-
};
|
|
1255
|
-
/** Returns the index of the item that was last focused. */
|
|
1256
|
-
MDCListFoundation.prototype.getFocusedItemIndex = function () {
|
|
1257
|
-
return this.focusedItemIndex;
|
|
1258
|
-
};
|
|
1259
|
-
/** Toggles focus wrapping with keyboard navigation. */
|
|
1260
|
-
MDCListFoundation.prototype.setWrapFocus = function (value) {
|
|
1261
|
-
this.wrapFocus = value;
|
|
1262
|
-
};
|
|
1263
|
-
/**
|
|
1264
|
-
* Toggles orientation direction for keyboard navigation (true for vertical,
|
|
1265
|
-
* false for horizontal).
|
|
1266
|
-
*/
|
|
1267
|
-
MDCListFoundation.prototype.setVerticalOrientation = function (value) {
|
|
1268
|
-
this.isVertical = value;
|
|
1269
|
-
};
|
|
1270
|
-
/** Toggles single-selection behavior. */
|
|
1271
|
-
MDCListFoundation.prototype.setSingleSelection = function (value) {
|
|
1272
|
-
this.isSingleSelectionList = value;
|
|
1273
|
-
if (value) {
|
|
1274
|
-
this.maybeInitializeSingleSelection();
|
|
1275
|
-
this.selectedIndex = this.getSelectedIndexFromDOM();
|
|
1276
|
-
}
|
|
1277
|
-
};
|
|
1278
|
-
/**
|
|
1279
|
-
* Automatically determines whether the list is single selection list. If so,
|
|
1280
|
-
* initializes the internal state to match the selected item.
|
|
1281
|
-
*/
|
|
1282
|
-
MDCListFoundation.prototype.maybeInitializeSingleSelection = function () {
|
|
1283
|
-
var selectedItemIndex = this.getSelectedIndexFromDOM();
|
|
1284
|
-
if (selectedItemIndex === numbers$2.UNSET_INDEX)
|
|
1285
|
-
return;
|
|
1286
|
-
var hasActivatedClass = this.adapter.listItemAtIndexHasClass(selectedItemIndex, cssClasses$2.LIST_ITEM_ACTIVATED_CLASS);
|
|
1287
|
-
if (hasActivatedClass) {
|
|
1288
|
-
this.setUseActivatedClass(true);
|
|
1289
|
-
}
|
|
1290
|
-
this.isSingleSelectionList = true;
|
|
1291
|
-
this.selectedIndex = selectedItemIndex;
|
|
1292
|
-
};
|
|
1293
|
-
/** @return Index of the first selected item based on the DOM state. */
|
|
1294
|
-
MDCListFoundation.prototype.getSelectedIndexFromDOM = function () {
|
|
1295
|
-
var selectedIndex = numbers$2.UNSET_INDEX;
|
|
1296
|
-
var listItemsCount = this.adapter.getListItemCount();
|
|
1297
|
-
for (var i = 0; i < listItemsCount; i++) {
|
|
1298
|
-
var hasSelectedClass = this.adapter.listItemAtIndexHasClass(i, cssClasses$2.LIST_ITEM_SELECTED_CLASS);
|
|
1299
|
-
var hasActivatedClass = this.adapter.listItemAtIndexHasClass(i, cssClasses$2.LIST_ITEM_ACTIVATED_CLASS);
|
|
1300
|
-
if (!(hasSelectedClass || hasActivatedClass)) {
|
|
1301
|
-
continue;
|
|
1302
|
-
}
|
|
1303
|
-
selectedIndex = i;
|
|
1304
|
-
break;
|
|
1305
|
-
}
|
|
1306
|
-
return selectedIndex;
|
|
1307
|
-
};
|
|
1308
|
-
/**
|
|
1309
|
-
* Sets whether typeahead is enabled on the list.
|
|
1310
|
-
* @param hasTypeahead Whether typeahead is enabled.
|
|
1311
|
-
*/
|
|
1312
|
-
MDCListFoundation.prototype.setHasTypeahead = function (hasTypeahead) {
|
|
1313
|
-
this.hasTypeahead = hasTypeahead;
|
|
1314
|
-
if (hasTypeahead) {
|
|
1315
|
-
this.sortedIndexByFirstChar = this.typeaheadInitSortedIndex();
|
|
1316
|
-
}
|
|
1317
|
-
};
|
|
1318
|
-
/**
|
|
1319
|
-
* @return Whether typeahead is currently matching a user-specified prefix.
|
|
1320
|
-
*/
|
|
1321
|
-
MDCListFoundation.prototype.isTypeaheadInProgress = function () {
|
|
1322
|
-
return this.hasTypeahead &&
|
|
1323
|
-
isTypingInProgress(this.typeaheadState);
|
|
1324
|
-
};
|
|
1325
|
-
/** Toggle use of the "activated" CSS class. */
|
|
1326
|
-
MDCListFoundation.prototype.setUseActivatedClass = function (useActivated) {
|
|
1327
|
-
this.useActivatedClass = useActivated;
|
|
1328
|
-
};
|
|
1329
|
-
/**
|
|
1330
|
-
* Toggles use of the selected attribute (true for aria-selected, false for
|
|
1331
|
-
* aria-checked).
|
|
1332
|
-
*/
|
|
1333
|
-
MDCListFoundation.prototype.setUseSelectedAttribute = function (useSelected) {
|
|
1334
|
-
this.useSelectedAttr = useSelected;
|
|
1335
|
-
};
|
|
1336
|
-
MDCListFoundation.prototype.getSelectedIndex = function () {
|
|
1337
|
-
return this.selectedIndex;
|
|
1338
|
-
};
|
|
1339
|
-
MDCListFoundation.prototype.setSelectedIndex = function (index, _a) {
|
|
1340
|
-
var _b = _a === void 0 ? {} : _a, forceUpdate = _b.forceUpdate;
|
|
1341
|
-
if (!this.isIndexValid(index)) {
|
|
1342
|
-
return;
|
|
1343
|
-
}
|
|
1344
|
-
if (this.isCheckboxList) {
|
|
1345
|
-
this.setCheckboxAtIndex(index);
|
|
1346
|
-
}
|
|
1347
|
-
else if (this.isRadioList) {
|
|
1348
|
-
this.setRadioAtIndex(index);
|
|
1349
|
-
}
|
|
1350
|
-
else {
|
|
1351
|
-
this.setSingleSelectionAtIndex(index, { forceUpdate: forceUpdate });
|
|
1352
|
-
}
|
|
1353
|
-
};
|
|
1354
|
-
/**
|
|
1355
|
-
* Focus in handler for the list items.
|
|
1356
|
-
*/
|
|
1357
|
-
MDCListFoundation.prototype.handleFocusIn = function (listItemIndex) {
|
|
1358
|
-
if (listItemIndex >= 0) {
|
|
1359
|
-
this.focusedItemIndex = listItemIndex;
|
|
1360
|
-
this.adapter.setAttributeForElementIndex(listItemIndex, 'tabindex', '0');
|
|
1361
|
-
this.adapter.setTabIndexForListItemChildren(listItemIndex, '0');
|
|
1362
|
-
}
|
|
1363
|
-
};
|
|
1364
|
-
/**
|
|
1365
|
-
* Focus out handler for the list items.
|
|
1366
|
-
*/
|
|
1367
|
-
MDCListFoundation.prototype.handleFocusOut = function (listItemIndex) {
|
|
1368
|
-
var _this = this;
|
|
1369
|
-
if (listItemIndex >= 0) {
|
|
1370
|
-
this.adapter.setAttributeForElementIndex(listItemIndex, 'tabindex', '-1');
|
|
1371
|
-
this.adapter.setTabIndexForListItemChildren(listItemIndex, '-1');
|
|
1372
|
-
}
|
|
1373
|
-
/**
|
|
1374
|
-
* Between Focusout & Focusin some browsers do not have focus on any
|
|
1375
|
-
* element. Setting a delay to wait till the focus is moved to next element.
|
|
1376
|
-
*/
|
|
1377
|
-
setTimeout(function () {
|
|
1378
|
-
if (!_this.adapter.isFocusInsideList()) {
|
|
1379
|
-
_this.setTabindexToFirstSelectedOrFocusedItem();
|
|
1380
|
-
}
|
|
1381
|
-
}, 0);
|
|
1382
|
-
};
|
|
1383
|
-
/**
|
|
1384
|
-
* Key handler for the list.
|
|
1385
|
-
*/
|
|
1386
|
-
MDCListFoundation.prototype.handleKeydown = function (event, isRootListItem, listItemIndex) {
|
|
1387
|
-
var _this = this;
|
|
1388
|
-
var isArrowLeft = normalizeKey(event) === 'ArrowLeft';
|
|
1389
|
-
var isArrowUp = normalizeKey(event) === 'ArrowUp';
|
|
1390
|
-
var isArrowRight = normalizeKey(event) === 'ArrowRight';
|
|
1391
|
-
var isArrowDown = normalizeKey(event) === 'ArrowDown';
|
|
1392
|
-
var isHome = normalizeKey(event) === 'Home';
|
|
1393
|
-
var isEnd = normalizeKey(event) === 'End';
|
|
1394
|
-
var isEnter = normalizeKey(event) === 'Enter';
|
|
1395
|
-
var isSpace = normalizeKey(event) === 'Spacebar';
|
|
1396
|
-
// Have to check both upper and lower case, because having caps lock on
|
|
1397
|
-
// affects the value.
|
|
1398
|
-
var isLetterA = event.key === 'A' || event.key === 'a';
|
|
1399
|
-
if (this.adapter.isRootFocused()) {
|
|
1400
|
-
if (isArrowUp || isEnd) {
|
|
1401
|
-
event.preventDefault();
|
|
1402
|
-
this.focusLastElement();
|
|
1403
|
-
}
|
|
1404
|
-
else if (isArrowDown || isHome) {
|
|
1405
|
-
event.preventDefault();
|
|
1406
|
-
this.focusFirstElement();
|
|
1407
|
-
}
|
|
1408
|
-
if (this.hasTypeahead) {
|
|
1409
|
-
var handleKeydownOpts = {
|
|
1410
|
-
event: event,
|
|
1411
|
-
focusItemAtIndex: function (index) {
|
|
1412
|
-
_this.focusItemAtIndex(index);
|
|
1413
|
-
},
|
|
1414
|
-
focusedItemIndex: -1,
|
|
1415
|
-
isTargetListItem: isRootListItem,
|
|
1416
|
-
sortedIndexByFirstChar: this.sortedIndexByFirstChar,
|
|
1417
|
-
isItemAtIndexDisabled: function (index) {
|
|
1418
|
-
return _this.adapter.listItemAtIndexHasClass(index, cssClasses$2.LIST_ITEM_DISABLED_CLASS);
|
|
1419
|
-
},
|
|
1420
|
-
};
|
|
1421
|
-
handleKeydown(handleKeydownOpts, this.typeaheadState);
|
|
1422
|
-
}
|
|
1423
|
-
return;
|
|
1424
|
-
}
|
|
1425
|
-
var currentIndex = this.adapter.getFocusedElementIndex();
|
|
1426
|
-
if (currentIndex === -1) {
|
|
1427
|
-
currentIndex = listItemIndex;
|
|
1428
|
-
if (currentIndex < 0) {
|
|
1429
|
-
// If this event doesn't have a mdc-list-item ancestor from the
|
|
1430
|
-
// current list (not from a sublist), return early.
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
if ((this.isVertical && isArrowDown) ||
|
|
1435
|
-
(!this.isVertical && isArrowRight)) {
|
|
1436
|
-
preventDefaultEvent(event);
|
|
1437
|
-
this.focusNextElement(currentIndex);
|
|
1438
|
-
}
|
|
1439
|
-
else if ((this.isVertical && isArrowUp) || (!this.isVertical && isArrowLeft)) {
|
|
1440
|
-
preventDefaultEvent(event);
|
|
1441
|
-
this.focusPrevElement(currentIndex);
|
|
1442
|
-
}
|
|
1443
|
-
else if (isHome) {
|
|
1444
|
-
preventDefaultEvent(event);
|
|
1445
|
-
this.focusFirstElement();
|
|
1446
|
-
}
|
|
1447
|
-
else if (isEnd) {
|
|
1448
|
-
preventDefaultEvent(event);
|
|
1449
|
-
this.focusLastElement();
|
|
1450
|
-
}
|
|
1451
|
-
else if (isLetterA && event.ctrlKey && this.isCheckboxList) {
|
|
1452
|
-
event.preventDefault();
|
|
1453
|
-
this.toggleAll(this.selectedIndex === numbers$2.UNSET_INDEX ?
|
|
1454
|
-
[] :
|
|
1455
|
-
this.selectedIndex);
|
|
1456
|
-
}
|
|
1457
|
-
else if (isEnter || isSpace) {
|
|
1458
|
-
if (isRootListItem) {
|
|
1459
|
-
// Return early if enter key is pressed on anchor element which triggers
|
|
1460
|
-
// synthetic MouseEvent event.
|
|
1461
|
-
var target = event.target;
|
|
1462
|
-
if (target && target.tagName === 'A' && isEnter) {
|
|
1463
|
-
return;
|
|
1464
|
-
}
|
|
1465
|
-
preventDefaultEvent(event);
|
|
1466
|
-
if (this.adapter.listItemAtIndexHasClass(currentIndex, cssClasses$2.LIST_ITEM_DISABLED_CLASS)) {
|
|
1467
|
-
return;
|
|
1468
|
-
}
|
|
1469
|
-
if (!this.isTypeaheadInProgress()) {
|
|
1470
|
-
if (this.isSelectableList()) {
|
|
1471
|
-
this.setSelectedIndexOnAction(currentIndex);
|
|
1472
|
-
}
|
|
1473
|
-
this.adapter.notifyAction(currentIndex);
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
}
|
|
1477
|
-
if (this.hasTypeahead) {
|
|
1478
|
-
var handleKeydownOpts = {
|
|
1479
|
-
event: event,
|
|
1480
|
-
focusItemAtIndex: function (index) {
|
|
1481
|
-
_this.focusItemAtIndex(index);
|
|
1482
|
-
},
|
|
1483
|
-
focusedItemIndex: this.focusedItemIndex,
|
|
1484
|
-
isTargetListItem: isRootListItem,
|
|
1485
|
-
sortedIndexByFirstChar: this.sortedIndexByFirstChar,
|
|
1486
|
-
isItemAtIndexDisabled: function (index) { return _this.adapter.listItemAtIndexHasClass(index, cssClasses$2.LIST_ITEM_DISABLED_CLASS); },
|
|
1487
|
-
};
|
|
1488
|
-
handleKeydown(handleKeydownOpts, this.typeaheadState);
|
|
1489
|
-
}
|
|
1490
|
-
};
|
|
1491
|
-
/**
|
|
1492
|
-
* Click handler for the list.
|
|
1493
|
-
*/
|
|
1494
|
-
MDCListFoundation.prototype.handleClick = function (index, toggleCheckbox) {
|
|
1495
|
-
if (index === numbers$2.UNSET_INDEX) {
|
|
1496
|
-
return;
|
|
1497
|
-
}
|
|
1498
|
-
if (this.adapter.listItemAtIndexHasClass(index, cssClasses$2.LIST_ITEM_DISABLED_CLASS)) {
|
|
1499
|
-
return;
|
|
1500
|
-
}
|
|
1501
|
-
if (this.isSelectableList()) {
|
|
1502
|
-
this.setSelectedIndexOnAction(index, toggleCheckbox);
|
|
1503
|
-
}
|
|
1504
|
-
this.adapter.notifyAction(index);
|
|
1505
|
-
};
|
|
1506
|
-
/**
|
|
1507
|
-
* Focuses the next element on the list.
|
|
1508
|
-
*/
|
|
1509
|
-
MDCListFoundation.prototype.focusNextElement = function (index) {
|
|
1510
|
-
var count = this.adapter.getListItemCount();
|
|
1511
|
-
var nextIndex = index + 1;
|
|
1512
|
-
if (nextIndex >= count) {
|
|
1513
|
-
if (this.wrapFocus) {
|
|
1514
|
-
nextIndex = 0;
|
|
1515
|
-
}
|
|
1516
|
-
else {
|
|
1517
|
-
// Return early because last item is already focused.
|
|
1518
|
-
return index;
|
|
1519
|
-
}
|
|
1520
|
-
}
|
|
1521
|
-
this.focusItemAtIndex(nextIndex);
|
|
1522
|
-
return nextIndex;
|
|
1523
|
-
};
|
|
1524
|
-
/**
|
|
1525
|
-
* Focuses the previous element on the list.
|
|
1526
|
-
*/
|
|
1527
|
-
MDCListFoundation.prototype.focusPrevElement = function (index) {
|
|
1528
|
-
var prevIndex = index - 1;
|
|
1529
|
-
if (prevIndex < 0) {
|
|
1530
|
-
if (this.wrapFocus) {
|
|
1531
|
-
prevIndex = this.adapter.getListItemCount() - 1;
|
|
1532
|
-
}
|
|
1533
|
-
else {
|
|
1534
|
-
// Return early because first item is already focused.
|
|
1535
|
-
return index;
|
|
1536
|
-
}
|
|
1537
|
-
}
|
|
1538
|
-
this.focusItemAtIndex(prevIndex);
|
|
1539
|
-
return prevIndex;
|
|
1540
|
-
};
|
|
1541
|
-
MDCListFoundation.prototype.focusFirstElement = function () {
|
|
1542
|
-
this.focusItemAtIndex(0);
|
|
1543
|
-
return 0;
|
|
1544
|
-
};
|
|
1545
|
-
MDCListFoundation.prototype.focusLastElement = function () {
|
|
1546
|
-
var lastIndex = this.adapter.getListItemCount() - 1;
|
|
1547
|
-
this.focusItemAtIndex(lastIndex);
|
|
1548
|
-
return lastIndex;
|
|
1549
|
-
};
|
|
1550
|
-
MDCListFoundation.prototype.focusInitialElement = function () {
|
|
1551
|
-
var initialIndex = this.getFirstSelectedOrFocusedItemIndex();
|
|
1552
|
-
this.focusItemAtIndex(initialIndex);
|
|
1553
|
-
return initialIndex;
|
|
1554
|
-
};
|
|
1555
|
-
/**
|
|
1556
|
-
* @param itemIndex Index of the list item
|
|
1557
|
-
* @param isEnabled Sets the list item to enabled or disabled.
|
|
1558
|
-
*/
|
|
1559
|
-
MDCListFoundation.prototype.setEnabled = function (itemIndex, isEnabled) {
|
|
1560
|
-
if (!this.isIndexValid(itemIndex)) {
|
|
1561
|
-
return;
|
|
1562
|
-
}
|
|
1563
|
-
if (isEnabled) {
|
|
1564
|
-
this.adapter.removeClassForElementIndex(itemIndex, cssClasses$2.LIST_ITEM_DISABLED_CLASS);
|
|
1565
|
-
this.adapter.setAttributeForElementIndex(itemIndex, strings$2.ARIA_DISABLED, 'false');
|
|
1566
|
-
}
|
|
1567
|
-
else {
|
|
1568
|
-
this.adapter.addClassForElementIndex(itemIndex, cssClasses$2.LIST_ITEM_DISABLED_CLASS);
|
|
1569
|
-
this.adapter.setAttributeForElementIndex(itemIndex, strings$2.ARIA_DISABLED, 'true');
|
|
1570
|
-
}
|
|
1571
|
-
};
|
|
1572
|
-
MDCListFoundation.prototype.setSingleSelectionAtIndex = function (index, _a) {
|
|
1573
|
-
var _b = _a === void 0 ? {} : _a, forceUpdate = _b.forceUpdate;
|
|
1574
|
-
if (this.selectedIndex === index && !forceUpdate) {
|
|
1575
|
-
return;
|
|
1576
|
-
}
|
|
1577
|
-
var selectedClassName = cssClasses$2.LIST_ITEM_SELECTED_CLASS;
|
|
1578
|
-
if (this.useActivatedClass) {
|
|
1579
|
-
selectedClassName = cssClasses$2.LIST_ITEM_ACTIVATED_CLASS;
|
|
1580
|
-
}
|
|
1581
|
-
if (this.selectedIndex !== numbers$2.UNSET_INDEX) {
|
|
1582
|
-
this.adapter.removeClassForElementIndex(this.selectedIndex, selectedClassName);
|
|
1583
|
-
}
|
|
1584
|
-
this.setAriaForSingleSelectionAtIndex(index);
|
|
1585
|
-
this.setTabindexAtIndex(index);
|
|
1586
|
-
if (index !== numbers$2.UNSET_INDEX) {
|
|
1587
|
-
this.adapter.addClassForElementIndex(index, selectedClassName);
|
|
1588
|
-
}
|
|
1589
|
-
this.selectedIndex = index;
|
|
1590
|
-
};
|
|
1591
|
-
/**
|
|
1592
|
-
* Sets aria attribute for single selection at given index.
|
|
1593
|
-
*/
|
|
1594
|
-
MDCListFoundation.prototype.setAriaForSingleSelectionAtIndex = function (index) {
|
|
1595
|
-
// Detect the presence of aria-current and get the value only during list
|
|
1596
|
-
// initialization when it is in unset state.
|
|
1597
|
-
if (this.selectedIndex === numbers$2.UNSET_INDEX) {
|
|
1598
|
-
this.ariaCurrentAttrValue =
|
|
1599
|
-
this.adapter.getAttributeForElementIndex(index, strings$2.ARIA_CURRENT);
|
|
1600
|
-
}
|
|
1601
|
-
var isAriaCurrent = this.ariaCurrentAttrValue !== null;
|
|
1602
|
-
var ariaAttribute = isAriaCurrent ? strings$2.ARIA_CURRENT : strings$2.ARIA_SELECTED;
|
|
1603
|
-
if (this.selectedIndex !== numbers$2.UNSET_INDEX) {
|
|
1604
|
-
this.adapter.setAttributeForElementIndex(this.selectedIndex, ariaAttribute, 'false');
|
|
1605
|
-
}
|
|
1606
|
-
if (index !== numbers$2.UNSET_INDEX) {
|
|
1607
|
-
var ariaAttributeValue = isAriaCurrent ? this.ariaCurrentAttrValue : 'true';
|
|
1608
|
-
this.adapter.setAttributeForElementIndex(index, ariaAttribute, ariaAttributeValue);
|
|
1609
|
-
}
|
|
1610
|
-
};
|
|
1611
|
-
/**
|
|
1612
|
-
* Returns the attribute to use for indicating selection status.
|
|
1613
|
-
*/
|
|
1614
|
-
MDCListFoundation.prototype.getSelectionAttribute = function () {
|
|
1615
|
-
return this.useSelectedAttr ? strings$2.ARIA_SELECTED : strings$2.ARIA_CHECKED;
|
|
1616
|
-
};
|
|
1617
|
-
/**
|
|
1618
|
-
* Toggles radio at give index. Radio doesn't change the checked state if it
|
|
1619
|
-
* is already checked.
|
|
1620
|
-
*/
|
|
1621
|
-
MDCListFoundation.prototype.setRadioAtIndex = function (index) {
|
|
1622
|
-
var selectionAttribute = this.getSelectionAttribute();
|
|
1623
|
-
this.adapter.setCheckedCheckboxOrRadioAtIndex(index, true);
|
|
1624
|
-
if (this.selectedIndex !== numbers$2.UNSET_INDEX) {
|
|
1625
|
-
this.adapter.setAttributeForElementIndex(this.selectedIndex, selectionAttribute, 'false');
|
|
1626
|
-
}
|
|
1627
|
-
this.adapter.setAttributeForElementIndex(index, selectionAttribute, 'true');
|
|
1628
|
-
this.selectedIndex = index;
|
|
1629
|
-
};
|
|
1630
|
-
MDCListFoundation.prototype.setCheckboxAtIndex = function (index) {
|
|
1631
|
-
var selectionAttribute = this.getSelectionAttribute();
|
|
1632
|
-
for (var i = 0; i < this.adapter.getListItemCount(); i++) {
|
|
1633
|
-
var isChecked = false;
|
|
1634
|
-
if (index.indexOf(i) >= 0) {
|
|
1635
|
-
isChecked = true;
|
|
1636
|
-
}
|
|
1637
|
-
this.adapter.setCheckedCheckboxOrRadioAtIndex(i, isChecked);
|
|
1638
|
-
this.adapter.setAttributeForElementIndex(i, selectionAttribute, isChecked ? 'true' : 'false');
|
|
1639
|
-
}
|
|
1640
|
-
this.selectedIndex = index;
|
|
1641
|
-
};
|
|
1642
|
-
MDCListFoundation.prototype.setTabindexAtIndex = function (index) {
|
|
1643
|
-
if (this.focusedItemIndex === numbers$2.UNSET_INDEX && index !== 0) {
|
|
1644
|
-
// If some list item was selected set first list item's tabindex to -1.
|
|
1645
|
-
// Generally, tabindex is set to 0 on first list item of list that has no
|
|
1646
|
-
// preselected items.
|
|
1647
|
-
this.adapter.setAttributeForElementIndex(0, 'tabindex', '-1');
|
|
1648
|
-
}
|
|
1649
|
-
else if (this.focusedItemIndex >= 0 && this.focusedItemIndex !== index) {
|
|
1650
|
-
this.adapter.setAttributeForElementIndex(this.focusedItemIndex, 'tabindex', '-1');
|
|
1651
|
-
}
|
|
1652
|
-
// Set the previous selection's tabindex to -1. We need this because
|
|
1653
|
-
// in selection menus that are not visible, programmatically setting an
|
|
1654
|
-
// option will not change focus but will change where tabindex should be 0.
|
|
1655
|
-
if (!(this.selectedIndex instanceof Array) &&
|
|
1656
|
-
this.selectedIndex !== index) {
|
|
1657
|
-
this.adapter.setAttributeForElementIndex(this.selectedIndex, 'tabindex', '-1');
|
|
1658
|
-
}
|
|
1659
|
-
if (index !== numbers$2.UNSET_INDEX) {
|
|
1660
|
-
this.adapter.setAttributeForElementIndex(index, 'tabindex', '0');
|
|
1661
|
-
}
|
|
1662
|
-
};
|
|
1663
|
-
/**
|
|
1664
|
-
* @return Return true if it is single selectin list, checkbox list or radio
|
|
1665
|
-
* list.
|
|
1666
|
-
*/
|
|
1667
|
-
MDCListFoundation.prototype.isSelectableList = function () {
|
|
1668
|
-
return this.isSingleSelectionList || this.isCheckboxList ||
|
|
1669
|
-
this.isRadioList;
|
|
1670
|
-
};
|
|
1671
|
-
MDCListFoundation.prototype.setTabindexToFirstSelectedOrFocusedItem = function () {
|
|
1672
|
-
var targetIndex = this.getFirstSelectedOrFocusedItemIndex();
|
|
1673
|
-
this.setTabindexAtIndex(targetIndex);
|
|
1674
|
-
};
|
|
1675
|
-
MDCListFoundation.prototype.getFirstSelectedOrFocusedItemIndex = function () {
|
|
1676
|
-
// Action lists retain focus on the most recently focused item.
|
|
1677
|
-
if (!this.isSelectableList()) {
|
|
1678
|
-
return Math.max(this.focusedItemIndex, 0);
|
|
1679
|
-
}
|
|
1680
|
-
// Single-selection lists focus the selected item.
|
|
1681
|
-
if (typeof this.selectedIndex === 'number' &&
|
|
1682
|
-
this.selectedIndex !== numbers$2.UNSET_INDEX) {
|
|
1683
|
-
return this.selectedIndex;
|
|
1684
|
-
}
|
|
1685
|
-
// Multiple-selection lists focus the first selected item.
|
|
1686
|
-
if (isNumberArray(this.selectedIndex) && this.selectedIndex.length > 0) {
|
|
1687
|
-
return this.selectedIndex.reduce(function (minIndex, currentIndex) { return Math.min(minIndex, currentIndex); });
|
|
1688
|
-
}
|
|
1689
|
-
// Selection lists without a selection focus the first item.
|
|
1690
|
-
return 0;
|
|
1691
|
-
};
|
|
1692
|
-
MDCListFoundation.prototype.isIndexValid = function (index) {
|
|
1693
|
-
var _this = this;
|
|
1694
|
-
if (index instanceof Array) {
|
|
1695
|
-
if (!this.isCheckboxList) {
|
|
1696
|
-
throw new Error('MDCListFoundation: Array of index is only supported for checkbox based list');
|
|
1697
|
-
}
|
|
1698
|
-
if (index.length === 0) {
|
|
1699
|
-
return true;
|
|
1700
|
-
}
|
|
1701
|
-
else {
|
|
1702
|
-
return index.some(function (i) { return _this.isIndexInRange(i); });
|
|
1703
|
-
}
|
|
1704
|
-
}
|
|
1705
|
-
else if (typeof index === 'number') {
|
|
1706
|
-
if (this.isCheckboxList) {
|
|
1707
|
-
throw new Error("MDCListFoundation: Expected array of index for checkbox based list but got number: " + index);
|
|
1708
|
-
}
|
|
1709
|
-
return this.isIndexInRange(index) ||
|
|
1710
|
-
this.isSingleSelectionList && index === numbers$2.UNSET_INDEX;
|
|
1711
|
-
}
|
|
1712
|
-
else {
|
|
1713
|
-
return false;
|
|
1714
|
-
}
|
|
1715
|
-
};
|
|
1716
|
-
MDCListFoundation.prototype.isIndexInRange = function (index) {
|
|
1717
|
-
var listSize = this.adapter.getListItemCount();
|
|
1718
|
-
return index >= 0 && index < listSize;
|
|
1719
|
-
};
|
|
1720
|
-
/**
|
|
1721
|
-
* Sets selected index on user action, toggles checkbox / radio based on
|
|
1722
|
-
* toggleCheckbox value. User interaction should not toggle list item(s) when
|
|
1723
|
-
* disabled.
|
|
1724
|
-
*/
|
|
1725
|
-
MDCListFoundation.prototype.setSelectedIndexOnAction = function (index, toggleCheckbox) {
|
|
1726
|
-
if (toggleCheckbox === void 0) { toggleCheckbox = true; }
|
|
1727
|
-
if (this.isCheckboxList) {
|
|
1728
|
-
this.toggleCheckboxAtIndex(index, toggleCheckbox);
|
|
1729
|
-
}
|
|
1730
|
-
else {
|
|
1731
|
-
this.setSelectedIndex(index);
|
|
1732
|
-
}
|
|
1733
|
-
};
|
|
1734
|
-
MDCListFoundation.prototype.toggleCheckboxAtIndex = function (index, toggleCheckbox) {
|
|
1735
|
-
var selectionAttribute = this.getSelectionAttribute();
|
|
1736
|
-
var isChecked = this.adapter.isCheckboxCheckedAtIndex(index);
|
|
1737
|
-
if (toggleCheckbox) {
|
|
1738
|
-
isChecked = !isChecked;
|
|
1739
|
-
this.adapter.setCheckedCheckboxOrRadioAtIndex(index, isChecked);
|
|
1740
|
-
}
|
|
1741
|
-
this.adapter.setAttributeForElementIndex(index, selectionAttribute, isChecked ? 'true' : 'false');
|
|
1742
|
-
// If none of the checkbox items are selected and selectedIndex is not
|
|
1743
|
-
// initialized then provide a default value.
|
|
1744
|
-
var selectedIndexes = this.selectedIndex === numbers$2.UNSET_INDEX ?
|
|
1745
|
-
[] :
|
|
1746
|
-
this.selectedIndex.slice();
|
|
1747
|
-
if (isChecked) {
|
|
1748
|
-
selectedIndexes.push(index);
|
|
1749
|
-
}
|
|
1750
|
-
else {
|
|
1751
|
-
selectedIndexes = selectedIndexes.filter(function (i) { return i !== index; });
|
|
1752
|
-
}
|
|
1753
|
-
this.selectedIndex = selectedIndexes;
|
|
1754
|
-
};
|
|
1755
|
-
MDCListFoundation.prototype.focusItemAtIndex = function (index) {
|
|
1756
|
-
this.adapter.focusItemAtIndex(index);
|
|
1757
|
-
this.focusedItemIndex = index;
|
|
1758
|
-
};
|
|
1759
|
-
MDCListFoundation.prototype.toggleAll = function (currentlySelectedIndexes) {
|
|
1760
|
-
var count = this.adapter.getListItemCount();
|
|
1761
|
-
// If all items are selected, deselect everything.
|
|
1762
|
-
if (currentlySelectedIndexes.length === count) {
|
|
1763
|
-
this.setCheckboxAtIndex([]);
|
|
1764
|
-
}
|
|
1765
|
-
else {
|
|
1766
|
-
// Otherwise select all enabled options.
|
|
1767
|
-
var allIndexes = [];
|
|
1768
|
-
for (var i = 0; i < count; i++) {
|
|
1769
|
-
if (!this.adapter.listItemAtIndexHasClass(i, cssClasses$2.LIST_ITEM_DISABLED_CLASS) ||
|
|
1770
|
-
currentlySelectedIndexes.indexOf(i) > -1) {
|
|
1771
|
-
allIndexes.push(i);
|
|
1772
|
-
}
|
|
1773
|
-
}
|
|
1774
|
-
this.setCheckboxAtIndex(allIndexes);
|
|
1775
|
-
}
|
|
1776
|
-
};
|
|
1777
|
-
/**
|
|
1778
|
-
* Given the next desired character from the user, adds it to the typeahead
|
|
1779
|
-
* buffer. Then, attempts to find the next option matching the buffer. Wraps
|
|
1780
|
-
* around if at the end of options.
|
|
1781
|
-
*
|
|
1782
|
-
* @param nextChar The next character to add to the prefix buffer.
|
|
1783
|
-
* @param startingIndex The index from which to start matching. Only relevant
|
|
1784
|
-
* when starting a new match sequence. To start a new match sequence,
|
|
1785
|
-
* clear the buffer using `clearTypeaheadBuffer`, or wait for the buffer
|
|
1786
|
-
* to clear after a set interval defined in list foundation. Defaults to
|
|
1787
|
-
* the currently focused index.
|
|
1788
|
-
* @return The index of the matched item, or -1 if no match.
|
|
1789
|
-
*/
|
|
1790
|
-
MDCListFoundation.prototype.typeaheadMatchItem = function (nextChar, startingIndex, skipFocus) {
|
|
1791
|
-
var _this = this;
|
|
1792
|
-
if (skipFocus === void 0) { skipFocus = false; }
|
|
1793
|
-
var opts = {
|
|
1794
|
-
focusItemAtIndex: function (index) {
|
|
1795
|
-
_this.focusItemAtIndex(index);
|
|
1796
|
-
},
|
|
1797
|
-
focusedItemIndex: startingIndex ? startingIndex : this.focusedItemIndex,
|
|
1798
|
-
nextChar: nextChar,
|
|
1799
|
-
sortedIndexByFirstChar: this.sortedIndexByFirstChar,
|
|
1800
|
-
skipFocus: skipFocus,
|
|
1801
|
-
isItemAtIndexDisabled: function (index) { return _this.adapter.listItemAtIndexHasClass(index, cssClasses$2.LIST_ITEM_DISABLED_CLASS); }
|
|
1802
|
-
};
|
|
1803
|
-
return matchItem(opts, this.typeaheadState);
|
|
1804
|
-
};
|
|
1805
|
-
/**
|
|
1806
|
-
* Initializes the MDCListTextAndIndex data structure by indexing the current
|
|
1807
|
-
* list items by primary text.
|
|
1808
|
-
*
|
|
1809
|
-
* @return The primary texts of all the list items sorted by first character.
|
|
1810
|
-
*/
|
|
1811
|
-
MDCListFoundation.prototype.typeaheadInitSortedIndex = function () {
|
|
1812
|
-
return initSortedIndex(this.adapter.getListItemCount(), this.adapter.getPrimaryTextAtIndex);
|
|
1813
|
-
};
|
|
1814
|
-
/**
|
|
1815
|
-
* Clears the typeahead buffer.
|
|
1816
|
-
*/
|
|
1817
|
-
MDCListFoundation.prototype.clearTypeaheadBuffer = function () {
|
|
1818
|
-
clearBuffer(this.typeaheadState);
|
|
1819
|
-
};
|
|
1820
|
-
return MDCListFoundation;
|
|
1821
|
-
}(MDCFoundation));
|
|
1822
|
-
|
|
1823
|
-
/**
|
|
1824
|
-
* @license
|
|
1825
|
-
* Copyright 2018 Google Inc.
|
|
1826
|
-
*
|
|
1827
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1828
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
1829
|
-
* in the Software without restriction, including without limitation the rights
|
|
1830
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
1831
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
1832
|
-
* furnished to do so, subject to the following conditions:
|
|
1833
|
-
*
|
|
1834
|
-
* The above copyright notice and this permission notice shall be included in
|
|
1835
|
-
* all copies or substantial portions of the Software.
|
|
1836
|
-
*
|
|
1837
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1838
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1839
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1840
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1841
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1842
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
1843
|
-
* THE SOFTWARE.
|
|
1844
|
-
*/
|
|
1845
|
-
var MDCList = /** @class */ (function (_super) {
|
|
1846
|
-
__extends(MDCList, _super);
|
|
1847
|
-
function MDCList() {
|
|
1848
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
1849
|
-
}
|
|
1850
|
-
Object.defineProperty(MDCList.prototype, "vertical", {
|
|
1851
|
-
set: function (value) {
|
|
1852
|
-
this.foundation.setVerticalOrientation(value);
|
|
1853
|
-
},
|
|
1854
|
-
enumerable: false,
|
|
1855
|
-
configurable: true
|
|
1856
|
-
});
|
|
1857
|
-
Object.defineProperty(MDCList.prototype, "listElements", {
|
|
1858
|
-
get: function () {
|
|
1859
|
-
return Array.from(this.root.querySelectorAll("." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS]));
|
|
1860
|
-
},
|
|
1861
|
-
enumerable: false,
|
|
1862
|
-
configurable: true
|
|
1863
|
-
});
|
|
1864
|
-
Object.defineProperty(MDCList.prototype, "wrapFocus", {
|
|
1865
|
-
set: function (value) {
|
|
1866
|
-
this.foundation.setWrapFocus(value);
|
|
1867
|
-
},
|
|
1868
|
-
enumerable: false,
|
|
1869
|
-
configurable: true
|
|
1870
|
-
});
|
|
1871
|
-
Object.defineProperty(MDCList.prototype, "typeaheadInProgress", {
|
|
1872
|
-
/**
|
|
1873
|
-
* @return Whether typeahead is currently matching a user-specified prefix.
|
|
1874
|
-
*/
|
|
1875
|
-
get: function () {
|
|
1876
|
-
return this.foundation.isTypeaheadInProgress();
|
|
1877
|
-
},
|
|
1878
|
-
enumerable: false,
|
|
1879
|
-
configurable: true
|
|
1880
|
-
});
|
|
1881
|
-
Object.defineProperty(MDCList.prototype, "hasTypeahead", {
|
|
1882
|
-
/**
|
|
1883
|
-
* Sets whether typeahead functionality is enabled on the list.
|
|
1884
|
-
* @param hasTypeahead Whether typeahead is enabled.
|
|
1885
|
-
*/
|
|
1886
|
-
set: function (hasTypeahead) {
|
|
1887
|
-
this.foundation.setHasTypeahead(hasTypeahead);
|
|
1888
|
-
},
|
|
1889
|
-
enumerable: false,
|
|
1890
|
-
configurable: true
|
|
1891
|
-
});
|
|
1892
|
-
Object.defineProperty(MDCList.prototype, "singleSelection", {
|
|
1893
|
-
set: function (isSingleSelectionList) {
|
|
1894
|
-
this.foundation.setSingleSelection(isSingleSelectionList);
|
|
1895
|
-
},
|
|
1896
|
-
enumerable: false,
|
|
1897
|
-
configurable: true
|
|
1898
|
-
});
|
|
1899
|
-
Object.defineProperty(MDCList.prototype, "selectedIndex", {
|
|
1900
|
-
get: function () {
|
|
1901
|
-
return this.foundation.getSelectedIndex();
|
|
1902
|
-
},
|
|
1903
|
-
set: function (index) {
|
|
1904
|
-
this.foundation.setSelectedIndex(index);
|
|
1905
|
-
},
|
|
1906
|
-
enumerable: false,
|
|
1907
|
-
configurable: true
|
|
1908
|
-
});
|
|
1909
|
-
MDCList.attachTo = function (root) {
|
|
1910
|
-
return new MDCList(root);
|
|
1911
|
-
};
|
|
1912
|
-
MDCList.prototype.initialSyncWithDOM = function () {
|
|
1913
|
-
this.isEvolutionEnabled =
|
|
1914
|
-
evolutionAttribute in this.root.dataset;
|
|
1915
|
-
if (this.isEvolutionEnabled) {
|
|
1916
|
-
this.classNameMap = evolutionClassNameMap;
|
|
1917
|
-
}
|
|
1918
|
-
else if (matches(this.root, strings$2.DEPRECATED_SELECTOR)) {
|
|
1919
|
-
this.classNameMap = deprecatedClassNameMap;
|
|
1920
|
-
}
|
|
1921
|
-
else {
|
|
1922
|
-
this.classNameMap =
|
|
1923
|
-
Object.values(cssClasses$2)
|
|
1924
|
-
.reduce(function (obj, className) {
|
|
1925
|
-
obj[className] = className;
|
|
1926
|
-
return obj;
|
|
1927
|
-
}, {});
|
|
1928
|
-
}
|
|
1929
|
-
this.handleClick = this.handleClickEvent.bind(this);
|
|
1930
|
-
this.handleKeydown = this.handleKeydownEvent.bind(this);
|
|
1931
|
-
this.focusInEventListener = this.handleFocusInEvent.bind(this);
|
|
1932
|
-
this.focusOutEventListener = this.handleFocusOutEvent.bind(this);
|
|
1933
|
-
this.listen('keydown', this.handleKeydown);
|
|
1934
|
-
this.listen('click', this.handleClick);
|
|
1935
|
-
this.listen('focusin', this.focusInEventListener);
|
|
1936
|
-
this.listen('focusout', this.focusOutEventListener);
|
|
1937
|
-
this.layout();
|
|
1938
|
-
this.initializeListType();
|
|
1939
|
-
this.ensureFocusable();
|
|
1940
|
-
};
|
|
1941
|
-
MDCList.prototype.destroy = function () {
|
|
1942
|
-
this.unlisten('keydown', this.handleKeydown);
|
|
1943
|
-
this.unlisten('click', this.handleClick);
|
|
1944
|
-
this.unlisten('focusin', this.focusInEventListener);
|
|
1945
|
-
this.unlisten('focusout', this.focusOutEventListener);
|
|
1946
|
-
};
|
|
1947
|
-
MDCList.prototype.layout = function () {
|
|
1948
|
-
var direction = this.root.getAttribute(strings$2.ARIA_ORIENTATION);
|
|
1949
|
-
this.vertical = direction !== strings$2.ARIA_ORIENTATION_HORIZONTAL;
|
|
1950
|
-
var itemSelector = "." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS] + ":not([tabindex])";
|
|
1951
|
-
var childSelector = strings$2.FOCUSABLE_CHILD_ELEMENTS;
|
|
1952
|
-
// List items need to have at least tabindex=-1 to be focusable.
|
|
1953
|
-
var itemEls = this.root.querySelectorAll(itemSelector);
|
|
1954
|
-
if (itemEls.length) {
|
|
1955
|
-
Array.prototype.forEach.call(itemEls, function (el) {
|
|
1956
|
-
el.setAttribute('tabindex', '-1');
|
|
1957
|
-
});
|
|
1958
|
-
}
|
|
1959
|
-
// Child button/a elements are not tabbable until the list item is focused.
|
|
1960
|
-
var focusableChildEls = this.root.querySelectorAll(childSelector);
|
|
1961
|
-
if (focusableChildEls.length) {
|
|
1962
|
-
Array.prototype.forEach.call(focusableChildEls, function (el) {
|
|
1963
|
-
el.setAttribute('tabindex', '-1');
|
|
1964
|
-
});
|
|
1965
|
-
}
|
|
1966
|
-
if (this.isEvolutionEnabled) {
|
|
1967
|
-
this.foundation.setUseSelectedAttribute(true);
|
|
1968
|
-
}
|
|
1969
|
-
this.foundation.layout();
|
|
1970
|
-
};
|
|
1971
|
-
/**
|
|
1972
|
-
* Extracts the primary text from a list item.
|
|
1973
|
-
* @param item The list item element.
|
|
1974
|
-
* @return The primary text in the element.
|
|
1975
|
-
*/
|
|
1976
|
-
MDCList.prototype.getPrimaryText = function (item) {
|
|
1977
|
-
var _a;
|
|
1978
|
-
var primaryText = item.querySelector("." + this.classNameMap[cssClasses$2.LIST_ITEM_PRIMARY_TEXT_CLASS]);
|
|
1979
|
-
if (this.isEvolutionEnabled || primaryText) {
|
|
1980
|
-
return (_a = primaryText === null || primaryText === void 0 ? void 0 : primaryText.textContent) !== null && _a !== void 0 ? _a : '';
|
|
1981
|
-
}
|
|
1982
|
-
var singleLineText = item.querySelector("." + this.classNameMap[cssClasses$2.LIST_ITEM_TEXT_CLASS]);
|
|
1983
|
-
return (singleLineText && singleLineText.textContent) || '';
|
|
1984
|
-
};
|
|
1985
|
-
/**
|
|
1986
|
-
* Initialize selectedIndex value based on pre-selected list items.
|
|
1987
|
-
*/
|
|
1988
|
-
MDCList.prototype.initializeListType = function () {
|
|
1989
|
-
var _this = this;
|
|
1990
|
-
this.isInteractive =
|
|
1991
|
-
matches(this.root, strings$2.ARIA_INTERACTIVE_ROLES_SELECTOR);
|
|
1992
|
-
if (this.isEvolutionEnabled && this.isInteractive) {
|
|
1993
|
-
var selection = Array.from(this.root.querySelectorAll(strings$2.SELECTED_ITEM_SELECTOR), function (listItem) { return _this.listElements.indexOf(listItem); });
|
|
1994
|
-
if (matches(this.root, strings$2.ARIA_MULTI_SELECTABLE_SELECTOR)) {
|
|
1995
|
-
this.selectedIndex = selection;
|
|
1996
|
-
}
|
|
1997
|
-
else if (selection.length > 0) {
|
|
1998
|
-
this.selectedIndex = selection[0];
|
|
1999
|
-
}
|
|
2000
|
-
return;
|
|
2001
|
-
}
|
|
2002
|
-
var checkboxListItems = this.root.querySelectorAll(strings$2.ARIA_ROLE_CHECKBOX_SELECTOR);
|
|
2003
|
-
var radioSelectedListItem = this.root.querySelector(strings$2.ARIA_CHECKED_RADIO_SELECTOR);
|
|
2004
|
-
if (checkboxListItems.length) {
|
|
2005
|
-
var preselectedItems = this.root.querySelectorAll(strings$2.ARIA_CHECKED_CHECKBOX_SELECTOR);
|
|
2006
|
-
this.selectedIndex = Array.from(preselectedItems, function (listItem) { return _this.listElements.indexOf(listItem); });
|
|
2007
|
-
}
|
|
2008
|
-
else if (radioSelectedListItem) {
|
|
2009
|
-
this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);
|
|
2010
|
-
}
|
|
2011
|
-
};
|
|
2012
|
-
/**
|
|
2013
|
-
* Updates the list item at itemIndex to the desired isEnabled state.
|
|
2014
|
-
* @param itemIndex Index of the list item
|
|
2015
|
-
* @param isEnabled Sets the list item to enabled or disabled.
|
|
2016
|
-
*/
|
|
2017
|
-
MDCList.prototype.setEnabled = function (itemIndex, isEnabled) {
|
|
2018
|
-
this.foundation.setEnabled(itemIndex, isEnabled);
|
|
2019
|
-
};
|
|
2020
|
-
/**
|
|
2021
|
-
* Given the next desired character from the user, adds it to the typeahead
|
|
2022
|
-
* buffer. Then, attempts to find the next option matching the buffer. Wraps
|
|
2023
|
-
* around if at the end of options.
|
|
2024
|
-
*
|
|
2025
|
-
* @param nextChar The next character to add to the prefix buffer.
|
|
2026
|
-
* @param startingIndex The index from which to start matching. Defaults to
|
|
2027
|
-
* the currently focused index.
|
|
2028
|
-
* @return The index of the matched item.
|
|
2029
|
-
*/
|
|
2030
|
-
MDCList.prototype.typeaheadMatchItem = function (nextChar, startingIndex) {
|
|
2031
|
-
return this.foundation.typeaheadMatchItem(nextChar, startingIndex, /** skipFocus */ true);
|
|
2032
|
-
};
|
|
2033
|
-
MDCList.prototype.getDefaultFoundation = function () {
|
|
2034
|
-
var _this = this;
|
|
2035
|
-
// DO NOT INLINE this variable. For backward compatibility, foundations take
|
|
2036
|
-
// a Partial<MDCFooAdapter>. To ensure we don't accidentally omit any
|
|
2037
|
-
// methods, we need a separate, strongly typed adapter variable.
|
|
2038
|
-
var adapter = {
|
|
2039
|
-
addClassForElementIndex: function (index, className) {
|
|
2040
|
-
var element = _this.listElements[index];
|
|
2041
|
-
if (element) {
|
|
2042
|
-
element.classList.add(_this.classNameMap[className]);
|
|
2043
|
-
}
|
|
2044
|
-
},
|
|
2045
|
-
focusItemAtIndex: function (index) {
|
|
2046
|
-
var element = _this.listElements[index];
|
|
2047
|
-
if (element) {
|
|
2048
|
-
element.focus();
|
|
2049
|
-
}
|
|
2050
|
-
},
|
|
2051
|
-
getAttributeForElementIndex: function (index, attr) {
|
|
2052
|
-
return _this.listElements[index].getAttribute(attr);
|
|
2053
|
-
},
|
|
2054
|
-
getFocusedElementIndex: function () {
|
|
2055
|
-
return _this.listElements.indexOf(document.activeElement);
|
|
2056
|
-
},
|
|
2057
|
-
getListItemCount: function () { return _this.listElements.length; },
|
|
2058
|
-
getPrimaryTextAtIndex: function (index) {
|
|
2059
|
-
return _this.getPrimaryText(_this.listElements[index]);
|
|
2060
|
-
},
|
|
2061
|
-
hasCheckboxAtIndex: function (index) {
|
|
2062
|
-
var listItem = _this.listElements[index];
|
|
2063
|
-
return !!listItem.querySelector(strings$2.CHECKBOX_SELECTOR);
|
|
2064
|
-
},
|
|
2065
|
-
hasRadioAtIndex: function (index) {
|
|
2066
|
-
var listItem = _this.listElements[index];
|
|
2067
|
-
return !!listItem.querySelector(strings$2.RADIO_SELECTOR);
|
|
2068
|
-
},
|
|
2069
|
-
isCheckboxCheckedAtIndex: function (index) {
|
|
2070
|
-
var listItem = _this.listElements[index];
|
|
2071
|
-
var toggleEl = listItem.querySelector(strings$2.CHECKBOX_SELECTOR);
|
|
2072
|
-
return toggleEl.checked;
|
|
2073
|
-
},
|
|
2074
|
-
isFocusInsideList: function () {
|
|
2075
|
-
return _this.root !== document.activeElement &&
|
|
2076
|
-
_this.root.contains(document.activeElement);
|
|
2077
|
-
},
|
|
2078
|
-
isRootFocused: function () { return document.activeElement === _this.root; },
|
|
2079
|
-
listItemAtIndexHasClass: function (index, className) {
|
|
2080
|
-
return _this.listElements[index].classList.contains(_this.classNameMap[className]);
|
|
2081
|
-
},
|
|
2082
|
-
notifyAction: function (index) {
|
|
2083
|
-
_this.emit(strings$2.ACTION_EVENT, { index: index }, /** shouldBubble */ true);
|
|
2084
|
-
},
|
|
2085
|
-
removeClassForElementIndex: function (index, className) {
|
|
2086
|
-
var element = _this.listElements[index];
|
|
2087
|
-
if (element) {
|
|
2088
|
-
element.classList.remove(_this.classNameMap[className]);
|
|
2089
|
-
}
|
|
2090
|
-
},
|
|
2091
|
-
setAttributeForElementIndex: function (index, attr, value) {
|
|
2092
|
-
var element = _this.listElements[index];
|
|
2093
|
-
if (element) {
|
|
2094
|
-
element.setAttribute(attr, value);
|
|
2095
|
-
}
|
|
2096
|
-
},
|
|
2097
|
-
setCheckedCheckboxOrRadioAtIndex: function (index, isChecked) {
|
|
2098
|
-
var listItem = _this.listElements[index];
|
|
2099
|
-
var toggleEl = listItem.querySelector(strings$2.CHECKBOX_RADIO_SELECTOR);
|
|
2100
|
-
toggleEl.checked = isChecked;
|
|
2101
|
-
var event = document.createEvent('Event');
|
|
2102
|
-
event.initEvent('change', true, true);
|
|
2103
|
-
toggleEl.dispatchEvent(event);
|
|
2104
|
-
},
|
|
2105
|
-
setTabIndexForListItemChildren: function (listItemIndex, tabIndexValue) {
|
|
2106
|
-
var element = _this.listElements[listItemIndex];
|
|
2107
|
-
var selector = strings$2.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX;
|
|
2108
|
-
Array.prototype.forEach.call(element.querySelectorAll(selector), function (el) {
|
|
2109
|
-
el.setAttribute('tabindex', tabIndexValue);
|
|
2110
|
-
});
|
|
2111
|
-
},
|
|
2112
|
-
};
|
|
2113
|
-
return new MDCListFoundation(adapter);
|
|
2114
|
-
};
|
|
2115
|
-
/**
|
|
2116
|
-
* Ensures that at least one item is focusable if the list is interactive and
|
|
2117
|
-
* doesn't specify a suitable tabindex.
|
|
2118
|
-
*/
|
|
2119
|
-
MDCList.prototype.ensureFocusable = function () {
|
|
2120
|
-
if (this.isEvolutionEnabled && this.isInteractive) {
|
|
2121
|
-
if (!this.root.querySelector("." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS] + "[tabindex=\"0\"]")) {
|
|
2122
|
-
var index = this.initialFocusIndex();
|
|
2123
|
-
if (index !== -1) {
|
|
2124
|
-
this.listElements[index].tabIndex = 0;
|
|
2125
|
-
}
|
|
2126
|
-
}
|
|
2127
|
-
}
|
|
2128
|
-
};
|
|
2129
|
-
MDCList.prototype.initialFocusIndex = function () {
|
|
2130
|
-
if (this.selectedIndex instanceof Array && this.selectedIndex.length > 0) {
|
|
2131
|
-
return this.selectedIndex[0];
|
|
2132
|
-
}
|
|
2133
|
-
if (typeof this.selectedIndex === 'number' &&
|
|
2134
|
-
this.selectedIndex !== numbers$2.UNSET_INDEX) {
|
|
2135
|
-
return this.selectedIndex;
|
|
2136
|
-
}
|
|
2137
|
-
var el = this.root.querySelector("." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS] + ":not(." + this.classNameMap[cssClasses$2.LIST_ITEM_DISABLED_CLASS] + ")");
|
|
2138
|
-
if (el === null) {
|
|
2139
|
-
return -1;
|
|
2140
|
-
}
|
|
2141
|
-
return this.getListItemIndex(el);
|
|
2142
|
-
};
|
|
2143
|
-
/**
|
|
2144
|
-
* Used to figure out which list item this event is targetting. Or returns -1
|
|
2145
|
-
* if there is no list item
|
|
2146
|
-
*/
|
|
2147
|
-
MDCList.prototype.getListItemIndex = function (el) {
|
|
2148
|
-
var nearestParent = closest(el, "." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS] + ", ." + this.classNameMap[cssClasses$2.ROOT]);
|
|
2149
|
-
// Get the index of the element if it is a list item.
|
|
2150
|
-
if (nearestParent &&
|
|
2151
|
-
matches(nearestParent, "." + this.classNameMap[cssClasses$2.LIST_ITEM_CLASS])) {
|
|
2152
|
-
return this.listElements.indexOf(nearestParent);
|
|
2153
|
-
}
|
|
2154
|
-
return -1;
|
|
2155
|
-
};
|
|
2156
|
-
/**
|
|
2157
|
-
* Used to figure out which element was clicked before sending the event to
|
|
2158
|
-
* the foundation.
|
|
2159
|
-
*/
|
|
2160
|
-
MDCList.prototype.handleFocusInEvent = function (evt) {
|
|
2161
|
-
var index = this.getListItemIndex(evt.target);
|
|
2162
|
-
this.foundation.handleFocusIn(index);
|
|
2163
|
-
};
|
|
2164
|
-
/**
|
|
2165
|
-
* Used to figure out which element was clicked before sending the event to
|
|
2166
|
-
* the foundation.
|
|
2167
|
-
*/
|
|
2168
|
-
MDCList.prototype.handleFocusOutEvent = function (evt) {
|
|
2169
|
-
var index = this.getListItemIndex(evt.target);
|
|
2170
|
-
this.foundation.handleFocusOut(index);
|
|
2171
|
-
};
|
|
2172
|
-
/**
|
|
2173
|
-
* Used to figure out which element was focused when keydown event occurred
|
|
2174
|
-
* before sending the event to the foundation.
|
|
2175
|
-
*/
|
|
2176
|
-
MDCList.prototype.handleKeydownEvent = function (evt) {
|
|
2177
|
-
var index = this.getListItemIndex(evt.target);
|
|
2178
|
-
var target = evt.target;
|
|
2179
|
-
this.foundation.handleKeydown(evt, target.classList.contains(this.classNameMap[cssClasses$2.LIST_ITEM_CLASS]), index);
|
|
2180
|
-
};
|
|
2181
|
-
/**
|
|
2182
|
-
* Used to figure out which element was clicked before sending the event to
|
|
2183
|
-
* the foundation.
|
|
2184
|
-
*/
|
|
2185
|
-
MDCList.prototype.handleClickEvent = function (evt) {
|
|
2186
|
-
var index = this.getListItemIndex(evt.target);
|
|
2187
|
-
var target = evt.target;
|
|
2188
|
-
// Toggle the checkbox only if it's not the target of the event, or the
|
|
2189
|
-
// checkbox will have 2 change events.
|
|
2190
|
-
var toggleCheckbox = !matches(target, strings$2.CHECKBOX_RADIO_SELECTOR);
|
|
2191
|
-
this.foundation.handleClick(index, toggleCheckbox);
|
|
2192
|
-
};
|
|
2193
|
-
return MDCList;
|
|
2194
|
-
}(MDCComponent));
|
|
2195
|
-
|
|
2196
|
-
const RadioButtonTemplate = (props) => {
|
|
2197
|
-
return (h("div", { class: "mdc-form-field" },
|
|
2198
|
-
h("div", { class: `
|
|
2199
|
-
mdc-radio
|
|
2200
|
-
${props.disabled ? 'mdc-radio--disabled' : ''}
|
|
2201
|
-
` },
|
|
2202
|
-
h("input", { class: "mdc-radio__native-control", type: "radio", id: props.id, checked: props.checked, disabled: props.disabled, onChange: props.onChange }),
|
|
2203
|
-
h("div", { class: "mdc-radio__background" },
|
|
2204
|
-
h("div", { class: "mdc-radio__outer-circle" }),
|
|
2205
|
-
h("div", { class: "mdc-radio__inner-circle" }))),
|
|
2206
|
-
h("label", { class: `${props.disabled ? 'disabled' : ''}`, htmlFor: props.id }, props.label)));
|
|
2207
|
-
};
|
|
2208
|
-
|
|
2209
|
-
class ListRenderer {
|
|
2210
|
-
constructor() {
|
|
2211
|
-
this.defaultConfig = {
|
|
2212
|
-
isOpen: true,
|
|
2213
|
-
badgeIcons: false,
|
|
2214
|
-
};
|
|
2215
|
-
/**
|
|
2216
|
-
* Determine which ListItem should have the `tab-index` attribute set,
|
|
2217
|
-
* and return the index at which that ListItem is located in `items`.
|
|
2218
|
-
* Returns `undefined` if no item should have the attribute set.
|
|
2219
|
-
* See https://github.com/material-components/material-components-web/tree/e66a43a75fef4f9179e24856649518e15e279a04/packages/mdc-list#accessibility
|
|
2220
|
-
*
|
|
2221
|
-
* @param items - the items of the list, including any `ListSeparator`:s
|
|
2222
|
-
* @returns the index as per the description
|
|
2223
|
-
*/
|
|
2224
|
-
this.getIndexForWhichToApplyTabIndex = (items) => {
|
|
2225
|
-
let result;
|
|
2226
|
-
for (let i = 0, max = items.length; i < max; i += 1) {
|
|
2227
|
-
if ('separator' in items[i]) ;
|
|
2228
|
-
else {
|
|
2229
|
-
const item = items[i];
|
|
2230
|
-
if (item.selected) {
|
|
2231
|
-
result = i;
|
|
2232
|
-
break;
|
|
2233
|
-
}
|
|
2234
|
-
if (result === undefined && !item.disabled) {
|
|
2235
|
-
result = i;
|
|
2236
|
-
// Do NOT break, as any later item with
|
|
2237
|
-
// `selected=true` should get the tab-index instead!
|
|
2238
|
-
}
|
|
2239
|
-
}
|
|
2240
|
-
}
|
|
2241
|
-
return result;
|
|
2242
|
-
};
|
|
2243
|
-
/**
|
|
2244
|
-
* Render a single list item
|
|
2245
|
-
*
|
|
2246
|
-
* @param item - the item to render
|
|
2247
|
-
* @param index - the index the item had in the `items` array
|
|
2248
|
-
* @returns the list item
|
|
2249
|
-
*/
|
|
2250
|
-
this.renderListItem = (item, index) => {
|
|
2251
|
-
if ('separator' in item) {
|
|
2252
|
-
return (h("li", { class: "mdc-deprecated-list-divider", role: "separator" },
|
|
2253
|
-
this.rendertext(item),
|
|
2254
|
-
h("div", { class: "limel-list-divider-line" })));
|
|
2255
|
-
}
|
|
2256
|
-
if (['radio', 'checkbox'].includes(this.config.type)) {
|
|
2257
|
-
return this.renderVariantListItem(this.config, item, index);
|
|
2258
|
-
}
|
|
2259
|
-
const classNames = {
|
|
2260
|
-
'mdc-deprecated-list-item': true,
|
|
2261
|
-
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
2262
|
-
'mdc-deprecated-list-item--selected': item.selected,
|
|
2263
|
-
'has-primary-component': this.hasPrimaryComponent(item),
|
|
2264
|
-
};
|
|
2265
|
-
const attributes = {};
|
|
2266
|
-
if (index === this.applyTabIndexToItemAtIndex) {
|
|
2267
|
-
attributes.tabindex = '0';
|
|
2268
|
-
}
|
|
2269
|
-
return (h("li", Object.assign({ class: classNames, "aria-disabled": item.disabled ? 'true' : 'false', "aria-selected": item.selected ? 'true' : 'false', "data-index": index }, attributes),
|
|
2270
|
-
this.renderIcon(this.config, item),
|
|
2271
|
-
this.getPrimaryComponent(item),
|
|
2272
|
-
this.renderText(item),
|
|
2273
|
-
this.twoLines && this.avatarList ? this.renderDivider() : null,
|
|
2274
|
-
this.renderActionMenu(item.actions)));
|
|
2275
|
-
};
|
|
2276
|
-
this.rendertext = (item) => {
|
|
2277
|
-
if ('text' in item) {
|
|
2278
|
-
return h("h2", { class: "limel-list-divider-title" }, item.text);
|
|
2279
|
-
}
|
|
2280
|
-
};
|
|
2281
|
-
this.hasPrimaryComponent = (item) => {
|
|
2282
|
-
var _a;
|
|
2283
|
-
return !!((_a = item === null || item === void 0 ? void 0 : item.primaryComponent) === null || _a === void 0 ? void 0 : _a.name);
|
|
2284
|
-
};
|
|
2285
|
-
/**
|
|
2286
|
-
* Render the text of the list item
|
|
2287
|
-
*
|
|
2288
|
-
* @param item - the list item
|
|
2289
|
-
* @returns the text for the list item
|
|
2290
|
-
*/
|
|
2291
|
-
this.renderText = (item) => {
|
|
2292
|
-
if (this.isSimpleItem(item)) {
|
|
2293
|
-
return (h("span", { class: "mdc-deprecated-list-item__text" }, item.text));
|
|
2294
|
-
}
|
|
2295
|
-
return (h("div", { class: "mdc-deprecated-list-item__text" },
|
|
2296
|
-
h("div", { class: "mdc-deprecated-list-item__primary-command-text" },
|
|
2297
|
-
h("div", { class: "mdc-deprecated-list-item__primary-text" }, item.text)),
|
|
2298
|
-
h("div", { class: "mdc-deprecated-list-item__secondary-text" }, item.secondaryText)));
|
|
2299
|
-
};
|
|
2300
|
-
this.isSimpleItem = (item) => {
|
|
2301
|
-
return !('secondaryText' in item);
|
|
2302
|
-
};
|
|
2303
|
-
/**
|
|
2304
|
-
* Render an icon for a list item
|
|
2305
|
-
*
|
|
2306
|
-
* @param config - the config object, passed on from the `renderListItem` function
|
|
2307
|
-
* @param item - the list item
|
|
2308
|
-
* @returns the icon element
|
|
2309
|
-
*/
|
|
2310
|
-
this.renderIcon = (config, item) => {
|
|
2311
|
-
const style = {};
|
|
2312
|
-
const name = getIconName(item.icon);
|
|
2313
|
-
if (!name) {
|
|
2314
|
-
return;
|
|
2315
|
-
}
|
|
2316
|
-
const color = getIconColor(item.icon, item.iconColor);
|
|
2317
|
-
if (color) {
|
|
2318
|
-
if (config.badgeIcons) {
|
|
2319
|
-
style['--icon-background-color'] = color;
|
|
2320
|
-
}
|
|
2321
|
-
else {
|
|
2322
|
-
style.color = color;
|
|
2323
|
-
}
|
|
2324
|
-
}
|
|
2325
|
-
return (h("limel-icon", { badge: config.badgeIcons, class: "mdc-deprecated-list-item__graphic", name: name, style: style, size: config.iconSize }));
|
|
2326
|
-
};
|
|
2327
|
-
this.renderDivider = () => {
|
|
2328
|
-
const classes = {
|
|
2329
|
-
'mdc-deprecated-list-divider': true,
|
|
2330
|
-
'mdc-deprecated-list-divider--inset': true,
|
|
2331
|
-
};
|
|
2332
|
-
if (this.config.iconSize) {
|
|
2333
|
-
classes[this.config.iconSize] = true;
|
|
2334
|
-
}
|
|
2335
|
-
return h("hr", { class: classes });
|
|
2336
|
-
};
|
|
2337
|
-
this.renderActionMenu = (actions) => {
|
|
2338
|
-
if (!actions || actions.length === 0) {
|
|
2339
|
-
return;
|
|
2340
|
-
}
|
|
2341
|
-
return (h("limel-menu", { class: "mdc-deprecated-list-item__meta", items: actions, openDirection: "left-start" },
|
|
2342
|
-
h("limel-icon-button", { class: "action-menu-trigger", slot: "trigger", icon: "menu_2" })));
|
|
2343
|
-
};
|
|
2344
|
-
this.renderVariantListItem = (config, item, index) => {
|
|
2345
|
-
let itemTemplate;
|
|
2346
|
-
if (config.type === 'radio') {
|
|
2347
|
-
itemTemplate = (h(RadioButtonTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
2348
|
-
}
|
|
2349
|
-
else if (config.type === 'checkbox') {
|
|
2350
|
-
itemTemplate = (h(CheckboxTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
2351
|
-
}
|
|
2352
|
-
const classNames = {
|
|
2353
|
-
'mdc-deprecated-list-item': true,
|
|
2354
|
-
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
2355
|
-
'mdc-deprecated-list-item__text': !item.secondaryText,
|
|
2356
|
-
'has-primary-component': this.hasPrimaryComponent(item),
|
|
2357
|
-
};
|
|
2358
|
-
const attributes = {};
|
|
2359
|
-
if (index === this.applyTabIndexToItemAtIndex) {
|
|
2360
|
-
attributes.tabindex = '0';
|
|
2361
|
-
}
|
|
2362
|
-
return (h("li", Object.assign({ class: classNames, role: config.type, "aria-checked": item.selected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', "data-index": index }, attributes), this.renderVariantListItemContent(config, item, itemTemplate)));
|
|
2363
|
-
};
|
|
2364
|
-
this.renderVariantListItemContent = (config, item, itemTemplate) => {
|
|
2365
|
-
if (this.hasIcons) {
|
|
2366
|
-
return [
|
|
2367
|
-
item.icon ? this.renderIcon(config, item) : null,
|
|
2368
|
-
this.getPrimaryComponent(item),
|
|
2369
|
-
this.renderText(item),
|
|
2370
|
-
h("div", { class: "mdc-deprecated-list-item__meta" }, itemTemplate),
|
|
2371
|
-
];
|
|
2372
|
-
}
|
|
2373
|
-
return [
|
|
2374
|
-
h("div", { class: "mdc-deprecated-list-item__graphic" }, itemTemplate),
|
|
2375
|
-
this.getPrimaryComponent(item),
|
|
2376
|
-
this.renderText(item),
|
|
2377
|
-
];
|
|
2378
|
-
};
|
|
2379
|
-
}
|
|
2380
|
-
render(items, config = {}) {
|
|
2381
|
-
items = items || [];
|
|
2382
|
-
this.config = Object.assign(Object.assign({}, this.defaultConfig), config);
|
|
2383
|
-
this.twoLines = items.some((item) => {
|
|
2384
|
-
return 'secondaryText' in item && !!item.secondaryText;
|
|
2385
|
-
});
|
|
2386
|
-
this.hasIcons = items.some((item) => {
|
|
2387
|
-
return 'icon' in item && !!item.icon;
|
|
2388
|
-
});
|
|
2389
|
-
this.avatarList = this.config.badgeIcons && this.hasIcons;
|
|
2390
|
-
const selectableListTypes = ['selectable', 'radio', 'checkbox'];
|
|
2391
|
-
let role;
|
|
2392
|
-
switch (this.config.type) {
|
|
2393
|
-
case 'checkbox':
|
|
2394
|
-
role = 'group';
|
|
2395
|
-
break;
|
|
2396
|
-
case 'radio':
|
|
2397
|
-
role = 'radiogroup';
|
|
2398
|
-
break;
|
|
2399
|
-
default:
|
|
2400
|
-
role = 'listbox';
|
|
2401
|
-
}
|
|
2402
|
-
this.applyTabIndexToItemAtIndex =
|
|
2403
|
-
this.getIndexForWhichToApplyTabIndex(items);
|
|
2404
|
-
const classNames = {
|
|
2405
|
-
'mdc-deprecated-list': true,
|
|
2406
|
-
'mdc-deprecated-list--two-line': this.twoLines,
|
|
2407
|
-
selectable: selectableListTypes.includes(this.config.type),
|
|
2408
|
-
'mdc-deprecated-list--avatar-list': this.avatarList,
|
|
2409
|
-
'list--compact': this.twoLines &&
|
|
2410
|
-
this.commandKey &&
|
|
2411
|
-
['small', 'x-small'].includes(this.config.iconSize),
|
|
2412
|
-
};
|
|
2413
|
-
return (h("ul", { class: classNames, role: role, "aria-orientation": "vertical" }, items.map(this.renderListItem)));
|
|
2414
|
-
}
|
|
2415
|
-
getPrimaryComponent(item) {
|
|
2416
|
-
if (!this.hasPrimaryComponent(item)) {
|
|
2417
|
-
return;
|
|
2418
|
-
}
|
|
2419
|
-
const PrimaryComponent = item.primaryComponent.name;
|
|
2420
|
-
const props = item.primaryComponent.props;
|
|
2421
|
-
return h(PrimaryComponent, Object.assign({}, props));
|
|
2422
|
-
}
|
|
2423
|
-
}
|
|
2424
|
-
|
|
2425
|
-
const listCss = "@charset \"UTF-8\";:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}:host(limel-checkbox){--mdc-checkbox-checked-color:var(--mdc-theme-primary);--mdc-checkbox-unchecked-color:var(\n --checkbox-unchecked-border-color,\n rgb(var(--contrast-900))\n );--lime-checkbox-unchecked-color:rgb(var(--contrast-300))}.mdc-checkbox{padding:calc((40px - 18px) / 2);padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((40px - 40px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-checkbox:hover .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-surface--hover .mdc-checkbox__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-checkbox:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after{transition:opacity 150ms linear}.mdc-checkbox:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::after{background-color:#575756;background-color:var(--mdc-ripple-color, var(--mdc-theme-secondary, #575756))}.mdc-checkbox.mdc-checkbox--selected:hover .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-surface--hover .mdc-checkbox__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after{transition:opacity 150ms linear}.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::after{background-color:#575756;background-color:var(--mdc-ripple-color, var(--mdc-theme-secondary, #575756))}.mdc-checkbox .mdc-checkbox__background{top:calc((40px - 18px) / 2);top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((40px - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - 40px) / 2);top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - 40px) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - 40px) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:40px;width:var(--mdc-checkbox-touch-target-size, 40px);height:40px;height:var(--mdc-checkbox-touch-target-size, 40px)}.mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}@keyframes mdc-checkbox-fade-in-background-8A000000FF57575600000000FF575756{0%{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF57575600000000FF575756{0%,80%{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}100%{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF57575600000000FF575756}.mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF57575600000000FF575756}.mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:rgba(0, 0, 0, 0.38);border-color:var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:rgba(0, 0, 0, 0.38);background-color:var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38))}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:#fff;color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff;border-color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:#fff;color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff;border-color:var(--mdc-checkbox-ink-color, #fff)}.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}@media screen and (forced-colors: active), (-ms-high-contrast: active){.mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:GrayText;border-color:var(--mdc-checkbox-disabled-color, GrayText);background-color:transparent}.mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:GrayText;background-color:transparent;background-color:var(--mdc-checkbox-disabled-color, transparent)}.mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:GrayText;color:var(--mdc-checkbox-ink-color, GrayText)}.mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:GrayText;border-color:var(--mdc-checkbox-ink-color, GrayText)}.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:transparent;pointer-events:none;will-change:background-color, border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((48px - 40px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((40px - 48px) / 2);top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((40px - 48px) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((40px - 48px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:48px;width:var(--mdc-checkbox-state-layer-size, 48px);height:48px;height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-checkbox{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-checkbox .mdc-checkbox__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-checkbox .mdc-checkbox__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-checkbox.mdc-ripple-upgraded--unbounded .mdc-checkbox__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-checkbox.mdc-ripple-upgraded--foreground-activation .mdc-checkbox__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-checkbox.mdc-ripple-upgraded--foreground-deactivation .mdc-checkbox__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-checkbox{z-index:0}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{z-index:-1;z-index:var(--mdc-ripple-z-index, -1)}.mdc-checkbox__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, inherit));font-size:0.8125rem;font-size:var(--mdc-typography-body2-font-size, 0.8125rem);line-height:1.625rem;line-height:var(--mdc-typography-body2-line-height, 1.625rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0;}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px;}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto;}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0;}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0;}.mdc-form-field{font-family:inherit}.mdc-form-field{display:flex}.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate)~.mdc-checkbox__background,.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{background-color:var(--lime-checkbox-unchecked-color)}.mdc-form-field .mdc-checkbox.mdc-checkbox--invalid .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:var(--lime-error-text-color)}.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus-visible+.mdc-checkbox__background:after{content:\"\";display:block;position:absolute;inset:-0.25rem;border-radius:0.25rem;box-shadow:var(--shadow-depth-8-focused)}.mdc-form-field .mdc-checkbox--disabled{opacity:0.5}.mdc-form-field label{cursor:pointer;line-height:normal;padding-left:0}.mdc-form-field label.mdc-checkbox--required::after{margin-left:0.0625rem;content:\"*\"}.mdc-form-field label.mdc-checkbox--invalid{color:var(--lime-error-text-color)}:host(limel-checkbox:focus),:host(limel-checkbox:focus-visible),:host(limel-checkbox:focus-within),:host(limel-checkbox[invalid]:not([invalid=false])),:host(limel-checkbox[invalid=true]){--limel-h-l-grid-template-rows-transition-speed:0.46s;--limel-h-l-grid-template-rows:1fr}:host(limel-checkbox){--limel-h-l-grid-template-rows-transition-speed:0.3s;--limel-h-l-grid-template-rows:0fr}:host(limel-checkbox:focus) limel-helper-line,:host(limel-checkbox:focus-visible) limel-helper-line,:host(limel-checkbox:focus-within) limel-helper-line,:host(limel-checkbox:hover) limel-helper-line{will-change:grid-template-rows}:host(limel-list){display:block;isolation:isolate;--mdc-checkbox-checked-color:var(--mdc-theme-primary);--mdc-checkbox-unchecked-color:var(\n --checkbox-unchecked-border-color,\n rgb(var(--contrast-900))\n );--lime-checkbox-unchecked-color:rgb(var(--contrast-300))}:host([hidden]){display:none}.mdc-deprecated-list{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, inherit));font-size:0.875rem;font-size:var(--mdc-typography-subtitle1-font-size, 0.875rem);line-height:1.125rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.125rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);line-height:1.5rem;margin:0;padding:8px 0;list-style-type:none;color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mdc-deprecated-list:focus{outline:none}.mdc-deprecated-list-item{height:48px}.mdc-deprecated-list-item__secondary-text{color:rgba(0, 0, 0, 0.54);color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54))}.mdc-deprecated-list-item__graphic{background-color:transparent}.mdc-deprecated-list-item__graphic{color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, 0.38))}.mdc-deprecated-list-item__meta{color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38))}.mdc-deprecated-list-group__subheader{color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__text{opacity:0.38}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__text,.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__secondary-text{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-deprecated-list-item--selected,.mdc-deprecated-list-item--activated{color:#26a69a;color:var(--mdc-theme-primary, #26a69a)}.mdc-deprecated-list-item--selected .mdc-deprecated-list-item__graphic,.mdc-deprecated-list-item--activated .mdc-deprecated-list-item__graphic{color:#26a69a;color:var(--mdc-theme-primary, #26a69a)}.mdc-deprecated-list--dense{padding-top:4px;padding-bottom:4px;font-size:0.812rem}.mdc-deprecated-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;height:48px}.mdc-deprecated-list-item:focus{outline:none}.mdc-deprecated-list-item:not(.mdc-deprecated-list-item--selected):focus::before,.mdc-deprecated-list-item.mdc-ripple-upgraded--background-focused::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid transparent;border-radius:inherit;content:\"\";pointer-events:none}.mdc-deprecated-list-item.mdc-deprecated-list-item--selected::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px double transparent;border-radius:inherit;content:\"\";pointer-events:none}[dir=rtl] .mdc-deprecated-list-item,.mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-item{padding-left:16px;padding-right:16px;height:56px}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-item,.mdc-deprecated-list--icon-list .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item{padding-left:16px;padding-right:16px;height:56px}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-item,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item{padding-left:16px;padding-right:16px;height:56px}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-deprecated-list--image-list .mdc-deprecated-list-item{padding-left:16px;padding-right:16px;height:72px}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-item,.mdc-deprecated-list--image-list .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-deprecated-list--video-list .mdc-deprecated-list-item{padding-left:0px;padding-right:16px;height:72px}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-item,.mdc-deprecated-list--video-list .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:0px;}.mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:20px;height:20px}[dir=rtl] .mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-deprecated-list-item__graphic{flex-shrink:0;align-items:center;justify-content:center;fill:currentColor;object-fit:cover;margin-left:0;margin-right:32px;width:24px;height:24px}[dir=rtl] .mdc-deprecated-list-item__graphic,.mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:32px;margin-right:0;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:32px;width:24px;height:24px}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:32px;margin-right:0;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:40px;height:40px;border-radius:50%}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:40px;height:40px}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-deprecated-list--image-list .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:56px;height:56px}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--image-list .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-deprecated-list--video-list .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:100px;height:56px}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--video-list .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-deprecated-list .mdc-deprecated-list-item__graphic{display:inline-flex}.mdc-deprecated-list-item__meta{margin-left:auto;margin-right:0}.mdc-deprecated-list-item__meta:not(.material-icons){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, inherit));font-size:0.6875rem;font-size:var(--mdc-typography-caption-font-size, 0.6875rem);line-height:0.875rem;line-height:var(--mdc-typography-caption-line-height, 0.875rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit)}.mdc-deprecated-list-item[dir=rtl] .mdc-deprecated-list-item__meta,[dir=rtl] .mdc-deprecated-list-item .mdc-deprecated-list-item__meta{margin-left:0;margin-right:auto}.mdc-deprecated-list-item__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-deprecated-list-item__text[for]{pointer-events:none}.mdc-deprecated-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-deprecated-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-deprecated-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-deprecated-list--video-list .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list--image-list .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-deprecated-list--video-list .mdc-deprecated-list-item__primary-text::before,.mdc-deprecated-list--image-list .mdc-deprecated-list-item__primary-text::before,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__primary-text::before,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__primary-text::before,.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-deprecated-list--video-list .mdc-deprecated-list-item__primary-text::after,.mdc-deprecated-list--image-list .mdc-deprecated-list-item__primary-text::after,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item__primary-text::after,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item__primary-text::after,.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-deprecated-list--dense .mdc-deprecated-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-deprecated-list--dense .mdc-deprecated-list-item__primary-text::before{display:inline-block;width:0;height:24px;content:\"\";vertical-align:0}.mdc-deprecated-list--dense .mdc-deprecated-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-deprecated-list-item__secondary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, inherit));font-size:0.8125rem;font-size:var(--mdc-typography-body2-font-size, 0.8125rem);line-height:1.625rem;line-height:var(--mdc-typography-body2-line-height, 1.625rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal}.mdc-deprecated-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:\"\";vertical-align:0}.mdc-deprecated-list--dense .mdc-deprecated-list-item__secondary-text{font-size:inherit}.mdc-deprecated-list--dense .mdc-deprecated-list-item{height:40px}.mdc-deprecated-list--two-line .mdc-deprecated-list-item__text{align-self:flex-start}.mdc-deprecated-list--two-line .mdc-deprecated-list-item{height:64px}.mdc-deprecated-list--two-line.mdc-deprecated-list--video-list .mdc-deprecated-list-item,.mdc-deprecated-list--two-line.mdc-deprecated-list--image-list .mdc-deprecated-list-item,.mdc-deprecated-list--two-line.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-item,.mdc-deprecated-list--two-line.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item,.mdc-deprecated-list--two-line.mdc-deprecated-list--icon-list .mdc-deprecated-list-item{height:72px}.mdc-deprecated-list--two-line.mdc-deprecated-list--icon-list .mdc-deprecated-list-item__graphic{align-self:flex-start;margin-top:16px}.mdc-deprecated-list--two-line.mdc-deprecated-list--dense .mdc-deprecated-list-item,.mdc-deprecated-list--avatar-list.mdc-deprecated-list--dense .mdc-deprecated-list-item{height:60px}.mdc-deprecated-list--avatar-list.mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:16px;width:36px;height:36px}[dir=rtl] .mdc-deprecated-list--avatar-list.mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic,.mdc-deprecated-list--avatar-list.mdc-deprecated-list--dense .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:16px;margin-right:0;}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item{cursor:pointer}a.mdc-deprecated-list-item{color:inherit;text-decoration:none}.mdc-deprecated-list-divider{height:0;margin:0;border:none;border-bottom-width:1px;border-bottom-style:solid}.mdc-deprecated-list-divider{border-bottom-color:rgba(0, 0, 0, 0.12)}.mdc-deprecated-list-divider--padded{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list-divider--padded,.mdc-deprecated-list-divider--padded[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list-divider--inset{margin-left:72px;margin-right:0;width:calc(100% - 72px)}[dir=rtl] .mdc-deprecated-list-divider--inset,.mdc-deprecated-list-divider--inset[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list-divider--inset.mdc-deprecated-list-divider--padded{margin-left:72px;margin-right:0;width:calc(100% - 88px)}[dir=rtl] .mdc-deprecated-list-divider--inset.mdc-deprecated-list-divider--padded,.mdc-deprecated-list-divider--inset.mdc-deprecated-list-divider--padded[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading{margin-left:72px;margin-right:0;width:calc(100% - 72px)}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:72px;margin-right:0;width:calc(100% - 88px)}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list--icon-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading{margin-left:72px;margin-right:0;width:calc(100% - 72px)}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:72px;margin-right:0;width:calc(100% - 88px)}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list--avatar-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading{margin-left:72px;margin-right:0;width:calc(100% - 72px)}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:72px;margin-right:0;width:calc(100% - 88px)}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:72px;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list--thumbnail-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading{margin-left:88px;margin-right:0;width:calc(100% - 88px)}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:88px;}.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:88px;margin-right:0;width:calc(100% - 104px)}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:88px;}.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:16px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:16px;margin-right:0;width:calc(100% - 32px)}[dir=rtl] .mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list--image-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:16px;}.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading{margin-left:116px;margin-right:0;width:calc(100% - 116px)}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading,.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading[dir=rtl]{margin-left:0;margin-right:116px;}.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-trailing{width:calc(100% - 16px)}.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing{margin-left:116px;margin-right:0;width:calc(100% - 132px)}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing,.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing[dir=rtl]{margin-left:0;margin-right:116px;}.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding{margin-left:0px;margin-right:0;width:calc(100% - 0px)}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding,.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--padding[dir=rtl]{margin-left:0;margin-right:0px;}.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding{margin-left:0px;margin-right:0;width:calc(100% - 16px)}[dir=rtl] .mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding,.mdc-deprecated-list--video-list .mdc-deprecated-list-divider--inset-leading.mdc-deprecated-list-divider--inset-trailing.mdc-deprecated-list-divider--inset-padding[dir=rtl]{margin-left:0;margin-right:0px;}.mdc-deprecated-list-group .mdc-deprecated-list{padding:0}.mdc-deprecated-list-group__subheader{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, inherit));font-size:0.875rem;font-size:var(--mdc-typography-subtitle1-font-size, 0.875rem);line-height:1.125rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.125rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);margin:calc((3rem - 1.5rem) / 2) 16px}.mdc-list-item__primary-text{color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mdc-list-item__secondary-text{color:rgba(0, 0, 0, 0.54);color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54))}.mdc-list-item__overline-text{color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-item__end{color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:0.38}.mdc-list-item--disabled .mdc-list-item__primary-text{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--disabled .mdc-list-item__secondary-text{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--disabled .mdc-list-item__overline-text{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text{color:#26a69a;color:var(--mdc-theme-primary, #26a69a)}.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#26a69a;color:var(--mdc-theme-primary, #26a69a)}.mdc-deprecated-list-group__subheader{color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}@media screen and (forced-colors: active), (-ms-high-contrast: active){.mdc-list-divider::after{content:\"\";display:block;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:white}}.mdc-list{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, inherit));font-size:0.875rem;font-size:var(--mdc-typography-subtitle1-font-size, 0.875rem);line-height:1.125rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.125rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);line-height:1.5rem;margin:0;padding:8px 0;list-style-type:none}.mdc-list:focus{outline:none}.mdc-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;align-items:stretch;cursor:pointer}.mdc-list-item:focus{outline:none}.mdc-list-item.mdc-list-item--with-one-line{height:48px}.mdc-list-item.mdc-list-item--with-two-lines{height:64px}.mdc-list-item.mdc-list-item--with-three-lines{height:88px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__start{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--disabled,.mdc-list-item.mdc-list-item--non-interactive{cursor:auto}.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid transparent;border-radius:inherit;content:\"\";pointer-events:none}.mdc-list-item.mdc-list-item--selected::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px double transparent;border-radius:inherit;content:\"\";pointer-events:none}.mdc-list-item.mdc-list-item--selected:focus::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px solid transparent;border-radius:inherit;content:\"\";pointer-events:none}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-item__start{fill:currentColor;flex-shrink:0;pointer-events:none}.mdc-list-item__end{flex-shrink:0;pointer-events:none}.mdc-list-item__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;align-self:center;flex:1;pointer-events:none}.mdc-list-item--with-two-lines .mdc-list-item__content,.mdc-list-item--with-three-lines .mdc-list-item__content{align-self:stretch}.mdc-list-item__content[for]{pointer-events:none}.mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, inherit));font-size:0.875rem;font-size:var(--mdc-typography-subtitle1-font-size, 0.875rem);line-height:1.125rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.125rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item__secondary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, inherit));font-size:0.8125rem;font-size:var(--mdc-typography-body2-font-size, 0.8125rem);line-height:1.625rem;line-height:var(--mdc-typography-body2-line-height, 1.625rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:\"\";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__secondary-text{white-space:normal;line-height:20px}.mdc-list-item--with-overline .mdc-list-item__secondary-text{white-space:nowrap;line-height:auto}.mdc-list-item__overline-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-overline-font-family, var(--mdc-typography-font-family, inherit));font-size:0.6875rem;font-size:var(--mdc-typography-overline-font-size, 0.6875rem);line-height:0.875rem;line-height:var(--mdc-typography-overline-line-height, 0.875rem);font-weight:500;font-weight:var(--mdc-typography-overline-font-weight, 500);letter-spacing:0.1666666667em;letter-spacing:var(--mdc-typography-overline-letter-spacing, 0.1666666667em);text-decoration:none;text-decoration:var(--mdc-typography-overline-text-decoration, none);text-transform:uppercase;text-transform:var(--mdc-typography-overline-text-transform, uppercase);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:24px;content:\"\";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-avatar.mdc-list-item,.mdc-list-item--with-leading-avatar.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-avatar .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-avatar .mdc-list-item__start,.mdc-list-item--with-leading-avatar .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-leading-avatar .mdc-list-item__start{width:40px;height:40px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-avatar .mdc-list-item__start{border-radius:50%}.mdc-list-item--with-leading-icon .mdc-list-item__start{width:24px;height:24px}.mdc-list-item--with-leading-icon.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-icon.mdc-list-item,.mdc-list-item--with-leading-icon.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-left:16px;margin-right:32px}[dir=rtl] .mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-leading-icon .mdc-list-item__start[dir=rtl]{margin-left:32px;margin-right:16px;}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-thumbnail.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-thumbnail.mdc-list-item,.mdc-list-item--with-leading-thumbnail.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-thumbnail .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-thumbnail .mdc-list-item__start,.mdc-list-item--with-leading-thumbnail .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-leading-thumbnail .mdc-list-item__start{width:40px;height:40px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-image.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-image.mdc-list-item,.mdc-list-item--with-leading-image.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-image .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-image .mdc-list-item__start,.mdc-list-item--with-leading-image .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-leading-image .mdc-list-item__start{width:56px;height:56px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-video.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-video.mdc-list-item,.mdc-list-item--with-leading-video.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-video .mdc-list-item__start{margin-left:0;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-video .mdc-list-item__start,.mdc-list-item--with-leading-video .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:0;}.mdc-list-item--with-leading-video .mdc-list-item__start{width:100px;height:56px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-checkbox.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-checkbox.mdc-list-item,.mdc-list-item--with-leading-checkbox.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-checkbox .mdc-list-item__start,.mdc-list-item--with-leading-checkbox .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px;}.mdc-list-item--with-leading-checkbox .mdc-list-item__start{width:40px;height:40px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-radio.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-radio.mdc-list-item,.mdc-list-item--with-leading-radio.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-radio .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-radio .mdc-list-item__start,.mdc-list-item--with-leading-radio .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px;}.mdc-list-item--with-leading-radio .mdc-list-item__start{width:40px;height:40px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-switch.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-switch.mdc-list-item,.mdc-list-item--with-leading-switch.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0;}.mdc-list-item--with-leading-switch .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-switch .mdc-list-item__start,.mdc-list-item--with-leading-switch .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-leading-switch .mdc-list-item__start{width:36px;height:20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-trailing-icon.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-icon.mdc-list-item,.mdc-list-item--with-trailing-icon.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto;}.mdc-list-item--with-trailing-icon .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--with-trailing-icon .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-trailing-icon .mdc-list-item__end{width:24px;height:24px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-meta.mdc-list-item,.mdc-list-item--with-trailing-meta.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto;}.mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-left:28px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-trailing-meta .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:28px;}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-trailing-meta .mdc-list-item__end{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, inherit));font-size:0.6875rem;font-size:var(--mdc-typography-caption-font-size, 0.6875rem);line-height:0.875rem;line-height:var(--mdc-typography-caption-line-height, 0.875rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit)}.mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item,.mdc-list-item--with-trailing-checkbox.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto;}.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-checkbox .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px;}.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{width:40px;height:40px}.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-radio.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item,.mdc-list-item--with-trailing-radio.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto;}.mdc-list-item--with-trailing-radio .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-radio .mdc-list-item__end,.mdc-list-item--with-trailing-radio .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px;}.mdc-list-item--with-trailing-radio .mdc-list-item__end{width:40px;height:40px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-switch.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-switch.mdc-list-item,.mdc-list-item--with-trailing-switch.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto;}.mdc-list-item--with-trailing-switch .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-switch .mdc-list-item__end,.mdc-list-item--with-trailing-switch .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px;}.mdc-list-item--with-trailing-switch .mdc-list-item__end{width:36px;height:20px}.mdc-list-item--with-trailing-switch.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:\"\";vertical-align:0}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:\"\";vertical-align:0}.mdc-list-item{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-list-item,.mdc-list-item[dir=rtl]{padding-left:16px;padding-right:16px;}.mdc-list-group .mdc-deprecated-list{padding:0}.mdc-list-group__subheader{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, inherit));font-size:0.875rem;font-size:var(--mdc-typography-subtitle1-font-size, 0.875rem);line-height:1.125rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.125rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);margin:calc((3rem - 1.5rem) / 2) 16px}.mdc-list-divider{background-color:rgba(0, 0, 0, 0.12)}.mdc-list-divider{height:1px;padding:0;background-clip:content-box}.mdc-list-divider.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset{padding-left:16px;padding-right:auto}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset,.mdc-list-divider.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:16px;}.mdc-list-divider.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset{padding-left:auto;padding-right:16px}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset,.mdc-list-divider.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset[dir=rtl]{padding-left:16px;padding-right:auto;}.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset{padding-left:0px;padding-right:auto}[dir=rtl] .mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:0px;}[dir=rtl] .mdc-list-divider,.mdc-list-divider[dir=rtl]{padding:0;}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--unbounded .mdc-deprecated-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--foreground-activation .mdc-deprecated-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--foreground-deactivation .mdc-deprecated-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--unbounded .mdc-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--foreground-activation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--foreground-deactivation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:hover .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-surface--hover .mdc-deprecated-list-item__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--background-focused .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded):focus .mdc-deprecated-list-item__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded) .mdc-deprecated-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded):active .mdc-deprecated-list-item__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:hover .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-deprecated-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-activated-opacity, 0.24)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-deprecated-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:hover .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-surface--hover .mdc-deprecated-list-item__ripple::before{opacity:0.32;opacity:var(--mdc-ripple-hover-opacity, 0.32)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-upgraded--background-focused .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded):focus .mdc-deprecated-list-item__ripple::before{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-focus-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded) .mdc-deprecated-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded):active .mdc-deprecated-list-item__ripple::after{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-activated-opacity, 0.24)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated .mdc-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:hover .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.32;opacity:var(--mdc-ripple-hover-opacity, 0.32)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-focus-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-deprecated-list-item__ripple::before{opacity:0.16;opacity:var(--mdc-ripple-selected-opacity, 0.16)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-deprecated-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:hover .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-surface--hover .mdc-deprecated-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-hover-opacity, 0.24)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-upgraded--background-focused .mdc-deprecated-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):focus .mdc-deprecated-list-item__ripple::before{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-focus-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded) .mdc-deprecated-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):active .mdc-deprecated-list-item__ripple::after{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-list-item__ripple::before{opacity:0.16;opacity:var(--mdc-ripple-selected-opacity, 0.16)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected .mdc-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:hover .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-hover-opacity, 0.24)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-focus-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-deprecated-list-item__ripple,:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item .mdc-list-item__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-deprecated-list-item--disabled{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--unbounded .mdc-deprecated-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--foreground-activation .mdc-deprecated-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--foreground-deactivation .mdc-deprecated-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--unbounded .mdc-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--foreground-activation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--foreground-deactivation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-deprecated-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::before,.mdc-deprecated-list-item--disabled .mdc-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--background-focused .mdc-deprecated-list-item__ripple::before,.mdc-deprecated-list-item--disabled:not(.mdc-ripple-upgraded):focus .mdc-deprecated-list-item__ripple::before{transition-duration:75ms;opacity:0.24;opacity:var(--mdc-ripple-focus-opacity, 0.24)}.mdc-deprecated-list-item--disabled.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,.mdc-deprecated-list-item--disabled:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.24;opacity:var(--mdc-ripple-focus-opacity, 0.24)}.mdc-deprecated-list-item--disabled .mdc-deprecated-list-item__ripple,.mdc-deprecated-list-item--disabled .mdc-list-item__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}:not(.mdc-list-item--disabled).mdc-list-item{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--unbounded .mdc-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-activation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-deactivation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded .mdc-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}:not(.mdc-list-item--disabled).mdc-list-item:hover .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:not(.mdc-list-item--disabled).mdc-list-item--activated .mdc-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-activated-opacity, 0.24)}:not(.mdc-list-item--disabled).mdc-list-item--activated .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--activated .mdc-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-list-item--disabled).mdc-list-item--activated:hover .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.32;opacity:var(--mdc-ripple-hover-opacity, 0.32)}:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-focus-opacity, 0.48)}:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.48;opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.48)}:not(.mdc-list-item--disabled).mdc-list-item--selected .mdc-list-item__ripple::before{opacity:0.16;opacity:var(--mdc-ripple-selected-opacity, 0.16)}:not(.mdc-list-item--disabled).mdc-list-item--selected .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--selected .mdc-list-item__ripple::after{background-color:#26a69a;background-color:var(--mdc-ripple-color, var(--mdc-theme-primary, #26a69a))}:not(.mdc-list-item--disabled).mdc-list-item--selected:hover .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.24;opacity:var(--mdc-ripple-hover-opacity, 0.24)}:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-focus-opacity, 0.4)}:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.4;opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.4)}:not(.mdc-list-item--disabled).mdc-list-item .mdc-list-item__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-list-item--disabled{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}.mdc-list-item--disabled .mdc-list-item__ripple::before,.mdc-list-item--disabled .mdc-list-item__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-list-item--disabled .mdc-list-item__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-list-item--disabled .mdc-list-item__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-list-item--disabled.mdc-ripple-upgraded--unbounded .mdc-list-item__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-list-item--disabled.mdc-ripple-upgraded--foreground-activation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-list-item--disabled.mdc-ripple-upgraded--foreground-deactivation .mdc-list-item__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-list-item--disabled .mdc-list-item__ripple::before,.mdc-list-item--disabled .mdc-list-item__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-list-item--disabled.mdc-ripple-upgraded .mdc-list-item__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-list-item--disabled .mdc-list-item__ripple::before,.mdc-list-item--disabled .mdc-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-list-item--disabled.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,.mdc-list-item--disabled:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.24;opacity:var(--mdc-ripple-focus-opacity, 0.24)}.mdc-list-item--disabled .mdc-list-item__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-deprecated-list,.mdc-deprecated-list-item__secondary-text{font-family:inherit}.mdc-deprecated-list{--mdc-theme-text-icon-on-background:var(\n --icon-color,\n rgb(var(--contrast-900))\n );margin:var(--list-margin, 0.25rem);padding:0;border-radius:0.375rem}.mdc-deprecated-list .mdc-deprecated-list-divider{border-bottom-color:transparent;display:flex;align-items:center;gap:0.75rem;height:auto;padding:0 0.5rem}.mdc-deprecated-list .limel-list-divider-line{background-color:rgb(var(--contrast-400));height:0.125rem;border-radius:1rem;min-width:1rem;flex-grow:1}.mdc-deprecated-list .limel-list-divider-title{all:unset;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:rgb(var(--contrast-900));font-size:0.8125rem}.mdc-deprecated-list .mdc-deprecated-list-item{transition:background-color 0.2s ease;box-sizing:border-box;z-index:0;min-height:2.5rem}.mdc-deprecated-list .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled):hover{background-color:rgb(var(--contrast-300));z-index:1}.mdc-deprecated-list .mdc-deprecated-list-item.mdc-deprecated-list-item--disabled{cursor:not-allowed}.mdc-deprecated-list .mdc-deprecated-list-item.mdc-deprecated-list-item--disabled limel-icon{opacity:0.38}.mdc-deprecated-list .mdc-deprecated-list-item:first-child{border-top-left-radius:0.375rem;border-top-right-radius:0.375rem}.mdc-deprecated-list .mdc-deprecated-list-item:last-child{border-bottom-right-radius:0.375rem;border-bottom-left-radius:0.375rem}.mdc-deprecated-list.selectable .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled){cursor:pointer}.mdc-deprecated-list .mdc-deprecated-list-item__meta{line-height:100%;margin-right:-0.5rem}.mdc-deprecated-list .mdc-deprecated-list-item__graphic{margin-right:0.5rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list{position:relative}.mdc-deprecated-list.mdc-deprecated-list--avatar-list limel-icon.mdc-deprecated-list-item__graphic{background-color:var(--icon-background-color, rgb(var(--contrast-900)));color:var(--icon-color, rgba(var(--color-white), 0.88));margin-right:0.75rem;margin-left:-0.25rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider{position:absolute;bottom:0}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider.mdc-deprecated-list-divider--inset{--icon-width:2.5rem;--icon-right-padding:0.75rem;--list-right-padding:0.75rem;right:0;width:calc(100% - var(--icon-width) - var(--icon-right-padding) - var(--list-right-padding))}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider.mdc-deprecated-list-divider--inset.x-small{--icon-width:1.5rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider.mdc-deprecated-list-divider--inset.small{--icon-width:2rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider.mdc-deprecated-list-divider--inset.medium{--icon-width:2.5rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list hr.mdc-deprecated-list-divider.mdc-deprecated-list-divider--inset.large{--icon-width:3rem}.mdc-deprecated-list.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item:last-child hr.mdc-deprecated-list-divider{display:none}.mdc-deprecated-list.mdc-deprecated-list--two-line .mdc-deprecated-list-item__text{padding-top:0.5rem;padding-bottom:0.5rem}.mdc-deprecated-list .mdc-deprecated-list-item__secondary-text,.mdc-deprecated-list .mdc-deprecated-list-item__primary-text,.mdc-deprecated-list .mdc-deprecated-list-item__command-text{margin:0}.mdc-deprecated-list .mdc-deprecated-list-item__secondary-text:before,.mdc-deprecated-list .mdc-deprecated-list-item__secondary-text:after,.mdc-deprecated-list .mdc-deprecated-list-item__primary-text:before,.mdc-deprecated-list .mdc-deprecated-list-item__primary-text:after,.mdc-deprecated-list .mdc-deprecated-list-item__command-text:before,.mdc-deprecated-list .mdc-deprecated-list-item__command-text:after{display:none}.mdc-deprecated-list .mdc-deprecated-list-item__command-text{color:rgb(var(--contrast-800));margin-left:0.7rem}.mdc-deprecated-list .mdc-deprecated-list-item__text{align-self:center;width:100%}.mdc-deprecated-list .has-primary-component .mdc-deprecated-list-item__text{margin-left:0.5rem}.mdc-deprecated-list .mdc-deprecated-list-item__primary-command-text{display:flex;flex-direction:row;justify-content:space-between;align-items:baseline}.mdc-deprecated-list limel-icon.mdc-deprecated-list-item__graphic{display:block}.mdc-deprecated-list:not(.mdc-deprecated-list--avatar-list) limel-icon.mdc-deprecated-list-item__graphic[size=x-small]{margin-right:0.25rem}.mdc-deprecated-list:not(.mdc-deprecated-list--avatar-list) limel-icon.mdc-deprecated-list-item__graphic[size=small]{margin-right:0.5rem}.mdc-deprecated-list:not(.mdc-deprecated-list--avatar-list) limel-icon.mdc-deprecated-list-item__graphic[size=medium]{margin-right:0.5rem}.mdc-deprecated-list:not(.mdc-deprecated-list--avatar-list) limel-icon.mdc-deprecated-list-item__graphic[size=large]{margin-right:0.75rem}.mdc-deprecated-list-item.mdc-deprecated-list-item--selected:before{background-color:var(--mdc-theme-primary);opacity:0.15}:not(.mdc-deprecated-list--non-interactive)>:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:focus{outline:none}:not(.mdc-deprecated-list--non-interactive)>:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}:not(.mdc-deprecated-list--non-interactive)>:not(.mdc-deprecated-list-item--disabled).mdc-deprecated-list-item:focus-visible{border-radius:0.375rem;z-index:1}:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}:host(limel-checkbox){--mdc-checkbox-checked-color:var(--mdc-theme-primary);--mdc-checkbox-unchecked-color:var(\n --checkbox-unchecked-border-color,\n rgb(var(--contrast-900))\n );--lime-checkbox-unchecked-color:rgb(var(--contrast-300))}.mdc-checkbox{padding:calc((40px - 18px) / 2);padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((40px - 40px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-checkbox:hover .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-surface--hover .mdc-checkbox__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-checkbox:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after{transition:opacity 150ms linear}.mdc-checkbox:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::after{background-color:#575756;background-color:var(--mdc-ripple-color, var(--mdc-theme-secondary, #575756))}.mdc-checkbox.mdc-checkbox--selected:hover .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-surface--hover .mdc-checkbox__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after{transition:opacity 150ms linear}.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::after{background-color:#575756;background-color:var(--mdc-ripple-color, var(--mdc-theme-secondary, #575756))}.mdc-checkbox .mdc-checkbox__background{top:calc((40px - 18px) / 2);top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((40px - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - 40px) / 2);top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - 40px) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - 40px) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:40px;width:var(--mdc-checkbox-touch-target-size, 40px);height:40px;height:var(--mdc-checkbox-touch-target-size, 40px)}.mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}@keyframes mdc-checkbox-fade-in-background-8A000000FF57575600000000FF575756{0%{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF57575600000000FF575756{0%,80%{border-color:#575756;border-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756));background-color:#575756;background-color:var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #575756))}100%{border-color:rgba(0, 0, 0, 0.54);border-color:var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF57575600000000FF575756}.mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF57575600000000FF575756}.mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:rgba(0, 0, 0, 0.38);border-color:var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:rgba(0, 0, 0, 0.38);background-color:var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38))}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:#fff;color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff;border-color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:#fff;color:var(--mdc-checkbox-ink-color, #fff)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff;border-color:var(--mdc-checkbox-ink-color, #fff)}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}@media screen and (forced-colors: active), (-ms-high-contrast: active){.mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:GrayText;border-color:var(--mdc-checkbox-disabled-color, GrayText);background-color:transparent}.mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:GrayText;background-color:transparent;background-color:var(--mdc-checkbox-disabled-color, transparent)}.mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:GrayText;color:var(--mdc-checkbox-ink-color, GrayText)}.mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:GrayText;border-color:var(--mdc-checkbox-ink-color, GrayText)}.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:transparent;pointer-events:none;will-change:background-color, border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((48px - 40px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((40px - 48px) / 2);top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((40px - 48px) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((40px - 48px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:48px;width:var(--mdc-checkbox-state-layer-size, 48px);height:48px;height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-checkbox{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-checkbox .mdc-checkbox__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-checkbox .mdc-checkbox__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-checkbox.mdc-ripple-upgraded--unbounded .mdc-checkbox__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-checkbox.mdc-ripple-upgraded--foreground-activation .mdc-checkbox__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-checkbox.mdc-ripple-upgraded--foreground-deactivation .mdc-checkbox__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before,.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-checkbox{z-index:0}.mdc-checkbox .mdc-checkbox__ripple::before,.mdc-checkbox .mdc-checkbox__ripple::after{z-index:-1;z-index:var(--mdc-ripple-z-index, -1)}.mdc-checkbox__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, inherit));font-size:0.8125rem;font-size:var(--mdc-typography-body2-font-size, 0.8125rem);line-height:1.625rem;line-height:var(--mdc-typography-body2-line-height, 1.625rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0;}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px;}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto;}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0;}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0;}.mdc-form-field{font-family:inherit}.mdc-form-field{display:flex}.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate)~.mdc-checkbox__background,.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{background-color:var(--lime-checkbox-unchecked-color)}.mdc-form-field .mdc-checkbox.mdc-checkbox--invalid .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:var(--lime-error-text-color)}.mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus-visible+.mdc-checkbox__background:after{content:\"\";display:block;position:absolute;inset:-0.25rem;border-radius:0.25rem;box-shadow:var(--shadow-depth-8-focused)}.mdc-form-field .mdc-checkbox--disabled{opacity:0.5}.mdc-form-field label{cursor:pointer;line-height:normal;padding-left:0}.mdc-form-field label.mdc-checkbox--required::after{margin-left:0.0625rem;content:\"*\"}.mdc-form-field label.mdc-checkbox--invalid{color:var(--lime-error-text-color)}:host(limel-checkbox:focus),:host(limel-checkbox:focus-visible),:host(limel-checkbox:focus-within),:host(limel-checkbox[invalid]:not([invalid=false])),:host(limel-checkbox[invalid=true]){--limel-h-l-grid-template-rows-transition-speed:0.46s;--limel-h-l-grid-template-rows:1fr}:host(limel-checkbox){--limel-h-l-grid-template-rows-transition-speed:0.3s;--limel-h-l-grid-template-rows:0fr}:host(limel-checkbox:focus) limel-helper-line,:host(limel-checkbox:focus-visible) limel-helper-line,:host(limel-checkbox:focus-within) limel-helper-line,:host(limel-checkbox:hover) limel-helper-line{will-change:grid-template-rows}.mdc-radio{padding:calc((40px - 20px) / 2)}.mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0, 0, 0, 0.54)}.mdc-radio .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:#575756;border-color:var(--mdc-theme-secondary, #575756)}.mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:#575756;border-color:var(--mdc-theme-secondary, #575756)}.mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0, 0, 0, 0.38)}.mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0, 0, 0, 0.38)}.mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:rgba(0, 0, 0, 0.38)}.mdc-radio .mdc-radio__background::before{background-color:#575756;background-color:var(--mdc-theme-secondary, #575756)}.mdc-radio .mdc-radio__background::before{top:calc(-1 * (40px - 20px) / 2);left:calc(-1 * (40px - 20px) / 2);width:40px;height:40px}.mdc-radio .mdc-radio__native-control{top:calc((40px - 40px) / 2);right:calc((40px - 40px) / 2);left:calc((40px - 40px) / 2);width:40px;height:40px}@media screen and (forced-colors: active), (-ms-high-contrast: active){.mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:GrayText}}.mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity, transform, border-color, color}.mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:\"\";transition:opacity 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1), border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.mdc-radio--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-radio--touch .mdc-radio__native-control{top:calc((40px - 48px) / 2);right:calc((40px - 48px) / 2);left:calc((40px - 48px) / 2);width:48px;height:48px}.mdc-radio__native-control:checked+.mdc-radio__background,.mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:disabled+.mdc-radio__background,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background{cursor:default}.mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:0.12;transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity}.mdc-radio .mdc-radio__ripple::before,.mdc-radio .mdc-radio__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-radio .mdc-radio__ripple::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-radio .mdc-radio__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-radio.mdc-ripple-upgraded--unbounded .mdc-radio__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-radio.mdc-ripple-upgraded--foreground-activation .mdc-radio__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-radio.mdc-ripple-upgraded--foreground-deactivation .mdc-radio__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-radio .mdc-radio__ripple::before,.mdc-radio .mdc-radio__ripple::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before,.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-radio .mdc-radio__ripple::before,.mdc-radio .mdc-radio__ripple::after{background-color:#575756;background-color:var(--mdc-ripple-color, var(--mdc-theme-secondary, #575756))}.mdc-radio:hover .mdc-radio__ripple::before,.mdc-radio.mdc-ripple-surface--hover .mdc-radio__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__ripple::before,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-radio:not(.mdc-ripple-upgraded) .mdc-radio__ripple::after{transition:opacity 150ms linear}.mdc-radio:not(.mdc-ripple-upgraded):active .mdc-radio__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-radio.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__background::before,.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__background::before{content:none}.mdc-radio__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:inherit;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, inherit));font-size:0.8125rem;font-size:var(--mdc-typography-body2-font-size, 0.8125rem);line-height:1.625rem;line-height:var(--mdc-typography-body2-line-height, 1.625rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0;}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px;}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto;}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0;}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0;}.mdc-form-field{display:flex}.mdc-form-field .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:#26a69a;border-color:var(--mdc-theme-primary, #26a69a)}.mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-checkbox-unchecked-color)}:host(.has-striped-rows) .mdc-deprecated-list{border:1px solid rgb(var(--contrast-400))}:host(.has-striped-rows) .mdc-deprecated-list-item:nth-child(even),:host(.has-striped-rows.has-interactive-items) .mdc-deprecated-list-item:nth-child(even){background-color:var(--list-background-color-of-odd-interactive-items, rgb(var(--contrast-200)))}:host(.has-striped-rows) .mdc-deprecated-list-item:nth-child(odd),:host(.has-striped-rows.has-interactive-items) .mdc-deprecated-list-item:nth-child(odd){background-color:var(--list-background-color-of-even-interactive-items, rgb(var(--contrast-100)))}:host(.has-interactive-items) .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled){transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--mdc-theme-on-surface);background-color:transparent}:host(.has-interactive-items) .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled):hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}:host(.has-interactive-items) .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled):active{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.08rem, 0)}:host(.has-interactive-items) .mdc-deprecated-list-item:not(.mdc-deprecated-list-item--disabled):hover{z-index:1}:host{--line-height-of-secondary-text:1rem}.mdc-deprecated-list-item{height:auto !important}.mdc-deprecated-list-item .mdc-deprecated-list-item__secondary-text{line-height:var(--line-height-of-secondary-text);white-space:normal;display:-webkit-box;-webkit-line-clamp:var(--maxLinesSecondaryText);-webkit-box-orient:vertical}:host(.has-grid-layout){--gap:var(--list-grid-gap, 0.75rem);padding:var(--gap);}:host(.has-grid-layout) .mdc-deprecated-list{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit, minmax(min(100%, max(var(--list-grid-item-max-width, 10rem) - var(--gap), var(--list-grid-item-min-width, 7.5rem))), 1fr));max-width:var(--list-grid-max-width, 100%)}:host(.has-grid-layout) .mdc-deprecated-list-divider{grid-column:1/-1}:host(.has-grid-layout) .mdc-deprecated-list-item{border-radius:0.25rem;background-color:rgb(var(--contrast-100))}:host(.has-grid-layout) .mdc-deprecated-list--avatar-list limel-icon{margin-right:0.25rem;margin-left:-0.5rem}:host(.static-actions-list){z-index:1;background-color:var(--mdc-theme-surface)}:host(.has-position-sticky){position:sticky;box-shadow:0 0 0.75rem 0.5rem var(--mdc-theme-surface)}:host(.has-position-sticky.is-on-top){top:0}:host(.has-position-sticky.is-at-bottom){bottom:0}:host(.is-on-top){border-bottom:1px solid rgb(var(--contrast-400));margin-bottom:0.5rem;padding-bottom:0.25rem}:host(.is-at-bottom){border-top:1px solid rgb(var(--contrast-400));margin-top:0.5rem;padding-top:0.25rem}";
|
|
2426
|
-
|
|
2427
|
-
const { ACTION_EVENT } = strings$2;
|
|
2428
|
-
const List = class {
|
|
2429
|
-
constructor(hostRef) {
|
|
2430
|
-
registerInstance(this, hostRef);
|
|
2431
|
-
this.change = createEvent(this, "change", 7);
|
|
2432
|
-
this.select = createEvent(this, "select", 7);
|
|
2433
|
-
this.listRenderer = new ListRenderer();
|
|
2434
|
-
this.setup = () => {
|
|
2435
|
-
this.setupList();
|
|
2436
|
-
this.setupListeners();
|
|
2437
|
-
};
|
|
2438
|
-
this.setupList = () => {
|
|
2439
|
-
if (this.mdcList) {
|
|
2440
|
-
this.teardown();
|
|
2441
|
-
this.mdcList = null;
|
|
2442
|
-
}
|
|
2443
|
-
const element = this.element.shadowRoot.querySelector('.mdc-deprecated-list');
|
|
2444
|
-
if (!element) {
|
|
2445
|
-
return;
|
|
2446
|
-
}
|
|
2447
|
-
this.mdcList = new MDCList(element);
|
|
2448
|
-
this.mdcList.hasTypeahead = true;
|
|
2449
|
-
};
|
|
2450
|
-
this.setupListeners = () => {
|
|
2451
|
-
if (!this.mdcList) {
|
|
2452
|
-
return;
|
|
2453
|
-
}
|
|
2454
|
-
this.mdcList.unlisten(ACTION_EVENT, this.handleAction);
|
|
2455
|
-
this.selectable = ['selectable', 'radio', 'checkbox'].includes(this.type);
|
|
2456
|
-
this.multiple = this.type === 'checkbox';
|
|
2457
|
-
if (!this.selectable) {
|
|
2458
|
-
return;
|
|
2459
|
-
}
|
|
2460
|
-
this.mdcList.listen(ACTION_EVENT, this.handleAction);
|
|
2461
|
-
this.mdcList.singleSelection = !this.multiple;
|
|
2462
|
-
};
|
|
2463
|
-
this.teardown = () => {
|
|
2464
|
-
var _a, _b;
|
|
2465
|
-
(_a = this.mdcList) === null || _a === void 0 ? void 0 : _a.unlisten(ACTION_EVENT, this.handleAction);
|
|
2466
|
-
(_b = this.mdcList) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
2467
|
-
};
|
|
2468
|
-
this.handleAction = (event) => {
|
|
2469
|
-
if (!this.multiple) {
|
|
2470
|
-
this.handleSingleSelect(event.detail.index);
|
|
2471
|
-
return;
|
|
2472
|
-
}
|
|
2473
|
-
this.handleMultiSelect(event.detail.index);
|
|
2474
|
-
};
|
|
2475
|
-
this.handleSingleSelect = (index) => {
|
|
2476
|
-
const listItems = this.items.filter(this.isListItem);
|
|
2477
|
-
if (listItems[index].disabled) {
|
|
2478
|
-
return;
|
|
2479
|
-
}
|
|
2480
|
-
const selectedItem = listItems.find((item) => {
|
|
2481
|
-
return !!item.selected;
|
|
2482
|
-
});
|
|
2483
|
-
if (selectedItem) {
|
|
2484
|
-
if (this.type !== 'radio') {
|
|
2485
|
-
this.mdcList.selectedIndex = -1;
|
|
2486
|
-
}
|
|
2487
|
-
this.change.emit(Object.assign(Object.assign({}, selectedItem), { selected: false }));
|
|
2488
|
-
}
|
|
2489
|
-
if (listItems[index] !== selectedItem) {
|
|
2490
|
-
this.change.emit(Object.assign(Object.assign({}, listItems[index]), { selected: true }));
|
|
2491
|
-
}
|
|
2492
|
-
};
|
|
2493
|
-
this.handleMultiSelect = (index) => {
|
|
2494
|
-
const listItems = this.items.filter(this.isListItem);
|
|
2495
|
-
if (listItems[index].disabled) {
|
|
2496
|
-
return;
|
|
2497
|
-
}
|
|
2498
|
-
const selectedItems = listItems
|
|
2499
|
-
.filter((item, listIndex) => {
|
|
2500
|
-
if (listIndex === index) {
|
|
2501
|
-
// This is the item that was selected or deselected,
|
|
2502
|
-
// so we negate its previous selection status.
|
|
2503
|
-
return !item.selected;
|
|
2504
|
-
}
|
|
2505
|
-
// This is an item that didn't change, so we keep its selection status.
|
|
2506
|
-
return item.selected;
|
|
2507
|
-
})
|
|
2508
|
-
.map((item) => {
|
|
2509
|
-
return Object.assign(Object.assign({}, item), { selected: true });
|
|
2510
|
-
});
|
|
2511
|
-
this.change.emit(selectedItems);
|
|
2512
|
-
};
|
|
2513
|
-
this.isListItem = (item) => {
|
|
2514
|
-
return !('separator' in item);
|
|
2515
|
-
};
|
|
2516
|
-
this.items = undefined;
|
|
2517
|
-
this.badgeIcons = undefined;
|
|
2518
|
-
this.iconSize = 'small';
|
|
2519
|
-
this.type = undefined;
|
|
2520
|
-
this.maxLinesSecondaryText = 3;
|
|
2521
|
-
}
|
|
2522
|
-
connectedCallback() {
|
|
2523
|
-
this.setup();
|
|
2524
|
-
}
|
|
2525
|
-
disconnectedCallback() {
|
|
2526
|
-
this.teardown();
|
|
2527
|
-
}
|
|
2528
|
-
componentDidLoad() {
|
|
2529
|
-
this.setup();
|
|
2530
|
-
this.triggerIconColorWarning();
|
|
2531
|
-
}
|
|
2532
|
-
render() {
|
|
2533
|
-
var _a;
|
|
2534
|
-
this.config = {
|
|
2535
|
-
badgeIcons: this.badgeIcons,
|
|
2536
|
-
type: this.type,
|
|
2537
|
-
iconSize: this.iconSize,
|
|
2538
|
-
};
|
|
2539
|
-
let maxLinesSecondaryText = +((_a = this.maxLinesSecondaryText) === null || _a === void 0 ? void 0 : _a.toFixed());
|
|
2540
|
-
if (this.maxLinesSecondaryText < 1) {
|
|
2541
|
-
maxLinesSecondaryText = 1;
|
|
2542
|
-
}
|
|
2543
|
-
const html = this.listRenderer.render(this.items, this.config);
|
|
2544
|
-
return (h(Host, { style: {
|
|
2545
|
-
'--maxLinesSecondaryText': `${maxLinesSecondaryText}`,
|
|
2546
|
-
} }, html));
|
|
2547
|
-
}
|
|
2548
|
-
handleType() {
|
|
2549
|
-
this.setupListeners();
|
|
2550
|
-
}
|
|
2551
|
-
itemsChanged() {
|
|
2552
|
-
if (!this.mdcList) {
|
|
2553
|
-
return;
|
|
2554
|
-
}
|
|
2555
|
-
setTimeout(() => {
|
|
2556
|
-
this.setup();
|
|
2557
|
-
const listItems = this.items.filter(this.isListItem);
|
|
2558
|
-
if (this.multiple) {
|
|
2559
|
-
this.mdcList.selectedIndex = listItems
|
|
2560
|
-
.filter((item) => item.selected)
|
|
2561
|
-
.map((item) => listItems.indexOf(item));
|
|
2562
|
-
}
|
|
2563
|
-
else {
|
|
2564
|
-
const selectedIndex = listItems.findIndex((item) => item.selected);
|
|
2565
|
-
if (selectedIndex === -1) {
|
|
2566
|
-
this.mdcList.initializeListType();
|
|
2567
|
-
}
|
|
2568
|
-
else {
|
|
2569
|
-
this.mdcList.selectedIndex = selectedIndex;
|
|
2570
|
-
}
|
|
2571
|
-
}
|
|
2572
|
-
}, 0);
|
|
2573
|
-
}
|
|
2574
|
-
triggerIconColorWarning() {
|
|
2575
|
-
var _a;
|
|
2576
|
-
if ((_a = this.items) === null || _a === void 0 ? void 0 : _a.some((item) => 'iconColor' in item)) {
|
|
2577
|
-
/* eslint-disable-next-line no-console */
|
|
2578
|
-
console.warn("The `iconColor` prop is deprecated now! Use the new `Icon` interface and instead of `iconColor: 'color-name'` write `icon {name: 'icon-name', color: 'color-name'}`.");
|
|
2579
|
-
}
|
|
2580
|
-
}
|
|
2581
|
-
static get delegatesFocus() { return true; }
|
|
2582
|
-
get element() { return getElement(this); }
|
|
2583
|
-
static get watchers() { return {
|
|
2584
|
-
"type": ["handleType"],
|
|
2585
|
-
"items": ["itemsChanged"]
|
|
2586
|
-
}; }
|
|
2587
|
-
};
|
|
2588
|
-
List.style = listCss;
|
|
2589
|
-
|
|
2590
|
-
const menuCss = ":host(limel-menu){isolation:isolate;position:relative;display:inline-block;--badge-background-color:var(\n --notification-badge-background-color,\n rgb(var(--color-red-default))\n );--badge-text-color:var(\n --notification-badge-text-color,\n rgb(var(--color-white))\n )}:host([hidden]){display:none}.menu__trigger{border-color:transparent;border-width:1px;border-style:solid;background:none;color:rgb(var(--contrast-800));height:2.25rem}.menu__trigger-enabled:hover{border-color:rgb(var(--contrast-800));color:rgb(var(--contrast-1100))}.mdc-menu-surface--anchor{position:relative}limel-badge{position:absolute;top:-0.25rem;right:-0.25rem}";
|
|
2591
|
-
|
|
2592
|
-
const DEFAULT_ROOT_BREADCRUMBS_ITEM = {
|
|
2593
|
-
text: '',
|
|
2594
|
-
icon: {
|
|
2595
|
-
name: 'home',
|
|
2596
|
-
},
|
|
2597
|
-
type: 'icon-only',
|
|
2598
|
-
};
|
|
2599
|
-
const Menu = class {
|
|
2600
|
-
constructor(hostRef) {
|
|
2601
|
-
registerInstance(this, hostRef);
|
|
2602
|
-
this.cancel = createEvent(this, "cancel", 7);
|
|
2603
|
-
this.select = createEvent(this, "select", 7);
|
|
2604
|
-
this.navigateMenu = createEvent(this, "navigateMenu", 7);
|
|
2605
|
-
this.renderLoader = () => {
|
|
2606
|
-
if (!this.loadingSubItems && !this.loading) {
|
|
2607
|
-
return;
|
|
2608
|
-
}
|
|
2609
|
-
const cssProperties = this.getCssProperties();
|
|
2610
|
-
return (h("div", { style: {
|
|
2611
|
-
width: cssProperties['--menu-surface-width'],
|
|
2612
|
-
display: 'flex',
|
|
2613
|
-
'align-items': 'center',
|
|
2614
|
-
'justify-content': 'center',
|
|
2615
|
-
padding: '0.5rem 0',
|
|
2616
|
-
} }, h("limel-spinner", { size: "mini", limeBranded: false })));
|
|
2617
|
-
};
|
|
2618
|
-
this.renderBreadcrumb = () => {
|
|
2619
|
-
const breadcrumbsItems = this.getBreadcrumbsItems();
|
|
2620
|
-
if (!breadcrumbsItems.length) {
|
|
2621
|
-
return;
|
|
2622
|
-
}
|
|
2623
|
-
return (h("limel-breadcrumbs", { style: {
|
|
2624
|
-
'border-bottom': 'solid 1px rgb(var(--contrast-500))',
|
|
2625
|
-
'flex-shrink': '0',
|
|
2626
|
-
}, onSelect: this.handleBreadcrumbsSelect, items: breadcrumbsItems }));
|
|
2627
|
-
};
|
|
2628
|
-
this.handleBreadcrumbsSelect = (event) => {
|
|
2629
|
-
if (!event.detail.menuItem) {
|
|
2630
|
-
this.currentSubMenu = null;
|
|
2631
|
-
this.clearSearch();
|
|
2632
|
-
this.navigateMenu.emit(null);
|
|
2633
|
-
this.setFocus();
|
|
2634
|
-
return;
|
|
2635
|
-
}
|
|
2636
|
-
this.handleSelect(event.detail.menuItem);
|
|
2637
|
-
};
|
|
2638
|
-
this.renderSearchField = () => {
|
|
2639
|
-
if (!this.searcher) {
|
|
2640
|
-
return;
|
|
2641
|
-
}
|
|
2642
|
-
return (h("limel-input-field", { tabindex: "0", ref: this.setSearchElement, type: "search", leadingIcon: "search", style: {
|
|
2643
|
-
padding: '0.25rem',
|
|
2644
|
-
'box-sizing': 'border-box',
|
|
2645
|
-
}, value: this.searchValue, onChange: this.handleTextInput, onKeyDown: this.handleInputKeyDown }));
|
|
2646
|
-
};
|
|
2647
|
-
this.renderEmptyMessage = () => {
|
|
2648
|
-
var _a;
|
|
2649
|
-
if (this.loading ||
|
|
2650
|
-
this.loadingSubItems ||
|
|
2651
|
-
!this.emptyResultMessage ||
|
|
2652
|
-
!Array.isArray(this.searchResults) ||
|
|
2653
|
-
((_a = this.searchResults) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
2654
|
-
return null;
|
|
2655
|
-
}
|
|
2656
|
-
return (h("p", { style: {
|
|
2657
|
-
padding: '0 1rem',
|
|
2658
|
-
'text-align': 'center',
|
|
2659
|
-
} }, this.emptyResultMessage));
|
|
2660
|
-
};
|
|
2661
|
-
this.renderMenuList = () => {
|
|
2662
|
-
let items = this.visibleItems;
|
|
2663
|
-
if (this.loadingSubItems || this.loading) {
|
|
2664
|
-
items = [];
|
|
2665
|
-
}
|
|
2666
|
-
return (h("limel-menu-list", { style: {
|
|
2667
|
-
'overflow-y': 'auto',
|
|
2668
|
-
'flex-grow': '1',
|
|
2669
|
-
}, class: {
|
|
2670
|
-
'has-grid-layout has-interactive-items': this.gridLayout,
|
|
2671
|
-
}, items: items, type: "menu", badgeIcons: this.badgeIcons, onSelect: this.onSelect, ref: this.setListElement, onKeyDown: this.handleMenuKeyDown }));
|
|
2672
|
-
};
|
|
2673
|
-
this.handleTextInput = async (event) => {
|
|
2674
|
-
event.stopPropagation();
|
|
2675
|
-
const query = event.detail;
|
|
2676
|
-
this.searchValue = query;
|
|
2677
|
-
if (query === '') {
|
|
2678
|
-
this.searchResults = null;
|
|
2679
|
-
this.loadingSubItems = false;
|
|
2680
|
-
return;
|
|
2681
|
-
}
|
|
2682
|
-
this.loadingSubItems = true;
|
|
2683
|
-
const result = await this.searcher(query);
|
|
2684
|
-
if (this.searchValue !== query) {
|
|
2685
|
-
return;
|
|
2686
|
-
}
|
|
2687
|
-
this.searchResults = result;
|
|
2688
|
-
this.loadingSubItems = false;
|
|
2689
|
-
};
|
|
2690
|
-
// Key handler for the input search field
|
|
2691
|
-
// Will change focus to the first/last item in the dropdown
|
|
2692
|
-
// list to enable selection with the keyboard
|
|
2693
|
-
this.handleInputKeyDown = (event) => {
|
|
2694
|
-
const isForwardTab = (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&
|
|
2695
|
-
!event.altKey &&
|
|
2696
|
-
!event.metaKey &&
|
|
2697
|
-
!event.shiftKey;
|
|
2698
|
-
const isUp = event.key === ARROW_UP || event.keyCode === ARROW_UP_KEY_CODE;
|
|
2699
|
-
const isDown = event.key === ARROW_DOWN || event.keyCode === ARROW_DOWN_KEY_CODE;
|
|
2700
|
-
if (!isForwardTab && !isUp && !isDown) {
|
|
2701
|
-
return;
|
|
2702
|
-
}
|
|
2703
|
-
if (!this.list) {
|
|
2704
|
-
return;
|
|
2705
|
-
}
|
|
2706
|
-
event.stopPropagation();
|
|
2707
|
-
event.preventDefault();
|
|
2708
|
-
if (isForwardTab || isDown) {
|
|
2709
|
-
const listItems = this.list.shadowRoot.querySelectorAll('.mdc-deprecated-list-item');
|
|
2710
|
-
const listElement = listItems[0];
|
|
2711
|
-
listElement === null || listElement === void 0 ? void 0 : listElement.focus();
|
|
2712
|
-
return;
|
|
2713
|
-
}
|
|
2714
|
-
if (isUp) {
|
|
2715
|
-
const listItems = this.list.shadowRoot.querySelectorAll('.mdc-deprecated-list-item');
|
|
2716
|
-
const listElement = listItems[listItems.length - 1];
|
|
2717
|
-
listElement === null || listElement === void 0 ? void 0 : listElement.focus();
|
|
2718
|
-
}
|
|
2719
|
-
};
|
|
2720
|
-
// Key handler for the menu list
|
|
2721
|
-
// Will change focus to the search field if using shift+tab
|
|
2722
|
-
// And can go forward/back with righ/left arrow keys
|
|
2723
|
-
this.handleMenuKeyDown = (event) => {
|
|
2724
|
-
var _a;
|
|
2725
|
-
const isBackwardTab = (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&
|
|
2726
|
-
!event.altKey &&
|
|
2727
|
-
!event.metaKey &&
|
|
2728
|
-
event.shiftKey;
|
|
2729
|
-
const isLeft = event.key === ARROW_LEFT || event.keyCode === ARROW_LEFT_KEY_CODE;
|
|
2730
|
-
const isRight = event.key === ARROW_RIGHT || event.keyCode === ARROW_RIGHT_KEY_CODE;
|
|
2731
|
-
if (!isBackwardTab && !isLeft && !isRight) {
|
|
2732
|
-
return;
|
|
2733
|
-
}
|
|
2734
|
-
if (isBackwardTab) {
|
|
2735
|
-
event.stopPropagation();
|
|
2736
|
-
event.preventDefault();
|
|
2737
|
-
(_a = this.searchInput) === null || _a === void 0 ? void 0 : _a.focus();
|
|
2738
|
-
}
|
|
2739
|
-
else if (!this.gridLayout) {
|
|
2740
|
-
const currentItem = this.getCurrentItem();
|
|
2741
|
-
event.stopPropagation();
|
|
2742
|
-
event.preventDefault();
|
|
2743
|
-
if (isRight) {
|
|
2744
|
-
this.goForward(currentItem);
|
|
2745
|
-
}
|
|
2746
|
-
else if (isLeft) {
|
|
2747
|
-
this.goBack();
|
|
2748
|
-
}
|
|
2749
|
-
}
|
|
2750
|
-
};
|
|
2751
|
-
this.clearSearch = () => {
|
|
2752
|
-
this.searchValue = '';
|
|
2753
|
-
this.searchResults = null;
|
|
2754
|
-
this.loadingSubItems = false;
|
|
2755
|
-
};
|
|
2756
|
-
this.getCurrentItem = () => {
|
|
2757
|
-
var _a, _b, _c;
|
|
2758
|
-
const activeItem = (_b = (_a = this.list) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[role="menuitem"][tabindex="0"]');
|
|
2759
|
-
const attrIndex = (_c = activeItem === null || activeItem === void 0 ? void 0 : activeItem.attributes) === null || _c === void 0 ? void 0 : _c.getNamedItem('data-index');
|
|
2760
|
-
const dataIndex = parseInt((attrIndex === null || attrIndex === void 0 ? void 0 : attrIndex.value) || '0', 10);
|
|
2761
|
-
return this.visibleItems[dataIndex];
|
|
2762
|
-
};
|
|
2763
|
-
this.goForward = (currentItem) => {
|
|
2764
|
-
this.handleSelect(currentItem, false);
|
|
2765
|
-
};
|
|
2766
|
-
this.goBack = () => {
|
|
2767
|
-
if (!this.currentSubMenu) {
|
|
2768
|
-
// Already in the root of the menu
|
|
2769
|
-
return;
|
|
2770
|
-
}
|
|
2771
|
-
const parent = this.currentSubMenu.parentItem;
|
|
2772
|
-
if (!parent) {
|
|
2773
|
-
// If only one step down, go to the root of the menu.
|
|
2774
|
-
// No need to load a sub-menu.
|
|
2775
|
-
this.currentSubMenu = null;
|
|
2776
|
-
this.clearSearch();
|
|
2777
|
-
this.navigateMenu.emit(null);
|
|
2778
|
-
this.setFocus();
|
|
2779
|
-
return;
|
|
2780
|
-
}
|
|
2781
|
-
this.handleSelect(parent);
|
|
2782
|
-
};
|
|
2783
|
-
this.setTriggerAttributes = (element) => {
|
|
2784
|
-
const attributes = {
|
|
2785
|
-
'aria-haspopup': true,
|
|
2786
|
-
'aria-expanded': this.open,
|
|
2787
|
-
'aria-controls': this.portalId,
|
|
2788
|
-
disabled: this.disabled,
|
|
2789
|
-
role: 'button',
|
|
2790
|
-
};
|
|
2791
|
-
for (const [key, value] of Object.entries(attributes)) {
|
|
2792
|
-
if (!value) {
|
|
2793
|
-
element.removeAttribute(key);
|
|
2794
|
-
}
|
|
2795
|
-
else {
|
|
2796
|
-
element.setAttribute(key, String(value));
|
|
2797
|
-
}
|
|
2798
|
-
}
|
|
2799
|
-
};
|
|
2800
|
-
this.onClose = () => {
|
|
2801
|
-
this.cancel.emit();
|
|
2802
|
-
this.open = false;
|
|
2803
|
-
this.currentSubMenu = null;
|
|
2804
|
-
};
|
|
2805
|
-
this.onTriggerClick = (event) => {
|
|
2806
|
-
event.stopPropagation();
|
|
2807
|
-
if (this.disabled) {
|
|
2808
|
-
return;
|
|
2809
|
-
}
|
|
2810
|
-
this.open = !this.open;
|
|
2811
|
-
};
|
|
2812
|
-
this.handleSelect = async (menuItem, selectOnEmptyChildren = true) => {
|
|
2813
|
-
if (Array.isArray(menuItem === null || menuItem === void 0 ? void 0 : menuItem.items) && menuItem.items.length > 0) {
|
|
2814
|
-
this.selectedMenuItem = menuItem;
|
|
2815
|
-
this.clearSearch();
|
|
2816
|
-
this.currentSubMenu = menuItem;
|
|
2817
|
-
this.navigateMenu.emit(menuItem);
|
|
2818
|
-
this.setFocus();
|
|
2819
|
-
return;
|
|
2820
|
-
}
|
|
2821
|
-
else if (isFunction(menuItem === null || menuItem === void 0 ? void 0 : menuItem.items)) {
|
|
2822
|
-
const menuLoader = menuItem.items;
|
|
2823
|
-
this.selectedMenuItem = menuItem;
|
|
2824
|
-
this.loadingSubItems = true;
|
|
2825
|
-
const subItems = await menuLoader(menuItem);
|
|
2826
|
-
if (this.selectedMenuItem !== menuItem) {
|
|
2827
|
-
return;
|
|
2828
|
-
}
|
|
2829
|
-
menuItem.items = subItems;
|
|
2830
|
-
this.loadingSubItems = false;
|
|
2831
|
-
if (subItems === null || subItems === void 0 ? void 0 : subItems.length) {
|
|
2832
|
-
this.currentSubMenu = menuItem;
|
|
2833
|
-
this.clearSearch();
|
|
2834
|
-
this.navigateMenu.emit(menuItem);
|
|
2835
|
-
this.setFocus();
|
|
2836
|
-
return;
|
|
2837
|
-
}
|
|
2838
|
-
}
|
|
2839
|
-
if (!selectOnEmptyChildren) {
|
|
2840
|
-
return;
|
|
2841
|
-
}
|
|
2842
|
-
this.selectedMenuItem = menuItem;
|
|
2843
|
-
this.loadingSubItems = false;
|
|
2844
|
-
this.select.emit(menuItem);
|
|
2845
|
-
this.open = false;
|
|
2846
|
-
this.currentSubMenu = null;
|
|
2847
|
-
this.setFocus();
|
|
2848
|
-
};
|
|
2849
|
-
this.onSelect = (event) => {
|
|
2850
|
-
event.stopPropagation();
|
|
2851
|
-
this.handleSelect(event.detail);
|
|
2852
|
-
};
|
|
2853
|
-
this.setListElement = (element) => {
|
|
2854
|
-
this.list = element;
|
|
2855
|
-
};
|
|
2856
|
-
this.setFocus = () => {
|
|
2857
|
-
setTimeout(() => {
|
|
2858
|
-
if (this.searchInput && this.searcher) {
|
|
2859
|
-
const observer = new IntersectionObserver(() => {
|
|
2860
|
-
observer.unobserve(this.searchInput);
|
|
2861
|
-
if (this.searchInput === window.document.activeElement) {
|
|
2862
|
-
return;
|
|
2863
|
-
}
|
|
2864
|
-
this.searchInput.focus();
|
|
2865
|
-
});
|
|
2866
|
-
observer.observe(this.searchInput);
|
|
2867
|
-
}
|
|
2868
|
-
else if (this.list) {
|
|
2869
|
-
const observer = new IntersectionObserver(() => {
|
|
2870
|
-
observer.unobserve(this.list);
|
|
2871
|
-
this.focusMenuItem();
|
|
2872
|
-
});
|
|
2873
|
-
observer.observe(this.list);
|
|
2874
|
-
}
|
|
2875
|
-
}, 0);
|
|
2876
|
-
};
|
|
2877
|
-
this.setSearchElement = (element) => {
|
|
2878
|
-
this.searchInput = element;
|
|
2879
|
-
};
|
|
2880
|
-
this.focusMenuItem = () => {
|
|
2881
|
-
var _a;
|
|
2882
|
-
if (!this.list) {
|
|
2883
|
-
return;
|
|
2884
|
-
}
|
|
2885
|
-
const activeElement = this.list.shadowRoot.activeElement;
|
|
2886
|
-
activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();
|
|
2887
|
-
const menuItems = this.visibleItems.filter(this.isMenuItem);
|
|
2888
|
-
const selectedIndex = Math.max(menuItems.findIndex((item) => item.selected), 0);
|
|
2889
|
-
const menuElements = Array.from(this.list.shadowRoot.querySelectorAll('[role="menuitem"]'));
|
|
2890
|
-
(_a = menuElements[selectedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
2891
|
-
};
|
|
2892
|
-
this.renderNotificationBadge = () => {
|
|
2893
|
-
if (this.items.some(this.hasNotificationBadge)) {
|
|
2894
|
-
return h("limel-badge", null);
|
|
2895
|
-
}
|
|
2896
|
-
};
|
|
2897
|
-
this.hasNotificationBadge = (item) => this.isMenuItem(item) && item.badge !== undefined;
|
|
2898
|
-
this.setTriggerRef = (elm) => {
|
|
2899
|
-
this.triggerElement = elm;
|
|
2900
|
-
};
|
|
2901
|
-
this.items = [];
|
|
2902
|
-
this.disabled = false;
|
|
2903
|
-
this.openDirection = 'bottom-start';
|
|
2904
|
-
this.surfaceWidth = 'inherit-from-items';
|
|
2905
|
-
this.open = false;
|
|
2906
|
-
this.badgeIcons = false;
|
|
2907
|
-
this.gridLayout = false;
|
|
2908
|
-
this.loading = false;
|
|
2909
|
-
this.currentSubMenu = undefined;
|
|
2910
|
-
this.rootItem = DEFAULT_ROOT_BREADCRUMBS_ITEM;
|
|
2911
|
-
this.searcher = undefined;
|
|
2912
|
-
this.emptyResultMessage = undefined;
|
|
2913
|
-
this.loadingSubItems = undefined;
|
|
2914
|
-
this.searchValue = undefined;
|
|
2915
|
-
this.searchResults = undefined;
|
|
2916
|
-
this.portalId = createRandomString();
|
|
2917
|
-
}
|
|
2918
|
-
componentDidRender() {
|
|
2919
|
-
const slotElement = this.host.shadowRoot.querySelector('slot');
|
|
2920
|
-
slotElement.assignedElements().forEach(this.setTriggerAttributes);
|
|
2921
|
-
}
|
|
2922
|
-
render() {
|
|
2923
|
-
const cssProperties = this.getCssProperties();
|
|
2924
|
-
const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
|
|
2925
|
-
const menuSurfaceWidth = this.getMenuSurfaceWidth(cssProperties['--menu-surface-width']);
|
|
2926
|
-
return (h("div", { class: "mdc-menu-surface--anchor", onClick: this.onTriggerClick }, h("slot", { ref: this.setTriggerRef, name: "trigger" }), this.renderNotificationBadge(), h("limel-portal", { visible: this.open, containerId: this.portalId, openDirection: this.openDirection, position: "absolute", containerStyle: { 'z-index': dropdownZIndex } }, h("limel-menu-surface", { open: this.open, onDismiss: this.onClose, style: Object.assign(Object.assign({}, cssProperties), { '--mdc-menu-min-width': menuSurfaceWidth, '--limel-menu-surface-display': 'flex', '--limel-menu-surface-flex-direction': 'column' }), class: {
|
|
2927
|
-
'has-grid-layout': this.gridLayout,
|
|
2928
|
-
} }, this.renderSearchField(), this.renderBreadcrumb(), this.renderLoader(), this.renderEmptyMessage(), this.renderMenuList()))));
|
|
2929
|
-
}
|
|
2930
|
-
itemsWatcher() {
|
|
2931
|
-
this.clearSearch();
|
|
2932
|
-
this.setFocus();
|
|
2933
|
-
}
|
|
2934
|
-
openWatcher(newValue) {
|
|
2935
|
-
if (newValue) {
|
|
2936
|
-
this.setFocus();
|
|
2937
|
-
}
|
|
2938
|
-
else {
|
|
2939
|
-
this.clearSearch();
|
|
2940
|
-
}
|
|
2941
|
-
}
|
|
2942
|
-
getBreadcrumbsItems() {
|
|
2943
|
-
const breadCrumbItems = [];
|
|
2944
|
-
let currentItem = this.currentSubMenu;
|
|
2945
|
-
while (currentItem) {
|
|
2946
|
-
breadCrumbItems.push({
|
|
2947
|
-
text: currentItem.text,
|
|
2948
|
-
icon: currentItem.icon,
|
|
2949
|
-
menuItem: currentItem,
|
|
2950
|
-
});
|
|
2951
|
-
currentItem = currentItem.parentItem;
|
|
2952
|
-
}
|
|
2953
|
-
if (breadCrumbItems.length ||
|
|
2954
|
-
this.rootItem !== DEFAULT_ROOT_BREADCRUMBS_ITEM) {
|
|
2955
|
-
breadCrumbItems.push(this.rootItem);
|
|
2956
|
-
}
|
|
2957
|
-
return breadCrumbItems.reverse();
|
|
2958
|
-
}
|
|
2959
|
-
getCssProperties() {
|
|
2960
|
-
const propertyNames = [
|
|
2961
|
-
'--menu-surface-width',
|
|
2962
|
-
'--list-grid-item-max-width',
|
|
2963
|
-
'--list-grid-item-min-width',
|
|
2964
|
-
'--list-grid-gap',
|
|
2965
|
-
'--notification-badge-background-color',
|
|
2966
|
-
'--notification-badge-text-color',
|
|
2967
|
-
];
|
|
2968
|
-
const style = getComputedStyle(this.host);
|
|
2969
|
-
const values = propertyNames.map((property) => {
|
|
2970
|
-
return style.getPropertyValue(property);
|
|
2971
|
-
});
|
|
2972
|
-
return zipObject(propertyNames, values);
|
|
2973
|
-
}
|
|
2974
|
-
isMenuItem(item) {
|
|
2975
|
-
return !('separator' in item);
|
|
2976
|
-
}
|
|
2977
|
-
getMenuSurfaceWidth(customWidth) {
|
|
2978
|
-
var _a, _b, _c, _d;
|
|
2979
|
-
if (customWidth) {
|
|
2980
|
-
return customWidth;
|
|
2981
|
-
}
|
|
2982
|
-
if (this.surfaceWidth === 'inherit-from-trigger') {
|
|
2983
|
-
const assignedTriggers = (_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.assignedElements();
|
|
2984
|
-
if (!(assignedTriggers === null || assignedTriggers === void 0 ? void 0 : assignedTriggers.length) ||
|
|
2985
|
-
!((_b = assignedTriggers[0]) === null || _b === void 0 ? void 0 : _b.clientWidth)) {
|
|
2986
|
-
return '';
|
|
2987
|
-
}
|
|
2988
|
-
return `${assignedTriggers[0].clientWidth}px`;
|
|
2989
|
-
}
|
|
2990
|
-
else if (this.surfaceWidth === 'inherit-from-menu') {
|
|
2991
|
-
if (!((_c = this.host) === null || _c === void 0 ? void 0 : _c.clientWidth)) {
|
|
2992
|
-
return '';
|
|
2993
|
-
}
|
|
2994
|
-
return `${(_d = this.host) === null || _d === void 0 ? void 0 : _d.clientWidth}px`;
|
|
2995
|
-
}
|
|
2996
|
-
return '';
|
|
2997
|
-
}
|
|
2998
|
-
get visibleItems() {
|
|
2999
|
-
var _a;
|
|
3000
|
-
if (Array.isArray(this.searchResults) && this.searchValue) {
|
|
3001
|
-
return this.searchResults;
|
|
3002
|
-
}
|
|
3003
|
-
else if (Array.isArray((_a = this.currentSubMenu) === null || _a === void 0 ? void 0 : _a.items)) {
|
|
3004
|
-
return this.currentSubMenu.items.map((item) => (Object.assign(Object.assign({}, item), { parentItem: this.currentSubMenu })));
|
|
3005
|
-
}
|
|
3006
|
-
return this.items;
|
|
3007
|
-
}
|
|
3008
|
-
get host() { return getElement(this); }
|
|
3009
|
-
static get watchers() { return {
|
|
3010
|
-
"items": ["itemsWatcher"],
|
|
3011
|
-
"open": ["openWatcher"]
|
|
3012
|
-
}; }
|
|
3013
|
-
};
|
|
3014
|
-
Menu.style = menuCss;
|
|
629
|
+
const menuCss = ":host(limel-menu){isolation:isolate;position:relative;display:inline-block;--badge-background-color:var(\n --notification-badge-background-color,\n rgb(var(--color-red-default))\n );--badge-text-color:var(\n --notification-badge-text-color,\n rgb(var(--color-white))\n )}:host([hidden]){display:none}.menu__trigger{border-color:transparent;border-width:1px;border-style:solid;background:none;color:rgb(var(--contrast-800));height:2.25rem}.menu__trigger-enabled:hover{border-color:rgb(var(--contrast-800));color:rgb(var(--contrast-1100))}.mdc-menu-surface--anchor{position:relative}limel-badge{position:absolute;top:-0.25rem;right:-0.25rem}";
|
|
3015
630
|
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
* in the Software without restriction, including without limitation the rights
|
|
3023
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
3024
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
3025
|
-
* furnished to do so, subject to the following conditions:
|
|
3026
|
-
*
|
|
3027
|
-
* The above copyright notice and this permission notice shall be included in
|
|
3028
|
-
* all copies or substantial portions of the Software.
|
|
3029
|
-
*
|
|
3030
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
3031
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
3032
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
3033
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
3034
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
3035
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
3036
|
-
* THE SOFTWARE.
|
|
3037
|
-
*/
|
|
3038
|
-
var cssClasses$1 = {
|
|
3039
|
-
ANCHOR: 'mdc-menu-surface--anchor',
|
|
3040
|
-
ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',
|
|
3041
|
-
ANIMATING_OPEN: 'mdc-menu-surface--animating-open',
|
|
3042
|
-
FIXED: 'mdc-menu-surface--fixed',
|
|
3043
|
-
IS_OPEN_BELOW: 'mdc-menu-surface--is-open-below',
|
|
3044
|
-
OPEN: 'mdc-menu-surface--open',
|
|
3045
|
-
ROOT: 'mdc-menu-surface',
|
|
3046
|
-
};
|
|
3047
|
-
// tslint:disable:object-literal-sort-keys
|
|
3048
|
-
var strings$1 = {
|
|
3049
|
-
CLOSED_EVENT: 'MDCMenuSurface:closed',
|
|
3050
|
-
CLOSING_EVENT: 'MDCMenuSurface:closing',
|
|
3051
|
-
OPENED_EVENT: 'MDCMenuSurface:opened',
|
|
3052
|
-
FOCUSABLE_ELEMENTS: [
|
|
3053
|
-
'button:not(:disabled)',
|
|
3054
|
-
'[href]:not([aria-disabled="true"])',
|
|
3055
|
-
'input:not(:disabled)',
|
|
3056
|
-
'select:not(:disabled)',
|
|
3057
|
-
'textarea:not(:disabled)',
|
|
3058
|
-
'[tabindex]:not([tabindex="-1"]):not([aria-disabled="true"])',
|
|
3059
|
-
].join(', '),
|
|
3060
|
-
};
|
|
3061
|
-
// tslint:enable:object-literal-sort-keys
|
|
3062
|
-
var numbers$1 = {
|
|
3063
|
-
/** Total duration of menu-surface open animation. */
|
|
3064
|
-
TRANSITION_OPEN_DURATION: 120,
|
|
3065
|
-
/** Total duration of menu-surface close animation. */
|
|
3066
|
-
TRANSITION_CLOSE_DURATION: 75,
|
|
3067
|
-
/**
|
|
3068
|
-
* Margin left to the edge of the viewport when menu-surface is at maximum
|
|
3069
|
-
* possible height. Also used as a viewport margin.
|
|
3070
|
-
*/
|
|
3071
|
-
MARGIN_TO_EDGE: 32,
|
|
3072
|
-
/**
|
|
3073
|
-
* Ratio of anchor width to menu-surface width for switching from corner
|
|
3074
|
-
* positioning to center positioning.
|
|
3075
|
-
*/
|
|
3076
|
-
ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67,
|
|
3077
|
-
/**
|
|
3078
|
-
* Amount of time to wait before restoring focus when closing the menu
|
|
3079
|
-
* surface. This is important because if a touch event triggered the menu
|
|
3080
|
-
* close, and the subsequent mouse event occurs after focus is restored, then
|
|
3081
|
-
* the restored focus would be lost.
|
|
3082
|
-
*/
|
|
3083
|
-
TOUCH_EVENT_WAIT_MS: 30,
|
|
631
|
+
const DEFAULT_ROOT_BREADCRUMBS_ITEM = {
|
|
632
|
+
text: '',
|
|
633
|
+
icon: {
|
|
634
|
+
name: 'home',
|
|
635
|
+
},
|
|
636
|
+
type: 'icon-only',
|
|
3084
637
|
};
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
(
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
}
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
(function (Corner) {
|
|
3104
|
-
Corner[Corner["TOP_LEFT"] = 0] = "TOP_LEFT";
|
|
3105
|
-
Corner[Corner["TOP_RIGHT"] = 4] = "TOP_RIGHT";
|
|
3106
|
-
Corner[Corner["BOTTOM_LEFT"] = 1] = "BOTTOM_LEFT";
|
|
3107
|
-
Corner[Corner["BOTTOM_RIGHT"] = 5] = "BOTTOM_RIGHT";
|
|
3108
|
-
Corner[Corner["TOP_START"] = 8] = "TOP_START";
|
|
3109
|
-
Corner[Corner["TOP_END"] = 12] = "TOP_END";
|
|
3110
|
-
Corner[Corner["BOTTOM_START"] = 9] = "BOTTOM_START";
|
|
3111
|
-
Corner[Corner["BOTTOM_END"] = 13] = "BOTTOM_END";
|
|
3112
|
-
})(Corner || (Corner = {}));
|
|
3113
|
-
|
|
3114
|
-
/**
|
|
3115
|
-
* @license
|
|
3116
|
-
* Copyright 2018 Google Inc.
|
|
3117
|
-
*
|
|
3118
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
3119
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
3120
|
-
* in the Software without restriction, including without limitation the rights
|
|
3121
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
3122
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
3123
|
-
* furnished to do so, subject to the following conditions:
|
|
3124
|
-
*
|
|
3125
|
-
* The above copyright notice and this permission notice shall be included in
|
|
3126
|
-
* all copies or substantial portions of the Software.
|
|
3127
|
-
*
|
|
3128
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
3129
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
3130
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
3131
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
3132
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
3133
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
3134
|
-
* THE SOFTWARE.
|
|
3135
|
-
*/
|
|
3136
|
-
var MDCMenuSurfaceFoundation = /** @class */ (function (_super) {
|
|
3137
|
-
__extends(MDCMenuSurfaceFoundation, _super);
|
|
3138
|
-
function MDCMenuSurfaceFoundation(adapter) {
|
|
3139
|
-
var _this = _super.call(this, __assign(__assign({}, MDCMenuSurfaceFoundation.defaultAdapter), adapter)) || this;
|
|
3140
|
-
_this.isSurfaceOpen = false;
|
|
3141
|
-
_this.isQuickOpen = false;
|
|
3142
|
-
_this.isHoistedElement = false;
|
|
3143
|
-
_this.isFixedPosition = false;
|
|
3144
|
-
_this.isHorizontallyCenteredOnViewport = false;
|
|
3145
|
-
_this.maxHeight = 0;
|
|
3146
|
-
_this.openAnimationEndTimerId = 0;
|
|
3147
|
-
_this.closeAnimationEndTimerId = 0;
|
|
3148
|
-
_this.animationRequestId = 0;
|
|
3149
|
-
_this.anchorCorner = Corner.TOP_START;
|
|
3150
|
-
/**
|
|
3151
|
-
* Corner of the menu surface to which menu surface is attached to anchor.
|
|
3152
|
-
*
|
|
3153
|
-
* Anchor corner --->+----------+
|
|
3154
|
-
* | ANCHOR |
|
|
3155
|
-
* +----------+
|
|
3156
|
-
* Origin corner --->+--------------+
|
|
3157
|
-
* | |
|
|
3158
|
-
* | |
|
|
3159
|
-
* | MENU SURFACE |
|
|
3160
|
-
* | |
|
|
3161
|
-
* | |
|
|
3162
|
-
* +--------------+
|
|
3163
|
-
*/
|
|
3164
|
-
_this.originCorner = Corner.TOP_START;
|
|
3165
|
-
_this.anchorMargin = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
3166
|
-
_this.position = { x: 0, y: 0 };
|
|
3167
|
-
return _this;
|
|
3168
|
-
}
|
|
3169
|
-
Object.defineProperty(MDCMenuSurfaceFoundation, "cssClasses", {
|
|
3170
|
-
get: function () {
|
|
3171
|
-
return cssClasses$1;
|
|
3172
|
-
},
|
|
3173
|
-
enumerable: false,
|
|
3174
|
-
configurable: true
|
|
3175
|
-
});
|
|
3176
|
-
Object.defineProperty(MDCMenuSurfaceFoundation, "strings", {
|
|
3177
|
-
get: function () {
|
|
3178
|
-
return strings$1;
|
|
3179
|
-
},
|
|
3180
|
-
enumerable: false,
|
|
3181
|
-
configurable: true
|
|
3182
|
-
});
|
|
3183
|
-
Object.defineProperty(MDCMenuSurfaceFoundation, "numbers", {
|
|
3184
|
-
get: function () {
|
|
3185
|
-
return numbers$1;
|
|
3186
|
-
},
|
|
3187
|
-
enumerable: false,
|
|
3188
|
-
configurable: true
|
|
3189
|
-
});
|
|
3190
|
-
Object.defineProperty(MDCMenuSurfaceFoundation, "Corner", {
|
|
3191
|
-
get: function () {
|
|
3192
|
-
return Corner;
|
|
3193
|
-
},
|
|
3194
|
-
enumerable: false,
|
|
3195
|
-
configurable: true
|
|
3196
|
-
});
|
|
3197
|
-
Object.defineProperty(MDCMenuSurfaceFoundation, "defaultAdapter", {
|
|
3198
|
-
/**
|
|
3199
|
-
* @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.
|
|
3200
|
-
*/
|
|
3201
|
-
get: function () {
|
|
3202
|
-
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
|
|
3203
|
-
return {
|
|
3204
|
-
addClass: function () { return undefined; },
|
|
3205
|
-
removeClass: function () { return undefined; },
|
|
3206
|
-
hasClass: function () { return false; },
|
|
3207
|
-
hasAnchor: function () { return false; },
|
|
3208
|
-
isElementInContainer: function () { return false; },
|
|
3209
|
-
isFocused: function () { return false; },
|
|
3210
|
-
isRtl: function () { return false; },
|
|
3211
|
-
getInnerDimensions: function () { return ({ height: 0, width: 0 }); },
|
|
3212
|
-
getAnchorDimensions: function () { return null; },
|
|
3213
|
-
getWindowDimensions: function () { return ({ height: 0, width: 0 }); },
|
|
3214
|
-
getBodyDimensions: function () { return ({ height: 0, width: 0 }); },
|
|
3215
|
-
getWindowScroll: function () { return ({ x: 0, y: 0 }); },
|
|
3216
|
-
setPosition: function () { return undefined; },
|
|
3217
|
-
setMaxHeight: function () { return undefined; },
|
|
3218
|
-
setTransformOrigin: function () { return undefined; },
|
|
3219
|
-
saveFocus: function () { return undefined; },
|
|
3220
|
-
restoreFocus: function () { return undefined; },
|
|
3221
|
-
notifyClose: function () { return undefined; },
|
|
3222
|
-
notifyOpen: function () { return undefined; },
|
|
3223
|
-
notifyClosing: function () { return undefined; },
|
|
3224
|
-
};
|
|
3225
|
-
// tslint:enable:object-literal-sort-keys
|
|
3226
|
-
},
|
|
3227
|
-
enumerable: false,
|
|
3228
|
-
configurable: true
|
|
3229
|
-
});
|
|
3230
|
-
MDCMenuSurfaceFoundation.prototype.init = function () {
|
|
3231
|
-
var _a = MDCMenuSurfaceFoundation.cssClasses, ROOT = _a.ROOT, OPEN = _a.OPEN;
|
|
3232
|
-
if (!this.adapter.hasClass(ROOT)) {
|
|
3233
|
-
throw new Error(ROOT + " class required in root element.");
|
|
3234
|
-
}
|
|
3235
|
-
if (this.adapter.hasClass(OPEN)) {
|
|
3236
|
-
this.isSurfaceOpen = true;
|
|
3237
|
-
}
|
|
3238
|
-
};
|
|
3239
|
-
MDCMenuSurfaceFoundation.prototype.destroy = function () {
|
|
3240
|
-
clearTimeout(this.openAnimationEndTimerId);
|
|
3241
|
-
clearTimeout(this.closeAnimationEndTimerId);
|
|
3242
|
-
// Cancel any currently running animations.
|
|
3243
|
-
cancelAnimationFrame(this.animationRequestId);
|
|
3244
|
-
};
|
|
3245
|
-
/**
|
|
3246
|
-
* @param corner Default anchor corner alignment of top-left menu surface
|
|
3247
|
-
* corner.
|
|
3248
|
-
*/
|
|
3249
|
-
MDCMenuSurfaceFoundation.prototype.setAnchorCorner = function (corner) {
|
|
3250
|
-
this.anchorCorner = corner;
|
|
3251
|
-
};
|
|
3252
|
-
/**
|
|
3253
|
-
* Flip menu corner horizontally.
|
|
3254
|
-
*/
|
|
3255
|
-
MDCMenuSurfaceFoundation.prototype.flipCornerHorizontally = function () {
|
|
3256
|
-
this.originCorner = this.originCorner ^ CornerBit.RIGHT;
|
|
3257
|
-
};
|
|
3258
|
-
/**
|
|
3259
|
-
* @param margin Set of margin values from anchor.
|
|
3260
|
-
*/
|
|
3261
|
-
MDCMenuSurfaceFoundation.prototype.setAnchorMargin = function (margin) {
|
|
3262
|
-
this.anchorMargin.top = margin.top || 0;
|
|
3263
|
-
this.anchorMargin.right = margin.right || 0;
|
|
3264
|
-
this.anchorMargin.bottom = margin.bottom || 0;
|
|
3265
|
-
this.anchorMargin.left = margin.left || 0;
|
|
3266
|
-
};
|
|
3267
|
-
/** Used to indicate if the menu-surface is hoisted to the body. */
|
|
3268
|
-
MDCMenuSurfaceFoundation.prototype.setIsHoisted = function (isHoisted) {
|
|
3269
|
-
this.isHoistedElement = isHoisted;
|
|
3270
|
-
};
|
|
3271
|
-
/**
|
|
3272
|
-
* Used to set the menu-surface calculations based on a fixed position menu.
|
|
3273
|
-
*/
|
|
3274
|
-
MDCMenuSurfaceFoundation.prototype.setFixedPosition = function (isFixedPosition) {
|
|
3275
|
-
this.isFixedPosition = isFixedPosition;
|
|
3276
|
-
};
|
|
3277
|
-
/**
|
|
3278
|
-
* @return Returns true if menu is in fixed (`position: fixed`) position.
|
|
3279
|
-
*/
|
|
3280
|
-
MDCMenuSurfaceFoundation.prototype.isFixed = function () {
|
|
3281
|
-
return this.isFixedPosition;
|
|
3282
|
-
};
|
|
3283
|
-
/** Sets the menu-surface position on the page. */
|
|
3284
|
-
MDCMenuSurfaceFoundation.prototype.setAbsolutePosition = function (x, y) {
|
|
3285
|
-
this.position.x = this.isFinite(x) ? x : 0;
|
|
3286
|
-
this.position.y = this.isFinite(y) ? y : 0;
|
|
3287
|
-
};
|
|
3288
|
-
/** Sets whether menu-surface should be horizontally centered to viewport. */
|
|
3289
|
-
MDCMenuSurfaceFoundation.prototype.setIsHorizontallyCenteredOnViewport = function (isCentered) {
|
|
3290
|
-
this.isHorizontallyCenteredOnViewport = isCentered;
|
|
638
|
+
const Menu = class {
|
|
639
|
+
constructor(hostRef) {
|
|
640
|
+
registerInstance(this, hostRef);
|
|
641
|
+
this.cancel = createEvent(this, "cancel", 7);
|
|
642
|
+
this.select = createEvent(this, "select", 7);
|
|
643
|
+
this.navigateMenu = createEvent(this, "navigateMenu", 7);
|
|
644
|
+
this.renderLoader = () => {
|
|
645
|
+
if (!this.loadingSubItems && !this.loading) {
|
|
646
|
+
return;
|
|
647
|
+
}
|
|
648
|
+
const cssProperties = this.getCssProperties();
|
|
649
|
+
return (h("div", { style: {
|
|
650
|
+
width: cssProperties['--menu-surface-width'],
|
|
651
|
+
display: 'flex',
|
|
652
|
+
'align-items': 'center',
|
|
653
|
+
'justify-content': 'center',
|
|
654
|
+
padding: '0.5rem 0',
|
|
655
|
+
} }, h("limel-spinner", { size: "mini", limeBranded: false })));
|
|
3291
656
|
};
|
|
3292
|
-
|
|
3293
|
-
|
|
657
|
+
this.renderBreadcrumb = () => {
|
|
658
|
+
const breadcrumbsItems = this.getBreadcrumbsItems();
|
|
659
|
+
if (!breadcrumbsItems.length) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
return (h("limel-breadcrumbs", { style: {
|
|
663
|
+
'border-bottom': 'solid 1px rgb(var(--contrast-500))',
|
|
664
|
+
'flex-shrink': '0',
|
|
665
|
+
}, onSelect: this.handleBreadcrumbsSelect, items: breadcrumbsItems }));
|
|
3294
666
|
};
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
667
|
+
this.handleBreadcrumbsSelect = (event) => {
|
|
668
|
+
if (!event.detail.menuItem) {
|
|
669
|
+
this.currentSubMenu = null;
|
|
670
|
+
this.clearSearch();
|
|
671
|
+
this.navigateMenu.emit(null);
|
|
672
|
+
this.setFocus();
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
this.handleSelect(event.detail.menuItem);
|
|
3302
676
|
};
|
|
3303
|
-
|
|
3304
|
-
|
|
677
|
+
this.renderSearchField = () => {
|
|
678
|
+
if (!this.searcher) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
return (h("limel-input-field", { tabindex: "0", ref: this.setSearchElement, type: "search", leadingIcon: "search", style: {
|
|
682
|
+
padding: '0.25rem',
|
|
683
|
+
'box-sizing': 'border-box',
|
|
684
|
+
}, value: this.searchValue, onChange: this.handleTextInput, onKeyDown: this.handleInputKeyDown }));
|
|
3305
685
|
};
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
this.autoposition();
|
|
3320
|
-
this.adapter.notifyOpen();
|
|
3321
|
-
}
|
|
3322
|
-
else {
|
|
3323
|
-
this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
|
|
3324
|
-
this.animationRequestId = requestAnimationFrame(function () {
|
|
3325
|
-
_this.dimensions = _this.adapter.getInnerDimensions();
|
|
3326
|
-
_this.autoposition();
|
|
3327
|
-
_this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
|
|
3328
|
-
_this.openAnimationEndTimerId = setTimeout(function () {
|
|
3329
|
-
_this.openAnimationEndTimerId = 0;
|
|
3330
|
-
_this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
|
|
3331
|
-
_this.adapter.notifyOpen();
|
|
3332
|
-
}, numbers$1.TRANSITION_OPEN_DURATION);
|
|
3333
|
-
});
|
|
3334
|
-
this.isSurfaceOpen = true;
|
|
3335
|
-
}
|
|
686
|
+
this.renderEmptyMessage = () => {
|
|
687
|
+
var _a;
|
|
688
|
+
if (this.loading ||
|
|
689
|
+
this.loadingSubItems ||
|
|
690
|
+
!this.emptyResultMessage ||
|
|
691
|
+
!Array.isArray(this.searchResults) ||
|
|
692
|
+
((_a = this.searchResults) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
693
|
+
return null;
|
|
694
|
+
}
|
|
695
|
+
return (h("p", { style: {
|
|
696
|
+
padding: '0 1rem',
|
|
697
|
+
'text-align': 'center',
|
|
698
|
+
} }, this.emptyResultMessage));
|
|
3336
699
|
};
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
}
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
this.isSurfaceOpen = false;
|
|
3349
|
-
if (!skipRestoreFocus) {
|
|
3350
|
-
this.maybeRestoreFocus();
|
|
3351
|
-
}
|
|
3352
|
-
this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
|
|
3353
|
-
this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);
|
|
3354
|
-
this.adapter.notifyClose();
|
|
3355
|
-
return;
|
|
3356
|
-
}
|
|
3357
|
-
this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
|
|
3358
|
-
requestAnimationFrame(function () {
|
|
3359
|
-
_this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
|
|
3360
|
-
_this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);
|
|
3361
|
-
_this.closeAnimationEndTimerId = setTimeout(function () {
|
|
3362
|
-
_this.closeAnimationEndTimerId = 0;
|
|
3363
|
-
_this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
|
|
3364
|
-
_this.adapter.notifyClose();
|
|
3365
|
-
}, numbers$1.TRANSITION_CLOSE_DURATION);
|
|
3366
|
-
});
|
|
3367
|
-
this.isSurfaceOpen = false;
|
|
3368
|
-
if (!skipRestoreFocus) {
|
|
3369
|
-
this.maybeRestoreFocus();
|
|
3370
|
-
}
|
|
700
|
+
this.renderMenuList = () => {
|
|
701
|
+
let items = this.visibleItems;
|
|
702
|
+
if (this.loadingSubItems || this.loading) {
|
|
703
|
+
items = [];
|
|
704
|
+
}
|
|
705
|
+
return (h("limel-menu-list", { style: {
|
|
706
|
+
'overflow-y': 'auto',
|
|
707
|
+
'flex-grow': '1',
|
|
708
|
+
}, class: {
|
|
709
|
+
'has-grid-layout has-interactive-items': this.gridLayout,
|
|
710
|
+
}, items: items, type: "menu", badgeIcons: this.badgeIcons, onSelect: this.onSelect, ref: this.setListElement, onKeyDown: this.handleMenuKeyDown }));
|
|
3371
711
|
};
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
this.
|
|
712
|
+
this.handleTextInput = async (event) => {
|
|
713
|
+
event.stopPropagation();
|
|
714
|
+
const query = event.detail;
|
|
715
|
+
this.searchValue = query;
|
|
716
|
+
if (query === '') {
|
|
717
|
+
this.searchResults = null;
|
|
718
|
+
this.loadingSubItems = false;
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
this.loadingSubItems = true;
|
|
722
|
+
const result = await this.searcher(query);
|
|
723
|
+
if (this.searchValue !== query) {
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
this.searchResults = result;
|
|
727
|
+
this.loadingSubItems = false;
|
|
3379
728
|
};
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
729
|
+
// Key handler for the input search field
|
|
730
|
+
// Will change focus to the first/last item in the dropdown
|
|
731
|
+
// list to enable selection with the keyboard
|
|
732
|
+
this.handleInputKeyDown = (event) => {
|
|
733
|
+
const isForwardTab = (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&
|
|
734
|
+
!event.altKey &&
|
|
735
|
+
!event.metaKey &&
|
|
736
|
+
!event.shiftKey;
|
|
737
|
+
const isUp = event.key === ARROW_UP || event.keyCode === ARROW_UP_KEY_CODE;
|
|
738
|
+
const isDown = event.key === ARROW_DOWN || event.keyCode === ARROW_DOWN_KEY_CODE;
|
|
739
|
+
if (!isForwardTab && !isUp && !isDown) {
|
|
740
|
+
return;
|
|
741
|
+
}
|
|
742
|
+
if (!this.list) {
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
event.stopPropagation();
|
|
746
|
+
event.preventDefault();
|
|
747
|
+
if (isForwardTab || isDown) {
|
|
748
|
+
const listItems = this.list.shadowRoot.querySelectorAll('.mdc-deprecated-list-item');
|
|
749
|
+
const listElement = listItems[0];
|
|
750
|
+
listElement === null || listElement === void 0 ? void 0 : listElement.focus();
|
|
751
|
+
return;
|
|
752
|
+
}
|
|
753
|
+
if (isUp) {
|
|
754
|
+
const listItems = this.list.shadowRoot.querySelectorAll('.mdc-deprecated-list-item');
|
|
755
|
+
const listElement = listItems[listItems.length - 1];
|
|
756
|
+
listElement === null || listElement === void 0 ? void 0 : listElement.focus();
|
|
757
|
+
}
|
|
3387
758
|
};
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
if (
|
|
3412
|
-
|
|
759
|
+
// Key handler for the menu list
|
|
760
|
+
// Will change focus to the search field if using shift+tab
|
|
761
|
+
// And can go forward/back with righ/left arrow keys
|
|
762
|
+
this.handleMenuKeyDown = (event) => {
|
|
763
|
+
var _a;
|
|
764
|
+
const isBackwardTab = (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&
|
|
765
|
+
!event.altKey &&
|
|
766
|
+
!event.metaKey &&
|
|
767
|
+
event.shiftKey;
|
|
768
|
+
const isLeft = event.key === ARROW_LEFT || event.keyCode === ARROW_LEFT_KEY_CODE;
|
|
769
|
+
const isRight = event.key === ARROW_RIGHT || event.keyCode === ARROW_RIGHT_KEY_CODE;
|
|
770
|
+
if (!isBackwardTab && !isLeft && !isRight) {
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
if (isBackwardTab) {
|
|
774
|
+
event.stopPropagation();
|
|
775
|
+
event.preventDefault();
|
|
776
|
+
(_a = this.searchInput) === null || _a === void 0 ? void 0 : _a.focus();
|
|
777
|
+
}
|
|
778
|
+
else if (!this.gridLayout) {
|
|
779
|
+
const currentItem = this.getCurrentItem();
|
|
780
|
+
event.stopPropagation();
|
|
781
|
+
event.preventDefault();
|
|
782
|
+
if (isRight) {
|
|
783
|
+
this.goForward(currentItem);
|
|
3413
784
|
}
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
this.adapter.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');
|
|
3417
|
-
// If it is opened from the top then add is-open-below class
|
|
3418
|
-
if (!this.hasBit(corner, CornerBit.BOTTOM)) {
|
|
3419
|
-
this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);
|
|
785
|
+
else if (isLeft) {
|
|
786
|
+
this.goBack();
|
|
3420
787
|
}
|
|
788
|
+
}
|
|
3421
789
|
};
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
var anchorRect = this.adapter.getAnchorDimensions();
|
|
3427
|
-
var bodySize = this.adapter.getBodyDimensions();
|
|
3428
|
-
var viewportSize = this.adapter.getWindowDimensions();
|
|
3429
|
-
var windowScroll = this.adapter.getWindowScroll();
|
|
3430
|
-
if (!anchorRect) {
|
|
3431
|
-
// tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together
|
|
3432
|
-
anchorRect = {
|
|
3433
|
-
top: this.position.y,
|
|
3434
|
-
right: this.position.x,
|
|
3435
|
-
bottom: this.position.y,
|
|
3436
|
-
left: this.position.x,
|
|
3437
|
-
width: 0,
|
|
3438
|
-
height: 0,
|
|
3439
|
-
};
|
|
3440
|
-
// tslint:enable:object-literal-sort-keys
|
|
3441
|
-
}
|
|
3442
|
-
return {
|
|
3443
|
-
anchorSize: anchorRect,
|
|
3444
|
-
bodySize: bodySize,
|
|
3445
|
-
surfaceSize: this.dimensions,
|
|
3446
|
-
viewportDistance: {
|
|
3447
|
-
// tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together
|
|
3448
|
-
top: anchorRect.top,
|
|
3449
|
-
right: viewportSize.width - anchorRect.right,
|
|
3450
|
-
bottom: viewportSize.height - anchorRect.bottom,
|
|
3451
|
-
left: anchorRect.left,
|
|
3452
|
-
// tslint:enable:object-literal-sort-keys
|
|
3453
|
-
},
|
|
3454
|
-
viewportSize: viewportSize,
|
|
3455
|
-
windowScroll: windowScroll,
|
|
3456
|
-
};
|
|
790
|
+
this.clearSearch = () => {
|
|
791
|
+
this.searchValue = '';
|
|
792
|
+
this.searchResults = null;
|
|
793
|
+
this.loadingSubItems = false;
|
|
3457
794
|
};
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
*/
|
|
3465
|
-
MDCMenuSurfaceFoundation.prototype.getoriginCorner = function () {
|
|
3466
|
-
var corner = this.originCorner;
|
|
3467
|
-
var _a = this.measurements, viewportDistance = _a.viewportDistance, anchorSize = _a.anchorSize, surfaceSize = _a.surfaceSize;
|
|
3468
|
-
var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;
|
|
3469
|
-
var isAnchoredToBottom = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);
|
|
3470
|
-
var availableTop;
|
|
3471
|
-
var availableBottom;
|
|
3472
|
-
if (isAnchoredToBottom) {
|
|
3473
|
-
availableTop =
|
|
3474
|
-
viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.bottom;
|
|
3475
|
-
availableBottom =
|
|
3476
|
-
viewportDistance.bottom - MARGIN_TO_EDGE - this.anchorMargin.bottom;
|
|
3477
|
-
}
|
|
3478
|
-
else {
|
|
3479
|
-
availableTop =
|
|
3480
|
-
viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.top;
|
|
3481
|
-
availableBottom = viewportDistance.bottom - MARGIN_TO_EDGE +
|
|
3482
|
-
anchorSize.height - this.anchorMargin.top;
|
|
3483
|
-
}
|
|
3484
|
-
var isAvailableBottom = availableBottom - surfaceSize.height > 0;
|
|
3485
|
-
if (!isAvailableBottom && availableTop > availableBottom) {
|
|
3486
|
-
// Attach bottom side of surface to the anchor.
|
|
3487
|
-
corner = this.setBit(corner, CornerBit.BOTTOM);
|
|
3488
|
-
}
|
|
3489
|
-
var isRtl = this.adapter.isRtl();
|
|
3490
|
-
var isFlipRtl = this.hasBit(this.anchorCorner, CornerBit.FLIP_RTL);
|
|
3491
|
-
var hasRightBit = this.hasBit(this.anchorCorner, CornerBit.RIGHT) ||
|
|
3492
|
-
this.hasBit(corner, CornerBit.RIGHT);
|
|
3493
|
-
// Whether surface attached to right side of anchor element.
|
|
3494
|
-
var isAnchoredToRight = false;
|
|
3495
|
-
// Anchored to start
|
|
3496
|
-
if (isRtl && isFlipRtl) {
|
|
3497
|
-
isAnchoredToRight = !hasRightBit;
|
|
3498
|
-
}
|
|
3499
|
-
else {
|
|
3500
|
-
// Anchored to right
|
|
3501
|
-
isAnchoredToRight = hasRightBit;
|
|
3502
|
-
}
|
|
3503
|
-
var availableLeft;
|
|
3504
|
-
var availableRight;
|
|
3505
|
-
if (isAnchoredToRight) {
|
|
3506
|
-
availableLeft =
|
|
3507
|
-
viewportDistance.left + anchorSize.width + this.anchorMargin.right;
|
|
3508
|
-
availableRight = viewportDistance.right - this.anchorMargin.right;
|
|
3509
|
-
}
|
|
3510
|
-
else {
|
|
3511
|
-
availableLeft = viewportDistance.left + this.anchorMargin.left;
|
|
3512
|
-
availableRight =
|
|
3513
|
-
viewportDistance.right + anchorSize.width - this.anchorMargin.left;
|
|
3514
|
-
}
|
|
3515
|
-
var isAvailableLeft = availableLeft - surfaceSize.width > 0;
|
|
3516
|
-
var isAvailableRight = availableRight - surfaceSize.width > 0;
|
|
3517
|
-
var isOriginCornerAlignedToEnd = this.hasBit(corner, CornerBit.FLIP_RTL) &&
|
|
3518
|
-
this.hasBit(corner, CornerBit.RIGHT);
|
|
3519
|
-
if (isAvailableRight && isOriginCornerAlignedToEnd && isRtl ||
|
|
3520
|
-
!isAvailableLeft && isOriginCornerAlignedToEnd) {
|
|
3521
|
-
// Attach left side of surface to the anchor.
|
|
3522
|
-
corner = this.unsetBit(corner, CornerBit.RIGHT);
|
|
3523
|
-
}
|
|
3524
|
-
else if (isAvailableLeft && isAnchoredToRight && isRtl ||
|
|
3525
|
-
(isAvailableLeft && !isAnchoredToRight && hasRightBit) ||
|
|
3526
|
-
(!isAvailableRight && availableLeft >= availableRight)) {
|
|
3527
|
-
// Attach right side of surface to the anchor.
|
|
3528
|
-
corner = this.setBit(corner, CornerBit.RIGHT);
|
|
3529
|
-
}
|
|
3530
|
-
return corner;
|
|
795
|
+
this.getCurrentItem = () => {
|
|
796
|
+
var _a, _b, _c;
|
|
797
|
+
const activeItem = (_b = (_a = this.list) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[role="menuitem"][tabindex="0"]');
|
|
798
|
+
const attrIndex = (_c = activeItem === null || activeItem === void 0 ? void 0 : activeItem.attributes) === null || _c === void 0 ? void 0 : _c.getNamedItem('data-index');
|
|
799
|
+
const dataIndex = parseInt((attrIndex === null || attrIndex === void 0 ? void 0 : attrIndex.value) || '0', 10);
|
|
800
|
+
return this.visibleItems[dataIndex];
|
|
3531
801
|
};
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
* @return Maximum height of the menu surface, based on available space. 0
|
|
3535
|
-
* indicates should not be set.
|
|
3536
|
-
*/
|
|
3537
|
-
MDCMenuSurfaceFoundation.prototype.getMenuSurfaceMaxHeight = function (corner) {
|
|
3538
|
-
if (this.maxHeight > 0) {
|
|
3539
|
-
return this.maxHeight;
|
|
3540
|
-
}
|
|
3541
|
-
var viewportDistance = this.measurements.viewportDistance;
|
|
3542
|
-
var maxHeight = 0;
|
|
3543
|
-
var isBottomAligned = this.hasBit(corner, CornerBit.BOTTOM);
|
|
3544
|
-
var isBottomAnchored = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);
|
|
3545
|
-
var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;
|
|
3546
|
-
// When maximum height is not specified, it is handled from CSS.
|
|
3547
|
-
if (isBottomAligned) {
|
|
3548
|
-
maxHeight = viewportDistance.top + this.anchorMargin.top - MARGIN_TO_EDGE;
|
|
3549
|
-
if (!isBottomAnchored) {
|
|
3550
|
-
maxHeight += this.measurements.anchorSize.height;
|
|
3551
|
-
}
|
|
3552
|
-
}
|
|
3553
|
-
else {
|
|
3554
|
-
maxHeight = viewportDistance.bottom - this.anchorMargin.bottom +
|
|
3555
|
-
this.measurements.anchorSize.height - MARGIN_TO_EDGE;
|
|
3556
|
-
if (isBottomAnchored) {
|
|
3557
|
-
maxHeight -= this.measurements.anchorSize.height;
|
|
3558
|
-
}
|
|
3559
|
-
}
|
|
3560
|
-
return maxHeight;
|
|
802
|
+
this.goForward = (currentItem) => {
|
|
803
|
+
this.handleSelect(currentItem, false);
|
|
3561
804
|
};
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
//
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
// value (`adjustPositionForHoistedElement`) based on the element
|
|
3579
|
-
// position, the right property is correct.
|
|
3580
|
-
if (this.isHoistedElement || this.isFixedPosition) {
|
|
3581
|
-
return rightOffset -
|
|
3582
|
-
(this.measurements.viewportSize.width -
|
|
3583
|
-
this.measurements.bodySize.width);
|
|
3584
|
-
}
|
|
3585
|
-
return rightOffset;
|
|
3586
|
-
}
|
|
3587
|
-
return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin.right :
|
|
3588
|
-
this.anchorMargin.left;
|
|
805
|
+
this.goBack = () => {
|
|
806
|
+
if (!this.currentSubMenu) {
|
|
807
|
+
// Already in the root of the menu
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
810
|
+
const parent = this.currentSubMenu.parentItem;
|
|
811
|
+
if (!parent) {
|
|
812
|
+
// If only one step down, go to the root of the menu.
|
|
813
|
+
// No need to load a sub-menu.
|
|
814
|
+
this.currentSubMenu = null;
|
|
815
|
+
this.clearSearch();
|
|
816
|
+
this.navigateMenu.emit(null);
|
|
817
|
+
this.setFocus();
|
|
818
|
+
return;
|
|
819
|
+
}
|
|
820
|
+
this.handleSelect(parent);
|
|
3589
821
|
};
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin.top :
|
|
3602
|
-
-this.anchorMargin.bottom;
|
|
822
|
+
this.setTriggerAttributes = (element) => {
|
|
823
|
+
const attributes = {
|
|
824
|
+
'aria-haspopup': true,
|
|
825
|
+
'aria-expanded': this.open,
|
|
826
|
+
'aria-controls': this.portalId,
|
|
827
|
+
disabled: this.disabled,
|
|
828
|
+
role: 'button',
|
|
829
|
+
};
|
|
830
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
831
|
+
if (!value) {
|
|
832
|
+
element.removeAttribute(key);
|
|
3603
833
|
}
|
|
3604
834
|
else {
|
|
3605
|
-
|
|
3606
|
-
(anchorSize.height + this.anchorMargin.bottom) :
|
|
3607
|
-
this.anchorMargin.top;
|
|
3608
|
-
}
|
|
3609
|
-
return y;
|
|
3610
|
-
};
|
|
3611
|
-
/**
|
|
3612
|
-
* Calculates the offsets for positioning the menu-surface when the
|
|
3613
|
-
* menu-surface has been hoisted to the body.
|
|
3614
|
-
*/
|
|
3615
|
-
MDCMenuSurfaceFoundation.prototype.adjustPositionForHoistedElement = function (position) {
|
|
3616
|
-
var e_1, _a;
|
|
3617
|
-
var _b = this.measurements, windowScroll = _b.windowScroll, viewportDistance = _b.viewportDistance, surfaceSize = _b.surfaceSize, viewportSize = _b.viewportSize;
|
|
3618
|
-
var props = Object.keys(position);
|
|
3619
|
-
try {
|
|
3620
|
-
for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {
|
|
3621
|
-
var prop = props_1_1.value;
|
|
3622
|
-
var value = position[prop] || 0;
|
|
3623
|
-
if (this.isHorizontallyCenteredOnViewport &&
|
|
3624
|
-
(prop === 'left' || prop === 'right')) {
|
|
3625
|
-
position[prop] = (viewportSize.width - surfaceSize.width) / 2;
|
|
3626
|
-
continue;
|
|
3627
|
-
}
|
|
3628
|
-
// Hoisted surfaces need to have the anchor elements location on the page
|
|
3629
|
-
// added to the position properties for proper alignment on the body.
|
|
3630
|
-
value += viewportDistance[prop];
|
|
3631
|
-
// Surfaces that are absolutely positioned need to have additional
|
|
3632
|
-
// calculations for scroll and bottom positioning.
|
|
3633
|
-
if (!this.isFixedPosition) {
|
|
3634
|
-
if (prop === 'top') {
|
|
3635
|
-
value += windowScroll.y;
|
|
3636
|
-
}
|
|
3637
|
-
else if (prop === 'bottom') {
|
|
3638
|
-
value -= windowScroll.y;
|
|
3639
|
-
}
|
|
3640
|
-
else if (prop === 'left') {
|
|
3641
|
-
value += windowScroll.x;
|
|
3642
|
-
}
|
|
3643
|
-
else { // prop === 'right'
|
|
3644
|
-
value -= windowScroll.x;
|
|
3645
|
-
}
|
|
3646
|
-
}
|
|
3647
|
-
position[prop] = value;
|
|
3648
|
-
}
|
|
3649
|
-
}
|
|
3650
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
3651
|
-
finally {
|
|
3652
|
-
try {
|
|
3653
|
-
if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);
|
|
3654
|
-
}
|
|
3655
|
-
finally { if (e_1) throw e_1.error; }
|
|
3656
|
-
}
|
|
3657
|
-
};
|
|
3658
|
-
/**
|
|
3659
|
-
* The last focused element when the menu surface was opened should regain
|
|
3660
|
-
* focus, if the user is focused on or within the menu surface when it is
|
|
3661
|
-
* closed.
|
|
3662
|
-
*/
|
|
3663
|
-
MDCMenuSurfaceFoundation.prototype.maybeRestoreFocus = function () {
|
|
3664
|
-
var _this = this;
|
|
3665
|
-
var isRootFocused = this.adapter.isFocused();
|
|
3666
|
-
var childHasFocus = document.activeElement &&
|
|
3667
|
-
this.adapter.isElementInContainer(document.activeElement);
|
|
3668
|
-
if (isRootFocused || childHasFocus) {
|
|
3669
|
-
// Wait before restoring focus when closing the menu surface. This is
|
|
3670
|
-
// important because if a touch event triggered the menu close, and the
|
|
3671
|
-
// subsequent mouse event occurs after focus is restored, then the
|
|
3672
|
-
// restored focus would be lost.
|
|
3673
|
-
setTimeout(function () {
|
|
3674
|
-
_this.adapter.restoreFocus();
|
|
3675
|
-
}, numbers$1.TOUCH_EVENT_WAIT_MS);
|
|
3676
|
-
}
|
|
3677
|
-
};
|
|
3678
|
-
MDCMenuSurfaceFoundation.prototype.hasBit = function (corner, bit) {
|
|
3679
|
-
return Boolean(corner & bit); // tslint:disable-line:no-bitwise
|
|
3680
|
-
};
|
|
3681
|
-
MDCMenuSurfaceFoundation.prototype.setBit = function (corner, bit) {
|
|
3682
|
-
return corner | bit; // tslint:disable-line:no-bitwise
|
|
3683
|
-
};
|
|
3684
|
-
MDCMenuSurfaceFoundation.prototype.unsetBit = function (corner, bit) {
|
|
3685
|
-
return corner ^ bit;
|
|
3686
|
-
};
|
|
3687
|
-
/**
|
|
3688
|
-
* isFinite that doesn't force conversion to number type.
|
|
3689
|
-
* Equivalent to Number.isFinite in ES2015, which is not supported in IE.
|
|
3690
|
-
*/
|
|
3691
|
-
MDCMenuSurfaceFoundation.prototype.isFinite = function (num) {
|
|
3692
|
-
return typeof num === 'number' && isFinite(num);
|
|
3693
|
-
};
|
|
3694
|
-
return MDCMenuSurfaceFoundation;
|
|
3695
|
-
}(MDCFoundation));
|
|
3696
|
-
|
|
3697
|
-
/**
|
|
3698
|
-
* @license
|
|
3699
|
-
* Copyright 2018 Google Inc.
|
|
3700
|
-
*
|
|
3701
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
3702
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
3703
|
-
* in the Software without restriction, including without limitation the rights
|
|
3704
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
3705
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
3706
|
-
* furnished to do so, subject to the following conditions:
|
|
3707
|
-
*
|
|
3708
|
-
* The above copyright notice and this permission notice shall be included in
|
|
3709
|
-
* all copies or substantial portions of the Software.
|
|
3710
|
-
*
|
|
3711
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
3712
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
3713
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
3714
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
3715
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
3716
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
3717
|
-
* THE SOFTWARE.
|
|
3718
|
-
*/
|
|
3719
|
-
var MDCMenuSurface = /** @class */ (function (_super) {
|
|
3720
|
-
__extends(MDCMenuSurface, _super);
|
|
3721
|
-
function MDCMenuSurface() {
|
|
3722
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
3723
|
-
}
|
|
3724
|
-
MDCMenuSurface.attachTo = function (root) {
|
|
3725
|
-
return new MDCMenuSurface(root);
|
|
3726
|
-
};
|
|
3727
|
-
MDCMenuSurface.prototype.initialSyncWithDOM = function () {
|
|
3728
|
-
var _this = this;
|
|
3729
|
-
var parentEl = this.root.parentElement;
|
|
3730
|
-
this.anchorElement = parentEl && parentEl.classList.contains(cssClasses$1.ANCHOR) ? parentEl : null;
|
|
3731
|
-
if (this.root.classList.contains(cssClasses$1.FIXED)) {
|
|
3732
|
-
this.setFixedPosition(true);
|
|
835
|
+
element.setAttribute(key, String(value));
|
|
3733
836
|
}
|
|
3734
|
-
|
|
3735
|
-
_this.foundation.handleKeydown(event);
|
|
3736
|
-
};
|
|
3737
|
-
this.handleBodyClick = function (event) {
|
|
3738
|
-
_this.foundation.handleBodyClick(event);
|
|
3739
|
-
};
|
|
3740
|
-
// capture so that no race between handleBodyClick and quickOpen when
|
|
3741
|
-
// menusurface opened on button click which registers this listener
|
|
3742
|
-
this.registerBodyClickListener = function () {
|
|
3743
|
-
document.body.addEventListener('click', _this.handleBodyClick, { capture: true });
|
|
3744
|
-
};
|
|
3745
|
-
this.deregisterBodyClickListener = function () {
|
|
3746
|
-
document.body.removeEventListener('click', _this.handleBodyClick, { capture: true });
|
|
3747
|
-
};
|
|
3748
|
-
this.listen('keydown', this.handleKeydown);
|
|
3749
|
-
this.listen(strings$1.OPENED_EVENT, this.registerBodyClickListener);
|
|
3750
|
-
this.listen(strings$1.CLOSED_EVENT, this.deregisterBodyClickListener);
|
|
3751
|
-
};
|
|
3752
|
-
MDCMenuSurface.prototype.destroy = function () {
|
|
3753
|
-
this.unlisten('keydown', this.handleKeydown);
|
|
3754
|
-
this.unlisten(strings$1.OPENED_EVENT, this.registerBodyClickListener);
|
|
3755
|
-
this.unlisten(strings$1.CLOSED_EVENT, this.deregisterBodyClickListener);
|
|
3756
|
-
_super.prototype.destroy.call(this);
|
|
837
|
+
}
|
|
3757
838
|
};
|
|
3758
|
-
|
|
3759
|
-
|
|
839
|
+
this.onClose = () => {
|
|
840
|
+
this.cancel.emit();
|
|
841
|
+
this.open = false;
|
|
842
|
+
this.currentSubMenu = null;
|
|
3760
843
|
};
|
|
3761
|
-
|
|
3762
|
-
|
|
844
|
+
this.onTriggerClick = (event) => {
|
|
845
|
+
event.stopPropagation();
|
|
846
|
+
if (this.disabled) {
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
this.open = !this.open;
|
|
3763
850
|
};
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
this.
|
|
851
|
+
this.handleSelect = async (menuItem, selectOnEmptyChildren = true) => {
|
|
852
|
+
if (Array.isArray(menuItem === null || menuItem === void 0 ? void 0 : menuItem.items) && menuItem.items.length > 0) {
|
|
853
|
+
this.selectedMenuItem = menuItem;
|
|
854
|
+
this.clearSearch();
|
|
855
|
+
this.currentSubMenu = menuItem;
|
|
856
|
+
this.navigateMenu.emit(menuItem);
|
|
857
|
+
this.setFocus();
|
|
858
|
+
return;
|
|
859
|
+
}
|
|
860
|
+
else if (isFunction(menuItem === null || menuItem === void 0 ? void 0 : menuItem.items)) {
|
|
861
|
+
const menuLoader = menuItem.items;
|
|
862
|
+
this.selectedMenuItem = menuItem;
|
|
863
|
+
this.loadingSubItems = true;
|
|
864
|
+
const subItems = await menuLoader(menuItem);
|
|
865
|
+
if (this.selectedMenuItem !== menuItem) {
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
menuItem.items = subItems;
|
|
869
|
+
this.loadingSubItems = false;
|
|
870
|
+
if (subItems === null || subItems === void 0 ? void 0 : subItems.length) {
|
|
871
|
+
this.currentSubMenu = menuItem;
|
|
872
|
+
this.clearSearch();
|
|
873
|
+
this.navigateMenu.emit(menuItem);
|
|
874
|
+
this.setFocus();
|
|
875
|
+
return;
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
if (!selectOnEmptyChildren) {
|
|
879
|
+
return;
|
|
880
|
+
}
|
|
881
|
+
this.selectedMenuItem = menuItem;
|
|
882
|
+
this.loadingSubItems = false;
|
|
883
|
+
this.select.emit(menuItem);
|
|
884
|
+
this.open = false;
|
|
885
|
+
this.currentSubMenu = null;
|
|
886
|
+
this.setFocus();
|
|
3767
887
|
};
|
|
3768
|
-
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
},
|
|
3772
|
-
enumerable: false,
|
|
3773
|
-
configurable: true
|
|
3774
|
-
});
|
|
3775
|
-
/** Sets the foundation to use page offsets for an positioning when the menu is hoisted to the body. */
|
|
3776
|
-
MDCMenuSurface.prototype.setIsHoisted = function (isHoisted) {
|
|
3777
|
-
this.foundation.setIsHoisted(isHoisted);
|
|
888
|
+
this.onSelect = (event) => {
|
|
889
|
+
event.stopPropagation();
|
|
890
|
+
this.handleSelect(event.detail);
|
|
3778
891
|
};
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
this.anchorElement = element;
|
|
892
|
+
this.setListElement = (element) => {
|
|
893
|
+
this.list = element;
|
|
3782
894
|
};
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
if (
|
|
3786
|
-
|
|
895
|
+
this.setFocus = () => {
|
|
896
|
+
setTimeout(() => {
|
|
897
|
+
if (this.searchInput && this.searcher) {
|
|
898
|
+
const observer = new IntersectionObserver(() => {
|
|
899
|
+
observer.unobserve(this.searchInput);
|
|
900
|
+
if (this.searchInput === window.document.activeElement) {
|
|
901
|
+
return;
|
|
902
|
+
}
|
|
903
|
+
this.searchInput.focus();
|
|
904
|
+
});
|
|
905
|
+
observer.observe(this.searchInput);
|
|
3787
906
|
}
|
|
3788
|
-
else {
|
|
3789
|
-
|
|
907
|
+
else if (this.list) {
|
|
908
|
+
const observer = new IntersectionObserver(() => {
|
|
909
|
+
observer.unobserve(this.list);
|
|
910
|
+
this.focusMenuItem();
|
|
911
|
+
});
|
|
912
|
+
observer.observe(this.list);
|
|
3790
913
|
}
|
|
3791
|
-
|
|
914
|
+
}, 0);
|
|
3792
915
|
};
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
this.foundation.setAbsolutePosition(x, y);
|
|
3796
|
-
this.setIsHoisted(true);
|
|
916
|
+
this.setSearchElement = (element) => {
|
|
917
|
+
this.searchInput = element;
|
|
3797
918
|
};
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
919
|
+
this.focusMenuItem = () => {
|
|
920
|
+
var _a;
|
|
921
|
+
if (!this.list) {
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
924
|
+
const activeElement = this.list.shadowRoot.activeElement;
|
|
925
|
+
activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();
|
|
926
|
+
const menuItems = this.visibleItems.filter(this.isMenuItem);
|
|
927
|
+
const selectedIndex = Math.max(menuItems.findIndex((item) => item.selected), 0);
|
|
928
|
+
const menuElements = Array.from(this.list.shadowRoot.querySelectorAll('[role="menuitem"]'));
|
|
929
|
+
(_a = menuElements[selectedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
3803
930
|
};
|
|
3804
|
-
|
|
3805
|
-
|
|
931
|
+
this.renderNotificationBadge = () => {
|
|
932
|
+
if (this.items.some(this.hasNotificationBadge)) {
|
|
933
|
+
return h("limel-badge", null);
|
|
934
|
+
}
|
|
3806
935
|
};
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
|
|
3811
|
-
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
|
|
3812
|
-
var adapter = {
|
|
3813
|
-
addClass: function (className) { return _this.root.classList.add(className); },
|
|
3814
|
-
removeClass: function (className) { return _this.root.classList.remove(className); },
|
|
3815
|
-
hasClass: function (className) { return _this.root.classList.contains(className); },
|
|
3816
|
-
hasAnchor: function () { return !!_this.anchorElement; },
|
|
3817
|
-
notifyClose: function () {
|
|
3818
|
-
return _this.emit(MDCMenuSurfaceFoundation.strings.CLOSED_EVENT, {});
|
|
3819
|
-
},
|
|
3820
|
-
notifyClosing: function () {
|
|
3821
|
-
_this.emit(MDCMenuSurfaceFoundation.strings.CLOSING_EVENT, {});
|
|
3822
|
-
},
|
|
3823
|
-
notifyOpen: function () {
|
|
3824
|
-
return _this.emit(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, {});
|
|
3825
|
-
},
|
|
3826
|
-
isElementInContainer: function (el) { return _this.root.contains(el); },
|
|
3827
|
-
isRtl: function () {
|
|
3828
|
-
return getComputedStyle(_this.root).getPropertyValue('direction') === 'rtl';
|
|
3829
|
-
},
|
|
3830
|
-
setTransformOrigin: function (origin) {
|
|
3831
|
-
var propertyName = getCorrectPropertyName(window, 'transform') + "-origin";
|
|
3832
|
-
_this.root.style.setProperty(propertyName, origin);
|
|
3833
|
-
},
|
|
3834
|
-
isFocused: function () { return document.activeElement === _this.root; },
|
|
3835
|
-
saveFocus: function () {
|
|
3836
|
-
_this.previousFocus =
|
|
3837
|
-
document.activeElement;
|
|
3838
|
-
},
|
|
3839
|
-
restoreFocus: function () {
|
|
3840
|
-
if (_this.root.contains(document.activeElement)) {
|
|
3841
|
-
if (_this.previousFocus && _this.previousFocus.focus) {
|
|
3842
|
-
_this.previousFocus.focus();
|
|
3843
|
-
}
|
|
3844
|
-
}
|
|
3845
|
-
},
|
|
3846
|
-
getInnerDimensions: function () {
|
|
3847
|
-
return {
|
|
3848
|
-
width: _this.root.offsetWidth,
|
|
3849
|
-
height: _this.root.offsetHeight
|
|
3850
|
-
};
|
|
3851
|
-
},
|
|
3852
|
-
getAnchorDimensions: function () { return _this.anchorElement ?
|
|
3853
|
-
_this.anchorElement.getBoundingClientRect() :
|
|
3854
|
-
null; },
|
|
3855
|
-
getWindowDimensions: function () {
|
|
3856
|
-
return { width: window.innerWidth, height: window.innerHeight };
|
|
3857
|
-
},
|
|
3858
|
-
getBodyDimensions: function () {
|
|
3859
|
-
return { width: document.body.clientWidth, height: document.body.clientHeight };
|
|
3860
|
-
},
|
|
3861
|
-
getWindowScroll: function () {
|
|
3862
|
-
return { x: window.pageXOffset, y: window.pageYOffset };
|
|
3863
|
-
},
|
|
3864
|
-
setPosition: function (position) {
|
|
3865
|
-
var rootHTML = _this.root;
|
|
3866
|
-
rootHTML.style.left = 'left' in position ? position.left + "px" : '';
|
|
3867
|
-
rootHTML.style.right = 'right' in position ? position.right + "px" : '';
|
|
3868
|
-
rootHTML.style.top = 'top' in position ? position.top + "px" : '';
|
|
3869
|
-
rootHTML.style.bottom =
|
|
3870
|
-
'bottom' in position ? position.bottom + "px" : '';
|
|
3871
|
-
},
|
|
3872
|
-
setMaxHeight: function (height) {
|
|
3873
|
-
_this.root.style.maxHeight = height;
|
|
3874
|
-
},
|
|
3875
|
-
};
|
|
3876
|
-
// tslint:enable:object-literal-sort-keys
|
|
3877
|
-
return new MDCMenuSurfaceFoundation(adapter);
|
|
936
|
+
this.hasNotificationBadge = (item) => this.isMenuItem(item) && item.badge !== undefined;
|
|
937
|
+
this.setTriggerRef = (elm) => {
|
|
938
|
+
this.triggerElement = elm;
|
|
3878
939
|
};
|
|
3879
|
-
|
|
3880
|
-
|
|
940
|
+
this.items = [];
|
|
941
|
+
this.disabled = false;
|
|
942
|
+
this.openDirection = 'bottom-start';
|
|
943
|
+
this.surfaceWidth = 'inherit-from-items';
|
|
944
|
+
this.open = false;
|
|
945
|
+
this.badgeIcons = false;
|
|
946
|
+
this.gridLayout = false;
|
|
947
|
+
this.loading = false;
|
|
948
|
+
this.currentSubMenu = undefined;
|
|
949
|
+
this.rootItem = DEFAULT_ROOT_BREADCRUMBS_ITEM;
|
|
950
|
+
this.searcher = undefined;
|
|
951
|
+
this.emptyResultMessage = undefined;
|
|
952
|
+
this.loadingSubItems = undefined;
|
|
953
|
+
this.searchValue = undefined;
|
|
954
|
+
this.searchResults = undefined;
|
|
955
|
+
this.portalId = createRandomString();
|
|
956
|
+
}
|
|
957
|
+
componentDidRender() {
|
|
958
|
+
const slotElement = this.host.shadowRoot.querySelector('slot');
|
|
959
|
+
slotElement.assignedElements().forEach(this.setTriggerAttributes);
|
|
960
|
+
}
|
|
961
|
+
render() {
|
|
962
|
+
const cssProperties = this.getCssProperties();
|
|
963
|
+
const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
|
|
964
|
+
const menuSurfaceWidth = this.getMenuSurfaceWidth(cssProperties['--menu-surface-width']);
|
|
965
|
+
return (h("div", { class: "mdc-menu-surface--anchor", onClick: this.onTriggerClick }, h("slot", { ref: this.setTriggerRef, name: "trigger" }), this.renderNotificationBadge(), h("limel-portal", { visible: this.open, containerId: this.portalId, openDirection: this.openDirection, position: "absolute", containerStyle: { 'z-index': dropdownZIndex } }, h("limel-menu-surface", { open: this.open, onDismiss: this.onClose, style: Object.assign(Object.assign({}, cssProperties), { '--mdc-menu-min-width': menuSurfaceWidth, '--limel-menu-surface-display': 'flex', '--limel-menu-surface-flex-direction': 'column' }), class: {
|
|
966
|
+
'has-grid-layout': this.gridLayout,
|
|
967
|
+
} }, this.renderSearchField(), this.renderBreadcrumb(), this.renderLoader(), this.renderEmptyMessage(), this.renderMenuList()))));
|
|
968
|
+
}
|
|
969
|
+
itemsWatcher() {
|
|
970
|
+
this.clearSearch();
|
|
971
|
+
this.setFocus();
|
|
972
|
+
}
|
|
973
|
+
openWatcher(newValue) {
|
|
974
|
+
if (newValue) {
|
|
975
|
+
this.setFocus();
|
|
976
|
+
}
|
|
977
|
+
else {
|
|
978
|
+
this.clearSearch();
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
getBreadcrumbsItems() {
|
|
982
|
+
const breadCrumbItems = [];
|
|
983
|
+
let currentItem = this.currentSubMenu;
|
|
984
|
+
while (currentItem) {
|
|
985
|
+
breadCrumbItems.push({
|
|
986
|
+
text: currentItem.text,
|
|
987
|
+
icon: currentItem.icon,
|
|
988
|
+
menuItem: currentItem,
|
|
989
|
+
});
|
|
990
|
+
currentItem = currentItem.parentItem;
|
|
991
|
+
}
|
|
992
|
+
if (breadCrumbItems.length ||
|
|
993
|
+
this.rootItem !== DEFAULT_ROOT_BREADCRUMBS_ITEM) {
|
|
994
|
+
breadCrumbItems.push(this.rootItem);
|
|
995
|
+
}
|
|
996
|
+
return breadCrumbItems.reverse();
|
|
997
|
+
}
|
|
998
|
+
getCssProperties() {
|
|
999
|
+
const propertyNames = [
|
|
1000
|
+
'--menu-surface-width',
|
|
1001
|
+
'--list-grid-item-max-width',
|
|
1002
|
+
'--list-grid-item-min-width',
|
|
1003
|
+
'--list-grid-gap',
|
|
1004
|
+
'--notification-badge-background-color',
|
|
1005
|
+
'--notification-badge-text-color',
|
|
1006
|
+
];
|
|
1007
|
+
const style = getComputedStyle(this.host);
|
|
1008
|
+
const values = propertyNames.map((property) => {
|
|
1009
|
+
return style.getPropertyValue(property);
|
|
1010
|
+
});
|
|
1011
|
+
return zipObject(propertyNames, values);
|
|
1012
|
+
}
|
|
1013
|
+
isMenuItem(item) {
|
|
1014
|
+
return !('separator' in item);
|
|
1015
|
+
}
|
|
1016
|
+
getMenuSurfaceWidth(customWidth) {
|
|
1017
|
+
var _a, _b, _c, _d;
|
|
1018
|
+
if (customWidth) {
|
|
1019
|
+
return customWidth;
|
|
1020
|
+
}
|
|
1021
|
+
if (this.surfaceWidth === 'inherit-from-trigger') {
|
|
1022
|
+
const assignedTriggers = (_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.assignedElements();
|
|
1023
|
+
if (!(assignedTriggers === null || assignedTriggers === void 0 ? void 0 : assignedTriggers.length) ||
|
|
1024
|
+
!((_b = assignedTriggers[0]) === null || _b === void 0 ? void 0 : _b.clientWidth)) {
|
|
1025
|
+
return '';
|
|
1026
|
+
}
|
|
1027
|
+
return `${assignedTriggers[0].clientWidth}px`;
|
|
1028
|
+
}
|
|
1029
|
+
else if (this.surfaceWidth === 'inherit-from-menu') {
|
|
1030
|
+
if (!((_c = this.host) === null || _c === void 0 ? void 0 : _c.clientWidth)) {
|
|
1031
|
+
return '';
|
|
1032
|
+
}
|
|
1033
|
+
return `${(_d = this.host) === null || _d === void 0 ? void 0 : _d.clientWidth}px`;
|
|
1034
|
+
}
|
|
1035
|
+
return '';
|
|
1036
|
+
}
|
|
1037
|
+
get visibleItems() {
|
|
1038
|
+
var _a;
|
|
1039
|
+
if (Array.isArray(this.searchResults) && this.searchValue) {
|
|
1040
|
+
return this.searchResults;
|
|
1041
|
+
}
|
|
1042
|
+
else if (Array.isArray((_a = this.currentSubMenu) === null || _a === void 0 ? void 0 : _a.items)) {
|
|
1043
|
+
return this.currentSubMenu.items.map((item) => (Object.assign(Object.assign({}, item), { parentItem: this.currentSubMenu })));
|
|
1044
|
+
}
|
|
1045
|
+
return this.items;
|
|
1046
|
+
}
|
|
1047
|
+
get host() { return getElement(this); }
|
|
1048
|
+
static get watchers() { return {
|
|
1049
|
+
"items": ["itemsWatcher"],
|
|
1050
|
+
"open": ["openWatcher"]
|
|
1051
|
+
}; }
|
|
1052
|
+
};
|
|
1053
|
+
Menu.style = menuCss;
|
|
3881
1054
|
|
|
3882
1055
|
/**
|
|
3883
1056
|
* @license
|
|
@@ -4090,11 +1263,11 @@ var MDCMenuFoundation = /** @class */ (function (_super) {
|
|
|
4090
1263
|
MDCMenuFoundation.prototype.setEnabled = function (index, isEnabled) {
|
|
4091
1264
|
this.validatedIndex(index);
|
|
4092
1265
|
if (isEnabled) {
|
|
4093
|
-
this.adapter.removeClassFromElementAtIndex(index, cssClasses$
|
|
1266
|
+
this.adapter.removeClassFromElementAtIndex(index, cssClasses$1.LIST_ITEM_DISABLED_CLASS);
|
|
4094
1267
|
this.adapter.addAttributeToElementAtIndex(index, strings.ARIA_DISABLED_ATTR, 'false');
|
|
4095
1268
|
}
|
|
4096
1269
|
else {
|
|
4097
|
-
this.adapter.addClassToElementAtIndex(index, cssClasses$
|
|
1270
|
+
this.adapter.addClassToElementAtIndex(index, cssClasses$1.LIST_ITEM_DISABLED_CLASS);
|
|
4098
1271
|
this.adapter.addAttributeToElementAtIndex(index, strings.ARIA_DISABLED_ATTR, 'true');
|
|
4099
1272
|
}
|
|
4100
1273
|
};
|
|
@@ -4290,7 +1463,7 @@ var MDCMenu = /** @class */ (function (_super) {
|
|
|
4290
1463
|
* radio lists, and an array of numbers for checkbox lists.
|
|
4291
1464
|
*/
|
|
4292
1465
|
get: function () {
|
|
4293
|
-
return this.list ? this.list.selectedIndex : numbers$
|
|
1466
|
+
return this.list ? this.list.selectedIndex : numbers$1.UNSET_INDEX;
|
|
4294
1467
|
},
|
|
4295
1468
|
/**
|
|
4296
1469
|
* Sets the selected index of the list. Only applicable to select menus.
|
|
@@ -4726,122 +1899,6 @@ const MenuList = class {
|
|
|
4726
1899
|
};
|
|
4727
1900
|
MenuList.style = menuListCss;
|
|
4728
1901
|
|
|
4729
|
-
const menuSurfaceCss = ":host(limel-menu-surface){display:block;max-height:inherit}.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform, opacity;z-index:8;transition:opacity 0.03s linear, transform 0.12s cubic-bezier(0, 0, 0.2, 1), height 250ms cubic-bezier(0, 0, 0.2, 1);box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);background-color:#fff;background-color:var(--mdc-theme-surface, #fff);color:#000;color:var(--mdc-theme-on-surface, #000);border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0;transition:opacity 0.075s linear}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left;}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:0;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:#fff;background-color:var(--mdc-elevation-overlay-color, #fff)}.mdc-menu{min-width:112px;min-width:var(--mdc-menu-min-width, 112px)}.mdc-menu .mdc-deprecated-list-item__meta{color:rgba(0, 0, 0, 0.87)}.mdc-menu .mdc-deprecated-list-item__graphic{color:rgba(0, 0, 0, 0.87)}.mdc-menu .mdc-deprecated-list{color:rgba(0, 0, 0, 0.87)}.mdc-menu .mdc-deprecated-list,.mdc-menu .mdc-list{position:relative}.mdc-menu .mdc-deprecated-list .mdc-elevation-overlay,.mdc-menu .mdc-list .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-menu .mdc-deprecated-list-divider{margin:8px 0}.mdc-menu .mdc-deprecated-list-item{user-select:none}.mdc-menu .mdc-deprecated-list-item--disabled{cursor:auto}.mdc-menu a.mdc-deprecated-list-item .mdc-deprecated-list-item__text,.mdc-menu a.mdc-deprecated-list-item .mdc-deprecated-list-item__graphic{pointer-events:none}.mdc-menu__selection-group{padding:0;fill:currentColor}.mdc-menu__selection-group .mdc-deprecated-list-item{padding-left:56px;padding-right:16px}[dir=rtl] .mdc-menu__selection-group .mdc-deprecated-list-item,.mdc-menu__selection-group .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:56px;}.mdc-menu__selection-group .mdc-menu__selection-group-icon{left:16px;right:initial;display:none;position:absolute;top:50%;transform:translateY(-50%)}[dir=rtl] .mdc-menu__selection-group .mdc-menu__selection-group-icon,.mdc-menu__selection-group .mdc-menu__selection-group-icon[dir=rtl]{left:initial;right:16px;}.mdc-menu-item--selected .mdc-menu__selection-group-icon{display:inline}.mdc-menu-surface{display:var(--limel-menu-surface-display, block);flex-direction:var(--limel-menu-surface-flex-direction, row);max-height:inherit;position:relative;--mdc-menu-max-width:var(\n --menu-surface-width,\n min(calc(100vw - 2rem), 20rem)\n );background-color:var(--lime-elevated-surface-background-color)}:host(limel-menu-surface.has-grid-layout) .mdc-menu-surface{width:var(--menu-surface-width, min(100vw - 2rem, 40rem));max-width:unset}";
|
|
4730
|
-
|
|
4731
|
-
const MenuSurface = class {
|
|
4732
|
-
constructor(hostRef) {
|
|
4733
|
-
registerInstance(this, hostRef);
|
|
4734
|
-
this.dismiss = createEvent(this, "dismiss", 7);
|
|
4735
|
-
this.setup = () => {
|
|
4736
|
-
const menuElement = this.host.shadowRoot.querySelector('.mdc-menu-surface');
|
|
4737
|
-
if (!menuElement) {
|
|
4738
|
-
return;
|
|
4739
|
-
}
|
|
4740
|
-
this.menuSurface = new MDCMenuSurface(menuElement);
|
|
4741
|
-
this.menuSurface.setAnchorCorner(Corner.TOP_START);
|
|
4742
|
-
document.addEventListener('mousedown', this.handleDocumentClick, {
|
|
4743
|
-
capture: true,
|
|
4744
|
-
});
|
|
4745
|
-
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
4746
|
-
window.addEventListener('resize', this.handleResize, {
|
|
4747
|
-
passive: true,
|
|
4748
|
-
});
|
|
4749
|
-
};
|
|
4750
|
-
this.teardown = () => {
|
|
4751
|
-
var _a;
|
|
4752
|
-
(_a = this.menuSurface) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
4753
|
-
document.removeEventListener('mousedown', this.handleDocumentClick, {
|
|
4754
|
-
capture: true,
|
|
4755
|
-
});
|
|
4756
|
-
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
4757
|
-
window.removeEventListener('resize', this.handleResize);
|
|
4758
|
-
};
|
|
4759
|
-
this.handleDocumentClick = (event) => {
|
|
4760
|
-
const elementPath = event.composedPath ? event.composedPath() : [];
|
|
4761
|
-
if (!this.open) {
|
|
4762
|
-
return;
|
|
4763
|
-
}
|
|
4764
|
-
if (isDescendant(event.target, this.host)) {
|
|
4765
|
-
return;
|
|
4766
|
-
}
|
|
4767
|
-
if (this.allowClicksElement) {
|
|
4768
|
-
const clickedInAllowedElement = elementPath.includes(this.allowClicksElement);
|
|
4769
|
-
if (clickedInAllowedElement) {
|
|
4770
|
-
return;
|
|
4771
|
-
}
|
|
4772
|
-
}
|
|
4773
|
-
this.dismiss.emit();
|
|
4774
|
-
this.preventClickEventPropagation();
|
|
4775
|
-
};
|
|
4776
|
-
this.handleResize = () => {
|
|
4777
|
-
if (this.open) {
|
|
4778
|
-
this.dismiss.emit();
|
|
4779
|
-
}
|
|
4780
|
-
};
|
|
4781
|
-
this.preventClickEventPropagation = () => {
|
|
4782
|
-
// When the menu surface is open, we want to stop the `click` event from propagating
|
|
4783
|
-
// when clicking outside the surface itself. This is to prevent any dialog that might
|
|
4784
|
-
// be open from closing, etc. However, when dragging a scrollbar no `click` event is emitted,
|
|
4785
|
-
// only mousedown and mouseup. So we listen for `mousedown` and attach a one-time listener
|
|
4786
|
-
// for `click`, so we can capture and "kill" it.
|
|
4787
|
-
document.addEventListener('click', this.stopEvent, {
|
|
4788
|
-
capture: true,
|
|
4789
|
-
once: true,
|
|
4790
|
-
});
|
|
4791
|
-
// We also capture and "kill" the next `mouseup` event.
|
|
4792
|
-
document.addEventListener('mouseup', this.stopEvent, {
|
|
4793
|
-
capture: true,
|
|
4794
|
-
once: true,
|
|
4795
|
-
});
|
|
4796
|
-
// If the user dragged the scrollbar, no `click` event happens. So when we get the
|
|
4797
|
-
// `mouseup` event, remove the handler for `click` if it's still there.
|
|
4798
|
-
// Otherwise, we would catch the next click even though the menu is no longer open.
|
|
4799
|
-
document.addEventListener('mouseup', () => {
|
|
4800
|
-
document.removeEventListener('click', this.stopEvent, {
|
|
4801
|
-
capture: true,
|
|
4802
|
-
});
|
|
4803
|
-
}, {
|
|
4804
|
-
once: true,
|
|
4805
|
-
});
|
|
4806
|
-
};
|
|
4807
|
-
this.stopEvent = (event) => {
|
|
4808
|
-
event.stopPropagation();
|
|
4809
|
-
event.preventDefault();
|
|
4810
|
-
};
|
|
4811
|
-
this.handleKeyDown = (event) => {
|
|
4812
|
-
const isEscape = event.key === ESCAPE || event.keyCode === ESCAPE_KEY_CODE;
|
|
4813
|
-
const isTab = event.key === TAB || event.keyCode === TAB_KEY_CODE;
|
|
4814
|
-
if (this.open && (isEscape || isTab)) {
|
|
4815
|
-
event.stopPropagation();
|
|
4816
|
-
this.dismiss.emit();
|
|
4817
|
-
}
|
|
4818
|
-
};
|
|
4819
|
-
this.open = false;
|
|
4820
|
-
this.allowClicksElement = undefined;
|
|
4821
|
-
}
|
|
4822
|
-
connectedCallback() {
|
|
4823
|
-
this.setup();
|
|
4824
|
-
}
|
|
4825
|
-
disconnectedCallback() {
|
|
4826
|
-
this.teardown();
|
|
4827
|
-
}
|
|
4828
|
-
componentDidLoad() {
|
|
4829
|
-
this.setup();
|
|
4830
|
-
}
|
|
4831
|
-
render() {
|
|
4832
|
-
const classList = {
|
|
4833
|
-
'mdc-menu': true,
|
|
4834
|
-
'mdc-menu-surface': true,
|
|
4835
|
-
'mdc-menu-surface--open': this.open,
|
|
4836
|
-
'mdc-elevation-transition': true,
|
|
4837
|
-
'mdc-elevation--z4': true,
|
|
4838
|
-
};
|
|
4839
|
-
return (h("div", { class: classList, tabindex: "-1" }, h("slot", null)));
|
|
4840
|
-
}
|
|
4841
|
-
get host() { return getElement(this); }
|
|
4842
|
-
};
|
|
4843
|
-
MenuSurface.style = menuSurfaceCss;
|
|
4844
|
-
|
|
4845
1902
|
const spinnerCss = ":host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}:host(limel-spinner){display:block}@keyframes spin{50%{transform:rotate(180deg)}100%{transform:rotate(720deg)}}@keyframes fade-in-the-spinner{0%{transform:scale(0.7);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes animate-colored-circles{5%{stroke-dashoffset:0}10%,100%{stroke-dashoffset:63}}:host([hidden]){display:none}:host{box-sizing:border-box;display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;transform:translate3d(0, 0, 0);animation:fade-in-the-spinner 0.5s ease forwards}:host([size=x-small]){height:2rem;width:2rem}:host([size=small]){height:2.125rem;width:2.125rem}:host([size=medium]){height:2.75rem;width:2.75rem}:host([size=large]){height:4rem;width:4rem}.spinner{animation:spin 1s linear infinite;transform-origin:center}.color{animation:animate-colored-circles 10s linear infinite;fill:none;stroke-dasharray:63;stroke-dashoffset:63;stroke-linecap:round;stroke-width:4}.color.thick{stroke-width:10}.color:nth-child(1){stroke:var(--spinner-color-1, rgb(var(--lime-brand-color-deep-red)))}.color:nth-child(2){stroke:var(--spinner-color-2, rgb(var(--lime-brand-color-sellable-orange)));animation-delay:1s}.color:nth-child(3){stroke:var(--spinner-color-3, rgb(var(--lime-brand-color-simple-blue)));animation-delay:2s}.color:nth-child(4){stroke:var(--spinner-color-4, rgb(var(--lime-brand-color-orange)));animation-delay:3s}.color:nth-child(5){stroke:var(--spinner-color-5, rgb(var(--lime-brand-color-lime-green)));animation-delay:4s}.color:nth-child(6){stroke:var(--spinner-color-6, rgb(var(--lime-brand-color-yellow)));animation-delay:5s}.color:nth-child(7){stroke:var(--spinner-color-7, rgb(var(--lime-brand-color-flexible-turquoise)));animation-delay:6s}.color:nth-child(8){stroke:var(--spinner-color-8, rgb(var(--lime-brand-color-loving-magenta)));animation-delay:7s}.color:nth-child(9){stroke:var(--spinner-color-9, rgb(var(--lime-brand-color-dark-blue)));animation-delay:8s}.color:nth-child(10){stroke:var(--spinner-color-9, rgb(var(--lime-brand-color-light-grey)));animation-delay:9s}.outline{stroke:rgba(var(--lime-brand-color-light-grey), 0.3);fill:none;stroke-linecap:round;stroke-width:4}.outline.thick{stroke-width:10}";
|
|
4846
1903
|
|
|
4847
1904
|
const Spinner = class {
|
|
@@ -4864,6 +1921,6 @@ const Spinner = class {
|
|
|
4864
1921
|
};
|
|
4865
1922
|
Spinner.style = spinnerCss;
|
|
4866
1923
|
|
|
4867
|
-
export { Breadcrumbs as limel_breadcrumbs, InputField as limel_input_field,
|
|
1924
|
+
export { Breadcrumbs as limel_breadcrumbs, InputField as limel_input_field, Menu as limel_menu, MenuList as limel_menu_list, Spinner as limel_spinner };
|
|
4868
1925
|
|
|
4869
|
-
//# sourceMappingURL=limel-
|
|
1926
|
+
//# sourceMappingURL=limel-breadcrumbs_5.entry.js.map
|