@api-client/ui 0.5.23 → 0.5.25
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/.cursor/rules/lit-best-practices.mdc +12 -1
- package/.github/instructions/lit-best-practices.instructions.md +2 -0
- package/build/src/md/dropdown-list/internals/UiDropdownList.d.ts.map +1 -1
- package/build/src/md/dropdown-list/internals/UiDropdownList.js +4 -3
- package/build/src/md/dropdown-list/internals/UiDropdownList.js.map +1 -1
- package/build/src/md/input/Input.d.ts +8 -4
- package/build/src/md/input/Input.d.ts.map +1 -1
- package/build/src/md/input/Input.js +8 -36
- package/build/src/md/input/Input.js.map +1 -1
- package/build/src/md/list/internals/List.d.ts +3 -1
- package/build/src/md/list/internals/List.d.ts.map +1 -1
- package/build/src/md/list/internals/List.js +10 -5
- package/build/src/md/list/internals/List.js.map +1 -1
- package/build/src/md/menu/internal/Menu.d.ts +8 -7
- package/build/src/md/menu/internal/Menu.d.ts.map +1 -1
- package/build/src/md/menu/internal/Menu.js +39 -29
- package/build/src/md/menu/internal/Menu.js.map +1 -1
- package/build/src/md/menu/internal/Menu.styles.d.ts.map +1 -1
- package/build/src/md/menu/internal/Menu.styles.js +66 -1
- package/build/src/md/menu/internal/Menu.styles.js.map +1 -1
- package/build/src/md/select/index.d.ts +4 -0
- package/build/src/md/select/index.d.ts.map +1 -0
- package/build/src/md/select/index.js +3 -0
- package/build/src/md/select/index.js.map +1 -0
- package/build/src/md/select/internals/Option.d.ts +125 -0
- package/build/src/md/select/internals/Option.d.ts.map +1 -0
- package/build/src/md/select/internals/Option.js +242 -0
- package/build/src/md/select/internals/Option.js.map +1 -0
- package/build/src/md/select/internals/Option.styles.d.ts +3 -0
- package/build/src/md/select/internals/Option.styles.d.ts.map +1 -0
- package/build/src/md/select/internals/Option.styles.js +139 -0
- package/build/src/md/select/internals/Option.styles.js.map +1 -0
- package/build/src/md/select/internals/Select.d.ts +250 -0
- package/build/src/md/select/internals/Select.d.ts.map +1 -0
- package/build/src/md/select/internals/Select.js +606 -0
- package/build/src/md/select/internals/Select.js.map +1 -0
- package/build/src/md/select/internals/Select.styles.d.ts +3 -0
- package/build/src/md/select/internals/Select.styles.d.ts.map +1 -0
- package/build/src/md/select/internals/Select.styles.js +22 -0
- package/build/src/md/select/internals/Select.styles.js.map +1 -0
- package/build/src/md/select/ui-option.d.ts +12 -0
- package/build/src/md/select/ui-option.d.ts.map +1 -0
- package/build/src/md/select/ui-option.js +29 -0
- package/build/src/md/select/ui-option.js.map +1 -0
- package/build/src/md/select/ui-select.d.ts +12 -0
- package/build/src/md/select/ui-select.d.ts.map +1 -0
- package/build/src/md/select/ui-select.js +27 -0
- package/build/src/md/select/ui-select.js.map +1 -0
- package/build/src/md/text-field/internals/TextField.d.ts.map +1 -1
- package/build/src/md/text-field/internals/TextField.js +1 -0
- package/build/src/md/text-field/internals/TextField.js.map +1 -1
- package/demo/md/index.html +2 -0
- package/demo/md/inputs/input.ts +4 -0
- package/demo/md/select/index.html +16 -0
- package/demo/md/select/index.ts +202 -0
- package/package.json +1 -1
- package/src/md/dropdown-list/internals/UiDropdownList.ts +4 -3
- package/src/md/input/Input.ts +8 -37
- package/src/md/list/internals/List.ts +13 -6
- package/src/md/menu/internal/Menu.styles.ts +66 -1
- package/src/md/menu/internal/Menu.ts +41 -18
- package/src/md/select/index.ts +3 -0
- package/src/md/select/internals/Option.styles.ts +139 -0
- package/src/md/select/internals/Option.ts +210 -0
- package/src/md/select/internals/Select.styles.ts +22 -0
- package/src/md/select/internals/Select.ts +534 -0
- package/src/md/select/ui-option.ts +18 -0
- package/src/md/select/ui-select.ts +17 -0
- package/src/md/text-field/internals/TextField.ts +1 -0
- package/test/md/menu/SubMenu.test.ts +2 -3
- package/test/md/select/Select.test.ts +667 -0
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
globs: src/elements/**,src/md/**,src/styles/**,demo/**
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
You are an expert developer in web components using the Lit library and Material Design version 3, focusing on best practices, accessibility, and responsive design.
|
|
2
7
|
|
|
3
8
|
Key Principles
|
|
@@ -54,7 +59,9 @@ Error handling
|
|
|
54
59
|
Naming Convention
|
|
55
60
|
|
|
56
61
|
- Follow web authoring standards as closely as possible.
|
|
57
|
-
- Minimize the
|
|
62
|
+
- Minimize the use of "-" in attribute and event names
|
|
63
|
+
- Use camelCase for properties and methods.
|
|
64
|
+
- Do not prefix private or protected properties and methods with an underscore. Use the typescript `private` and `protected` keywords to indicate visibility.
|
|
58
65
|
|
|
59
66
|
Testing
|
|
60
67
|
|
|
@@ -62,10 +69,14 @@ Testing
|
|
|
62
69
|
- Always add accessibility tests.
|
|
63
70
|
- Create fixtures for different states of a component.
|
|
64
71
|
- To run tests for a specific file, use the `--files` option in the test command. For example:
|
|
72
|
+
|
|
65
73
|
```bash
|
|
66
74
|
npm test -- --files=".tmp/test/**/[test file name].test.js"
|
|
67
75
|
```
|
|
68
76
|
|
|
77
|
+
- Prefer the Assert API over the Expect API for assertions. The Assert API is more performant and provides better error messages.
|
|
78
|
+
- When updating an element's property, await for the update to complete using `await element.updateComplete` before making assertions. This ensures that the component has fully rendered before checking its state.
|
|
79
|
+
|
|
69
80
|
Component Demoing
|
|
70
81
|
|
|
71
82
|
- Always produce a demo page under the demo/ directory.
|
|
@@ -70,9 +70,11 @@ You are an expert developer in web components using the Lit library and Material
|
|
|
70
70
|
- Always add accessibility tests.
|
|
71
71
|
- Create fixtures for different states of a component.
|
|
72
72
|
- To run tests for a specific file, use the `--files` option in the test command. For example:
|
|
73
|
+
|
|
73
74
|
```bash
|
|
74
75
|
npm test -- --files=".tmp/test/**/[test file name].test.js"
|
|
75
76
|
```
|
|
77
|
+
|
|
76
78
|
- Prefer the Assert API over the Expect API for assertions. The Assert API is more performant and provides better error messages.
|
|
77
79
|
- When updating an element's property, await for the update to complete using `await element.updateComplete` before making assertions. This ensures that the component has fully rendered before checking its state.
|
|
78
80
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiDropdownList.d.ts","sourceRoot":"","sources":["../../../../../src/md/dropdown-list/internals/UiDropdownList.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGtE,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAmB,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAKtH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IAEpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,EAAE,CAAA;IAG3C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,WAAW,EAAE,CAAA;IAEnC,SAAS,CAAC,QAAQ,CAAC,SAAS,SAAkC;IAE9D,SAAS,CAAC,QAAQ,CAAC,MAAM,SAA+B;IAEjE;;;OAGG;IACyC,QAAQ,CAAC,IAAI,UAAQ;IAEjE;;;;;;;;OAQG;IACwC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAEhG;;;;;;;;OAQG;IACwC,QAAQ,CAAC,eAAe,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAEpG;;;;;OAKG;IACyC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IAEnF;;;OAGG;IAC0B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAA;IAE9E;;;;OAIG;IAC0B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAA;IAE5E;;;;OAIG;IAC0B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IAErE;;OAEG;IACH,SAAS,KAAK,OAAO,IAAI,WAAW,GAAG,IAAI,CAO1C;IAED;;OAEG;IACH,SAAS,KAAK,QAAQ,IAAI,WAAW,GAAG,IAAI,CAO3C;IAEQ,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAA;;IAS5D,iBAAiB,IAAI,IAAI;IAUzB,oBAAoB,IAAI,IAAI;IAOrC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;cAO1B,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO1C,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS1D,SAAS,CAAC,cAAc,IAAI,IAAI;IAIhC,SAAS,CAAC,cAAc,IAAI,IAAI;IAQhC,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAUpD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAWnD,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAKrC,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAQvD,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAevD,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIpD,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAK7C;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAepC,SAAS,CAAC,aAAa,IAAI,IAAI;IAM/B,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAWtC,SAAS,CAAC,YAAY,IAAI,IAAI;IAS9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,CAAA;IAE7B;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAsBhC,SAAS,CAAC,YAAY,IAAI,IAAI;IAe9B,SAAS,CAAC,YAAY,IAAI,IAAI;IAgB9B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"UiDropdownList.d.ts","sourceRoot":"","sources":["../../../../../src/md/dropdown-list/internals/UiDropdownList.ts"],"names":[],"mappings":"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"}
|
|
@@ -413,9 +413,10 @@ let UiDropdownList = (() => {
|
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
activate(e) {
|
|
416
|
-
if (e.defaultPrevented) {
|
|
417
|
-
|
|
418
|
-
|
|
416
|
+
// if (e.defaultPrevented) {
|
|
417
|
+
// We now cancel the event in the menu list
|
|
418
|
+
// return
|
|
419
|
+
// }
|
|
419
420
|
const path = e.composedPath();
|
|
420
421
|
let item;
|
|
421
422
|
while (!item) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiDropdownList.js","sourceRoot":"","sources":["../../../../../src/md/dropdown-list/internals/UiDropdownList.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomString } from '@api-client/core/lib/math/Random.js'\nimport { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { positionOverlay, type HorizontalAlignment, type VerticalAlignment } from '../../../lib/ElementPositioning.js'\nimport * as ScrollHelper from '../../../lib/ScrollHelper.js'\n\nconst itemRole = ['menuitem', 'menuitemcheckbox', 'menuitemradio']\n\nexport interface UiDropdownListSelection {\n item: HTMLElement\n}\n\n/**\n * An overlay list rendered over a button.\n *\n * Examples:\n *\n * <ui-dropdown-list>\n * <ui-button color=\"filled\">Click me</ui-button>\n * <ui-list slot=\"dropdown\" role=\"menu\">\n * <ui-list-item role=\"menuitem\">Item 1</ui-list-item>\n * <ui-list-item role=\"menuitem\">Item 2</ui-list-item>\n * </ui-list>\n * </ui-dropdown-list>\n *\n * @slot - The default slot for the dropdown trigger (button)\n * @slot dropdown - The slot for the list.\n * @fires select - Custom event with the selected item on the `detail.item` when the user selected an item.\n * When the event is cancelled then there's no side effects (closing the dropdown)\n * @fires dropdownopen - An event informing other dropdowns that this one was opened and other should close.\n * @fires open - An event dispatched when the open state change through a user interaction\n */\nexport default class UiDropdownList extends LitElement {\n @queryAssignedElements()\n protected accessor triggers!: HTMLElement[]\n\n @queryAssignedElements({ slot: 'dropdown' })\n protected accessor dropdowns!: HTMLElement[]\n\n @state() protected accessor triggerId = `ui-trigger-${randomString(4)}`\n\n @state() protected accessor menuId = `ui-menu-${randomString(4)}`\n\n /**\n * Whether the menu is opened.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor open = false\n\n /**\n * The vertical (y-axis) alignment of the dropdown content.\n * - top\n * - bottom\n * - middle\n *\n * No value means the natural position according to the box model.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor verticalAlign: VerticalAlignment | undefined\n\n /**\n * The horizontal (x-axis) alignment of the dropdown content.\n * - top\n * - bottom\n * - middle\n *\n * No value means the natural position according to the box model.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor horizontalAlign: HorizontalAlignment | undefined\n\n /**\n * Affects the `horizontal` and `vertical` positioning so that the target element does not overlap with the anchor.\n * For example, when the `vertical` align is `top`, the top edge of the target will be rendered at the bottom\n * of the anchor down to the edge of the viewport.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor noOverlap: boolean | undefined\n\n /**\n * When set it closes the opened list when registering a click outside the list.\n * @attribute\n */\n @property({ type: Boolean }) accessor closeOnOutsideClick: boolean | undefined\n\n /**\n * When set it makes the drop-down to match the width of the trigger.\n * Be careful as this may crop the content when the trigger is not wide enough.\n * @attribute\n */\n @property({ type: Boolean }) accessor matchTriggerWidth: boolean | undefined\n\n /**\n * When set it closes the drop-down when `tab` button is pressed.\n * This is not a default behavior since the drop-down content can have its own logic\n * related to tab index.\n */\n @property({ type: Boolean }) accessor closeOnTab: boolean | undefined\n\n /**\n * The first element located in the default slot.\n */\n protected get trigger(): HTMLElement | null {\n const { triggers } = this\n if (!triggers || !triggers.length) {\n return null\n }\n const [button] = triggers\n return button\n }\n\n /**\n * The first element located in the \"dropdown\" slot.\n */\n protected get dropdown(): HTMLElement | null {\n const { dropdowns } = this\n if (!dropdowns || !dropdowns.length) {\n return null\n }\n const [content] = dropdowns\n return content\n }\n\n @state() protected accessor overlayPositioning: StyleInfo | undefined\n\n constructor() {\n super()\n this.dropdownOpenHandler = this.dropdownOpenHandler.bind(this)\n this.scrollHandler = this.scrollHandler.bind(this)\n this.clickHandler = this.clickHandler.bind(this)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n window.addEventListener('dropdownopen', this.dropdownOpenHandler)\n window.addEventListener('click', this.clickHandler, { capture: true })\n ScrollHelper.addListeners(this, this.scrollHandler)\n\n this.setAttribute('aria-haspopup', 'menu')\n this.setAttribute('aria-expanded', 'false')\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n window.removeEventListener('dropdownopen', this.dropdownOpenHandler)\n window.removeEventListener('click', this.clickHandler, { capture: true })\n ScrollHelper.removeListeners(this)\n }\n\n protected dropdownOpenHandler(e: Event): void {\n if (e.composedPath()[0] === this) {\n return\n }\n this.close()\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if ((cp.has('noOverlap') || cp.has('verticalAlign') || cp.has('horizontalAlign') || cp.has('open')) && this.open) {\n this.computePositioning()\n }\n }\n\n protected override updated(cp: PropertyValues<this>): void {\n super.updated(cp)\n if (cp.has('open')) {\n this.toggleOpened()\n this.updateExpanded()\n // this.manageTabindex()\n }\n }\n\n protected updateExpanded(): void {\n this.setAttribute('aria-expanded', String(this.open))\n }\n\n protected triggerChanged(): void {\n const { trigger } = this\n if (!trigger) {\n return\n }\n this.decorateTrigger(trigger)\n }\n\n protected dropdownChanged(): void {\n const { dropdown } = this\n if (!dropdown) {\n return\n }\n this.decorateDropdown(dropdown)\n }\n\n /**\n * Decorates the trigger with aria attributes.\n */\n protected decorateTrigger(button: HTMLElement): void {\n button.setAttribute('aria-controls', this.menuId)\n button.setAttribute('tabindex', '0')\n if (button.id) {\n this.triggerId = button.id\n } else {\n button.id = this.triggerId\n }\n }\n\n protected decorateDropdown(list: HTMLElement): void {\n if (!list.hasAttribute('role')) {\n list.setAttribute('role', 'menu')\n }\n if (!list.hasAttribute('aria-labelledby')) {\n list.setAttribute('aria-labelledby', this.triggerId)\n }\n list.setAttribute('tabindex', '-1')\n list.id = this.menuId\n }\n\n protected triggerClickHandler(): void {\n this.open = !this.open\n this.notifyOpen()\n }\n\n protected triggerKeyDownHandler(e: KeyboardEvent): void {\n if (['Enter', 'Space', 'ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault()\n this.open = true\n this.notifyOpen()\n }\n }\n\n protected contentKeyDownHandler(e: KeyboardEvent): void {\n if (e.defaultPrevented) {\n return\n }\n if (e.code === 'Escape') {\n this.close()\n } else if (e.code === 'Tab') {\n if (this.closeOnTab) {\n this.close()\n }\n } else if (['Enter', 'Space'].includes(e.code)) {\n this.activate(e)\n }\n }\n\n protected contentClickHandler(e: PointerEvent): void {\n this.activate(e)\n }\n\n close(): void {\n this.open = false\n this.notifyOpen()\n }\n\n protected contentCloseHandler(e: Event): void {\n e.stopPropagation()\n this.close()\n }\n\n /**\n * Since the container for the dropdown content is positioned as fixed\n * we need to position the dropdown according to the configured rules.\n */\n protected computePositioning(): void {\n const { trigger, dropdown } = this\n if (!trigger || !dropdown) {\n return\n }\n this.overlayPositioning = positionOverlay(dropdown, trigger, {\n horizontal: this.horizontalAlign,\n vertical: this.verticalAlign,\n noOverlap: this.noOverlap,\n constrain: true,\n constrainPaddingY: 20,\n matchAnchorWidth: this.matchTriggerWidth,\n })\n }\n\n protected scrollHandler(): void {\n if (this.open) {\n this.computePositioning()\n }\n }\n\n protected clickHandler(e: Event): void {\n if (!this.open || !this.closeOnOutsideClick) {\n return\n }\n const inside = e.composedPath().some((i) => i === this)\n if (inside) {\n return\n }\n this.close()\n }\n\n protected toggleOpened(): void {\n const { open } = this\n if (open) {\n this.handleOpened()\n } else {\n this.handleClosed()\n }\n }\n\n /**\n * When set, it is the last active child of the dropdown\n * before the tabindex was removed from it. It is used to restore focus\n * when the dropdown is re-opened.\n */\n lastActiveChild?: HTMLElement\n\n /**\n * When the list is closed, the tabindex of the dropdown is removed to prevent\n * it from being focused while invisible.\n */\n protected manageTabindex(): void {\n const { dropdown } = this\n if (!dropdown) {\n return\n }\n if (this.open) {\n if (this.lastActiveChild) {\n this.lastActiveChild.setAttribute('tabindex', '0')\n this.lastActiveChild.focus()\n this.lastActiveChild = undefined\n } else {\n // If no last active child, focus the dropdown itself\n dropdown.setAttribute('tabindex', '0')\n }\n } else {\n // const activeChild = dropdown.querySelector(':focus') || dropdown\n // this.lastActiveChild = activeChild as HTMLElement\n // activeChild.removeAttribute('tabindex')\n // this.trigger?.focus()\n }\n }\n\n protected handleOpened(): void {\n const { trigger, dropdown } = this\n if (trigger) {\n trigger.removeAttribute('tabindex')\n }\n if (this.lastActiveChild) {\n this.lastActiveChild.setAttribute('tabindex', '0')\n this.lastActiveChild.focus()\n this.lastActiveChild = undefined\n } else if (dropdown) {\n dropdown.setAttribute('tabindex', '0')\n dropdown.focus()\n }\n }\n\n protected handleClosed(): void {\n const { trigger, dropdown } = this\n if (trigger) {\n trigger.setAttribute('tabindex', '0')\n trigger.focus()\n }\n if (dropdown) {\n const activeChild = dropdown.querySelector('[tabindex=\"0\"]')\n if (activeChild) {\n this.lastActiveChild = activeChild as HTMLElement\n activeChild.removeAttribute('tabindex')\n }\n dropdown.removeAttribute('tabindex')\n }\n }\n\n protected activate(e: Event): void {\n if (e.defaultPrevented) {\n return\n }\n const path = e.composedPath()\n let item: HTMLElement | undefined\n while (!item) {\n const next = path.shift() as Element\n if (next === this) {\n break\n }\n if (next.nodeType !== Node.ELEMENT_NODE) {\n continue\n }\n if (itemRole.includes(next.getAttribute('role') || '')) {\n item = next as HTMLElement\n }\n }\n if (!item) {\n return\n }\n const event = new CustomEvent<UiDropdownListSelection>('select', {\n cancelable: true,\n // composed: true,\n detail: {\n item,\n },\n })\n this.dispatchEvent(event)\n if (event.defaultPrevented) {\n return\n }\n this.close()\n }\n\n protected notifyOpen(): void {\n this.dispatchEvent(new Event('open'))\n if (this.open) {\n this.dispatchEvent(\n new Event('dropdownopen', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n )\n }\n }\n\n protected override render(): TemplateResult {\n const classes: ClassInfo = {\n container: true,\n open: this.open,\n }\n\n return html` <div class=\"${classMap(classes)}\">${this.renderTrigger()} ${this.renderContent()}</div> `\n }\n\n protected renderTrigger(): TemplateResult {\n return html`\n <div class=\"trigger\" @click=\"${this.triggerClickHandler}\" @keydown=\"${this.triggerKeyDownHandler}\">\n <slot @slotchange=\"${this.triggerChanged}\"></slot>\n </div>\n `\n }\n\n protected renderContent(): TemplateResult {\n const contentStyles = this.overlayPositioning || {}\n return html`\n <div class=\"content\" style=\"${styleMap(contentStyles)}\">\n <slot\n name=\"dropdown\"\n @slotchange=\"${this.dropdownChanged}\"\n @keydown=\"${this.contentKeyDownHandler}\"\n @click=\"${this.contentClickHandler}\"\n @close=\"${this.contentCloseHandler}\"\n ></slot>\n </div>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UiDropdownList.js","sourceRoot":"","sources":["../../../../../src/md/dropdown-list/internals/UiDropdownList.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomString } from '@api-client/core/lib/math/Random.js'\nimport { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { positionOverlay, type HorizontalAlignment, type VerticalAlignment } from '../../../lib/ElementPositioning.js'\nimport * as ScrollHelper from '../../../lib/ScrollHelper.js'\n\nconst itemRole = ['menuitem', 'menuitemcheckbox', 'menuitemradio']\n\nexport interface UiDropdownListSelection {\n item: HTMLElement\n}\n\n/**\n * An overlay list rendered over a button.\n *\n * Examples:\n *\n * <ui-dropdown-list>\n * <ui-button color=\"filled\">Click me</ui-button>\n * <ui-list slot=\"dropdown\" role=\"menu\">\n * <ui-list-item role=\"menuitem\">Item 1</ui-list-item>\n * <ui-list-item role=\"menuitem\">Item 2</ui-list-item>\n * </ui-list>\n * </ui-dropdown-list>\n *\n * @slot - The default slot for the dropdown trigger (button)\n * @slot dropdown - The slot for the list.\n * @fires select - Custom event with the selected item on the `detail.item` when the user selected an item.\n * When the event is cancelled then there's no side effects (closing the dropdown)\n * @fires dropdownopen - An event informing other dropdowns that this one was opened and other should close.\n * @fires open - An event dispatched when the open state change through a user interaction\n */\nexport default class UiDropdownList extends LitElement {\n @queryAssignedElements()\n protected accessor triggers!: HTMLElement[]\n\n @queryAssignedElements({ slot: 'dropdown' })\n protected accessor dropdowns!: HTMLElement[]\n\n @state() protected accessor triggerId = `ui-trigger-${randomString(4)}`\n\n @state() protected accessor menuId = `ui-menu-${randomString(4)}`\n\n /**\n * Whether the menu is opened.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor open = false\n\n /**\n * The vertical (y-axis) alignment of the dropdown content.\n * - top\n * - bottom\n * - middle\n *\n * No value means the natural position according to the box model.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor verticalAlign: VerticalAlignment | undefined\n\n /**\n * The horizontal (x-axis) alignment of the dropdown content.\n * - top\n * - bottom\n * - middle\n *\n * No value means the natural position according to the box model.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor horizontalAlign: HorizontalAlignment | undefined\n\n /**\n * Affects the `horizontal` and `vertical` positioning so that the target element does not overlap with the anchor.\n * For example, when the `vertical` align is `top`, the top edge of the target will be rendered at the bottom\n * of the anchor down to the edge of the viewport.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor noOverlap: boolean | undefined\n\n /**\n * When set it closes the opened list when registering a click outside the list.\n * @attribute\n */\n @property({ type: Boolean }) accessor closeOnOutsideClick: boolean | undefined\n\n /**\n * When set it makes the drop-down to match the width of the trigger.\n * Be careful as this may crop the content when the trigger is not wide enough.\n * @attribute\n */\n @property({ type: Boolean }) accessor matchTriggerWidth: boolean | undefined\n\n /**\n * When set it closes the drop-down when `tab` button is pressed.\n * This is not a default behavior since the drop-down content can have its own logic\n * related to tab index.\n */\n @property({ type: Boolean }) accessor closeOnTab: boolean | undefined\n\n /**\n * The first element located in the default slot.\n */\n protected get trigger(): HTMLElement | null {\n const { triggers } = this\n if (!triggers || !triggers.length) {\n return null\n }\n const [button] = triggers\n return button\n }\n\n /**\n * The first element located in the \"dropdown\" slot.\n */\n protected get dropdown(): HTMLElement | null {\n const { dropdowns } = this\n if (!dropdowns || !dropdowns.length) {\n return null\n }\n const [content] = dropdowns\n return content\n }\n\n @state() protected accessor overlayPositioning: StyleInfo | undefined\n\n constructor() {\n super()\n this.dropdownOpenHandler = this.dropdownOpenHandler.bind(this)\n this.scrollHandler = this.scrollHandler.bind(this)\n this.clickHandler = this.clickHandler.bind(this)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n window.addEventListener('dropdownopen', this.dropdownOpenHandler)\n window.addEventListener('click', this.clickHandler, { capture: true })\n ScrollHelper.addListeners(this, this.scrollHandler)\n\n this.setAttribute('aria-haspopup', 'menu')\n this.setAttribute('aria-expanded', 'false')\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n window.removeEventListener('dropdownopen', this.dropdownOpenHandler)\n window.removeEventListener('click', this.clickHandler, { capture: true })\n ScrollHelper.removeListeners(this)\n }\n\n protected dropdownOpenHandler(e: Event): void {\n if (e.composedPath()[0] === this) {\n return\n }\n this.close()\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if ((cp.has('noOverlap') || cp.has('verticalAlign') || cp.has('horizontalAlign') || cp.has('open')) && this.open) {\n this.computePositioning()\n }\n }\n\n protected override updated(cp: PropertyValues<this>): void {\n super.updated(cp)\n if (cp.has('open')) {\n this.toggleOpened()\n this.updateExpanded()\n // this.manageTabindex()\n }\n }\n\n protected updateExpanded(): void {\n this.setAttribute('aria-expanded', String(this.open))\n }\n\n protected triggerChanged(): void {\n const { trigger } = this\n if (!trigger) {\n return\n }\n this.decorateTrigger(trigger)\n }\n\n protected dropdownChanged(): void {\n const { dropdown } = this\n if (!dropdown) {\n return\n }\n this.decorateDropdown(dropdown)\n }\n\n /**\n * Decorates the trigger with aria attributes.\n */\n protected decorateTrigger(button: HTMLElement): void {\n button.setAttribute('aria-controls', this.menuId)\n button.setAttribute('tabindex', '0')\n if (button.id) {\n this.triggerId = button.id\n } else {\n button.id = this.triggerId\n }\n }\n\n protected decorateDropdown(list: HTMLElement): void {\n if (!list.hasAttribute('role')) {\n list.setAttribute('role', 'menu')\n }\n if (!list.hasAttribute('aria-labelledby')) {\n list.setAttribute('aria-labelledby', this.triggerId)\n }\n list.setAttribute('tabindex', '-1')\n list.id = this.menuId\n }\n\n protected triggerClickHandler(): void {\n this.open = !this.open\n this.notifyOpen()\n }\n\n protected triggerKeyDownHandler(e: KeyboardEvent): void {\n if (['Enter', 'Space', 'ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault()\n this.open = true\n this.notifyOpen()\n }\n }\n\n protected contentKeyDownHandler(e: KeyboardEvent): void {\n if (e.defaultPrevented) {\n return\n }\n if (e.code === 'Escape') {\n this.close()\n } else if (e.code === 'Tab') {\n if (this.closeOnTab) {\n this.close()\n }\n } else if (['Enter', 'Space'].includes(e.code)) {\n this.activate(e)\n }\n }\n\n protected contentClickHandler(e: PointerEvent): void {\n this.activate(e)\n }\n\n close(): void {\n this.open = false\n this.notifyOpen()\n }\n\n protected contentCloseHandler(e: Event): void {\n e.stopPropagation()\n this.close()\n }\n\n /**\n * Since the container for the dropdown content is positioned as fixed\n * we need to position the dropdown according to the configured rules.\n */\n protected computePositioning(): void {\n const { trigger, dropdown } = this\n if (!trigger || !dropdown) {\n return\n }\n this.overlayPositioning = positionOverlay(dropdown, trigger, {\n horizontal: this.horizontalAlign,\n vertical: this.verticalAlign,\n noOverlap: this.noOverlap,\n constrain: true,\n constrainPaddingY: 20,\n matchAnchorWidth: this.matchTriggerWidth,\n })\n }\n\n protected scrollHandler(): void {\n if (this.open) {\n this.computePositioning()\n }\n }\n\n protected clickHandler(e: Event): void {\n if (!this.open || !this.closeOnOutsideClick) {\n return\n }\n const inside = e.composedPath().some((i) => i === this)\n if (inside) {\n return\n }\n this.close()\n }\n\n protected toggleOpened(): void {\n const { open } = this\n if (open) {\n this.handleOpened()\n } else {\n this.handleClosed()\n }\n }\n\n /**\n * When set, it is the last active child of the dropdown\n * before the tabindex was removed from it. It is used to restore focus\n * when the dropdown is re-opened.\n */\n lastActiveChild?: HTMLElement\n\n /**\n * When the list is closed, the tabindex of the dropdown is removed to prevent\n * it from being focused while invisible.\n */\n protected manageTabindex(): void {\n const { dropdown } = this\n if (!dropdown) {\n return\n }\n if (this.open) {\n if (this.lastActiveChild) {\n this.lastActiveChild.setAttribute('tabindex', '0')\n this.lastActiveChild.focus()\n this.lastActiveChild = undefined\n } else {\n // If no last active child, focus the dropdown itself\n dropdown.setAttribute('tabindex', '0')\n }\n } else {\n // const activeChild = dropdown.querySelector(':focus') || dropdown\n // this.lastActiveChild = activeChild as HTMLElement\n // activeChild.removeAttribute('tabindex')\n // this.trigger?.focus()\n }\n }\n\n protected handleOpened(): void {\n const { trigger, dropdown } = this\n if (trigger) {\n trigger.removeAttribute('tabindex')\n }\n if (this.lastActiveChild) {\n this.lastActiveChild.setAttribute('tabindex', '0')\n this.lastActiveChild.focus()\n this.lastActiveChild = undefined\n } else if (dropdown) {\n dropdown.setAttribute('tabindex', '0')\n dropdown.focus()\n }\n }\n\n protected handleClosed(): void {\n const { trigger, dropdown } = this\n if (trigger) {\n trigger.setAttribute('tabindex', '0')\n trigger.focus()\n }\n if (dropdown) {\n const activeChild = dropdown.querySelector('[tabindex=\"0\"]')\n if (activeChild) {\n this.lastActiveChild = activeChild as HTMLElement\n activeChild.removeAttribute('tabindex')\n }\n dropdown.removeAttribute('tabindex')\n }\n }\n\n protected activate(e: Event): void {\n // if (e.defaultPrevented) {\n // We now cancel the event in the menu list\n // return\n // }\n const path = e.composedPath()\n let item: HTMLElement | undefined\n while (!item) {\n const next = path.shift() as Element\n if (next === this) {\n break\n }\n if (next.nodeType !== Node.ELEMENT_NODE) {\n continue\n }\n if (itemRole.includes(next.getAttribute('role') || '')) {\n item = next as HTMLElement\n }\n }\n if (!item) {\n return\n }\n const event = new CustomEvent<UiDropdownListSelection>('select', {\n cancelable: true,\n // composed: true,\n detail: {\n item,\n },\n })\n this.dispatchEvent(event)\n if (event.defaultPrevented) {\n return\n }\n this.close()\n }\n\n protected notifyOpen(): void {\n this.dispatchEvent(new Event('open'))\n if (this.open) {\n this.dispatchEvent(\n new Event('dropdownopen', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n )\n }\n }\n\n protected override render(): TemplateResult {\n const classes: ClassInfo = {\n container: true,\n open: this.open,\n }\n\n return html` <div class=\"${classMap(classes)}\">${this.renderTrigger()} ${this.renderContent()}</div> `\n }\n\n protected renderTrigger(): TemplateResult {\n return html`\n <div class=\"trigger\" @click=\"${this.triggerClickHandler}\" @keydown=\"${this.triggerKeyDownHandler}\">\n <slot @slotchange=\"${this.triggerChanged}\"></slot>\n </div>\n `\n }\n\n protected renderContent(): TemplateResult {\n const contentStyles = this.overlayPositioning || {}\n return html`\n <div class=\"content\" style=\"${styleMap(contentStyles)}\">\n <slot\n name=\"dropdown\"\n @slotchange=\"${this.dropdownChanged}\"\n @keydown=\"${this.contentKeyDownHandler}\"\n @click=\"${this.contentClickHandler}\"\n @close=\"${this.contentCloseHandler}\"\n ></slot>\n </div>\n `\n }\n}\n"]}
|
|
@@ -10,17 +10,23 @@ import '../icons/ui-icon.js';
|
|
|
10
10
|
*/
|
|
11
11
|
export default abstract class Input extends UiElement {
|
|
12
12
|
#private;
|
|
13
|
+
static shadowRootOptions: {
|
|
14
|
+
delegatesFocus: boolean;
|
|
15
|
+
mode: ShadowRootMode;
|
|
16
|
+
serializable?: boolean;
|
|
17
|
+
slotAssignment?: SlotAssignmentMode;
|
|
18
|
+
};
|
|
13
19
|
static readonly formAssociated = true;
|
|
14
20
|
get form(): HTMLFormElement | null;
|
|
15
21
|
/**
|
|
16
22
|
* @attribute
|
|
17
23
|
*/
|
|
18
24
|
accessor type: SupportedInputTypes;
|
|
25
|
+
get disabled(): boolean;
|
|
19
26
|
/**
|
|
20
|
-
*
|
|
27
|
+
* When set, the input is a disabled state.
|
|
21
28
|
* @attribute
|
|
22
29
|
*/
|
|
23
|
-
get disabled(): boolean;
|
|
24
30
|
set disabled(value: boolean);
|
|
25
31
|
/**
|
|
26
32
|
* The name of the form control, submitted as a pair with the control's value as part of the form data.
|
|
@@ -283,7 +289,6 @@ export default abstract class Input extends UiElement {
|
|
|
283
289
|
* to screen readers.
|
|
284
290
|
*/
|
|
285
291
|
protected accessor refreshErrorAlert: boolean;
|
|
286
|
-
protected removingTabindex: boolean;
|
|
287
292
|
get files(): FileList | null;
|
|
288
293
|
/**
|
|
289
294
|
* When set it adds a `<datalist>` element to the input.
|
|
@@ -410,7 +415,6 @@ export default abstract class Input extends UiElement {
|
|
|
410
415
|
handleClick(): void;
|
|
411
416
|
protected handleFocus(): void;
|
|
412
417
|
protected handleBlur(): void;
|
|
413
|
-
private checkNativeValidity;
|
|
414
418
|
private checkValidityAndDispatch;
|
|
415
419
|
/**
|
|
416
420
|
* @returns `true` when the label is in resting state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../src/md/input/Input.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../src/md/input/Input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAI/E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,kCAAkC,CAAA;AACzC,OAAO,qBAAqB,CAAA;AAI5B;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,KAAM,SAAQ,SAAS;;IACnD,OAAgB,iBAAiB;;;;;MAA4D;IAK7F,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAO;IAIrC,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED;;OAEG;IACwC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAE7E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAK1B;IAED;;;OAGG;IACyB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IAE7D;;;;;OAKG;IACyB,QAAQ,CAAC,KAAK,SAAK;IAE/C;;;OAGG;IAEH,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAEtC;;;;;;;OAOG;IACyC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAEjF;;;;;;;;OAQG;IACyB,QAAQ,CAAC,WAAW,SAAK;IAErD;;;OAGG;IACyB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAE9D;;;OAGG;IAC0B,QAAQ,CAAC,SAAS,UAAQ;IAEvD;;;OAGG;IAC0B,QAAQ,CAAC,SAAS,UAAQ;IAEvD;;;;OAIG;IACyB,QAAQ,CAAC,cAAc,SAAK;IAExD;;;;OAIG;IACyB,QAAQ,CAAC,aAAa,SAAK;IAEvD;;;OAGG;IAC0B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IAErE;;;;;OAKG;IACyB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAK;IAE9D;;;;;;OAMG;IACyB,QAAQ,CAAC,SAAS,SAAK;IAEnD;;;;;OAKG;IACyB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAK;IAE9D;;;;;;OAMG;IACyB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAElE;;;;;;OAMG;IACyB,QAAQ,CAAC,OAAO,SAAK;IAEjD;;OAEG;IACyB,QAAQ,CAAC,WAAW,SAAK;IAErD;;;;;;;OAOG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAErE;;;;OAIG;IACyB,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAQ;IAEhF;;;OAGG;IACH,SAA8C,SAAS,SAAK;IAE5D;;;;;;;;;;;;;OAaG;IACM,cAAc,EAAE,uBAAuB,CAAQ;IAExD;;;;OAIG;IACyB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/D;;;;OAIG;IAC0B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAEnE;;;OAGG;IACyB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IAE7D,SAAS,CAAC,cAAc,uCAA6C;IAErE,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,IAAI,kBAAkB,IAAI,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAE/D;IAED,IAAI,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,EAEnE;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEpC;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEtC;IAED;;;;;;OAMG;IACyB,QAAQ,CAAC,IAAI,SAAI;IAE7C;;;;;OAKG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAE9B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,IAAI,GAAG,IAAI,CAE7B;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAEjC;IAED;;;;;OAKG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;OAGG;IACM,SAAS,CAAC,QAAQ,CAAC,KAAK,UAAQ;IAEhC,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAE3C,IAAI,KAAK,IAAI,gBAAgB,GAAG,IAAI,CAEnC;IAE0C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IAErC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IAEhF;;;OAGG;IACM,SAAS,CAAC,QAAQ,CAAC,eAAe,SAAK;IAEhD;;OAEG;IACM,SAAS,CAAC,QAAQ,CAAC,WAAW,UAAQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IAEpC,SACkB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAO;IAGlE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAO;IAEnD,SACkB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAO;IAE1D;;OAEG;IACH,SACkB,SAAS,EAAG,MAAM,CAAA;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,cAAc,EAAG,MAAM,CAAA;IAGhC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAO;IAEzC;;;;OAIG;IACM,SAAS,CAAC,QAAQ,CAAC,iBAAiB,UAAQ;IAQrD,IAAI,KAAK,IAAI,QAAQ,GAAG,IAAI,CAE3B;IAED;;OAEG;IACwB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;;IAYrD,iBAAiB,IAAI,IAAI;IAQlC;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;cAI/B,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAM1C,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAcnE,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAUlC,SAAS,CAAC,sBAAsB,IAAI,IAAI;IA4BxC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAQxC,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAKlC,SAAS,CAAC,aAAa,IAAI,MAAM;IAOjC;;;;;;;;;OASG;IACH,aAAa,IAAI,OAAO;IAOxB;;OAEG;IACM,KAAK,IAAI,IAAI;IAOtB;;OAEG;IACM,IAAI,IAAI,IAAI;IAIrB;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,IAAI,OAAO;IAmBzB,SAAS,CAAC,mBAAmB,IAAI,OAAO;IAQxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAId;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC;;;;OAIG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAEvC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI;IAalG;;;;;;;;OAQG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI;IAI9G;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAStC;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKJ,WAAW,IAAI,IAAI;IAI5B,SAAS,CAAC,WAAW,IAAI,IAAI;IAQ7B,SAAS,CAAC,UAAU,IAAI,IAAI;IAQ5B,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,OAAO;IAWjC;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,OAAO;IAKhC,SAAS,CAAC,eAAe,IAAI,MAAM;IAMnC,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAKrC,SAAS,CAAC,QAAQ,IAAI,OAAO;IAI7B,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAc9C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAO9C,SAAS,CAAC,UAAU,IAAI,OAAO;IAI/B,SAAS,CAAC,cAAc,IAAI,MAAM;IAKlC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAiBtC,SAAS,KAAK,aAAa,IAAI,mBAAmB,CAOjD;cAEkB,MAAM,IAAI,cAAc;IAsB3C,SAAS,CAAC,YAAY,IAAI,cAAc;IAUxC,SAAS,CAAC,YAAY,IAAI,cAAc;IAUxC,SAAS,CAAC,UAAU,IAAI,cAAc;IAItC,SAAS,CAAC,WAAW,IAAI,cAAc;IAQvC,SAAS,CAAC,eAAe,IAAI,cAAc;IAI3C,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc;IAEhD,SAAS,CAAC,oBAAoB,IAAI,cAAc;IAIhD,SAAS,CAAC,yBAAyB,IAAI,cAAc,GAAG,OAAO,OAAO;IAiBtE,SAAS,CAAC,aAAa,IAAI,cAAc;IAQzC,SAAS,CAAC,qBAAqB,IAAI,cAAc,GAAG,OAAO,OAAO;IAkBlE,SAAS,CAAC,cAAc,IAAI,cAAc,GAAG,OAAO,OAAO;CAO5D"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, nothing } from 'lit';
|
|
2
|
+
import { html, LitElement, nothing } from 'lit';
|
|
3
3
|
import { property, queryAssignedElements, state } from 'lit/decorators.js';
|
|
4
4
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
5
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
6
|
-
import { isDisabled, setDisabled } from '../../lib/disabled.js';
|
|
7
6
|
import { UiElement } from '../UiElement.js';
|
|
7
|
+
import { isDisabled, setDisabled } from '../../lib/disabled.js';
|
|
8
8
|
import '../icon-button/ui-icon-button.js';
|
|
9
9
|
import '../icons/ui-icon.js';
|
|
10
10
|
const floatTypes = ['date', 'color', 'datetime-local', 'file', 'month', 'time', 'week'];
|
|
@@ -219,6 +219,7 @@ let Input = (() => {
|
|
|
219
219
|
__esDecorate(this, null, _list_decorators, { kind: "accessor", name: "list", static: false, private: false, access: { has: obj => "list" in obj, get: obj => obj.list, set: (obj, value) => { obj.list = value; } }, metadata: _metadata }, _list_initializers, _list_extraInitializers);
|
|
220
220
|
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
221
221
|
}
|
|
222
|
+
static shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };
|
|
222
223
|
#_userInteracted = __runInitializers(this, _instanceExtraInitializers);
|
|
223
224
|
// static override shadowRootOptions: ShadowRootInit = {mode: 'open', delegatesFocus: true};
|
|
224
225
|
static formAssociated = true;
|
|
@@ -232,27 +233,18 @@ let Input = (() => {
|
|
|
232
233
|
*/
|
|
233
234
|
get type() { return this.#type_accessor_storage; }
|
|
234
235
|
set type(value) { this.#type_accessor_storage = value; }
|
|
235
|
-
/**
|
|
236
|
-
* Disables the input.
|
|
237
|
-
* @attribute
|
|
238
|
-
*/
|
|
239
236
|
get disabled() {
|
|
240
237
|
return isDisabled(this);
|
|
241
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* When set, the input is a disabled state.
|
|
241
|
+
* @attribute
|
|
242
|
+
*/
|
|
242
243
|
set disabled(value) {
|
|
243
244
|
const old = isDisabled(this);
|
|
244
245
|
setDisabled(this, value);
|
|
245
246
|
this.requestUpdate('disabled', old);
|
|
246
247
|
this._updateFormValue();
|
|
247
|
-
if (value) {
|
|
248
|
-
this.dataset.tabindex = this.getAttribute('tabindex') || '0';
|
|
249
|
-
this.removeAttribute('tabindex');
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
const index = this.dataset.tabindex || '0';
|
|
253
|
-
this.setAttribute('tabindex', index);
|
|
254
|
-
this.blur();
|
|
255
|
-
}
|
|
256
248
|
}
|
|
257
249
|
#name_accessor_storage = (__runInitializers(this, _type_extraInitializers), __runInitializers(this, _name_initializers, void 0));
|
|
258
250
|
/**
|
|
@@ -760,7 +752,6 @@ let Input = (() => {
|
|
|
760
752
|
* This is private so the password can be viewed only through user interaction.
|
|
761
753
|
*/
|
|
762
754
|
#showPassword = (__runInitializers(this, _refreshErrorAlert_extraInitializers), false);
|
|
763
|
-
removingTabindex = false;
|
|
764
755
|
get files() {
|
|
765
756
|
return this.getNativeValue('files');
|
|
766
757
|
}
|
|
@@ -1038,32 +1029,13 @@ let Input = (() => {
|
|
|
1038
1029
|
return;
|
|
1039
1030
|
}
|
|
1040
1031
|
this.focused = true;
|
|
1041
|
-
this.removingTabindex = true;
|
|
1042
|
-
// Note, the input is automatically focused when form is being submitted and
|
|
1043
|
-
// it won't pass validation. In this case the form will throw an error
|
|
1044
|
-
// as the input is not focusable. In overall, this still works with forms and validation.
|
|
1045
|
-
if (this.checkNativeValidity()) {
|
|
1046
|
-
this.dataset.tabindex = this.getAttribute('tabindex') || '0';
|
|
1047
|
-
this.removeAttribute('tabindex');
|
|
1048
|
-
}
|
|
1049
|
-
input.focus();
|
|
1050
|
-
this.#_userInteracted = true;
|
|
1051
|
-
setTimeout(() => {
|
|
1052
|
-
this.removingTabindex = false;
|
|
1053
|
-
}, 1);
|
|
1054
1032
|
}
|
|
1055
1033
|
handleBlur() {
|
|
1056
|
-
if (this.matches(':focus-within')
|
|
1034
|
+
if (this.matches(':focus-within')) {
|
|
1057
1035
|
// Changing focus to another child within the text field, like a button
|
|
1058
1036
|
return;
|
|
1059
1037
|
}
|
|
1060
1038
|
this.focused = false;
|
|
1061
|
-
const index = this.dataset.tabindex || '0';
|
|
1062
|
-
delete this.dataset.tabindex;
|
|
1063
|
-
this.setAttribute('tabindex', index);
|
|
1064
|
-
}
|
|
1065
|
-
checkNativeValidity() {
|
|
1066
|
-
return this.input?.validity.valid ?? true;
|
|
1067
1039
|
}
|
|
1068
1040
|
checkValidityAndDispatch() {
|
|
1069
1041
|
const valid = this.input?.checkValidity() ?? true;
|