@universal-material/web 3.4.1 → 3.5.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/button/button-base.d.ts +1 -1
- package/button/button-base.d.ts.map +1 -1
- package/button/button-base.js +1 -1
- package/button/button-base.js.map +1 -1
- package/button/button-base.styles.d.ts.map +1 -1
- package/button/button-base.styles.js +3 -0
- package/button/button-base.styles.js.map +1 -1
- package/button/button.d.ts +5 -11
- package/button/button.d.ts.map +1 -1
- package/button/button.js +29 -20
- package/button/button.js.map +1 -1
- package/button/button.styles.d.ts.map +1 -1
- package/button/button.styles.js +41 -50
- package/button/button.styles.js.map +1 -1
- package/button/fab-menu-color-context.d.ts +5 -0
- package/button/fab-menu-color-context.d.ts.map +1 -0
- package/button/fab-menu-color-context.js +3 -0
- package/button/fab-menu-color-context.js.map +1 -0
- package/button/fab-menu-item.d.ts +23 -0
- package/button/fab-menu-item.d.ts.map +1 -0
- package/button/fab-menu-item.js +70 -0
- package/button/fab-menu-item.js.map +1 -0
- package/button/fab-menu-item.styles.d.ts +2 -0
- package/button/fab-menu-item.styles.d.ts.map +1 -0
- package/button/fab-menu-item.styles.js +82 -0
- package/button/fab-menu-item.styles.js.map +1 -0
- package/button/fab-menu-open-context.d.ts +4 -0
- package/button/fab-menu-open-context.d.ts.map +1 -0
- package/button/fab-menu-open-context.js +3 -0
- package/button/fab-menu-open-context.js.map +1 -0
- package/button/fab-menu.d.ts +26 -0
- package/button/fab-menu.d.ts.map +1 -0
- package/button/fab-menu.js +93 -0
- package/button/fab-menu.js.map +1 -0
- package/button/fab-menu.styles.d.ts +2 -0
- package/button/fab-menu.styles.d.ts.map +1 -0
- package/button/fab-menu.styles.js +145 -0
- package/button/fab-menu.styles.js.map +1 -0
- package/button/fab.d.ts +2 -1
- package/button/fab.d.ts.map +1 -1
- package/button/fab.js +13 -7
- package/button/fab.js.map +1 -1
- package/button/fab.styles.d.ts.map +1 -1
- package/button/fab.styles.js +50 -56
- package/button/fab.styles.js.map +1 -1
- package/button/icon-button.d.ts +3 -2
- package/button/icon-button.d.ts.map +1 -1
- package/button/icon-button.js +12 -4
- package/button/icon-button.js.map +1 -1
- package/button/icon-button.styles.d.ts.map +1 -1
- package/button/icon-button.styles.js +28 -30
- package/button/icon-button.styles.js.map +1 -1
- package/button/toggle-button.d.ts +6 -5
- package/button/toggle-button.d.ts.map +1 -1
- package/button/toggle-button.js +27 -8
- package/button/toggle-button.js.map +1 -1
- package/button/toggle-button.styles.d.ts.map +1 -1
- package/button/toggle-button.styles.js +18 -13
- package/button/toggle-button.styles.js.map +1 -1
- package/chip/chip.d.ts +9 -23
- package/chip/chip.d.ts.map +1 -1
- package/chip/chip.js +60 -60
- package/chip/chip.js.map +1 -1
- package/chip/chip.styles.d.ts.map +1 -1
- package/chip/chip.styles.js +32 -39
- package/chip/chip.styles.js.map +1 -1
- package/custom-elements.json +10772 -10108
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/list/list-item.d.ts.map +1 -1
- package/list/list-item.js +13 -9
- package/list/list-item.js.map +1 -1
- package/list/list-item.styles.d.ts.map +1 -1
- package/list/list-item.styles.js +5 -1
- package/list/list-item.styles.js.map +1 -1
- package/menu/menu-item.d.ts +6 -24
- package/menu/menu-item.d.ts.map +1 -1
- package/menu/menu-item.js +22 -44
- package/menu/menu-item.js.map +1 -1
- package/menu/menu-item.styles.d.ts.map +1 -1
- package/menu/menu-item.styles.js +6 -5
- package/menu/menu-item.styles.js.map +1 -1
- package/navigation/drawer-item.d.ts +5 -14
- package/navigation/drawer-item.d.ts.map +1 -1
- package/navigation/drawer-item.js +18 -21
- package/navigation/drawer-item.js.map +1 -1
- package/navigation/drawer-item.styles.d.ts.map +1 -1
- package/navigation/drawer-item.styles.js +8 -7
- package/navigation/drawer-item.styles.js.map +1 -1
- package/package.json +1 -1
- package/select/option.d.ts +1 -1
- package/select/option.d.ts.map +1 -1
- package/select/option.js +1 -1
- package/select/option.js.map +1 -1
- package/shared/base.styles.d.ts.map +1 -1
- package/shared/base.styles.js +1 -0
- package/shared/base.styles.js.map +1 -1
- package/shared/button-wrapper.d.ts +4 -6
- package/shared/button-wrapper.d.ts.map +1 -1
- package/shared/button-wrapper.js +20 -12
- package/shared/button-wrapper.js.map +1 -1
- package/shared/button-wrapper.styles.d.ts.map +1 -1
- package/shared/button-wrapper.styles.js +7 -5
- package/shared/button-wrapper.styles.js.map +1 -1
- package/tab-bar/tab.d.ts +2 -2
- package/tab-bar/tab.d.ts.map +1 -1
- package/tab-bar/tab.js +3 -3
- package/tab-bar/tab.js.map +1 -1
- package/tab-bar/tab.styles.d.ts.map +1 -1
- package/tab-bar/tab.styles.js +4 -1
- package/tab-bar/tab.styles.js.map +1 -1
- package/typeahead/typeahead.d.ts.map +1 -1
- package/typeahead/typeahead.js +2 -7
- package/typeahead/typeahead.js.map +1 -1
- package/typeahead/typeahead.styles.d.ts.map +1 -1
- package/typeahead/typeahead.styles.js +1 -4
- package/typeahead/typeahead.styles.js.map +1 -1
- package/vscode.html-custom-data.json +353 -336
package/select/option.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class UmOption extends UmMenuItem {
|
|
|
11
11
|
set value(value: string);
|
|
12
12
|
get selected(): boolean;
|
|
13
13
|
set selected(selected: boolean);
|
|
14
|
-
protected
|
|
14
|
+
protected _renderDefaultTrailingIcon(): TemplateResult;
|
|
15
15
|
private get _selectedAttribute();
|
|
16
16
|
private set _selectedAttribute(value);
|
|
17
17
|
_select: UmSelect | null;
|
package/select/option.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../src/select/option.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,aAAa,CAAC;AAErB,qBACa,QAAS,SAAQ,UAAU;;IACtC,OAAgB,MAAM,+DAA+B;IAErD,aAAa,EAAE,cAAc,CAWxB;IAEL,IACI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IACI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAmB7B;cAEkB,
|
|
1
|
+
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../src/select/option.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,aAAa,CAAC;AAErB,qBACa,QAAS,SAAQ,UAAU;;IACtC,OAAgB,MAAM,+DAA+B;IAErD,aAAa,EAAE,cAAc,CAWxB;IAEL,IACI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IACI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAmB7B;cAEkB,0BAA0B,IAAI,cAAc;IAS/D,OAAO,KAAK,kBAAkB,GAE7B;IAGD,OAAO,KAAK,kBAAkB,QAO7B;IAED,OAAO,EAAG,QAAQ,GAAG,IAAI,CAAC;IAEjB,iBAAiB;IAQjB,oBAAoB;IAsC7B,iBAAiB;CAyBlB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,QAAQ,CAAC;KACtB;CACF"}
|
package/select/option.js
CHANGED
|
@@ -45,7 +45,7 @@ let UmOption = class UmOption extends UmMenuItem {
|
|
|
45
45
|
// this._select._button.setAttribute('aria-labelledby', this._listItem.id);
|
|
46
46
|
this._select.empty = !this._nativeOption.textContent?.trim();
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
_renderDefaultTrailingIcon() {
|
|
49
49
|
return svg `
|
|
50
50
|
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
|
|
51
51
|
<path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/>
|
package/select/option.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../src/select/option.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAkB,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,aAAa,CAAC;AAGd,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAGL,kBAAa,GAAmB,CAAC,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAmB,CAAC;YAClE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAEtB,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEtC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE,CAAC;IAqIP,CAAC;aAlJiB,WAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,AAA9B,CAA+B;IAgBrD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;IACnC,CAAC;IAGD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IAEkB,
|
|
1
|
+
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../src/select/option.ts"],"names":[],"mappings":"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","sourcesContent":["import { svg, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { UmMenuItem } from '../menu/menu-item.js';\nimport { ExtendedOption } from './extended-option.js';\nimport { styles } from './option.styles.js';\nimport { UmSelect } from './select.js';\n\nimport './select.js';\n\n@customElement('u-option')\nexport class UmOption extends UmMenuItem {\n static override styles = [UmMenuItem.styles, styles];\n\n _nativeOption: ExtendedOption = (() => {\n const option = document.createElement('option') as ExtendedOption;\n option._parent = this;\n\n if (this.hasAttribute('selected')) {\n option.setAttribute('selected', '');\n }\n\n option.textContent = this.textContent;\n\n return option;\n })();\n\n @property({ reflect: true })\n get value(): string {\n return this._nativeOption.value;\n }\n\n set value(value: string) {\n this._nativeOption.value = value;\n }\n\n @state()\n get selected(): boolean {\n return this._nativeOption.selected;\n }\n\n set selected(selected: boolean) {\n if (this.selected === selected) {\n return;\n }\n\n this._nativeOption.selected = selected;\n\n if (selected) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n\n if (!this._select) {\n return;\n }\n\n // this._select._button.setAttribute('aria-labelledby', this._listItem.id);\n this._select.empty = !this._nativeOption.textContent?.trim();\n }\n\n protected override _renderDefaultTrailingIcon(): TemplateResult {\n return svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"/>\n </svg>`;\n }\n\n @property({ type: Boolean, attribute: 'selected' })\n // @ts-ignore\n private get _selectedAttribute(): boolean {\n return this._nativeOption.hasAttribute('selected');\n }\n\n // @ts-ignore\n private set _selectedAttribute(selected: boolean) {\n if (selected) {\n this._nativeOption.setAttribute('selected', '');\n return;\n }\n\n this._nativeOption.removeAttribute('selected');\n }\n\n _select!: UmSelect | null;\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this.#handleClick);\n this.setAttribute('tabindex', '-1');\n\n this.#attach();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.#handleClick);\n\n if (this._select === this.parentElement) {\n return;\n }\n\n this._nativeOption.remove();\n\n if (!this._select) {\n return;\n }\n\n this._select.value = this._select.value;\n this._select = null;\n }\n\n async #attach(): Promise<void> {\n if (this._select === this.parentElement) {\n return;\n }\n\n this._select = this.parentElement instanceof UmSelect ? this.parentElement : null;\n\n await this.#setNativeOption();\n }\n\n #handleClick(e: Event) {\n if (!this._select) {\n return;\n }\n\n e.stopPropagation();\n\n this.setSelectedByUser();\n }\n\n setSelectedByUser() {\n if (!this._select) {\n return;\n }\n\n this._select.selectedOptions[0]?.classList.remove('selected');\n this.selected = true;\n\n this._select.value = this._select.value;\n this._select.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this._select.dispatchEvent(new Event('change', { bubbles: true }));\n\n this._select._menu?.close();\n }\n\n #updateContent() {\n this._nativeOption.textContent = this.textContent;\n }\n\n async #setNativeOption(): Promise<void> {\n await this.updateComplete;\n this.#updateContent();\n\n this._select?._updateOptions();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-option': UmOption;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.styles.d.ts","sourceRoot":"","sources":["../../src/shared/base.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"base.styles.d.ts","sourceRoot":"","sources":["../../src/shared/base.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA6BlB,CAAC"}
|
package/shared/base.styles.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.styles.js","sourceRoot":"","sources":["../../src/shared/base.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"base.styles.js","sourceRoot":"","sources":["../../src/shared/base.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host,\n * {\n --_focus-ring-color: var(--u-focus-ring-color, var(--u-color-secondary, rgb(98, 91, 113)));\n --_focus-ring-outline-offset: var(--u-focus-ring-outline-offset, 2px);\n font-family: var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n box-sizing: border-box;\n outline: 0;\n }\n\n .force-focus-ring .focus-ring,\n :host(.force-focus-ring) .focus-ring,\n .focus-ring:focus-visible {\n animation: u-focus-pulse 500ms ease;\n animation-fill-mode: forwards;\n outline-offset: var(--_focus-ring-outline-offset);\n }\n\n @keyframes u-focus-pulse {\n 0% {\n outline: 0 solid var(--_focus-ring-color);\n }\n 50% {\n outline: 6px solid var(--_focus-ring-color);\n }\n 100% {\n outline: 4px solid var(--_focus-ring-color);\n }\n }\n`;\n"]}
|
|
@@ -21,19 +21,17 @@ export declare abstract class UmButtonWrapper extends LitElement {
|
|
|
21
21
|
target: string | undefined;
|
|
22
22
|
name: string | undefined;
|
|
23
23
|
readonly buttonElement: HTMLElement;
|
|
24
|
-
private readonly
|
|
24
|
+
private readonly _ripple;
|
|
25
25
|
protected innerRole: string | null;
|
|
26
26
|
get pathname(): string;
|
|
27
27
|
protected render(): HTMLTemplateResult;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
protected abstract renderContent(): HTMLTemplateResult;
|
|
28
|
+
protected _getContainerClasses(): Record<string, boolean>;
|
|
29
|
+
protected abstract _renderContent(): HTMLTemplateResult;
|
|
31
30
|
connectedCallback(): void;
|
|
32
31
|
disconnectedCallback(): void;
|
|
33
32
|
focus(): void;
|
|
34
33
|
blur(): void;
|
|
35
34
|
protected getAriaLabel(): string | null;
|
|
36
|
-
|
|
37
|
-
protected handleClick(_: UIEvent): void;
|
|
35
|
+
protected _handleClick(_: UIEvent): void;
|
|
38
36
|
}
|
|
39
37
|
//# sourceMappingURL=button-wrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-wrapper.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"button-wrapper.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AASpE,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAE7B,8BAAsB,eAAgB,SAAQ,UAAU;;IACtD,OAAgB,MAAM,EAAE,cAAc,CAAwB;IAE9D;;OAEG;IACyC,QAAQ,UAAS;IAEpD,YAAY,UAAQ;IAE7B;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC;;;OAGG;IACS,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnB,QAAQ,CAAC,aAAa,EAAG,WAAW,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IAEvD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,IAAI,QAAQ,IAAI,MAAM,CAErB;cAEkB,MAAM,IAAI,kBAAkB;IAU/C,SAAS,CAAC,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAyCzD,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,kBAAkB;IAE9C,iBAAiB;IAMjB,oBAAoB;IAMpB,KAAK;IAIL,IAAI;IAIb,SAAS,CAAC,YAAY,IAAI,MAAM,GAAG,IAAI;IAiCvC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;CAEzC"}
|
package/shared/button-wrapper.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { html, LitElement, nothing } from 'lit';
|
|
3
3
|
import { property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
4
5
|
import { styles as baseStyles } from './base.styles.js';
|
|
5
6
|
import { styles } from './button-wrapper.styles';
|
|
6
7
|
import { redispatchEvent } from './events/redispatch-event.js';
|
|
@@ -21,11 +22,18 @@ export class UmButtonWrapper extends LitElement {
|
|
|
21
22
|
return this.buttonElement?.pathname;
|
|
22
23
|
}
|
|
23
24
|
render() {
|
|
24
|
-
|
|
25
|
+
const contents = typeof this.href === 'string'
|
|
26
|
+
? this.#renderLink()
|
|
27
|
+
: this.#renderButton();
|
|
28
|
+
const containerClasses = classMap(this._getContainerClasses());
|
|
29
|
+
return html `<div class="container ${containerClasses}" part="container"> ${contents}</div>`;
|
|
25
30
|
}
|
|
26
|
-
|
|
31
|
+
_getContainerClasses() {
|
|
32
|
+
return { disabled: this.disabled };
|
|
33
|
+
}
|
|
34
|
+
#renderButton() {
|
|
27
35
|
return html `
|
|
28
|
-
<div class="content">${this.
|
|
36
|
+
<div class="content">${this._renderContent()}</div>
|
|
29
37
|
<button
|
|
30
38
|
id="button"
|
|
31
39
|
class="button focus-ring"
|
|
@@ -40,9 +48,9 @@ export class UmButtonWrapper extends LitElement {
|
|
|
40
48
|
</button>
|
|
41
49
|
`;
|
|
42
50
|
}
|
|
43
|
-
renderLink() {
|
|
51
|
+
#renderLink() {
|
|
44
52
|
return html `
|
|
45
|
-
<div class="content">${this.
|
|
53
|
+
<div class="content">${this._renderContent()}</div>
|
|
46
54
|
<a
|
|
47
55
|
id="link"
|
|
48
56
|
class="button"
|
|
@@ -60,11 +68,11 @@ export class UmButtonWrapper extends LitElement {
|
|
|
60
68
|
}
|
|
61
69
|
connectedCallback() {
|
|
62
70
|
super.connectedCallback();
|
|
63
|
-
this.addEventListener('focus', this
|
|
71
|
+
this.addEventListener('focus', this.#innerFocusHandler);
|
|
64
72
|
}
|
|
65
73
|
disconnectedCallback() {
|
|
66
74
|
super.disconnectedCallback();
|
|
67
|
-
this.removeEventListener('focus', this
|
|
75
|
+
this.removeEventListener('focus', this.#innerFocusHandler);
|
|
68
76
|
}
|
|
69
77
|
focus() {
|
|
70
78
|
this.buttonElement?.focus();
|
|
@@ -75,7 +83,7 @@ export class UmButtonWrapper extends LitElement {
|
|
|
75
83
|
getAriaLabel() {
|
|
76
84
|
return this.ariaLabel;
|
|
77
85
|
}
|
|
78
|
-
innerFocusHandler() {
|
|
86
|
+
#innerFocusHandler() {
|
|
79
87
|
const tabIndexAttributeValue = this.getAttribute('tabindex');
|
|
80
88
|
if (tabIndexAttributeValue !== '0') {
|
|
81
89
|
return;
|
|
@@ -92,11 +100,11 @@ export class UmButtonWrapper extends LitElement {
|
|
|
92
100
|
return;
|
|
93
101
|
}
|
|
94
102
|
if (!event.pointerType) {
|
|
95
|
-
this.
|
|
103
|
+
this._ripple.createRipple();
|
|
96
104
|
}
|
|
97
|
-
this.
|
|
105
|
+
this._handleClick(event);
|
|
98
106
|
}
|
|
99
|
-
|
|
107
|
+
_handleClick(_) {
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
__decorate([
|
|
@@ -119,5 +127,5 @@ __decorate([
|
|
|
119
127
|
], UmButtonWrapper.prototype, "buttonElement", void 0);
|
|
120
128
|
__decorate([
|
|
121
129
|
query('u-ripple')
|
|
122
|
-
], UmButtonWrapper.prototype, "
|
|
130
|
+
], UmButtonWrapper.prototype, "_ripple", void 0);
|
|
123
131
|
//# sourceMappingURL=button-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-wrapper.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAsB,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"button-wrapper.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { UmRipple } from '../ripple/ripple.js';\nimport { styles as baseStyles } from './base.styles.js';\nimport { styles } from './button-wrapper.styles';\nimport { redispatchEvent } from './events/redispatch-event.js';\n\nimport '../elevation/elevation.js';\nimport '../ripple/ripple.js';\n\nexport abstract class UmButtonWrapper extends LitElement {\n static override styles: CSSResultGroup = [baseStyles, styles];\n\n /**\n * Whether the button is disabled or not.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @state() renderRipple = true;\n\n /**\n * The URL that the link button points to.\n */\n @property() href: string | undefined;\n\n /**\n * Where to display the linked `href` URL for a link button. Common options\n * include `_blank` to open in a new tab.\n */\n @property() target: string | undefined;\n\n @property() name: string | undefined;\n\n @query('.button') readonly buttonElement!: HTMLElement;\n @query('u-ripple') private readonly _ripple!: UmRipple;\n\n protected innerRole: string | null = null;\n\n get pathname(): string {\n return (this.buttonElement as HTMLAnchorElement)?.pathname;\n }\n\n protected override render(): HTMLTemplateResult {\n const contents = typeof this.href === 'string'\n ? this.#renderLink()\n : this.#renderButton();\n\n const containerClasses = classMap(this._getContainerClasses());\n\n return html`<div class=\"container ${containerClasses}\" part=\"container\"> ${contents}</div>`;\n }\n\n protected _getContainerClasses(): Record<string, boolean> {\n return { disabled: this.disabled };\n }\n\n #renderButton() {\n return html`\n <div class=\"content\">${this._renderContent()}</div>\n <button\n id=\"button\"\n class=\"button focus-ring\"\n ?disabled=${this.disabled}\n aria-label=${this.getAriaLabel() || nothing}\n aria-labelledby=\"${this.getAriaLabel() ? nothing : 'text'}\"\n .role=${this.innerRole}\n type=\"button\"\n @click=${this.#innerClickHandler}>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n <u-elevation></u-elevation>\n </button>\n `;\n }\n\n #renderLink() {\n return html`\n <div class=\"content\">${this._renderContent()}</div>\n <a\n id=\"link\"\n class=\"button\"\n href=${this.disabled ? nothing : this.href}\n aria-disabled=${this.disabled || nothing}\n aria-label=${this.ariaLabel || nothing}\n aria-labelledby=\"${this.ariaLabel ? nothing : 'text'}\"\n .role=${this.innerRole}\n target=${this.target || nothing}\n @click=${this.#innerClickHandler}>\n <u-elevation></u-elevation>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n </a>\n `;\n }\n\n protected abstract _renderContent(): HTMLTemplateResult;\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener('focus', this.#innerFocusHandler);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener('focus', this.#innerFocusHandler);\n }\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n this.buttonElement?.blur();\n }\n\n protected getAriaLabel(): string | null {\n return this.ariaLabel;\n }\n\n #innerFocusHandler(): void {\n const tabIndexAttributeValue = this.getAttribute('tabindex');\n\n if (tabIndexAttributeValue !== '0') {\n return;\n }\n\n this.removeAttribute('tabindex');\n setTimeout(() => this.buttonElement?.focus());\n }\n\n #innerClickHandler(event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n const preventDefault = !redispatchEvent(this, event);\n\n if (preventDefault) {\n return;\n }\n\n if (!(event as PointerEvent).pointerType) {\n this._ripple.createRipple();\n }\n\n this._handleClick(event);\n }\n\n protected _handleClick(_: UIEvent): void {\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-wrapper.styles.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"button-wrapper.styles.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA8DlB,CAAC"}
|
|
@@ -4,19 +4,21 @@ export const styles = css `
|
|
|
4
4
|
--_color-primary: var(--u-color-primary, rgb(103, 80, 164));
|
|
5
5
|
-webkit-tap-highlight-color: transparent;
|
|
6
6
|
--u-elevation-level: 0;
|
|
7
|
-
position: relative;
|
|
8
7
|
display: inline-block;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.container {
|
|
11
|
+
position: relative;
|
|
9
12
|
font-family: var(--u-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
|
|
10
13
|
appearance: none !important;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
.disabled {
|
|
14
17
|
--u-elevation-level: 0 !important;
|
|
15
|
-
background-color: var(--u-button-disabled-bg-color, color-mix(in srgb, var(--u-color-on-surface, rgb(29, 27, 32)) var(--u-button-disabled-background-opacity,
|
|
18
|
+
background-color: var(--u-button-disabled-bg-color, color-mix(in srgb, var(--u-color-on-surface, rgb(29, 27, 32)) var(--u-button-disabled-background-opacity, 10%), transparent)) !important;
|
|
16
19
|
color: var(--u-button-disabled-text-color, color-mix(in srgb, var(--u-color-on-surface, rgb(29, 27, 32)) var(--u-button-disabled-opacity, 38%), transparent)) !important;
|
|
17
20
|
}
|
|
18
|
-
|
|
19
|
-
:host([disabled]) .button {
|
|
21
|
+
.disabled .button {
|
|
20
22
|
cursor: default;
|
|
21
23
|
}
|
|
22
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-wrapper.styles.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"button-wrapper.styles.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --_color-primary: var(--u-color-primary, rgb(103, 80, 164));\n -webkit-tap-highlight-color: transparent;\n --u-elevation-level: 0;\n display: inline-block;\n }\n\n .container {\n position: relative;\n font-family: var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n appearance: none !important;\n }\n\n .disabled {\n --u-elevation-level: 0 !important;\n background-color: var(--u-button-disabled-bg-color, color-mix(in srgb, var(--u-color-on-surface, rgb(29, 27, 32)) var(--u-button-disabled-background-opacity, 10%), transparent)) !important;\n color: var(--u-button-disabled-text-color, color-mix(in srgb, var(--u-color-on-surface, rgb(29, 27, 32)) var(--u-button-disabled-opacity, 38%), transparent)) !important;\n }\n .disabled .button {\n cursor: default;\n }\n\n * {\n color: inherit;\n }\n\n u-elevation {\n z-index: -1;\n }\n\n .button {\n cursor: pointer;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n width: 100%;\n height: 100%;\n font-family: inherit;\n border-radius: inherit;\n color: inherit;\n border: none;\n margin: 0;\n padding: 0;\n text-align: center;\n white-space: nowrap;\n background: transparent;\n user-select: none;\n text-decoration: none;\n outline: 0;\n z-index: 0;\n }\n\n .content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n`;\n"]}
|
package/tab-bar/tab.d.ts
CHANGED
|
@@ -9,10 +9,10 @@ export declare class UmTab extends UmButtonWrapper {
|
|
|
9
9
|
set active(active: boolean);
|
|
10
10
|
hasIcon: boolean;
|
|
11
11
|
constructor();
|
|
12
|
-
protected
|
|
12
|
+
protected _renderContent(): HTMLTemplateResult;
|
|
13
13
|
connectedCallback(): void;
|
|
14
14
|
disconnectedCallback(): void;
|
|
15
|
-
protected
|
|
15
|
+
protected _handleClick(_: UIEvent): void;
|
|
16
16
|
}
|
|
17
17
|
declare global {
|
|
18
18
|
interface HTMLElementTagNameMap {
|
package/tab-bar/tab.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,qBACa,KAAM,SAAQ,eAAe;;IACxC,OAAgB,MAAM,iCAAoC;IAE1D,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAQ7B,IACI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAWzB;IAE4B,OAAO,UAAS;;cAO1B,
|
|
1
|
+
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,qBACa,KAAM,SAAQ,eAAe;;IACxC,OAAgB,MAAM,iCAAoC;IAE1D,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAQ7B,IACI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAWzB;IAE4B,OAAO,UAAS;;cAO1B,cAAc,IAAI,kBAAkB;IAe9C,iBAAiB;IAMjB,oBAAoB;cAiBV,YAAY,CAAC,CAAC,EAAE,OAAO;CAuB3C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
|
package/tab-bar/tab.js
CHANGED
|
@@ -31,7 +31,7 @@ let UmTab = class UmTab extends UmButtonWrapper {
|
|
|
31
31
|
this.hasIcon = false;
|
|
32
32
|
this.#resizeObserver.observe(this);
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
_renderContent() {
|
|
35
35
|
const classes = { active: this.active, ['has-icon']: this.hasIcon };
|
|
36
36
|
return html `
|
|
37
37
|
<div class="tab-content ${classMap(classes)}">
|
|
@@ -61,8 +61,8 @@ let UmTab = class UmTab extends UmButtonWrapper {
|
|
|
61
61
|
this._bar._setScrollIndicatorsActive();
|
|
62
62
|
this._bar = null;
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
super.
|
|
64
|
+
_handleClick(_) {
|
|
65
|
+
super._handleClick(_);
|
|
66
66
|
if (!this._bar) {
|
|
67
67
|
return;
|
|
68
68
|
}
|
package/tab-bar/tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.js","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGlC,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,eAAe;aACxB,WAAM,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnC,CAAoC;IAIjD,eAAe,CAIrB;IAGH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC/B,CAAC;IAID;QACE,KAAK,EAAE,CAAC;QA7BV,SAAI,GAAoB,IAAI,CAAC;QAEpB,oBAAe,GAAmB,IAAI,cAAc,CAAC,GAAG,EAAE;YACjE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAoB0B,YAAO,GAAG,KAAK,CAAC;QAI3C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEkB,
|
|
1
|
+
{"version":3,"file":"tab.js","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGlC,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,eAAe;aACxB,WAAM,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnC,CAAoC;IAIjD,eAAe,CAIrB;IAGH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC/B,CAAC;IAID;QACE,KAAK,EAAE,CAAC;QA7BV,SAAI,GAAoB,IAAI,CAAC;QAEpB,oBAAe,GAAmB,IAAI,cAAc,CAAC,GAAG,EAAE;YACjE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAoB0B,YAAO,GAAG,KAAK,CAAC;QAI3C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEkB,cAAc;QAC/B,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAEpE,OAAO,IAAI,CAAA;gCACiB,QAAQ,CAAC,OAAO,CAAC;;0CAEP,IAAI,CAAC,eAAe;;;;;;KAMzD,CAAC;IACJ,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEkB,YAAY,CAAC,CAAU;QACxC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAC9C,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC3D,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,eAAe,CAAC,CAAQ;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC;;AApFD;IADC,KAAK,EAAE;mCAGP;AAe4B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sCAAiB;AA7BlC,KAAK;IADjB,aAAa,CAAC,OAAO,CAAC;GACV,KAAK,CAiGjB","sourcesContent":["import { html, HTMLTemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { UmButtonWrapper } from '../shared/button-wrapper.js';\nimport { UmTabBar } from './tab-bar.js';\nimport { styles } from './tab.styles.js';\n\n@customElement('u-tab')\nexport class UmTab extends UmButtonWrapper {\n static override styles = [UmButtonWrapper.styles, styles];\n\n _bar: UmTabBar | null = null;\n\n readonly #resizeObserver: ResizeObserver = new ResizeObserver(() => {\n if (this.active) {\n this._bar?._updateTabIndicator();\n }\n });\n\n @state()\n get active(): boolean {\n return this._bar?.activeTab === this;\n }\n\n set active(active: boolean) {\n if (!this._bar) {\n return;\n }\n\n if (active) {\n this._bar.activeTab = this;\n return;\n }\n\n this._bar.activeTabIndex = 0;\n }\n\n @property({ type: Boolean }) hasIcon = false;\n\n constructor() {\n super();\n this.#resizeObserver.observe(this);\n }\n\n protected override _renderContent(): HTMLTemplateResult {\n const classes = { active: this.active, ['has-icon']: this.hasIcon };\n\n return html`\n <div class=\"tab-content ${classMap(classes)}\">\n <div class=\"icon\" part=\"icon\">\n <slot name=\"icon\" @slotchange=${this.#iconSlotChange}></slot>\n </div>\n <div class=\"label\" part=\"label\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this._bar?._updateTabIndicator();\n this._bar?._setScrollIndicatorsActive();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n if (!this._bar) {\n return;\n }\n\n if (this._bar.activeTab === this) {\n this._bar.activeTabIndex = 0;\n }\n\n this._bar._updateTabIndicator();\n this._bar._setScrollIndicatorsActive();\n\n this._bar = null;\n }\n\n protected override _handleClick(_: UIEvent) {\n super._handleClick(_);\n\n if (!this._bar) {\n return;\n }\n\n const changePrevented = !this._bar.dispatchEvent(\n new Event('changing', { bubbles: true, cancelable: true }),\n );\n\n if (changePrevented) {\n return;\n }\n\n this._bar.activeTab = this;\n this._bar.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #iconSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.hasIcon = !!slot.assignedElements({ flatten: true }).length;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-tab': UmTab;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.styles.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"tab.styles.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAwDlB,CAAC"}
|
package/tab-bar/tab.styles.js
CHANGED
|
@@ -5,6 +5,9 @@ export const styles = css `
|
|
|
5
5
|
--_tab-height: var(--u-tab-height, 48px);
|
|
6
6
|
display: block;
|
|
7
7
|
flex: 0.5;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.container {
|
|
8
11
|
padding-inline: var(--u-tab-padding, 16px);
|
|
9
12
|
}
|
|
10
13
|
|
|
@@ -22,7 +25,7 @@ export const styles = css `
|
|
|
22
25
|
--_tab-height: var(--u-tab-with-icon-height, 64px);
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
.force-focus-ring .button,
|
|
26
29
|
.button:focus-visible {
|
|
27
30
|
border-radius: var(--u-spacing-small, 8px);
|
|
28
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.styles.js","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"tab.styles.js","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --u-focus-ring-outline-offset: -4px;\n --_tab-height: var(--u-tab-height, 48px);\n display: block;\n flex: 0.5;\n }\n\n .container {\n padding-inline: var(--u-tab-padding, 16px);\n }\n\n .tab-content {\n display: flex;\n flex-direction: var(--_tab-content-direction, column);\n align-items: center;\n justify-content: center;\n max-width: 100%;\n height: var(--_tab-height);\n gap: var(--_tab-content-gap, 0);\n }\n\n .has-icon {\n --_tab-height: var(--u-tab-with-icon-height, 64px);\n }\n\n .force-focus-ring .button,\n .button:focus-visible {\n border-radius: var(--u-spacing-small, 8px);\n }\n\n .label {\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-tab-label-line-height, var(--u-title-s-line-height, 1.25rem));\n font-size: var(--u-tab-label-font-size, var(--u-title-s-font-size, 0.875rem));\n letter-spacing: var(--u-tab-label-letter-spacing, var(--u-title-s-letter-spacing, 0.0071428571rem));\n font-weight: var(--u-tab-label-font-weight, var(--u-title-s-font-weight, var(--u-font-weight-medium, 500)));\n color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));\n }\n\n .active .icon,\n .active .label {\n color: var(--_active-label-color);\n }\n`;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeahead.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"typeahead.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAKzC,OAAO,iBAAiB,CAAC;AACzB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gCAAgC,CAAC;AAExC,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,qBACa,WAAY,SAAQ,UAAU;;IACzC,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC,OAAgB,MAAM,0BAAU;IAsBvB,OAAO,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAE1E;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,WAAW,GAAG,cAAc,CAAC,GAAG,SAAS,CAAC;IAE5F;;OAEG;IACwC,QAAQ,SAAO;IAE1D;;OAEG;IACwC,KAAK,SAAM;IAEtD;;;;OAIG;IACwC,SAAS,SAAK;IAEzD;;;;OAIG;IAEH,WAAW,UAAS;IAEpB;;OAEG;IACyC,QAAQ,UAAS;IAE7D;;OAEG;IAC0B,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAS;IAEzE;;OAEG;IACmC,UAAU,UAAS;IAEY,SAAS,UAAS;IAE1D,WAAW,EAAE,UAAU,GAAG,OAAO,CAAc;IAE5E,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAOnB;IAEQ,KAAK;IAId,KAAK;IASL;;OAEG;IACH,IACI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAMrC;IAEgB,KAAK,EAAG,MAAM,CAAC;IACP,SAAS,EAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,UAAU,IAAI,UAAU,EAAE,CAE7B;;IAOQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBhF,iBAAiB;IAWjB,oBAAoB;cA2GV,MAAM,IAAI,kBAAkB;CAsKhD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,WAAW,CAAC;KAC5B;CACF"}
|
package/typeahead/typeahead.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html, LitElement
|
|
2
|
+
import { html, LitElement } from 'lit';
|
|
3
3
|
import { customElement, property, query, queryAll, state } from 'lit/decorators.js';
|
|
4
4
|
import { MenuFieldNavigationController } from '../shared/menu-field/menu-field-navigation-controller.js';
|
|
5
5
|
import { normalizeText } from '../shared/normalize-text.js';
|
|
@@ -248,12 +248,7 @@ let UmTypeahead = class UmTypeahead extends LitElement {
|
|
|
248
248
|
}
|
|
249
249
|
#renderTemplate(value) {
|
|
250
250
|
const content = this.template(this.#termNormalized, value);
|
|
251
|
-
|
|
252
|
-
return html `${content}`;
|
|
253
|
-
}
|
|
254
|
-
const container = document.createElement('div');
|
|
255
|
-
render(content, container);
|
|
256
|
-
return html `${container}`;
|
|
251
|
+
return html `${content}`;
|
|
257
252
|
}
|
|
258
253
|
async #updateResults(lazy = false) {
|
|
259
254
|
const term = this.#getTargetValue();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeahead.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement, render, TemplateResult } from 'lit';\nimport { customElement, property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { UmMenuItem } from '../menu/menu-item.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { MenuFieldNavigationController } from '../shared/menu-field/menu-field-navigation-controller.js';\nimport { normalizeText } from '../shared/normalize-text.js';\nimport { styles } from './typeahead.styles.js';\n\nimport '../menu/menu.js';\nimport '../menu/menu-item.js';\nimport './highlight.js';\nimport './typeahead-template-render.js';\n\nexport interface Data {\n label: string;\n value: any;\n}\n\n@customElement('u-typeahead')\nexport class UmTypeahead extends LitElement {\n static readonly formAssociated = true;\n\n static override styles = styles;\n\n #targetId: string | undefined;\n\n #connected = false;\n #target:\n | (HTMLElement & {\n autocomplete: 'on' | 'off' | string | null;\n input?: HTMLInputElement;\n _container?: HTMLElement;\n value: string;\n })\n | null = null;\n #documentMutationObserver: MutationObserver | null = null;\n #targetResizeObserver: ResizeObserver | null = null;\n readonly #navigationController = new MenuFieldNavigationController(this);\n #termNormalized = '';\n #debounceTimeout: number | null = null;\n #value: any;\n readonly #elementInternals: ElementInternals;\n\n // @ts-ignore\n @state() private results: Data[];\n\n /**\n * The datasource of the typeahead. Accepts an `Array` or a `Promise<[]>`.\n */\n @state() source: (any[] | ((term: string) => Promise<any[]>)) | undefined;\n\n /**\n * A function return a string based on a result from the `source`. Useful when the source results are objects.\n */\n formatter: ((value: any) => string) | undefined;\n\n /**\n * A string representing an HTML to be rendered inside the menu item. If set, it will replace the `u-highlight`.\n *\n * _Note:_ Subject to signature change\n */\n template: ((term: string, value: any) => string | HTMLElement | TemplateResult) | undefined;\n\n /**\n * The time in milliseconds before triggering an update in the results.\n */\n @property({ type: Number, reflect: true }) debounce = 300;\n\n /**\n * The number of suggestions to show\n */\n @property({ type: Number, reflect: true }) limit = 10;\n\n /**\n * How many characters must be typed before show suggestions\n *\n * _Note:_ Not used when the source is a `Promise`\n */\n @property({ type: Number, reflect: true }) minLength = 2;\n\n /**\n * Whether the menu will be show when the target get focus.\n *\n * _Note:_ The `minLength` will still be applied\n */\n @property({ type: Boolean, attribute: 'open-on-focus', reflect: true })\n openOnFocus = false;\n\n /**\n * If `true`, model values will not be restricted only to items selected from the menu.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * The value for the `autocomplete` attribute for the target element.\n */\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string = 'off';\n\n /**\n * The value for the `spellcheck` attribute for the target element.\n */\n @property({ reflect: true }) override spellcheck = false;\n\n @property({ type: Boolean, attribute: 'fit-target', reflect: true }) fitTarget = false;\n\n @property({ reflect: true }) positioning: 'relative' | 'fixed' = 'relative';\n\n get form(): HTMLFormElement | null {\n return this.#elementInternals.form;\n }\n\n /**\n * Gets or sets the current value of the typeahead.\n */\n get value(): any {\n return this.#value;\n }\n\n set value(value: any) {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n\n if (this.#connected) {\n this.#setValueOnTarget();\n }\n }\n\n override focus() {\n this.#target?.focus();\n }\n\n clear() {\n if (!this.#target) {\n return;\n }\n\n this.#termNormalized = '';\n this.#setTargetValue('');\n }\n\n /**\n * The id of the target element to attach the typeahead.\n */\n @property({ reflect: true, attribute: 'target-id' })\n get targetId(): string | undefined {\n return this.#targetId;\n }\n\n set targetId(value: string | undefined) {\n this.#targetId = value;\n\n if (this.#connected) {\n this.#attach();\n }\n }\n\n @query('u-menu') _menu!: UmMenu;\n @queryAll('u-menu-item') menuItems!: NodeListOf<UmMenuItem>;\n\n get _menuItems(): UmMenuItem[] {\n return Array.from(this.menuItems);\n }\n\n constructor() {\n super();\n this.#elementInternals = this.attachInternals();\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (!this.#target) {\n return;\n }\n\n if (name === 'autocomplete') {\n this.#target.autocomplete = value;\n }\n\n if (name === 'spellcheck') {\n this.#target.spellcheck = value === 'true';\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#connected = true;\n this.#attach();\n this.#documentMutationObserver = new MutationObserver(() => this.#attach());\n this.#documentMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#connected = false;\n this.#detach();\n this.#documentMutationObserver!.disconnect();\n this.#documentMutationObserver = null;\n }\n\n #attach() {\n if (!this.targetId) {\n this.#detach();\n this.#target = null;\n this.#setMenuAnchor();\n return;\n }\n\n const newTarget = document.getElementById(this.targetId) as HTMLInputElement;\n\n if (newTarget === this.#target) {\n return;\n }\n\n this.#detach();\n\n if (!newTarget) {\n return;\n }\n\n this.#target = newTarget;\n this.#setMenuAnchor();\n newTarget.role = 'combobox';\n newTarget.autocomplete = this.autocomplete as any;\n newTarget.spellcheck = this.spellcheck;\n newTarget.autocapitalize = 'off';\n\n newTarget.addEventListener('click', this.#handleClick);\n newTarget.addEventListener('input', this.#handleInput);\n this.#navigationController.attach(newTarget);\n newTarget.addEventListener('focus', this.#handleFocus);\n this.#targetResizeObserver = new ResizeObserver(() => this.#setMenuWidthProperty());\n this.#targetResizeObserver.observe(newTarget);\n\n if (this.value) {\n this.#setValueOnTarget();\n }\n }\n\n #detach() {\n this.#target?.removeEventListener('click', this.#handleClick);\n this.#target?.removeEventListener('input', this.#handleInput);\n this.#navigationController.detach();\n this.#target?.removeEventListener('focus', this.#handleFocus);\n }\n\n #handleItemMouseDown(e: Event) {\n e.preventDefault();\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n }\n\n readonly #handleFocus = async () => {\n if (this.openOnFocus) {\n await this.#updateResults();\n }\n };\n\n readonly #handleInput = () => {\n if (this.#debounceTimeout) {\n clearTimeout(this.#debounceTimeout);\n }\n\n this.#setValueAndDispatchEvents(this.editable ? this.#getTargetValue() : null, true);\n\n this.#debounceTimeout = setTimeout(async () => await this.#updateResults(true), this.debounce);\n };\n\n #getItemClickHandler(data: Data) {\n return () => {\n const selectedEvent = new CustomEvent('selected', {\n cancelable: true,\n detail: data.value,\n });\n\n this.dispatchEvent(selectedEvent);\n\n if (selectedEvent.defaultPrevented) {\n return;\n }\n\n this.#setValueAndDispatchEvents(data.value);\n };\n }\n\n #setValueAndDispatchEvents(value: any, direct = false) {\n if (!direct) {\n this.value = value;\n } else {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n protected override render(): HTMLTemplateResult {\n if (!this.results?.length) {\n return html``;\n }\n\n setTimeout(() => {\n this.#setMenuAnchor();\n this._menu.open = true;\n this.#navigationController.focusMenu(this._menuItems[0], 0);\n });\n\n return html`\n <u-menu manualFocus manualClose anchor-corner=\"auto-start\" positioning=\"${this.positioning}\">\n ${this.results.map(result => {\n const content = this.template\n ? this.#renderTemplate(result.value)\n : html`\n <u-highlight .term=${this.#termNormalized} .result=${result.label}></u-highlight>\n `;\n\n return html`\n <u-menu-item\n @mousedown=${this.#handleItemMouseDown}\n @click=${this.#getItemClickHandler(result)}\n tabindex=\"-1\">\n ${content}\n </u-menu-item>\n `;\n })}\n </u-menu>\n `;\n }\n\n #renderTemplate(value: any): TemplateResult {\n const content = this.template!(this.#termNormalized, value);\n\n if (content instanceof HTMLElement || typeof content === 'string') {\n return html`${content}`;\n }\n\n const container = document.createElement('div');\n render(content, container);\n return html`${container}`;\n }\n\n async #updateResults(lazy = false) {\n const term = this.#getTargetValue();\n\n const termNormalized = normalizeText(term).toLowerCase();\n\n if (lazy && termNormalized === this.#termNormalized && this._menu?.open === true) {\n return;\n }\n\n this.#termNormalized = termNormalized;\n\n if (termNormalized.length < this.minLength) {\n this.results = [];\n return;\n }\n\n this.results = await this.#getData();\n this.results = this.results.slice(0, this.limit || this.results.length);\n }\n\n async #getData(): Promise<Data[]> {\n if (!this.source) {\n return [];\n }\n\n let values: any[];\n\n let filter = false;\n\n if (this.source instanceof Array) {\n values = this.source;\n filter = true;\n } else {\n const source = this.source as (term: string) => Promise<any[]>;\n values = await source(this.#termNormalized);\n }\n\n const result = values.map(source => ({\n label: this.formatter ? this.formatter(source) : source.toString(),\n value: source,\n }));\n\n if (!filter) {\n return result;\n }\n\n return result.filter(t => normalizeText(t.label).toLowerCase()\n .includes(this.#termNormalized));\n }\n\n #setValueOnTarget() {\n if (!this.#target) {\n return;\n }\n\n const textValue = this.#getTextValue();\n this.#termNormalized = normalizeText(textValue)?.toLowerCase();\n\n if (this.#target.tagName === 'U-TEXT-FIELD') {\n this.#target.value = textValue;\n return;\n }\n\n if (this.#target.input) {\n this.#target.input.value = textValue;\n return;\n }\n\n this.#target.value = textValue;\n }\n\n #getTargetValue(): string {\n return this.#target!.input?.value ?? this.#target!.value;\n }\n\n #setTargetValue(value: string): void {\n const targetInput = this.#target?.input ?? this.#target;\n\n if (targetInput) {\n targetInput.value = value;\n }\n }\n\n #setMenuAnchor() {\n if (!this._menu) {\n return;\n }\n\n this._menu.anchorElement = this.#getMenuAnchor();\n }\n\n #getMenuAnchor() {\n if (!this.#target) {\n return null;\n }\n\n if (this.#target.tagName === 'U-CHIP-FIELD') {\n return this.#target.input;\n }\n\n if (this.#target.tagName === 'U-SEARCH') {\n return this.#target.input;\n }\n\n if (this.#target.tagName === 'U-TEXT-FIELD') {\n return this.#target._container;\n }\n\n return this.#target;\n }\n\n #getTextValue(): string {\n if (!this.value) {\n return '';\n }\n\n return this.formatter ? this.formatter(this.value) : this.value;\n }\n\n #setMenuWidthProperty(): void {\n if (!this.fitTarget || !this.#target) {\n this.style.removeProperty('--_menu-width');\n return;\n }\n\n this.style.setProperty('--_menu-width', `${this.#target.clientWidth}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-typeahead': UmTypeahead;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"typeahead.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement, TemplateResult } from 'lit';\nimport { customElement, property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { UmMenuItem } from '../menu/menu-item.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { MenuFieldNavigationController } from '../shared/menu-field/menu-field-navigation-controller.js';\nimport { normalizeText } from '../shared/normalize-text.js';\nimport { styles } from './typeahead.styles.js';\n\nimport '../menu/menu.js';\nimport '../menu/menu-item.js';\nimport './highlight.js';\nimport './typeahead-template-render.js';\n\nexport interface Data {\n label: string;\n value: any;\n}\n\n@customElement('u-typeahead')\nexport class UmTypeahead extends LitElement {\n static readonly formAssociated = true;\n\n static override styles = styles;\n\n #targetId: string | undefined;\n\n #connected = false;\n #target:\n | (HTMLElement & {\n autocomplete: 'on' | 'off' | string | null;\n input?: HTMLInputElement;\n _container?: HTMLElement;\n value: string;\n })\n | null = null;\n #documentMutationObserver: MutationObserver | null = null;\n #targetResizeObserver: ResizeObserver | null = null;\n readonly #navigationController = new MenuFieldNavigationController(this);\n #termNormalized = '';\n #debounceTimeout: number | null = null;\n #value: any;\n readonly #elementInternals: ElementInternals;\n\n // @ts-ignore\n @state() private results: Data[];\n\n /**\n * The datasource of the typeahead. Accepts an `Array` or a `Promise<[]>`.\n */\n @state() source: (any[] | ((term: string) => Promise<any[]>)) | undefined;\n\n /**\n * A function return a string based on a result from the `source`. Useful when the source results are objects.\n */\n formatter: ((value: any) => string) | undefined;\n\n /**\n * A string representing an HTML to be rendered inside the menu item. If set, it will replace the `u-highlight`.\n *\n * _Note:_ Subject to signature change\n */\n template: ((term: string, value: any) => string | HTMLElement | TemplateResult) | undefined;\n\n /**\n * The time in milliseconds before triggering an update in the results.\n */\n @property({ type: Number, reflect: true }) debounce = 300;\n\n /**\n * The number of suggestions to show\n */\n @property({ type: Number, reflect: true }) limit = 10;\n\n /**\n * How many characters must be typed before show suggestions\n *\n * _Note:_ Not used when the source is a `Promise`\n */\n @property({ type: Number, reflect: true }) minLength = 2;\n\n /**\n * Whether the menu will be show when the target get focus.\n *\n * _Note:_ The `minLength` will still be applied\n */\n @property({ type: Boolean, attribute: 'open-on-focus', reflect: true })\n openOnFocus = false;\n\n /**\n * If `true`, model values will not be restricted only to items selected from the menu.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * The value for the `autocomplete` attribute for the target element.\n */\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string = 'off';\n\n /**\n * The value for the `spellcheck` attribute for the target element.\n */\n @property({ reflect: true }) override spellcheck = false;\n\n @property({ type: Boolean, attribute: 'fit-target', reflect: true }) fitTarget = false;\n\n @property({ reflect: true }) positioning: 'relative' | 'fixed' = 'relative';\n\n get form(): HTMLFormElement | null {\n return this.#elementInternals.form;\n }\n\n /**\n * Gets or sets the current value of the typeahead.\n */\n get value(): any {\n return this.#value;\n }\n\n set value(value: any) {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n\n if (this.#connected) {\n this.#setValueOnTarget();\n }\n }\n\n override focus() {\n this.#target?.focus();\n }\n\n clear() {\n if (!this.#target) {\n return;\n }\n\n this.#termNormalized = '';\n this.#setTargetValue('');\n }\n\n /**\n * The id of the target element to attach the typeahead.\n */\n @property({ reflect: true, attribute: 'target-id' })\n get targetId(): string | undefined {\n return this.#targetId;\n }\n\n set targetId(value: string | undefined) {\n this.#targetId = value;\n\n if (this.#connected) {\n this.#attach();\n }\n }\n\n @query('u-menu') _menu!: UmMenu;\n @queryAll('u-menu-item') menuItems!: NodeListOf<UmMenuItem>;\n\n get _menuItems(): UmMenuItem[] {\n return Array.from(this.menuItems);\n }\n\n constructor() {\n super();\n this.#elementInternals = this.attachInternals();\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (!this.#target) {\n return;\n }\n\n if (name === 'autocomplete') {\n this.#target.autocomplete = value;\n }\n\n if (name === 'spellcheck') {\n this.#target.spellcheck = value === 'true';\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#connected = true;\n this.#attach();\n this.#documentMutationObserver = new MutationObserver(() => this.#attach());\n this.#documentMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#connected = false;\n this.#detach();\n this.#documentMutationObserver!.disconnect();\n this.#documentMutationObserver = null;\n }\n\n #attach() {\n if (!this.targetId) {\n this.#detach();\n this.#target = null;\n this.#setMenuAnchor();\n return;\n }\n\n const newTarget = document.getElementById(this.targetId) as HTMLInputElement;\n\n if (newTarget === this.#target) {\n return;\n }\n\n this.#detach();\n\n if (!newTarget) {\n return;\n }\n\n this.#target = newTarget;\n this.#setMenuAnchor();\n newTarget.role = 'combobox';\n newTarget.autocomplete = this.autocomplete as any;\n newTarget.spellcheck = this.spellcheck;\n newTarget.autocapitalize = 'off';\n\n newTarget.addEventListener('click', this.#handleClick);\n newTarget.addEventListener('input', this.#handleInput);\n this.#navigationController.attach(newTarget);\n newTarget.addEventListener('focus', this.#handleFocus);\n this.#targetResizeObserver = new ResizeObserver(() => this.#setMenuWidthProperty());\n this.#targetResizeObserver.observe(newTarget);\n\n if (this.value) {\n this.#setValueOnTarget();\n }\n }\n\n #detach() {\n this.#target?.removeEventListener('click', this.#handleClick);\n this.#target?.removeEventListener('input', this.#handleInput);\n this.#navigationController.detach();\n this.#target?.removeEventListener('focus', this.#handleFocus);\n }\n\n #handleItemMouseDown(e: Event) {\n e.preventDefault();\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n }\n\n readonly #handleFocus = async () => {\n if (this.openOnFocus) {\n await this.#updateResults();\n }\n };\n\n readonly #handleInput = () => {\n if (this.#debounceTimeout) {\n clearTimeout(this.#debounceTimeout);\n }\n\n this.#setValueAndDispatchEvents(this.editable ? this.#getTargetValue() : null, true);\n\n this.#debounceTimeout = setTimeout(async () => await this.#updateResults(true), this.debounce);\n };\n\n #getItemClickHandler(data: Data) {\n return () => {\n const selectedEvent = new CustomEvent('selected', {\n cancelable: true,\n detail: data.value,\n });\n\n this.dispatchEvent(selectedEvent);\n\n if (selectedEvent.defaultPrevented) {\n return;\n }\n\n this.#setValueAndDispatchEvents(data.value);\n };\n }\n\n #setValueAndDispatchEvents(value: any, direct = false) {\n if (!direct) {\n this.value = value;\n } else {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n protected override render(): HTMLTemplateResult {\n if (!this.results?.length) {\n return html``;\n }\n\n setTimeout(() => {\n this.#setMenuAnchor();\n this._menu.open = true;\n this.#navigationController.focusMenu(this._menuItems[0], 0);\n });\n\n return html`\n <u-menu manualFocus manualClose anchor-corner=\"auto-start\" positioning=\"${this.positioning}\">\n ${this.results.map(result => {\n const content = this.template\n ? this.#renderTemplate(result.value)\n : html`\n <u-highlight .term=${this.#termNormalized} .result=${result.label}></u-highlight>\n `;\n\n return html`\n <u-menu-item\n @mousedown=${this.#handleItemMouseDown}\n @click=${this.#getItemClickHandler(result)}\n tabindex=\"-1\">\n ${content}\n </u-menu-item>\n `;\n })}\n </u-menu>\n `;\n }\n\n #renderTemplate(value: any): TemplateResult {\n const content = this.template!(this.#termNormalized, value);\n\n return html`${content}`;\n }\n\n async #updateResults(lazy = false) {\n const term = this.#getTargetValue();\n\n const termNormalized = normalizeText(term).toLowerCase();\n\n if (lazy && termNormalized === this.#termNormalized && this._menu?.open === true) {\n return;\n }\n\n this.#termNormalized = termNormalized;\n\n if (termNormalized.length < this.minLength) {\n this.results = [];\n return;\n }\n\n this.results = await this.#getData();\n this.results = this.results.slice(0, this.limit || this.results.length);\n }\n\n async #getData(): Promise<Data[]> {\n if (!this.source) {\n return [];\n }\n\n let values: any[];\n\n let filter = false;\n\n if (this.source instanceof Array) {\n values = this.source;\n filter = true;\n } else {\n const source = this.source as (term: string) => Promise<any[]>;\n values = await source(this.#termNormalized);\n }\n\n const result = values.map(source => ({\n label: this.formatter ? this.formatter(source) : source.toString(),\n value: source,\n }));\n\n if (!filter) {\n return result;\n }\n\n return result.filter(t => normalizeText(t.label).toLowerCase()\n .includes(this.#termNormalized));\n }\n\n #setValueOnTarget() {\n if (!this.#target) {\n return;\n }\n\n const textValue = this.#getTextValue();\n this.#termNormalized = normalizeText(textValue)?.toLowerCase();\n\n if (this.#target.tagName === 'U-TEXT-FIELD') {\n this.#target.value = textValue;\n return;\n }\n\n if (this.#target.input) {\n this.#target.input.value = textValue;\n return;\n }\n\n this.#target.value = textValue;\n }\n\n #getTargetValue(): string {\n return this.#target!.input?.value ?? this.#target!.value;\n }\n\n #setTargetValue(value: string): void {\n const targetInput = this.#target?.input ?? this.#target;\n\n if (targetInput) {\n targetInput.value = value;\n }\n }\n\n #setMenuAnchor() {\n if (!this._menu) {\n return;\n }\n\n this._menu.anchorElement = this.#getMenuAnchor();\n }\n\n #getMenuAnchor() {\n if (!this.#target) {\n return null;\n }\n\n if (this.#target.tagName === 'U-CHIP-FIELD') {\n return this.#target.input;\n }\n\n if (this.#target.tagName === 'U-SEARCH') {\n return this.#target.input;\n }\n\n if (this.#target.tagName === 'U-TEXT-FIELD') {\n return this.#target._container;\n }\n\n return this.#target;\n }\n\n #getTextValue(): string {\n if (!this.value) {\n return '';\n }\n\n return this.formatter ? this.formatter(this.value) : this.value;\n }\n\n #setMenuWidthProperty(): void {\n if (!this.fitTarget || !this.#target) {\n this.style.removeProperty('--_menu-width');\n return;\n }\n\n this.style.setProperty('--_menu-width', `${this.#target.clientWidth}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-typeahead': UmTypeahead;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeahead.styles.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"typeahead.styles.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAUlB,CAAC"}
|
|
@@ -2,15 +2,12 @@ import { css } from 'lit';
|
|
|
2
2
|
export const styles = css `
|
|
3
3
|
:host {
|
|
4
4
|
display: block;
|
|
5
|
+
--u-menu-item-label-font-weight: var(--u-typeahead-item-font-weight, var(--u-font-weight-regular, 400));
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
:host([fit-target]) u-menu::part(menu) {
|
|
8
9
|
width: var(--_menu-width);
|
|
9
10
|
max-width: none;
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
u-menu-item {
|
|
13
|
-
font-weight: var(--u-typeahead-item-font-weight, var(--u-font-weight-regular, 400));
|
|
14
|
-
}
|
|
15
12
|
`;
|
|
16
13
|
//# sourceMappingURL=typeahead.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeahead.styles.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"typeahead.styles.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;CAUzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n display: block;\n --u-menu-item-label-font-weight: var(--u-typeahead-item-font-weight, var(--u-font-weight-regular, 400));\n }\n\n :host([fit-target]) u-menu::part(menu) {\n width: var(--_menu-width);\n max-width: none;\n }\n`;\n"]}
|