@m3e/web 2.1.2 → 2.1.3
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/dist/all.js +30 -23
- package/dist/all.js.map +1 -1
- package/dist/all.min.js +40 -40
- package/dist/all.min.js.map +1 -1
- package/dist/autocomplete.js +20 -18
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.min.js +1 -1
- package/dist/autocomplete.min.js.map +1 -1
- package/dist/card.js +4 -2
- package/dist/card.js.map +1 -1
- package/dist/card.min.js +1 -1
- package/dist/card.min.js.map +1 -1
- package/dist/css-custom-data.json +487 -487
- package/dist/custom-elements.json +4612 -4600
- package/dist/html-custom-data.json +194 -194
- package/dist/option.js +3 -0
- package/dist/option.js.map +1 -1
- package/dist/option.min.js +1 -1
- package/dist/option.min.js.map +1 -1
- package/dist/paginator.js +2 -2
- package/dist/paginator.js.map +1 -1
- package/dist/paginator.min.js +1 -1
- package/dist/paginator.min.js.map +1 -1
- package/dist/select.js +2 -2
- package/dist/select.js.map +1 -1
- package/dist/select.min.js +1 -1
- package/dist/select.min.js.map +1 -1
- package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
- package/dist/src/card/CardElement.d.ts.map +1 -1
- package/dist/src/option/OptionElement.d.ts.map +1 -1
- package/dist/src/paginator/PaginatorElement.d.ts +1 -1
- package/dist/src/paginator/PaginatorElement.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.min.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { QueryEventDetail } from \"./QueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Emitted when the options menu opens or closes.\r\n * @fires query - Emitted when the input is focused or when the user modifies its value.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends HtmlFor(LitElement) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => !x.hidden) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #minMenuWidth(): string {\r\n const formField = this.#formField;\r\n return `${formField ? formField.menuAnchor.clientWidth : (this.control?.clientWidth ?? 0)}px`;\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"-no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"-loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#menu.replaceChildren(...this.#clone.childNodes);\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<QueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<QueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input && this.required && !this.#options.some((x) => x.selected && !x.disabled)) {\r\n this.#input.value = \"\";\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n if (e.button === 2) return;\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.style.minWidth = this.#minMenuWidth;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n\r\n if (this.#clone) {\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.textContent = this.noDataLabel;\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.textContent = this.loadingLabel;\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"-loading\", this.loading);\r\n setCustomState(menu, \"-no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.value;\r\n }\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => !x.hidden).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"-first\");\r\n deleteCustomState(clone, \"-last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"-first\");\r\n first = true;\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"-first\");\r\n if (last) {\r\n deleteCustomState(last, \"-last\");\r\n }\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n }\r\n }\r\n\r\n if (clone.selected && option.value !== exactTerm) {\r\n clone.selected = false;\r\n this.#updateSelectionState(clone);\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && !x.hidden);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<QueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","HtmlFor","LitElement","constructor","super","_M3eAutocompleteElement_id","set","this","M3eAutocompleteElement_1","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","value","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","items","querySelector","_M3eAutocompleteElement_options_get","some","x","length","formField","menuAnchor","clientWidth","closest","async","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","indexOf","replaceChildren","childNodes","_M3eAutocompleteElement_updateMenuState","readOnly","dispatchEvent","CustomEvent","detail","term","bubbles","composed","defaultPrevented","notifyControlStateChange","selected","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","button","stopImmediatePropagation","composedPath","find","HTMLElement","tagName","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","remove","undefined","removeAttribute","requestUpdate","document","createElement","klass","split","map","d","trim","Boolean","classList","add","scrollStrategy","style","overflowX","minWidth","_M3eAutocompleteElement_minMenuWidth_get","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","slot","textContent","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","insertAdjacentElement","setAttribute","input","show","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","focusRing","stateLayer","clone","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","last","newCount","first","i","_M3eAutocompleteElement_deactivateOption","parentElement","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autocomplete.min.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { QueryEventDetail } from \"./QueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Emitted when the options menu opens or closes.\r\n * @fires query - Emitted when the input is focused or when the user modifies its value.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends HtmlFor(LitElement) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => !x.hidden) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #minMenuWidth(): string {\r\n const formField = this.#formField;\r\n return `${formField ? formField.menuAnchor.clientWidth : (this.control?.clientWidth ?? 0)}px`;\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"-no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"-loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#projectClone();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<QueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<QueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input && this.required && !this.#options.some((x) => x.selected && !x.disabled)) {\r\n this.#input.value = \"\";\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n if (e.button === 2) return;\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.style.minWidth = this.#minMenuWidth;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n\r\n this.#projectClone();\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #projectClone(): void {\r\n if (!this.#clone || !this.#menu) return;\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.textContent = this.noDataLabel;\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.textContent = this.loadingLabel;\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"-loading\", this.loading);\r\n setCustomState(menu, \"-no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.value;\r\n }\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => !x.hidden).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"-first\");\r\n deleteCustomState(clone, \"-last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"-first\");\r\n first = true;\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"-first\");\r\n if (last) {\r\n deleteCustomState(last, \"-last\");\r\n }\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n }\r\n }\r\n\r\n if (clone.selected && option.value !== exactTerm) {\r\n clone.selected = false;\r\n this.#updateSelectionState(clone);\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && !x.hidden);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<QueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","HtmlFor","LitElement","constructor","super","_M3eAutocompleteElement_id","set","this","M3eAutocompleteElement_1","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","value","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","items","querySelector","_M3eAutocompleteElement_options_get","some","x","length","formField","menuAnchor","clientWidth","closest","async","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","indexOf","_M3eAutocompleteElement_projectClone","_M3eAutocompleteElement_updateMenuState","readOnly","dispatchEvent","CustomEvent","detail","term","bubbles","composed","defaultPrevented","notifyControlStateChange","selected","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","button","stopImmediatePropagation","composedPath","find","HTMLElement","tagName","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","replaceChildren","childNodes","remove","undefined","removeAttribute","requestUpdate","document","createElement","klass","split","map","d","trim","Boolean","classList","add","scrollStrategy","style","overflowX","minWidth","_M3eAutocompleteElement_minMenuWidth_get","insertAdjacentElement","setAttribute","input","show","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","slot","textContent","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","focusRing","stateLayer","clone","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","last","newCount","first","i","_M3eAutocompleteElement_deactivateOption","parentElement","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":"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"}
|
package/dist/card.js
CHANGED
|
@@ -380,10 +380,12 @@ __decorate([query(".focus-ring")], M3eCardElement.prototype, "_focusRing", void
|
|
|
380
380
|
__decorate([query(".state-layer")], M3eCardElement.prototype, "_stateLayer", void 0);
|
|
381
381
|
__decorate([query(".ripple")], M3eCardElement.prototype, "_ripple", void 0);
|
|
382
382
|
__decorate([property({
|
|
383
|
-
type: Boolean
|
|
383
|
+
type: Boolean,
|
|
384
|
+
reflect: true
|
|
384
385
|
})], M3eCardElement.prototype, "inline", void 0);
|
|
385
386
|
__decorate([property({
|
|
386
|
-
type: Boolean
|
|
387
|
+
type: Boolean,
|
|
388
|
+
reflect: true
|
|
387
389
|
})], M3eCardElement.prototype, "actionable", void 0);
|
|
388
390
|
__decorate([property({
|
|
389
391
|
reflect: true
|
package/dist/card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../src/card/styles/CardToken.ts","../../src/card/styles/CardVariantToken.ts","../../src/card/styles/CardStyle.ts","../../src/card/styles/CardVariantStyle.ts","../../src/card/CardElement.ts"],"sourcesContent":["import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardToken = {\r\n padding: unsafeCSS(\"var(--m3e-card-padding, 1rem)\"),\r\n shape: unsafeCSS(`var(--m3e-card-shape, ${DesignToken.shape.corner.medium});`),\r\n} as const;\r\n","import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\n/** @private */\r\ntype _CardVariantToken = {\r\n textColor: CSSResult;\r\n containerColor: CSSResult;\r\n containerElevation: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineThickness?: CSSResult;\r\n disabled: {\r\n textColor: CSSResult;\r\n textOpacity: CSSResult;\r\n imageOpacity: CSSResult;\r\n containerColor?: CSSResult;\r\n containerOpacity?: CSSResult;\r\n containerElevation: CSSResult;\r\n containerElevationColor: CSSResult;\r\n containerElevationOpacity: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineOpacity?: CSSResult;\r\n };\r\n hover: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n focus: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n pressed: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n};\r\n\r\n/**\r\n * Component design tokens that control the appearance variants of `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantToken: Record<CardVariant, _CardVariantToken> = {\r\n filled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerHighest}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surfaceVariant}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n },\r\n elevated: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerLow}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level2}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n },\r\n outlined: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-outline-color, var(--m3e-card-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n outlineThickness: unsafeCSS(\"var(--m3e-outlined-card-outline-thickness, var(--m3e-card-outline-thickness, 1px))\"),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-color, var(--m3e-card-disabled-outline-color, ${DesignToken.color.outline}))`,\r\n ),\r\n outlineOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-opacity, var(--m3e-card-disabled-outline-opacity, 12%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-outline-color, var(--m3e-card-hover-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-outline-color, var(--m3e-card-focus-outline-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-outline-color, var(--m3e-card-pressed-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n },\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardToken } from \"./CardToken\";\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardStyle: CSSResult = css`\r\n :host {\r\n outline: none;\r\n }\r\n :host(:not([inline])) {\r\n display: block;\r\n }\r\n :host(:not([inline])) .base {\r\n display: flex;\r\n }\r\n :host([inline]) {\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n :host([inline]) .base {\r\n display: inline-flex;\r\n }\r\n .base {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n box-sizing: border-box;\r\n border-radius: ${CardToken.shape};\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n border-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host([actionable]) {\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host([actionable]:not(:disabled):not([disabled-interactive])) {\r\n cursor: pointer;\r\n }\r\n :host([actionable][disabled-interactive]) {\r\n cursor: not-allowed;\r\n }\r\n :host(:not([actionable])) .focus-ring,\r\n :host(:not([actionable])) .state-layer,\r\n :host(:not([actionable])) .ripple {\r\n display: none;\r\n }\r\n :host([variant=\"outlined\"]) .base {\r\n border-style: solid;\r\n }\r\n ::slotted([slot=\"content\"]) {\r\n flex: 1 1 auto;\r\n }\r\n ::slotted(img),\r\n ::slotted(video) {\r\n inset: 0;\r\n object-fit: cover;\r\n }\r\n ::slotted(img[slot=\"header\"]),\r\n ::slotted(video[slot=\"header\"]) {\r\n border-radius: ${CardToken.shape};\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n ::slotted([slot=\"header\"]),\r\n ::slotted([slot=\"actions\"]),\r\n ::slotted([slot=\"footer\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([orientation=\"vertical\"]) .base,\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: column;\r\n }\r\n :host([orientation=\"horizontal\"]) .base,\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: row;\r\n }\r\n :host([orientation=\"horizontal\"]) ::slotted(img),\r\n :host([orientation=\"horizontal\"]) ::slotted(video) {\r\n aspect-ratio: 16 / 9;\r\n }\r\n .has-content:not(.has-default) slot[name=\"content\"],\r\n .has-content.has-default slot:not([name]) {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: 1 1 auto;\r\n }\r\n .has-header slot[name=\"header\"],\r\n .has-actions slot[name=\"actions\"],\r\n .has-footer slot[name=\"footer\"] {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: none;\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-inline: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n .has-actions slot[name=\"actions\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-footer slot[name=\"footer\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-footer slot[name=\"footer\"] {\r\n margin-block: ${CardToken.padding};\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n a {\r\n all: unset;\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: 1;\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n :host([variant]) .base {\r\n border-style: solid;\r\n border-color: CanvasText;\r\n border-width: ${CardVariantToken.outlined.outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant]:disabled) .base,\r\n :host([actionable][variant][disabled-interactive]) .base {\r\n color: GrayText;\r\n border-color: GrayText;\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/** @private */\r\nfunction cardVariantStyle(variant: CardVariant): CSSResult {\r\n return css`\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n background-color: ${CardVariantToken[variant].containerColor ?? unsafeCSS(\"unset\")};\r\n box-shadow: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n border-width: ${CardVariantToken[variant].outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base {\r\n --m3e-state-layer-hover-color: ${CardVariantToken[variant].hover.stateLayerColor};\r\n --m3e-state-layer-hover-opacity: ${CardVariantToken[variant].hover.stateLayerOpacity};\r\n --m3e-state-layer-focus-color: ${CardVariantToken[variant].focus.stateLayerColor};\r\n --m3e-state-layer-focus-opacity: ${CardVariantToken[variant].focus.stateLayerOpacity};\r\n --m3e-ripple-color: ${CardVariantToken[variant].pressed.stateLayerColor};\r\n --m3e-ripple-opacity: ${CardVariantToken[variant].pressed.stateLayerOpacity};\r\n --m3e-elevation-level: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-hover-level: ${CardVariantToken[variant].hover.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-focus-level: ${CardVariantToken[variant].focus.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-pressed-level: ${CardVariantToken[variant].pressed.containerElevation ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n border-color: ${CardVariantToken[variant].outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus .base) {\r\n border-color: ${CardVariantToken[variant].focus.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover .base) {\r\n border-color: ${CardVariantToken[variant].hover.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n border-color: ${CardVariantToken[variant].pressed.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n color: ${CardVariantToken[variant].textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus) .base {\r\n color: ${CardVariantToken[variant].focus.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover) .base {\r\n color: ${CardVariantToken[variant].hover.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n color: ${CardVariantToken[variant].pressed.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) .base,\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) .base {\r\n --m3e-elevation-level: ${CardVariantToken[variant].disabled.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerElevationColor}\r\n ${CardVariantToken[variant].disabled.containerElevationOpacity},\r\n transparent\r\n );\r\n color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.textColor} ${CardVariantToken[variant].disabled.textOpacity},\r\n transparent\r\n );\r\n background-color: ${CardVariantToken[variant].disabled.containerColor &&\r\n CardVariantToken[variant].disabled.containerOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerColor} ${CardVariantToken[variant].disabled.containerOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n border-color: ${CardVariantToken[variant].disabled.outlineColor &&\r\n CardVariantToken[variant].disabled.outlineOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.outlineColor} ${CardVariantToken[variant].disabled.outlineOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(video),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(video) {\r\n opacity: ${CardVariantToken[variant].disabled.imageOpacity};\r\n }\r\n `;\r\n}\r\n\r\n/**\r\n * Appearance variant styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantStyle: CSSResultGroup = [\r\n cardVariantStyle(\"filled\"),\r\n cardVariantStyle(\"elevated\"),\r\n cardVariantStyle(\"outlined\"),\r\n];\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n renderPseudoLink,\r\n AttachInternals,\r\n Disabled,\r\n DisabledInteractive,\r\n Focusable,\r\n FormSubmitter,\r\n LinkButton,\r\n M3eElevationElement,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n PressedController,\r\n KeyboardClick,\r\n hasAssignedNodes,\r\n customElement,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"./CardVariant\";\r\n\r\nimport { CardStyle, CardVariantStyle } from \"./styles\";\r\nimport { CardOrientation } from \"./CardOrientation\";\r\n\r\n/**\r\n * A content container for text, images (or other media), and actions in the context of a single subject.\r\n *\r\n * @description\r\n * The `m3e-card` component is a flexible, expressive container for presenting a unified subject—text,\r\n * media, and actions—on a visually distinct surface. It supports multiple appearance variants via the\r\n * `variant` attribute: `filled` (default, for solid emphasis), `outlined` (for subtle framing with a border),\r\n * and `elevated` (for depth and motion with shadow elevation).\r\n *\r\n * Cards can be made actionable, responding to user interaction when the `actionable` attribute is set, and can be\r\n * presented inline with surrounding content using the `inline` attribute.\r\n *\r\n * It supports both vertical and horizontal layouts through the `orientation` attribute. Content organization is\r\n * enabled via dedicated slots for `header`, `content`, `actions`, and `footer`, or developers can use the default\r\n * slot for custom layouts.\r\n *\r\n * The component provides dynamic elevation, adaptive shape, and expressive color theming, and responds to interaction states\r\n * (hover, focus, press, disabled) with smooth motion and visual feedback, ensuring clarity, accessibility,\r\n * and a cohesive user experience in accordance with Material Design 3 guidelines.\r\n *\r\n * @example\r\n * The following example illustrates each of the dedicated slots of a card.\r\n * ```html\r\n * <m3e-card>\r\n * <div slot=\"header\">Header section</div>\r\n * <div slot=\"content\">Content section</div>\r\n * <div slot=\"actions\">Actions section</div>\r\n * <div slot=\"footer\">Footer section</div>\r\n * </m3e-card>\r\n * ```\r\n *\r\n * @tag m3e-card\r\n *\r\n * @slot - Renders the content of the card without padding.\r\n * @slot header - Renders the header of the card.\r\n * @slot content - Renders the content of the card with padding.\r\n * @slot actions - Renders the actions of the card.\r\n * @slot footer - Renders the footer of the card.\r\n *\r\n * @attr actionable - Whether the card is \"actionable\" and will respond to use interaction.\r\n * @attr inline - Whether to present the card inline with surrounding content.\r\n * @attr orientation - The orientation of the card.\r\n * @attr variant - The appearance variant of the card.\r\n *\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-card-padding - Internal spacing for all slotted regions\r\n * @cssprop --m3e-card-shape - Corner radius of the card container.\r\n * @cssprop --m3e-filled-card-text-color - Foreground color for text content in filled cards.\r\n * @cssprop --m3e-filled-card-container-color - Background color of the filled card container.\r\n * @cssprop --m3e-filled-card-container-elevation - Elevation level for filled card container.\r\n * @cssprop --m3e-filled-card-disabled-text-color - Text color when filled card is disabled.\r\n * @cssprop --m3e-filled-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-filled-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-filled-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-filled-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-filled-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-filled-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-filled-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-elevated-card-text-color - Foreground color for text content in elevated cards.\r\n * @cssprop --m3e-elevated-card-container-color - Background color of the elevated card container.\r\n * @cssprop --m3e-elevated-card-container-elevation - Elevation level for elevated card container.\r\n * @cssprop --m3e-elevated-card-disabled-text-color - Text color when elevated card is disabled.\r\n * @cssprop --m3e-elevated-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-elevated-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-elevated-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-elevated-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-elevated-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-elevated-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-elevated-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-text-color - Foreground color for text content in outlined cards.\r\n * @cssprop --m3e-outlined-card-container-color - Background color of the outlined card container.\r\n * @cssprop --m3e-outlined-card-container-elevation - Elevation level for outlined card container.\r\n * @cssprop --m3e-outlined-card-outline-color - Border color for outlined cards.\r\n * @cssprop --m3e-outlined-card-outline-thickness - Border thickness for outlined cards.\r\n * @cssprop --m3e-outlined-card-disabled-text-color - Text color when outlined card is disabled.\r\n * @cssprop --m3e-outlined-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-color - Border color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-opacity - Border opacity when disabled.\r\n * @cssprop --m3e-outlined-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-outlined-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-outlined-card-hover-outline-color - Border color on hover.\r\n * @cssprop --m3e-outlined-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-outlined-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-outlined-card-focus-outline-color - Border color on focus.\r\n * @cssprop --m3e-outlined-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-outlined-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-pressed-outline-color - Border color on press.\r\n */\r\n@customElement(\"m3e-card\")\r\nexport class M3eCardElement extends KeyboardClick(\r\n LinkButton(FormSubmitter(Focusable(DisabledInteractive(Disabled(AttachInternals(LitElement), true))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [CardVariantStyle, CardStyle];\r\n\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".elevation\") private readonly _elevation?: M3eElevationElement;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, {\r\n isPressedKey: (key) => key === \" \",\r\n callback: (pressed) => {\r\n if (this.actionable && !this.disabled && !this.disabledInteractive) {\r\n this._base?.classList.toggle(\"pressed\", pressed);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether to present the card inline with surrounding content.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) inline = false;\r\n\r\n /**\r\n * Whether the card is \"actionable\" and will respond to use interaction.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) actionable = false;\r\n\r\n /**\r\n * The appearance variant of the card.\r\n * @default \"filled\"\r\n */\r\n @property({ reflect: true }) variant: CardVariant = \"filled\";\r\n\r\n /**\r\n * The orientation of the card.\r\n * @default \"vertical\"\r\n */\r\n @property({ reflect: true }) orientation: CardOrientation = \"vertical\";\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n if (this.hasAttribute(\"actionable\")) {\r\n // If href is specified, the LinkButton mixin changes this to \"link\" if role is \"button\".\r\n this.role = \"button\";\r\n }\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._base?.classList.toggle(\"pressed\", false);\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <m3e-elevation\r\n class=\"elevation\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-elevation>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${!this.actionable || this.disabled}\"></m3e-focus-ring>\r\n <m3e-state-layer\r\n class=\"state-layer\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-state-layer>\r\n <m3e-ripple\r\n class=\"ripple\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-ripple>\r\n ${this[renderPseudoLink]()}\r\n <slot name=\"header\" @slotchange=\"${this.#handleHeaderSlotChange}\"></slot>\r\n <slot name=\"content\" @slotchange=\"${this.#handleContentSlotChange}\">\r\n <slot @slotchange=\"${this.#handleDefaultSlotChange}\"></slot>\r\n </slot>\r\n <slot name=\"actions\" @slotchange=\"${this.#handleActionsSlotChange}\"></slot>\r\n <slot name=\"footer\" @slotchange=\"${this.#handleFooterSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderSlotChange(e: Event): void {\r\n const assignedNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true });\r\n const base = this.shadowRoot?.querySelector(\".base\");\r\n base?.classList.toggle(\"has-header\", assignedNodes.length > 0);\r\n base?.classList.toggle(\r\n \"has-header-media\",\r\n assignedNodes.some((x) => x instanceof HTMLElement && (x.tagName === \"IMG\" || x.tagName === \"VIDEO\")),\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleContentSlotChange(): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-content\", this.querySelector(\"[slot='content']\") !== null);\r\n }\r\n\r\n /** @private */\r\n #handleDefaultSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\r\n \"has-default\",\r\n hasAssignedNodes(e.target as HTMLSlotElement) && this.querySelector(\"[slot='content']\") === null,\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleActionsSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-actions\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @private */\r\n #handleFooterSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-footer\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n [this._elevation, this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled || this.disabledInteractive) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-card\": M3eCardElement;\r\n }\r\n}\r\n"],"names":["CardToken","padding","unsafeCSS","shape","DesignToken","corner","medium","CardVariantToken","filled","textColor","color","onSurface","containerColor","surfaceContainerHighest","containerElevation","elevation","level0","disabled","textOpacity","imageOpacity","surfaceVariant","containerElevationColor","containerElevationOpacity","containerOpacity","hover","stateLayerColor","stateLayerOpacity","state","hoverStateLayerOpacity","level1","focus","focusStateLayerOpacity","pressed","pressedStateLayerOpacity","elevated","surfaceContainerLow","surface","level2","outlined","outlineColor","outlineVariant","outlineThickness","outline","outlineOpacity","CardStyle","css","motion","duration","short4","easing","standard","cardVariantStyle","variant","CardVariantStyle","M3eCardElement","KeyboardClick","LinkButton","FormSubmitter","Focusable","DisabledInteractive","Disabled","AttachInternals","LitElement","constructor","_M3eCardElement_clickHandler","set","e","__classPrivateFieldGet","call","inline","actionable","orientation","PressedController","isPressedKey","key","callback","disabledInteractive","_base","classList","toggle","connectedCallback","hasAttribute","role","addEventListener","disconnectedCallback","removeEventListener","render","html","renderPseudoLink","_M3eCardElement_instances","_M3eCardElement_handleHeaderSlotChange","_M3eCardElement_handleContentSlotChange","_M3eCardElement_handleDefaultSlotChange","_M3eCardElement_handleActionsSlotChange","_M3eCardElement_handleFooterSlotChange","firstUpdated","_changedProperties","_elevation","_focusRing","_stateLayer","_ripple","forEach","x","attach","removeAttribute","update","changedProperties","assignedNodes","target","flatten","base","shadowRoot","querySelector","length","some","HTMLElement","tagName","hasAssignedNodes","preventDefault","stopImmediatePropagation","styles","__decorate","query","prototype","property","type","Boolean","reflect","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../src/card/styles/CardToken.ts","../../src/card/styles/CardVariantToken.ts","../../src/card/styles/CardStyle.ts","../../src/card/styles/CardVariantStyle.ts","../../src/card/CardElement.ts"],"sourcesContent":["import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardToken = {\r\n padding: unsafeCSS(\"var(--m3e-card-padding, 1rem)\"),\r\n shape: unsafeCSS(`var(--m3e-card-shape, ${DesignToken.shape.corner.medium});`),\r\n} as const;\r\n","import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\n/** @private */\r\ntype _CardVariantToken = {\r\n textColor: CSSResult;\r\n containerColor: CSSResult;\r\n containerElevation: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineThickness?: CSSResult;\r\n disabled: {\r\n textColor: CSSResult;\r\n textOpacity: CSSResult;\r\n imageOpacity: CSSResult;\r\n containerColor?: CSSResult;\r\n containerOpacity?: CSSResult;\r\n containerElevation: CSSResult;\r\n containerElevationColor: CSSResult;\r\n containerElevationOpacity: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineOpacity?: CSSResult;\r\n };\r\n hover: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n focus: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n pressed: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n};\r\n\r\n/**\r\n * Component design tokens that control the appearance variants of `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantToken: Record<CardVariant, _CardVariantToken> = {\r\n filled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerHighest}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surfaceVariant}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n },\r\n elevated: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerLow}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level2}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n },\r\n outlined: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-outline-color, var(--m3e-card-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n outlineThickness: unsafeCSS(\"var(--m3e-outlined-card-outline-thickness, var(--m3e-card-outline-thickness, 1px))\"),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-color, var(--m3e-card-disabled-outline-color, ${DesignToken.color.outline}))`,\r\n ),\r\n outlineOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-opacity, var(--m3e-card-disabled-outline-opacity, 12%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-outline-color, var(--m3e-card-hover-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-outline-color, var(--m3e-card-focus-outline-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-outline-color, var(--m3e-card-pressed-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n },\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardToken } from \"./CardToken\";\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardStyle: CSSResult = css`\r\n :host {\r\n outline: none;\r\n }\r\n :host(:not([inline])) {\r\n display: block;\r\n }\r\n :host(:not([inline])) .base {\r\n display: flex;\r\n }\r\n :host([inline]) {\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n :host([inline]) .base {\r\n display: inline-flex;\r\n }\r\n .base {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n box-sizing: border-box;\r\n border-radius: ${CardToken.shape};\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n border-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host([actionable]) {\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host([actionable]:not(:disabled):not([disabled-interactive])) {\r\n cursor: pointer;\r\n }\r\n :host([actionable][disabled-interactive]) {\r\n cursor: not-allowed;\r\n }\r\n :host(:not([actionable])) .focus-ring,\r\n :host(:not([actionable])) .state-layer,\r\n :host(:not([actionable])) .ripple {\r\n display: none;\r\n }\r\n :host([variant=\"outlined\"]) .base {\r\n border-style: solid;\r\n }\r\n ::slotted([slot=\"content\"]) {\r\n flex: 1 1 auto;\r\n }\r\n ::slotted(img),\r\n ::slotted(video) {\r\n inset: 0;\r\n object-fit: cover;\r\n }\r\n ::slotted(img[slot=\"header\"]),\r\n ::slotted(video[slot=\"header\"]) {\r\n border-radius: ${CardToken.shape};\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n ::slotted([slot=\"header\"]),\r\n ::slotted([slot=\"actions\"]),\r\n ::slotted([slot=\"footer\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([orientation=\"vertical\"]) .base,\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: column;\r\n }\r\n :host([orientation=\"horizontal\"]) .base,\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: row;\r\n }\r\n :host([orientation=\"horizontal\"]) ::slotted(img),\r\n :host([orientation=\"horizontal\"]) ::slotted(video) {\r\n aspect-ratio: 16 / 9;\r\n }\r\n .has-content:not(.has-default) slot[name=\"content\"],\r\n .has-content.has-default slot:not([name]) {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: 1 1 auto;\r\n }\r\n .has-header slot[name=\"header\"],\r\n .has-actions slot[name=\"actions\"],\r\n .has-footer slot[name=\"footer\"] {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: none;\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-inline: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n .has-actions slot[name=\"actions\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-footer slot[name=\"footer\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-footer slot[name=\"footer\"] {\r\n margin-block: ${CardToken.padding};\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n a {\r\n all: unset;\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: 1;\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n :host([variant]) .base {\r\n border-style: solid;\r\n border-color: CanvasText;\r\n border-width: ${CardVariantToken.outlined.outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant]:disabled) .base,\r\n :host([actionable][variant][disabled-interactive]) .base {\r\n color: GrayText;\r\n border-color: GrayText;\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/** @private */\r\nfunction cardVariantStyle(variant: CardVariant): CSSResult {\r\n return css`\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n background-color: ${CardVariantToken[variant].containerColor ?? unsafeCSS(\"unset\")};\r\n box-shadow: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n border-width: ${CardVariantToken[variant].outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base {\r\n --m3e-state-layer-hover-color: ${CardVariantToken[variant].hover.stateLayerColor};\r\n --m3e-state-layer-hover-opacity: ${CardVariantToken[variant].hover.stateLayerOpacity};\r\n --m3e-state-layer-focus-color: ${CardVariantToken[variant].focus.stateLayerColor};\r\n --m3e-state-layer-focus-opacity: ${CardVariantToken[variant].focus.stateLayerOpacity};\r\n --m3e-ripple-color: ${CardVariantToken[variant].pressed.stateLayerColor};\r\n --m3e-ripple-opacity: ${CardVariantToken[variant].pressed.stateLayerOpacity};\r\n --m3e-elevation-level: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-hover-level: ${CardVariantToken[variant].hover.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-focus-level: ${CardVariantToken[variant].focus.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-pressed-level: ${CardVariantToken[variant].pressed.containerElevation ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n border-color: ${CardVariantToken[variant].outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus .base) {\r\n border-color: ${CardVariantToken[variant].focus.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover .base) {\r\n border-color: ${CardVariantToken[variant].hover.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n border-color: ${CardVariantToken[variant].pressed.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n color: ${CardVariantToken[variant].textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus) .base {\r\n color: ${CardVariantToken[variant].focus.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover) .base {\r\n color: ${CardVariantToken[variant].hover.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n color: ${CardVariantToken[variant].pressed.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) .base,\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) .base {\r\n --m3e-elevation-level: ${CardVariantToken[variant].disabled.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerElevationColor}\r\n ${CardVariantToken[variant].disabled.containerElevationOpacity},\r\n transparent\r\n );\r\n color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.textColor} ${CardVariantToken[variant].disabled.textOpacity},\r\n transparent\r\n );\r\n background-color: ${CardVariantToken[variant].disabled.containerColor &&\r\n CardVariantToken[variant].disabled.containerOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerColor} ${CardVariantToken[variant].disabled.containerOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n border-color: ${CardVariantToken[variant].disabled.outlineColor &&\r\n CardVariantToken[variant].disabled.outlineOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.outlineColor} ${CardVariantToken[variant].disabled.outlineOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(video),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(video) {\r\n opacity: ${CardVariantToken[variant].disabled.imageOpacity};\r\n }\r\n `;\r\n}\r\n\r\n/**\r\n * Appearance variant styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantStyle: CSSResultGroup = [\r\n cardVariantStyle(\"filled\"),\r\n cardVariantStyle(\"elevated\"),\r\n cardVariantStyle(\"outlined\"),\r\n];\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n renderPseudoLink,\r\n AttachInternals,\r\n Disabled,\r\n DisabledInteractive,\r\n Focusable,\r\n FormSubmitter,\r\n LinkButton,\r\n M3eElevationElement,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n PressedController,\r\n KeyboardClick,\r\n hasAssignedNodes,\r\n customElement,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"./CardVariant\";\r\n\r\nimport { CardStyle, CardVariantStyle } from \"./styles\";\r\nimport { CardOrientation } from \"./CardOrientation\";\r\n\r\n/**\r\n * A content container for text, images (or other media), and actions in the context of a single subject.\r\n *\r\n * @description\r\n * The `m3e-card` component is a flexible, expressive container for presenting a unified subject—text,\r\n * media, and actions—on a visually distinct surface. It supports multiple appearance variants via the\r\n * `variant` attribute: `filled` (default, for solid emphasis), `outlined` (for subtle framing with a border),\r\n * and `elevated` (for depth and motion with shadow elevation).\r\n *\r\n * Cards can be made actionable, responding to user interaction when the `actionable` attribute is set, and can be\r\n * presented inline with surrounding content using the `inline` attribute.\r\n *\r\n * It supports both vertical and horizontal layouts through the `orientation` attribute. Content organization is\r\n * enabled via dedicated slots for `header`, `content`, `actions`, and `footer`, or developers can use the default\r\n * slot for custom layouts.\r\n *\r\n * The component provides dynamic elevation, adaptive shape, and expressive color theming, and responds to interaction states\r\n * (hover, focus, press, disabled) with smooth motion and visual feedback, ensuring clarity, accessibility,\r\n * and a cohesive user experience in accordance with Material Design 3 guidelines.\r\n *\r\n * @example\r\n * The following example illustrates each of the dedicated slots of a card.\r\n * ```html\r\n * <m3e-card>\r\n * <div slot=\"header\">Header section</div>\r\n * <div slot=\"content\">Content section</div>\r\n * <div slot=\"actions\">Actions section</div>\r\n * <div slot=\"footer\">Footer section</div>\r\n * </m3e-card>\r\n * ```\r\n *\r\n * @tag m3e-card\r\n *\r\n * @slot - Renders the content of the card without padding.\r\n * @slot header - Renders the header of the card.\r\n * @slot content - Renders the content of the card with padding.\r\n * @slot actions - Renders the actions of the card.\r\n * @slot footer - Renders the footer of the card.\r\n *\r\n * @attr actionable - Whether the card is \"actionable\" and will respond to use interaction.\r\n * @attr inline - Whether to present the card inline with surrounding content.\r\n * @attr orientation - The orientation of the card.\r\n * @attr variant - The appearance variant of the card.\r\n *\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-card-padding - Internal spacing for all slotted regions\r\n * @cssprop --m3e-card-shape - Corner radius of the card container.\r\n * @cssprop --m3e-filled-card-text-color - Foreground color for text content in filled cards.\r\n * @cssprop --m3e-filled-card-container-color - Background color of the filled card container.\r\n * @cssprop --m3e-filled-card-container-elevation - Elevation level for filled card container.\r\n * @cssprop --m3e-filled-card-disabled-text-color - Text color when filled card is disabled.\r\n * @cssprop --m3e-filled-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-filled-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-filled-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-filled-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-filled-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-filled-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-filled-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-elevated-card-text-color - Foreground color for text content in elevated cards.\r\n * @cssprop --m3e-elevated-card-container-color - Background color of the elevated card container.\r\n * @cssprop --m3e-elevated-card-container-elevation - Elevation level for elevated card container.\r\n * @cssprop --m3e-elevated-card-disabled-text-color - Text color when elevated card is disabled.\r\n * @cssprop --m3e-elevated-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-elevated-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-elevated-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-elevated-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-elevated-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-elevated-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-elevated-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-text-color - Foreground color for text content in outlined cards.\r\n * @cssprop --m3e-outlined-card-container-color - Background color of the outlined card container.\r\n * @cssprop --m3e-outlined-card-container-elevation - Elevation level for outlined card container.\r\n * @cssprop --m3e-outlined-card-outline-color - Border color for outlined cards.\r\n * @cssprop --m3e-outlined-card-outline-thickness - Border thickness for outlined cards.\r\n * @cssprop --m3e-outlined-card-disabled-text-color - Text color when outlined card is disabled.\r\n * @cssprop --m3e-outlined-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-color - Border color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-opacity - Border opacity when disabled.\r\n * @cssprop --m3e-outlined-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-outlined-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-outlined-card-hover-outline-color - Border color on hover.\r\n * @cssprop --m3e-outlined-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-outlined-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-outlined-card-focus-outline-color - Border color on focus.\r\n * @cssprop --m3e-outlined-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-outlined-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-pressed-outline-color - Border color on press.\r\n */\r\n@customElement(\"m3e-card\")\r\nexport class M3eCardElement extends KeyboardClick(\r\n LinkButton(FormSubmitter(Focusable(DisabledInteractive(Disabled(AttachInternals(LitElement), true))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [CardVariantStyle, CardStyle];\r\n\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".elevation\") private readonly _elevation?: M3eElevationElement;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, {\r\n isPressedKey: (key) => key === \" \",\r\n callback: (pressed) => {\r\n if (this.actionable && !this.disabled && !this.disabledInteractive) {\r\n this._base?.classList.toggle(\"pressed\", pressed);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether to present the card inline with surrounding content.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) inline = false;\r\n\r\n /**\r\n * Whether the card is \"actionable\" and will respond to use interaction.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) actionable = false;\r\n\r\n /**\r\n * The appearance variant of the card.\r\n * @default \"filled\"\r\n */\r\n @property({ reflect: true }) variant: CardVariant = \"filled\";\r\n\r\n /**\r\n * The orientation of the card.\r\n * @default \"vertical\"\r\n */\r\n @property({ reflect: true }) orientation: CardOrientation = \"vertical\";\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n if (this.hasAttribute(\"actionable\")) {\r\n // If href is specified, the LinkButton mixin changes this to \"link\" if role is \"button\".\r\n this.role = \"button\";\r\n }\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._base?.classList.toggle(\"pressed\", false);\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <m3e-elevation\r\n class=\"elevation\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-elevation>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${!this.actionable || this.disabled}\"></m3e-focus-ring>\r\n <m3e-state-layer\r\n class=\"state-layer\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-state-layer>\r\n <m3e-ripple\r\n class=\"ripple\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-ripple>\r\n ${this[renderPseudoLink]()}\r\n <slot name=\"header\" @slotchange=\"${this.#handleHeaderSlotChange}\"></slot>\r\n <slot name=\"content\" @slotchange=\"${this.#handleContentSlotChange}\">\r\n <slot @slotchange=\"${this.#handleDefaultSlotChange}\"></slot>\r\n </slot>\r\n <slot name=\"actions\" @slotchange=\"${this.#handleActionsSlotChange}\"></slot>\r\n <slot name=\"footer\" @slotchange=\"${this.#handleFooterSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderSlotChange(e: Event): void {\r\n const assignedNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true });\r\n const base = this.shadowRoot?.querySelector(\".base\");\r\n base?.classList.toggle(\"has-header\", assignedNodes.length > 0);\r\n base?.classList.toggle(\r\n \"has-header-media\",\r\n assignedNodes.some((x) => x instanceof HTMLElement && (x.tagName === \"IMG\" || x.tagName === \"VIDEO\")),\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleContentSlotChange(): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-content\", this.querySelector(\"[slot='content']\") !== null);\r\n }\r\n\r\n /** @private */\r\n #handleDefaultSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\r\n \"has-default\",\r\n hasAssignedNodes(e.target as HTMLSlotElement) && this.querySelector(\"[slot='content']\") === null,\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleActionsSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-actions\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @private */\r\n #handleFooterSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-footer\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n [this._elevation, this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled || this.disabledInteractive) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-card\": M3eCardElement;\r\n }\r\n}\r\n"],"names":["CardToken","padding","unsafeCSS","shape","DesignToken","corner","medium","CardVariantToken","filled","textColor","color","onSurface","containerColor","surfaceContainerHighest","containerElevation","elevation","level0","disabled","textOpacity","imageOpacity","surfaceVariant","containerElevationColor","containerElevationOpacity","containerOpacity","hover","stateLayerColor","stateLayerOpacity","state","hoverStateLayerOpacity","level1","focus","focusStateLayerOpacity","pressed","pressedStateLayerOpacity","elevated","surfaceContainerLow","surface","level2","outlined","outlineColor","outlineVariant","outlineThickness","outline","outlineOpacity","CardStyle","css","motion","duration","short4","easing","standard","cardVariantStyle","variant","CardVariantStyle","M3eCardElement","KeyboardClick","LinkButton","FormSubmitter","Focusable","DisabledInteractive","Disabled","AttachInternals","LitElement","constructor","_M3eCardElement_clickHandler","set","e","__classPrivateFieldGet","call","inline","actionable","orientation","PressedController","isPressedKey","key","callback","disabledInteractive","_base","classList","toggle","connectedCallback","hasAttribute","role","addEventListener","disconnectedCallback","removeEventListener","render","html","renderPseudoLink","_M3eCardElement_instances","_M3eCardElement_handleHeaderSlotChange","_M3eCardElement_handleContentSlotChange","_M3eCardElement_handleDefaultSlotChange","_M3eCardElement_handleActionsSlotChange","_M3eCardElement_handleFooterSlotChange","firstUpdated","_changedProperties","_elevation","_focusRing","_stateLayer","_ripple","forEach","x","attach","removeAttribute","update","changedProperties","assignedNodes","target","flatten","base","shadowRoot","querySelector","length","some","HTMLElement","tagName","hasAssignedNodes","preventDefault","stopImmediatePropagation","styles","__decorate","query","prototype","property","type","Boolean","reflect","customElement"],"mappings":"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"}
|