@redvars/peacock 3.8.5 → 3.8.6
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/button.js +4 -0
- package/dist/button.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +185 -15
- package/dist/custom-elements.json +886 -177
- package/dist/floating-controller-CZYwnRVu.js +185 -0
- package/dist/floating-controller-CZYwnRVu.js.map +1 -0
- package/dist/{floating-controller-CnUZnOhK.js → floating-ui.dom-oQieRCpS.js} +2 -183
- package/dist/floating-ui.dom-oQieRCpS.js.map +1 -0
- package/dist/html-editor.js +3 -21091
- package/dist/html-editor.js.map +1 -1
- package/dist/index-DcbiqHpf.js +21091 -0
- package/dist/index-DcbiqHpf.js.map +1 -0
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/loader.js +7 -2
- package/dist/loader.js.map +1 -1
- package/dist/markdown-editor.js +4439 -0
- package/dist/markdown-editor.js.map +1 -0
- package/dist/menu.js +2 -1
- package/dist/menu.js.map +1 -1
- package/dist/popover.js +2 -1
- package/dist/popover.js.map +1 -1
- package/dist/{select-D85kpjUt.js → select-CnnPbvpQ.js} +68 -71
- package/dist/select-CnnPbvpQ.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/input/input.d.ts +5 -5
- package/dist/src/markdown-editor/index.d.ts +2 -0
- package/dist/src/markdown-editor/markdown-editor.d.ts +116 -0
- package/dist/sub-menu.js +2 -1
- package/dist/sub-menu.js.map +1 -1
- package/dist/tooltip.js +2 -1
- package/dist/tooltip.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -1
- package/readme.md +2 -2
- package/src/button/button/button-sizes.scss +4 -0
- package/src/index.ts +1 -0
- package/src/input/input.ts +85 -82
- package/src/loader.ts +4 -0
- package/src/markdown-editor/index.ts +3 -0
- package/src/markdown-editor/markdown-editor.scss +378 -0
- package/src/markdown-editor/markdown-editor.ts +994 -0
- package/dist/floating-controller-CnUZnOhK.js.map +0 -1
- package/dist/select-D85kpjUt.js.map +0 -1
package/dist/menu.js
CHANGED
|
@@ -3,10 +3,11 @@ import { n } from './property-B49QQ8pS.js';
|
|
|
3
3
|
import { r } from './state-DkTK9EGF.js';
|
|
4
4
|
import { e } from './query-CHb9Ft_d.js';
|
|
5
5
|
import { e as e$1 } from './class-map-DG7CA1et.js';
|
|
6
|
-
import { F as FloatingController } from './floating-controller-
|
|
6
|
+
import { F as FloatingController } from './floating-controller-CZYwnRVu.js';
|
|
7
7
|
import { MenuItem } from './menu-item.js';
|
|
8
8
|
import './base-Cl6v8-BZ.js';
|
|
9
9
|
import './directive-ZPhl09Yt.js';
|
|
10
|
+
import './floating-ui.dom-oQieRCpS.js';
|
|
10
11
|
import './if-defined-BXZpRQ4P.js';
|
|
11
12
|
import './NativeHyperlinkMixin-D9J4aBTy.js';
|
|
12
13
|
import './is-link-Dk2OV3PM.js';
|
package/dist/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sources":["../../src/menu/menu/menu.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport type { Placement } from '@floating-ui/dom';\nimport styles from './menu.scss';\nimport { FloatingController } from '../../__internal/controllers/floating-controller.js';\nimport { MenuItem } from '../menu-item/menu-item.js';\nimport IndividualComponent from '@/IndividualComponent.js';\n\ntype CloseReason =\n | { kind: 'click-selection' }\n | { kind: 'keydown'; key: string }\n | { kind: 'outside-click' }\n | { kind: 'focusout' }\n | { kind: 'programmatic' };\n\n/**\n * @label Menu\n * @tag wc-menu\n * @rawTag menu\n * @summary A list of menu items.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu preview>\n * <wc-menu-item>Item 1</wc-menu-item>\n * <wc-menu-item selected>Item 2</wc-menu-item>\n * </wc-menu>\n * ```\n */\n@IndividualComponent\nexport class Menu extends LitElement {\n static styles = [styles];\n\n static Item = MenuItem;\n\n /** Whether the menu is currently visible. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** Visual variant of the menu. `\"vibrant\"` applies stronger color emphasis. */\n @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =\n 'standard';\n\n /** ID of the anchor element the menu is positioned relative to. */\n @property({ type: String }) anchor = '';\n\n /** When true, renders the menu in a static preview state (always visible, no animation). */\n @property({ type: Boolean, reflect: true }) preview = false;\n\n /** When true, the menu will not close when a click occurs outside it. */\n @property({ type: Boolean, attribute: 'stay-open-on-outside-click' })\n stayOpenOnOutsideClick = false;\n\n /** When true, the menu will not close when focus leaves it. */\n @property({ type: Boolean, attribute: 'stay-open-on-focusout' })\n stayOpenOnFocusout = false;\n\n /** Set to true when this menu is being used as a submenu inside another menu. */\n @property({ type: Boolean, attribute: 'is-submenu' }) isSubmenu = false;\n\n /** Floating UI placement of the menu relative to its anchor. */\n @property({ type: String }) placement: Placement = 'bottom-start';\n\n /** Distance in pixels between the menu and its anchor element. */\n @property({ type: Number }) offset = 6;\n\n /** Index of the currently focused/active item within the enabled items list. */\n @state() private activeIndex = -1;\n\n @query('.menu') private readonly menuListElement!: HTMLElement;\n\n /** Direct reference to the anchor element; takes precedence over the `anchor` ID property. */\n anchorElement: HTMLElement | null = null;\n\n /** Controller managing floating-UI positioning. */\n private readonly _floatingController = new FloatingController(this, {\n trigger: 'manual',\n closeOnClickOutside: false,\n strategy: 'fixed',\n onOpenChange: isOpen => {\n if (isOpen || !this.open) {\n return;\n }\n\n this.close({ kind: 'outside-click' });\n },\n });\n\n /** Element that had focus before the menu opened; restored on close. */\n private _lastFocusedElement: HTMLElement | null = null;\n\n /** Reason that triggered the most recent close, included in the `closed` event detail. */\n private _closeReason: CloseReason = { kind: 'programmatic' };\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n\n this.addEventListener('keydown', this._onKeyDown);\n this.addEventListener('click', this._onClick);\n this._syncAnchorAria();\n }\n\n disconnectedCallback() {\n this.removeEventListener('keydown', this._onKeyDown);\n this.removeEventListener('click', this._onClick);\n this._floatingController.close();\n super.disconnectedCallback();\n }\n\n get items(): MenuItem[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const elements = slot?.assignedElements({ flatten: true }) ?? [];\n const items: MenuItem[] = [];\n\n for (const element of elements) {\n if (element instanceof MenuItem) {\n items.push(element);\n } else {\n const maybeItem = (element as { item?: unknown }).item;\n if (maybeItem instanceof MenuItem) {\n items.push(maybeItem);\n }\n }\n }\n\n return items;\n }\n\n show() {\n if (this.open) {\n return;\n }\n\n this._closeReason = { kind: 'programmatic' };\n this.open = true;\n }\n\n close(reason: CloseReason = { kind: 'programmatic' }) {\n if (!this.open) {\n return;\n }\n\n this._closeReason = reason;\n this.open = false;\n }\n\n override focus() {\n const target = this._getActiveItem() ?? this._getFirstEnabledItem();\n target?.focus();\n }\n\n private _resolveAnchorElement() {\n if (this.anchorElement) {\n return this.anchorElement;\n }\n\n if (!this.anchor) {\n return null;\n }\n\n const root = this.getRootNode() as Document | ShadowRoot;\n if ('getElementById' in root) {\n return root.getElementById(this.anchor);\n }\n\n return document.getElementById(this.anchor);\n }\n\n private _syncAnchorAria() {\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n if (!this.id) {\n this.id = `wc-menu-${Math.random().toString(36).slice(2, 9)}`;\n }\n\n anchorEl.setAttribute('aria-haspopup', 'menu');\n anchorEl.setAttribute('aria-controls', this.id);\n anchorEl.setAttribute('aria-expanded', String(this.open));\n }\n\n private _enabledItems() {\n return this.items.filter(item => !item.disabled);\n }\n\n private _syncRovingTabIndex() {\n const ownedItems = this.items;\n const enabledItems = this._enabledItems();\n for (const item of ownedItems) {\n item.tabIndex = -1;\n }\n\n if (!enabledItems.length) {\n this.activeIndex = -1;\n return;\n }\n\n if (this.activeIndex < 0 || this.activeIndex >= enabledItems.length) {\n this.activeIndex = 0;\n }\n\n enabledItems[this.activeIndex].tabIndex = 0;\n }\n\n private _setActiveByOffset(offset: 1 | -1) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n if (this.activeIndex < 0) {\n this.activeIndex = 0;\n } else {\n const count = enabledItems.length;\n this.activeIndex = (this.activeIndex + offset + count) % count;\n }\n\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _setBoundaryActive(index: number) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n this.activeIndex = index;\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _getActiveItem() {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length || this.activeIndex < 0) {\n return null;\n }\n\n return enabledItems[this.activeIndex] ?? null;\n }\n\n private _getFirstEnabledItem() {\n return this._enabledItems()[0] ?? null;\n }\n\n private _isEventFromThisMenu(event: Event) {\n const path = event.composedPath();\n const sourceMenu = path.find(target => target instanceof Menu);\n\n return sourceMenu === this;\n }\n\n private _ownedItemFromEvent(event: Event) {\n if (!this._isEventFromThisMenu(event)) {\n return null;\n }\n\n const path = event.composedPath();\n const ownedItems = this.items;\n\n for (const target of path) {\n if (target instanceof MenuItem) {\n const ownedItem = ownedItems.find(item => item === target);\n if (ownedItem) {\n return ownedItem;\n }\n }\n }\n\n return null;\n }\n\n private _setActiveItem(item: MenuItem) {\n const enabledItems = this._enabledItems();\n const nextIndex = enabledItems.indexOf(item);\n if (nextIndex < 0) {\n return;\n }\n\n this.activeIndex = nextIndex;\n this._syncRovingTabIndex();\n }\n\n private _dispatchItemActivate(item: MenuItem) {\n this.dispatchEvent(\n new CustomEvent('menu-item-activate', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n\n private _onClick = (event: Event) => {\n if (!this.open) {\n return;\n }\n\n const item = this._ownedItemFromEvent(event);\n if (!item) {\n return;\n }\n\n this._setActiveItem(item);\n this._dispatchItemActivate(item);\n if (item.keepOpen) {\n return;\n }\n\n this.close({ kind: 'click-selection' });\n };\n\n private _onKeyDown = (event: KeyboardEvent) => {\n if (!this.open) {\n return;\n }\n\n if (!this._isEventFromThisMenu(event)) {\n return;\n }\n\n const eventItem = this._ownedItemFromEvent(event);\n if (eventItem) {\n this._setActiveItem(eventItem);\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._setActiveByOffset(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._setActiveByOffset(-1);\n break;\n case 'Home':\n event.preventDefault();\n this._setBoundaryActive(0);\n break;\n case 'End': {\n event.preventDefault();\n const last = Math.max(this._enabledItems().length - 1, 0);\n this._setBoundaryActive(last);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close({ kind: 'keydown', key: 'Escape' });\n break;\n case 'Tab':\n this.close({ kind: 'keydown', key: 'Tab' });\n break;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const activeItem = this._getActiveItem() ?? this._getFirstEnabledItem();\n if (!activeItem) {\n return;\n }\n\n this._setActiveItem(activeItem);\n activeItem.click();\n break;\n }\n default:\n break;\n }\n };\n\n private _onSlotChange = () => {\n this._syncRovingTabIndex();\n };\n\n private _applyPositioning() {\n if (!this.open || !this.menuListElement) {\n return;\n }\n\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n this._floatingController.setOptions({\n placement: this.placement,\n offset: this.offset,\n strategy: 'fixed',\n closeOnClickOutside: !this.stayOpenOnOutsideClick,\n });\n this._floatingController.setElements(anchorEl, this.menuListElement);\n this._floatingController.open();\n }\n\n protected override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('anchor') || changedProperties.has('open')) {\n this._syncAnchorAria();\n }\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._lastFocusedElement = document.activeElement as HTMLElement | null;\n this._syncRovingTabIndex();\n this.dispatchEvent(\n new CustomEvent('opened', {\n bubbles: true,\n composed: true,\n }),\n );\n\n this._applyPositioning();\n } else {\n this._floatingController.close();\n\n const reason = this._closeReason;\n this.dispatchEvent(\n new CustomEvent('close-menu', {\n bubbles: true,\n composed: true,\n detail: {\n reason,\n itemPath: [],\n },\n }),\n );\n this.dispatchEvent(\n new CustomEvent('closed', {\n bubbles: true,\n composed: true,\n detail: { reason },\n }),\n );\n\n const shouldRestoreFocus =\n reason.kind !== 'keydown' || reason.key !== 'Tab';\n\n if (!this.isSubmenu && shouldRestoreFocus) {\n this._lastFocusedElement?.focus();\n }\n }\n }\n\n if (\n (changedProperties.has('open') ||\n changedProperties.has('anchor') ||\n changedProperties.has('placement') ||\n changedProperties.has('offset')) &&\n this.open\n ) {\n this._applyPositioning();\n }\n }\n\n render() {\n return html`<div\n class=${classMap({\n menu: true,\n open: !this.preview && this.open,\n closed: !this.preview && !this.open,\n preview: this.preview,\n [`variant-${this.variant}`]: true,\n })}\n aria-hidden=${String(!this.open)}\n >\n <div class=\"background\"></div>\n\n <div class=\"menu-content\">\n <slot @slotchange=${this._onSlotChange}></slot>\n </div>\n </div>`;\n }\n}\n"],"names":["LitElement","html","classMap","styles","property","state","query"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.js","sources":["../../src/menu/menu/menu.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport type { Placement } from '@floating-ui/dom';\nimport styles from './menu.scss';\nimport { FloatingController } from '../../__internal/controllers/floating-controller.js';\nimport { MenuItem } from '../menu-item/menu-item.js';\nimport IndividualComponent from '@/IndividualComponent.js';\n\ntype CloseReason =\n | { kind: 'click-selection' }\n | { kind: 'keydown'; key: string }\n | { kind: 'outside-click' }\n | { kind: 'focusout' }\n | { kind: 'programmatic' };\n\n/**\n * @label Menu\n * @tag wc-menu\n * @rawTag menu\n * @summary A list of menu items.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu preview>\n * <wc-menu-item>Item 1</wc-menu-item>\n * <wc-menu-item selected>Item 2</wc-menu-item>\n * </wc-menu>\n * ```\n */\n@IndividualComponent\nexport class Menu extends LitElement {\n static styles = [styles];\n\n static Item = MenuItem;\n\n /** Whether the menu is currently visible. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** Visual variant of the menu. `\"vibrant\"` applies stronger color emphasis. */\n @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =\n 'standard';\n\n /** ID of the anchor element the menu is positioned relative to. */\n @property({ type: String }) anchor = '';\n\n /** When true, renders the menu in a static preview state (always visible, no animation). */\n @property({ type: Boolean, reflect: true }) preview = false;\n\n /** When true, the menu will not close when a click occurs outside it. */\n @property({ type: Boolean, attribute: 'stay-open-on-outside-click' })\n stayOpenOnOutsideClick = false;\n\n /** When true, the menu will not close when focus leaves it. */\n @property({ type: Boolean, attribute: 'stay-open-on-focusout' })\n stayOpenOnFocusout = false;\n\n /** Set to true when this menu is being used as a submenu inside another menu. */\n @property({ type: Boolean, attribute: 'is-submenu' }) isSubmenu = false;\n\n /** Floating UI placement of the menu relative to its anchor. */\n @property({ type: String }) placement: Placement = 'bottom-start';\n\n /** Distance in pixels between the menu and its anchor element. */\n @property({ type: Number }) offset = 6;\n\n /** Index of the currently focused/active item within the enabled items list. */\n @state() private activeIndex = -1;\n\n @query('.menu') private readonly menuListElement!: HTMLElement;\n\n /** Direct reference to the anchor element; takes precedence over the `anchor` ID property. */\n anchorElement: HTMLElement | null = null;\n\n /** Controller managing floating-UI positioning. */\n private readonly _floatingController = new FloatingController(this, {\n trigger: 'manual',\n closeOnClickOutside: false,\n strategy: 'fixed',\n onOpenChange: isOpen => {\n if (isOpen || !this.open) {\n return;\n }\n\n this.close({ kind: 'outside-click' });\n },\n });\n\n /** Element that had focus before the menu opened; restored on close. */\n private _lastFocusedElement: HTMLElement | null = null;\n\n /** Reason that triggered the most recent close, included in the `closed` event detail. */\n private _closeReason: CloseReason = { kind: 'programmatic' };\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n\n this.addEventListener('keydown', this._onKeyDown);\n this.addEventListener('click', this._onClick);\n this._syncAnchorAria();\n }\n\n disconnectedCallback() {\n this.removeEventListener('keydown', this._onKeyDown);\n this.removeEventListener('click', this._onClick);\n this._floatingController.close();\n super.disconnectedCallback();\n }\n\n get items(): MenuItem[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const elements = slot?.assignedElements({ flatten: true }) ?? [];\n const items: MenuItem[] = [];\n\n for (const element of elements) {\n if (element instanceof MenuItem) {\n items.push(element);\n } else {\n const maybeItem = (element as { item?: unknown }).item;\n if (maybeItem instanceof MenuItem) {\n items.push(maybeItem);\n }\n }\n }\n\n return items;\n }\n\n show() {\n if (this.open) {\n return;\n }\n\n this._closeReason = { kind: 'programmatic' };\n this.open = true;\n }\n\n close(reason: CloseReason = { kind: 'programmatic' }) {\n if (!this.open) {\n return;\n }\n\n this._closeReason = reason;\n this.open = false;\n }\n\n override focus() {\n const target = this._getActiveItem() ?? this._getFirstEnabledItem();\n target?.focus();\n }\n\n private _resolveAnchorElement() {\n if (this.anchorElement) {\n return this.anchorElement;\n }\n\n if (!this.anchor) {\n return null;\n }\n\n const root = this.getRootNode() as Document | ShadowRoot;\n if ('getElementById' in root) {\n return root.getElementById(this.anchor);\n }\n\n return document.getElementById(this.anchor);\n }\n\n private _syncAnchorAria() {\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n if (!this.id) {\n this.id = `wc-menu-${Math.random().toString(36).slice(2, 9)}`;\n }\n\n anchorEl.setAttribute('aria-haspopup', 'menu');\n anchorEl.setAttribute('aria-controls', this.id);\n anchorEl.setAttribute('aria-expanded', String(this.open));\n }\n\n private _enabledItems() {\n return this.items.filter(item => !item.disabled);\n }\n\n private _syncRovingTabIndex() {\n const ownedItems = this.items;\n const enabledItems = this._enabledItems();\n for (const item of ownedItems) {\n item.tabIndex = -1;\n }\n\n if (!enabledItems.length) {\n this.activeIndex = -1;\n return;\n }\n\n if (this.activeIndex < 0 || this.activeIndex >= enabledItems.length) {\n this.activeIndex = 0;\n }\n\n enabledItems[this.activeIndex].tabIndex = 0;\n }\n\n private _setActiveByOffset(offset: 1 | -1) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n if (this.activeIndex < 0) {\n this.activeIndex = 0;\n } else {\n const count = enabledItems.length;\n this.activeIndex = (this.activeIndex + offset + count) % count;\n }\n\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _setBoundaryActive(index: number) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n this.activeIndex = index;\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _getActiveItem() {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length || this.activeIndex < 0) {\n return null;\n }\n\n return enabledItems[this.activeIndex] ?? null;\n }\n\n private _getFirstEnabledItem() {\n return this._enabledItems()[0] ?? null;\n }\n\n private _isEventFromThisMenu(event: Event) {\n const path = event.composedPath();\n const sourceMenu = path.find(target => target instanceof Menu);\n\n return sourceMenu === this;\n }\n\n private _ownedItemFromEvent(event: Event) {\n if (!this._isEventFromThisMenu(event)) {\n return null;\n }\n\n const path = event.composedPath();\n const ownedItems = this.items;\n\n for (const target of path) {\n if (target instanceof MenuItem) {\n const ownedItem = ownedItems.find(item => item === target);\n if (ownedItem) {\n return ownedItem;\n }\n }\n }\n\n return null;\n }\n\n private _setActiveItem(item: MenuItem) {\n const enabledItems = this._enabledItems();\n const nextIndex = enabledItems.indexOf(item);\n if (nextIndex < 0) {\n return;\n }\n\n this.activeIndex = nextIndex;\n this._syncRovingTabIndex();\n }\n\n private _dispatchItemActivate(item: MenuItem) {\n this.dispatchEvent(\n new CustomEvent('menu-item-activate', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n\n private _onClick = (event: Event) => {\n if (!this.open) {\n return;\n }\n\n const item = this._ownedItemFromEvent(event);\n if (!item) {\n return;\n }\n\n this._setActiveItem(item);\n this._dispatchItemActivate(item);\n if (item.keepOpen) {\n return;\n }\n\n this.close({ kind: 'click-selection' });\n };\n\n private _onKeyDown = (event: KeyboardEvent) => {\n if (!this.open) {\n return;\n }\n\n if (!this._isEventFromThisMenu(event)) {\n return;\n }\n\n const eventItem = this._ownedItemFromEvent(event);\n if (eventItem) {\n this._setActiveItem(eventItem);\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._setActiveByOffset(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._setActiveByOffset(-1);\n break;\n case 'Home':\n event.preventDefault();\n this._setBoundaryActive(0);\n break;\n case 'End': {\n event.preventDefault();\n const last = Math.max(this._enabledItems().length - 1, 0);\n this._setBoundaryActive(last);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close({ kind: 'keydown', key: 'Escape' });\n break;\n case 'Tab':\n this.close({ kind: 'keydown', key: 'Tab' });\n break;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const activeItem = this._getActiveItem() ?? this._getFirstEnabledItem();\n if (!activeItem) {\n return;\n }\n\n this._setActiveItem(activeItem);\n activeItem.click();\n break;\n }\n default:\n break;\n }\n };\n\n private _onSlotChange = () => {\n this._syncRovingTabIndex();\n };\n\n private _applyPositioning() {\n if (!this.open || !this.menuListElement) {\n return;\n }\n\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n this._floatingController.setOptions({\n placement: this.placement,\n offset: this.offset,\n strategy: 'fixed',\n closeOnClickOutside: !this.stayOpenOnOutsideClick,\n });\n this._floatingController.setElements(anchorEl, this.menuListElement);\n this._floatingController.open();\n }\n\n protected override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('anchor') || changedProperties.has('open')) {\n this._syncAnchorAria();\n }\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._lastFocusedElement = document.activeElement as HTMLElement | null;\n this._syncRovingTabIndex();\n this.dispatchEvent(\n new CustomEvent('opened', {\n bubbles: true,\n composed: true,\n }),\n );\n\n this._applyPositioning();\n } else {\n this._floatingController.close();\n\n const reason = this._closeReason;\n this.dispatchEvent(\n new CustomEvent('close-menu', {\n bubbles: true,\n composed: true,\n detail: {\n reason,\n itemPath: [],\n },\n }),\n );\n this.dispatchEvent(\n new CustomEvent('closed', {\n bubbles: true,\n composed: true,\n detail: { reason },\n }),\n );\n\n const shouldRestoreFocus =\n reason.kind !== 'keydown' || reason.key !== 'Tab';\n\n if (!this.isSubmenu && shouldRestoreFocus) {\n this._lastFocusedElement?.focus();\n }\n }\n }\n\n if (\n (changedProperties.has('open') ||\n changedProperties.has('anchor') ||\n changedProperties.has('placement') ||\n changedProperties.has('offset')) &&\n this.open\n ) {\n this._applyPositioning();\n }\n }\n\n render() {\n return html`<div\n class=${classMap({\n menu: true,\n open: !this.preview && this.open,\n closed: !this.preview && !this.open,\n preview: this.preview,\n [`variant-${this.variant}`]: true,\n })}\n aria-hidden=${String(!this.open)}\n >\n <div class=\"background\"></div>\n\n <div class=\"menu-content\">\n <slot @slotchange=${this._onSlotChange}></slot>\n </div>\n </div>`;\n }\n}\n"],"names":["LitElement","html","classMap","styles","property","state","query"],"mappings":"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"}
|
package/dist/popover.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { i, _ as __decorate, I as IndividualComponent, a as i$1, b } from './IndividualComponent-Bdwyrvd6.js';
|
|
2
2
|
import { n } from './property-B49QQ8pS.js';
|
|
3
|
-
import { F as FloatingController } from './floating-controller-
|
|
3
|
+
import { F as FloatingController } from './floating-controller-CZYwnRVu.js';
|
|
4
|
+
import './floating-ui.dom-oQieRCpS.js';
|
|
4
5
|
|
|
5
6
|
var css_248z = i`* {
|
|
6
7
|
box-sizing: border-box;
|
package/dist/popover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sources":["../../src/popover/popover.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport { FloatingController } from '../__internal/controllers/floating-controller.js';\nimport styles from './popover.scss';\nimport type { PopoverContent } from './popover-content.js';\n\n/**\n * @label Popover\n * @tag wc-popover\n * @rawTag popover\n * @summary Displays additional information in a floating panel anchored to a trigger element.\n * @overview\n * <p>The Popover component wraps a trigger element and a <code>wc-popover-content</code> child. It uses\n * floating-ui to compute position, keeping the panel visible inside the viewport even on scroll.</p>\n * @tags display\n *\n * @fires {CustomEvent} wc-popover--open - Fired when the popover opens.\n * @fires {CustomEvent} wc-popover--close - Fired when the popover closes.\n *\n * @example\n * ```html\n * <wc-popover trigger=\"click\">\n * <wc-button>Open popover</wc-button>\n * <wc-popover-content>\n * <p>Popover body text goes here.</p>\n * </wc-popover-content>\n * </wc-popover>\n * ```\n */\n@IndividualComponent\nexport class Popover extends LitElement {\n static styles = [styles];\n\n /**\n * Determines how the popover is triggered.\n * Possible values are `\"click\"`, `\"hover\"`, `\"manual\"`.\n */\n @property({ reflect: true }) trigger: 'click' | 'hover' | 'manual' = 'click';\n\n /**\n * Preferred placement of the popover relative to the trigger element.\n * Accepts any floating-ui `Placement` string such as `\"bottom\"`, `\"top-start\"`, `\"right\"`, etc.\n */\n @property({ reflect: true }) placement: Placement = 'bottom';\n\n /**\n * Whether the popover is open.\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Distance in pixels between the trigger element and the popover panel.\n */\n @property({ type: Number }) offset = 8;\n\n private _floating: FloatingController | null = null;\n\n private _contentEl: PopoverContent | null = null;\n\n private _triggerEl: HTMLElement | null = null;\n\n private _setupFloating() {\n // Tear down any existing controller\n if (this._floating) {\n this._floating = null;\n }\n\n // Resolve the content element\n this._contentEl = this.querySelector<PopoverContent>('wc-popover-content');\n\n // Resolve the trigger element: first light-DOM child that is NOT wc-popover-content\n this._triggerEl =\n (Array.from(this.children).find(\n c => c.tagName.toLowerCase() !== 'wc-popover-content',\n ) as HTMLElement) ?? null;\n\n if (!this._triggerEl || !this._contentEl) return;\n\n const triggerMode =\n this.trigger === 'manual'\n ? 'manual'\n : (this.trigger as 'click' | 'hover');\n\n this._floating = new FloatingController(this, {\n placement: this.placement,\n strategy: 'fixed',\n offset: this.offset,\n trigger: triggerMode,\n closeOnClickOutside: true,\n onOpenChange: isOpen => {\n this.open = isOpen;\n if (this._contentEl) {\n this._contentEl.open = isOpen;\n }\n this.dispatchEvent(\n new CustomEvent(isOpen ? 'wc-popover--open' : 'wc-popover--close', {\n bubbles: true,\n composed: true,\n }),\n );\n },\n });\n\n this._floating.setElements(\n this._triggerEl,\n this._contentEl as unknown as HTMLElement,\n );\n\n if (this.open) {\n this._floating.open();\n this._contentEl.open = true;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._setupFloating();\n }\n\n updated(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('trigger') ||\n changedProps.has('placement') ||\n changedProps.has('offset')\n ) {\n this._setupFloating();\n }\n\n if (changedProps.has('open') && this._floating) {\n if (this.open && !this._floating.isOpen) {\n this._floating.open();\n if (this._contentEl) this._contentEl.open = true;\n } else if (!this.open && this._floating.isOpen) {\n this._floating.close();\n if (this._contentEl) this._contentEl.open = false;\n }\n }\n }\n\n /**\n * Programmatically opens the popover.\n */\n show() {\n if (this._floating && !this._floating.isOpen) {\n this._floating.open();\n } else if (!this._floating) {\n this.open = true;\n }\n }\n\n /**\n * Programmatically closes the popover.\n */\n hide() {\n if (this._floating && this._floating.isOpen) {\n this._floating.close();\n } else if (!this._floating) {\n this.open = false;\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":"
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../src/popover/popover.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport { FloatingController } from '../__internal/controllers/floating-controller.js';\nimport styles from './popover.scss';\nimport type { PopoverContent } from './popover-content.js';\n\n/**\n * @label Popover\n * @tag wc-popover\n * @rawTag popover\n * @summary Displays additional information in a floating panel anchored to a trigger element.\n * @overview\n * <p>The Popover component wraps a trigger element and a <code>wc-popover-content</code> child. It uses\n * floating-ui to compute position, keeping the panel visible inside the viewport even on scroll.</p>\n * @tags display\n *\n * @fires {CustomEvent} wc-popover--open - Fired when the popover opens.\n * @fires {CustomEvent} wc-popover--close - Fired when the popover closes.\n *\n * @example\n * ```html\n * <wc-popover trigger=\"click\">\n * <wc-button>Open popover</wc-button>\n * <wc-popover-content>\n * <p>Popover body text goes here.</p>\n * </wc-popover-content>\n * </wc-popover>\n * ```\n */\n@IndividualComponent\nexport class Popover extends LitElement {\n static styles = [styles];\n\n /**\n * Determines how the popover is triggered.\n * Possible values are `\"click\"`, `\"hover\"`, `\"manual\"`.\n */\n @property({ reflect: true }) trigger: 'click' | 'hover' | 'manual' = 'click';\n\n /**\n * Preferred placement of the popover relative to the trigger element.\n * Accepts any floating-ui `Placement` string such as `\"bottom\"`, `\"top-start\"`, `\"right\"`, etc.\n */\n @property({ reflect: true }) placement: Placement = 'bottom';\n\n /**\n * Whether the popover is open.\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Distance in pixels between the trigger element and the popover panel.\n */\n @property({ type: Number }) offset = 8;\n\n private _floating: FloatingController | null = null;\n\n private _contentEl: PopoverContent | null = null;\n\n private _triggerEl: HTMLElement | null = null;\n\n private _setupFloating() {\n // Tear down any existing controller\n if (this._floating) {\n this._floating = null;\n }\n\n // Resolve the content element\n this._contentEl = this.querySelector<PopoverContent>('wc-popover-content');\n\n // Resolve the trigger element: first light-DOM child that is NOT wc-popover-content\n this._triggerEl =\n (Array.from(this.children).find(\n c => c.tagName.toLowerCase() !== 'wc-popover-content',\n ) as HTMLElement) ?? null;\n\n if (!this._triggerEl || !this._contentEl) return;\n\n const triggerMode =\n this.trigger === 'manual'\n ? 'manual'\n : (this.trigger as 'click' | 'hover');\n\n this._floating = new FloatingController(this, {\n placement: this.placement,\n strategy: 'fixed',\n offset: this.offset,\n trigger: triggerMode,\n closeOnClickOutside: true,\n onOpenChange: isOpen => {\n this.open = isOpen;\n if (this._contentEl) {\n this._contentEl.open = isOpen;\n }\n this.dispatchEvent(\n new CustomEvent(isOpen ? 'wc-popover--open' : 'wc-popover--close', {\n bubbles: true,\n composed: true,\n }),\n );\n },\n });\n\n this._floating.setElements(\n this._triggerEl,\n this._contentEl as unknown as HTMLElement,\n );\n\n if (this.open) {\n this._floating.open();\n this._contentEl.open = true;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._setupFloating();\n }\n\n updated(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('trigger') ||\n changedProps.has('placement') ||\n changedProps.has('offset')\n ) {\n this._setupFloating();\n }\n\n if (changedProps.has('open') && this._floating) {\n if (this.open && !this._floating.isOpen) {\n this._floating.open();\n if (this._contentEl) this._contentEl.open = true;\n } else if (!this.open && this._floating.isOpen) {\n this._floating.close();\n if (this._contentEl) this._contentEl.open = false;\n }\n }\n }\n\n /**\n * Programmatically opens the popover.\n */\n show() {\n if (this._floating && !this._floating.isOpen) {\n this._floating.open();\n } else if (!this._floating) {\n this.open = true;\n }\n }\n\n /**\n * Programmatically closes the popover.\n */\n hide() {\n if (this._floating && this._floating.isOpen) {\n this._floating.close();\n } else if (!this._floating) {\n this.open = false;\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":"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"}
|
|
@@ -798,24 +798,24 @@ var css_248z$a = i`* {
|
|
|
798
798
|
class Input extends BaseInput {
|
|
799
799
|
constructor() {
|
|
800
800
|
super(...arguments);
|
|
801
|
-
this.value =
|
|
802
|
-
this.name =
|
|
803
|
-
this.placeholder =
|
|
804
|
-
this.label =
|
|
801
|
+
this.value = "";
|
|
802
|
+
this.name = "";
|
|
803
|
+
this.placeholder = "";
|
|
804
|
+
this.label = "";
|
|
805
805
|
this.inline = false;
|
|
806
|
-
this.size =
|
|
807
|
-
this.type =
|
|
808
|
-
this.autocomplete =
|
|
806
|
+
this.size = "md";
|
|
807
|
+
this.type = "text";
|
|
808
|
+
this.autocomplete = "off";
|
|
809
809
|
this.configAria = {};
|
|
810
|
-
this.variant =
|
|
810
|
+
this.variant = "default";
|
|
811
811
|
/**
|
|
812
812
|
* Helper text to display below the input.
|
|
813
813
|
*/
|
|
814
|
-
this.helperText =
|
|
814
|
+
this.helperText = "";
|
|
815
815
|
this.error = false;
|
|
816
|
-
this.errorText =
|
|
816
|
+
this.errorText = "";
|
|
817
817
|
this.warning = false;
|
|
818
|
-
this.warningText =
|
|
818
|
+
this.warningText = "";
|
|
819
819
|
this.focused = false;
|
|
820
820
|
this.passwordVisible = false;
|
|
821
821
|
/**
|
|
@@ -824,13 +824,13 @@ class Input extends BaseInput {
|
|
|
824
824
|
*/
|
|
825
825
|
this.dirty = false;
|
|
826
826
|
this.__handleFocusChange = (event) => {
|
|
827
|
-
this.focused = event.type ===
|
|
827
|
+
this.focused = event.type === "focus";
|
|
828
828
|
};
|
|
829
829
|
}
|
|
830
830
|
async focus() {
|
|
831
831
|
await Promise.all([
|
|
832
|
-
customElements.whenDefined(
|
|
833
|
-
customElements.whenDefined(
|
|
832
|
+
customElements.whenDefined("wc-input"),
|
|
833
|
+
customElements.whenDefined("wc-field"),
|
|
834
834
|
]);
|
|
835
835
|
await this.updateComplete;
|
|
836
836
|
this.inputElement?.focus();
|
|
@@ -840,8 +840,8 @@ class Input extends BaseInput {
|
|
|
840
840
|
this.handleInitialAttributes();
|
|
841
841
|
}
|
|
842
842
|
handleInitialAttributes() {
|
|
843
|
-
Array.from(this.attributes).forEach(attr => {
|
|
844
|
-
if (attr.name.startsWith(
|
|
843
|
+
Array.from(this.attributes).forEach((attr) => {
|
|
844
|
+
if (attr.name.startsWith("aria-")) {
|
|
845
845
|
this.configAria[attr.name] = attr.value;
|
|
846
846
|
this.removeAttribute(attr.name);
|
|
847
847
|
}
|
|
@@ -855,70 +855,67 @@ class Input extends BaseInput {
|
|
|
855
855
|
redispatchEvent(this, event);
|
|
856
856
|
}
|
|
857
857
|
render() {
|
|
858
|
-
const displayType = this.type ===
|
|
858
|
+
const displayType = this.type === "password" && this.passwordVisible
|
|
859
|
+
? "text"
|
|
860
|
+
: this.type;
|
|
859
861
|
return b `
|
|
860
862
|
<wc-field
|
|
861
|
-
?required
|
|
862
|
-
?disabled
|
|
863
|
-
?readonly
|
|
864
|
-
?skeleton
|
|
865
|
-
helper-text
|
|
866
|
-
?error
|
|
867
|
-
error-text
|
|
868
|
-
?warning
|
|
869
|
-
variant
|
|
870
|
-
?populated
|
|
871
|
-
warning-text
|
|
872
|
-
label
|
|
873
|
-
?focused
|
|
874
|
-
.host
|
|
863
|
+
?required="${this.required}"
|
|
864
|
+
?disabled="${this.disabled}"
|
|
865
|
+
?readonly="${this.readonly}"
|
|
866
|
+
?skeleton="${this.skeleton}"
|
|
867
|
+
helper-text="${this.helperText}"
|
|
868
|
+
?error="${this.error}"
|
|
869
|
+
error-text="${this.errorText}"
|
|
870
|
+
?warning="${this.warning}"
|
|
871
|
+
variant="${this.variant}"
|
|
872
|
+
?populated="${!!this.value}"
|
|
873
|
+
warning-text="${this.warningText}"
|
|
874
|
+
label="${this.label}"
|
|
875
|
+
?focused="${this.focused}"
|
|
876
|
+
.host="${this}"
|
|
875
877
|
class="input-wrapper"
|
|
876
878
|
>
|
|
877
879
|
<slot name="start" slot="field-start"></slot>
|
|
878
880
|
|
|
879
881
|
<input
|
|
880
882
|
class="input input-element"
|
|
881
|
-
name
|
|
882
|
-
type
|
|
883
|
-
placeholder
|
|
884
|
-
autocomplete
|
|
885
|
-
.value
|
|
886
|
-
?readonly
|
|
887
|
-
?required
|
|
888
|
-
?disabled
|
|
889
|
-
@input
|
|
890
|
-
@change
|
|
891
|
-
@focus
|
|
892
|
-
@blur
|
|
883
|
+
name="${this.name}"
|
|
884
|
+
type="${displayType}"
|
|
885
|
+
placeholder="${this.placeholder}"
|
|
886
|
+
autocomplete="${this.autocomplete}"
|
|
887
|
+
.value="${this.value}"
|
|
888
|
+
?readonly="${this.readonly}"
|
|
889
|
+
?required="${this.required}"
|
|
890
|
+
?disabled="${this.disabled}"
|
|
891
|
+
@input="${this.__handleInput}"
|
|
892
|
+
@change="${this.__redispatchEvent}"
|
|
893
|
+
@focus="${this.__handleFocusChange}"
|
|
894
|
+
@blur="${this.__handleFocusChange}"
|
|
893
895
|
${spread(this.configAria)}
|
|
894
896
|
/>
|
|
895
897
|
|
|
896
|
-
|
|
898
|
+
<slot name="end" slot="field-end"></slot>
|
|
899
|
+
|
|
900
|
+
${this.type === "password"
|
|
897
901
|
? b `
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
variant="text"
|
|
907
|
-
@click=${() => {
|
|
902
|
+
<wc-icon-button
|
|
903
|
+
class="password-toggle"
|
|
904
|
+
variant="text"
|
|
905
|
+
slot="field-end"
|
|
906
|
+
tooltip="${this.passwordVisible
|
|
907
|
+
? "Hide password"
|
|
908
|
+
: "Show password"}"
|
|
909
|
+
@click="${() => {
|
|
908
910
|
this.passwordVisible = !this.passwordVisible;
|
|
909
|
-
}}
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
</wc-icon-button>
|
|
917
|
-
</wc-tooltip>
|
|
918
|
-
`
|
|
911
|
+
}}"
|
|
912
|
+
>
|
|
913
|
+
<wc-icon
|
|
914
|
+
name="${this.passwordVisible ? "visibility_off" : "visibility"}"
|
|
915
|
+
></wc-icon>
|
|
916
|
+
</wc-icon-button>
|
|
917
|
+
`
|
|
919
918
|
: A}
|
|
920
|
-
|
|
921
|
-
<slot name="end" slot="field-end"></slot>
|
|
922
919
|
</wc-field>
|
|
923
920
|
`;
|
|
924
921
|
}
|
|
@@ -955,19 +952,19 @@ __decorate([
|
|
|
955
952
|
n({ type: String })
|
|
956
953
|
], Input.prototype, "variant", void 0);
|
|
957
954
|
__decorate([
|
|
958
|
-
n({ type: String, attribute:
|
|
955
|
+
n({ type: String, attribute: "helper-text" })
|
|
959
956
|
], Input.prototype, "helperText", void 0);
|
|
960
957
|
__decorate([
|
|
961
958
|
n({ type: Boolean })
|
|
962
959
|
], Input.prototype, "error", void 0);
|
|
963
960
|
__decorate([
|
|
964
|
-
n({ type: String, attribute:
|
|
961
|
+
n({ type: String, attribute: "error-text" })
|
|
965
962
|
], Input.prototype, "errorText", void 0);
|
|
966
963
|
__decorate([
|
|
967
964
|
n({ type: Boolean })
|
|
968
965
|
], Input.prototype, "warning", void 0);
|
|
969
966
|
__decorate([
|
|
970
|
-
n({ type: String, attribute:
|
|
967
|
+
n({ type: String, attribute: "warning-text" })
|
|
971
968
|
], Input.prototype, "warningText", void 0);
|
|
972
969
|
__decorate([
|
|
973
970
|
r()
|
|
@@ -979,7 +976,7 @@ __decorate([
|
|
|
979
976
|
r()
|
|
980
977
|
], Input.prototype, "dirty", void 0);
|
|
981
978
|
__decorate([
|
|
982
|
-
e$1(
|
|
979
|
+
e$1(".input-element")
|
|
983
980
|
], Input.prototype, "inputElement", void 0);
|
|
984
981
|
|
|
985
982
|
var css_248z$9 = i`* {
|
|
@@ -3955,4 +3952,4 @@ __decorate([
|
|
|
3955
3952
|
], Select.prototype, "_searchInputEl", void 0);
|
|
3956
3953
|
|
|
3957
3954
|
export { ChipSet as C, DatePicker as D, Input as I, LinearProgress as L, NumberField as N, Select as S, Tag as T, UrlField as U, CircularProgress as a, SidebarMenu as b, SidebarMenuItem as c, SidebarSubMenu as d, Switch as e, Textarea as f, TimePicker as g };
|
|
3958
|
-
//# sourceMappingURL=select-
|
|
3955
|
+
//# sourceMappingURL=select-CnnPbvpQ.js.map
|