q2-tecton-elements 1.62.2 → 1.62.4

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-12-12T03:34:02",
2
+ "timestamp": "2025-12-18T19:03:47",
3
3
  "compiler": {
4
4
  "name": "node",
5
5
  "version": "24.10.0"
@@ -1439,7 +1439,7 @@
1439
1439
  "index-LNnzUeDP.js",
1440
1440
  "action-sheet-D3xPdhm8.js"
1441
1441
  ],
1442
- "originalByteSize": 44145
1442
+ "originalByteSize": 44100
1443
1443
  },
1444
1444
  {
1445
1445
  "key": "q2-tooltip.entry",
@@ -2206,7 +2206,7 @@
2206
2206
  "index-LNnzUeDP.js",
2207
2207
  "action-sheet-D3xPdhm8.js"
2208
2208
  ],
2209
- "originalByteSize": 44141
2209
+ "originalByteSize": 44096
2210
2210
  },
2211
2211
  {
2212
2212
  "key": "q2-tooltip.entry",
@@ -2975,7 +2975,7 @@
2975
2975
  "index-BuXzB2ML.js",
2976
2976
  "action-sheet-D3n8vaeA.js"
2977
2977
  ],
2978
- "originalByteSize": 44301
2978
+ "originalByteSize": 44256
2979
2979
  },
2980
2980
  {
2981
2981
  "key": "q2-tooltip.entry",
@@ -96,7 +96,6 @@ const Q2Select = class {
96
96
  // close popover only if not nested in a shadow dom
97
97
  if (this.hostElement.getRootNode().nodeName !== '#document-fragment') {
98
98
  popoverElement.open = false;
99
- this.innerInputField.blur();
100
99
  }
101
100
  };
102
101
  this.destroyEventListeners = () => {
@@ -768,7 +767,7 @@ const Q2Select = class {
768
767
  ]), checked: showSelected, "test-id": "selectedOptionsButton", onClick: this.showSelectedOptions, onKeyDown: this.visibilityToggleKeyDown }), index.h("label", { htmlFor: "selected" }, index$1.loc('tecton.element.select.multiHeader.selected', [selectedOptionsCount]))))));
769
768
  }
770
769
  render() {
771
- return (index.h("click-elsewhere", { key: 'c1a7e133e25c7ee4b07e5891d46a82bf01b4d798', class: this.wrapperClasses, onChange: this.clickedElsewhere }, this.renderSelectField()));
770
+ return (index.h("click-elsewhere", { key: '78a92a0bc67cd84afc1e601877edcf453a469bc3', class: this.wrapperClasses, onChange: this.clickedElsewhere }, this.renderSelectField()));
772
771
  }
773
772
  get hostElement() { return index.getElement(this); }
774
773
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"q2-select.entry.cjs.js","mappings":"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","names":["createGuid","loc","isMobile","shouldShowActionSheet","handleAriaLabel","overrideFocus","isRelatedTargetWithinHost","isEventFromElement","getBrowserInfo","waitForNextPaint","showActionSheetList","h","Fragment"],"sources":["src/components/q2-select/q2-select.scss?tag=q2-select&encapsulation=shadow","src/components/q2-select/q2-select.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import '../../styles/dropdowns';\n\n:host {\n --comp-default-select-margin: #{var-list(var-prefixer(select-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(select-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-select-margin, --comp-default-select-margin);\n}\n\n.q2-select-container {\n position: relative;\n display: block;\n}\n\n.q2-select-input {\n margin: 0;\n\n --tct-input-min-height: #{var-list(var-prefixer(select-input-min-height))};\n --tct-input-max-height: #{var-list(var-prefixer(select-input-max-height), none)};\n}\n\n::slotted([slot='_selected-display']) {\n width: 100%;\n min-height: var(--comp-selected-display-height, 44px);\n}\n\n.custom-display-content {\n position: absolute;\n bottom: 0;\n left: calc(var-list(--tct-scale-2, --app-scale-2x, 10px) + 1px);\n height: 44px;\n width: calc(100% - 34px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n overflow: hidden;\n cursor: pointer;\n transition: left var-list(--tct-tween-2, --app-tween-1, unquote('0.2s ease'));\n}\n\n.custom-display-content:not([hidden]) {\n display: flex;\n align-items: center;\n}\n\n.is-searchable.is-focused .custom-display-content,\n.is-searchable .custom-display-content:active {\n left: calc(var-list(--tct-scale-3, --app-scale-3x, 15px) + 1px);\n}\n\n.has-error .custom-display-content {\n width: calc(100% - 68px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n}\n\n.popover-content {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.popover-bottom-container {\n position: sticky;\n bottom: 0;\n z-index: 5;\n}\n\n.popover-top-container {\n position: sticky;\n top: 0;\n z-index: 5;\n .multi-select-header {\n padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-2, var(--app-scale-2x, 10px));\n background: var(--app-white);\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n align-items: center;\n\n fieldset {\n margin: 0;\n padding: 0;\n border: 0;\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n }\n\n legend {\n padding: 0;\n float: left;\n }\n\n label {\n cursor: pointer;\n padding: var-list(\n var-prefixer(select-multi-select-option-padding),\n var-prefixer(btn-badge-padding),\n unquote('2px 5px')\n );\n font-size: var-list(\n var-prefixer(select-multi-select-option-font-size),\n var-prefixer(btn-badge-font-size),\n inherit\n );\n border-radius: var-list(\n var-prefixer(select-multi-select-option-radius),\n var-prefixer(btn-badge-border-radius),\n --app-border-radius-1,\n 4px\n );\n background: var-list(\n --tct-select-multi-select-option-background,\n var-prefixer(select-multi-select-option-bg),\n --tct-badge-background,\n var-prefixer(btn-badge-bg),\n transparent\n );\n color: var-list(\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-font-color),\n inherit\n );\n\n &:hover {\n background: var-list(\n --tct-select-multi-select-option-hover-background,\n var-prefixer(select-multi-select-option-hover-background-color),\n var-prefixer(btn-badge-hover-bg),\n var-prefixer(gray-14),\n --app-gray-l3,\n #f2f2f2\n );\n color: var-list(\n --tct-select-multi-select-option-hover-color,\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-hover-font-color),\n var-prefixer(gray-5),\n --app-gray-d2,\n #404040\n );\n }\n }\n\n input {\n &:checked + label {\n &,\n &:enabled:hover {\n background: var-list(\n --tct-select-multi-select-option-active-background,\n var-prefixer(select-multi-select-option-active-background-color),\n var-prefixer(btn-primary-bg),\n #2e2e2e\n );\n color: var-list(\n var-prefixer(select-multi-select-option-active-color),\n var-prefixer(btn-primary-font-color),\n --app-white,\n #ffffff\n );\n }\n }\n\n &:disabled + label {\n opacity: var-list(\n var-prefixer(select-multi-select-option-disabled-opacity),\n var-prefixer(btn-disabled-opacity),\n --app-disabled-opacity,\n 0.4\n );\n cursor: not-allowed;\n }\n\n &:focus-visible + label {\n box-shadow: var(--const-double-focus-ring);\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n State,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Method,\n Fragment,\n} from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent, Q2OptionListCustomEvent } from 'src/components';\nimport {\n createGuid,\n getBrowserInfo,\n handleAriaLabel,\n isEventFromElement,\n isMobile,\n isRelatedTargetWithinHost,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from '../../utils';\nimport { IOptionValue } from '../q2-option-list/q2-option-list';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n/**\n * @slot popover-top - An optional slot to display custom content persistently at the top of the popover. This is **not** compatible with the action sheet workflow.\n * @slot popover-bottom - An optional slot to display custom content persistently at the bottom of the popover. This is **not** compatible with the action sheet workflow.\n * @slot q2-select-display - An optional slot to display custom HTML content in the display area.\n */\n@Component({ tag: 'q2-select', shadow: true, styleUrl: 'q2-select.scss' })\nexport class Q2Select implements ComponentInterface {\n // #region Own Properties\n\n guid = createGuid();\n inputField?: HTMLQ2InputElement;\n lastTouchWasInPopover: boolean = false;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n originalSearchable: boolean;\n popoverElement?: HTMLQ2PopoverElement;\n popoverTopContainer?: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n statusMessageTimer: NodeJS.Timeout;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasCustomDisplay: boolean = false;\n\n @State()\n hasPopoverBottom: boolean = false;\n\n @State()\n hasPopoverTop: boolean = false;\n\n @State()\n inputFocused: boolean = false;\n\n @State()\n open: boolean = false;\n\n /**\n * Determines what text to show in the input field.\n * When `true`, the component will display the search text in the input field\n * When `false`, the component will display the selected option(s) in the input field\n */\n @State()\n prioritizeSearch: boolean = false;\n\n @State()\n searchText: string = '';\n\n @State()\n showSelected: boolean = false;\n\n @State()\n statusMessage: string;\n\n @State()\n structuredSelectedOptions: IOptionValue[] = [];\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /** Disables all interaction with the field and leverages the disabled visual style of `q2-input`. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * The presence of `errors` will mark the field as invalid, putting it into an error state.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n * @warning\n * If your `q2-select` renders inside of an iframe, and you are using multiline/robust content options,\n * any custom CSS you apply to your options will not get passed up to the platform which displays the action sheet.\n * For this reason, we strongly suggest using the [q2-card](https://tecton.q2developer.com/design-system/q2-card/) component since its styling is managed by Tecton.\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** Determines whether to show an error state. Its primary use-case is for an unfilled field. */\n @Prop({ reflect: true })\n invalid: boolean;\n\n /**\n * The text that will be used as the label for the field.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Determines the label that is applied to the option list for accessibility purposes.\n * @localizable\n */\n @Prop()\n listLabel: string = loc('tecton.element.select.listLabel');\n\n /** The minimum number of rows the component will try to display below or above the component when opened. */\n @Prop()\n minRows: number = 3;\n\n /** Enables text wrapping for `q2-option` elements. When `false`, the text truncates and does not wrap. */\n @Prop({ reflect: true })\n multilineOptions: boolean = false;\n\n /** Enables multi-select functionality. */\n @Prop({ reflect: true })\n multiple: boolean = false;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean = false;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user selects an option.\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean = false;\n\n /** Enables search functionality. */\n @Prop({ reflect: true, mutable: true })\n searchable: boolean = false;\n\n /**\n * Each item in this array should correspond to the value of a `q2-option` element.\n * This property is only relevant for `multiple` (i.e., multi-select) implementations.\n */\n @Prop({ mutable: true })\n selectedOptions: string[] = [];\n\n /**\n * The current value for the select. This should correspond to the value of a nested q2-option element.\n * This property is only relevant for single-select implementations.\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n *\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string; selectedOptions: string[] }>;\n\n /**\n * Emitted when the input value changes.\n *\n * Requires the `searchable` prop to be set to `true`.\n */\n @Event()\n input: EventEmitter<{ query: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.destroyEventListeners();\n }\n\n componentWillLoad() {\n this.originalSearchable = this.searchable;\n handleAriaLabel(this);\n this.handleOrientationChange();\n this.buildStructuredSelectedOptions();\n this.handleMultilineOptionsUpdate(this.multilineOptions, false);\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n this.initEventListeners();\n overrideFocus(this.hostElement);\n setTimeout(() => this.checkSelectedDisplay(), 0);\n this.setCustomLabel();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent<{ value: string; selectedOptions: string[] }>) {\n if (this.readonly || this.disabled) return;\n if (event.target !== this.hostElement || this.hostElement.onchange) return;\n if (this.multiple) {\n this.value = null;\n this.selectedOptions = event.detail.selectedOptions;\n } else {\n this.value = event.detail.value;\n this.selectedOptions = [];\n }\n }\n\n @Listen('clear')\n onClearHandler() {\n this.clearValue();\n }\n\n @Listen('displayChanged')\n handleSelectedDisplay(event: CustomEvent) {\n if (!this.multiple && !!this.value && this.value === event.detail.value) {\n this.inputField.value = event.detail.display;\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const fromHost = isRelatedTargetWithinHost(event, this.hostElement);\n const prioritizeSearch = (this.prioritizeSearch = fromHost && this.searchable);\n if (prioritizeSearch) {\n this.clearSelectedDisplay();\n } else if (isEventFromElement(event, this.hostElement)) {\n this.innerInputField.focus();\n }\n }\n\n @Listen('focusout')\n handleFocusout(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const isLeavingHost =\n !this.popoverElement?.contains(relatedTarget) && !this.hostElement.contains(relatedTarget);\n if (isLeavingHost) this.closeDropdown();\n this.prioritizeSearch = !isLeavingHost && this.searchable;\n }\n\n @Listen('input')\n onHostElementInput(event: CustomEvent) {\n if (!this.searchable || event.target !== this.hostElement || this.hostElement.oninput) return;\n const options = this.optionElements;\n const query = this.searchText.trim().toLocaleLowerCase();\n let matchedCount = 0;\n options.forEach(option => {\n if (query === '') {\n option.hidden = false;\n return;\n }\n\n const title =\n option.firstElementChild?.tagName === 'Q2-CARD'\n ? (option.firstElementChild as HTMLQ2CardElement).title\n : null;\n const { display = '', innerText = '' } = option;\n const searchParams = [display, title, innerText];\n const matched = searchParams.some(text => text?.toLocaleLowerCase().includes(query) ?? false);\n\n option.hidden = !matched;\n if (matched) matchedCount++;\n });\n\n const statusMessageLocString = query\n ? 'tecton.element.select.searchable.results'\n : 'tecton.element.select.allOptions';\n const count = query ? matchedCount : options.length;\n this.setStatusMessage(loc(statusMessageLocString, [count]));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n this.inputKeydownHandler(event);\n }\n\n @Listen('popoverStateChanged')\n popoverStateChanged({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n }\n\n @Listen('tctClick')\n handleTctClick() {\n const { name, version } = getBrowserInfo();\n const majorVersion = Number(version.split('.')[0]);\n // Only Safari under iOS 18 having issue when searchable\n if (this.searchable && name === 'Safari' && !isNaN(majorVersion) && majorVersion < 18) {\n this.scheduledAfterRender.push(() => this.innerInputField.blur());\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<input>` to hide the popover if it is visible.\n *\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover if it is hidden.\n *\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * @warning\n * Only applicable when the input is searchable.\n *\n * @testOnly\n */\n @Method()\n searchOptions(query: string) {\n if (!this.searchable) return;\n\n const { innerInputField } = this;\n innerInputField.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n innerInputField.value = query;\n innerInputField.dispatchEvent(new InputEvent('input'));\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover and selecting the option(s) with the specified value(s).\n *\n * If the multi-select is enabled and the `closePopover` argument is `true` (default), the popover will be closed\n * after the option(s) are selected.\n *\n * @testOnly\n */\n @Method()\n async setValue(values: string | string[], options: { closePopover?: boolean } = { closePopover: true }) {\n const valuesSet = new Set(Array.isArray(values) ? values : [values]);\n if (!this.open) {\n await this.openPopover();\n await waitForNextPaint();\n }\n\n valuesSet.forEach(value => {\n this.optionElements.find(option => option.value === value)?.click();\n });\n\n if (options.closePopover) {\n await this.closePopover();\n await waitForNextPaint();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('multilineOptions')\n handleMultilineOptionsUpdate(newValue, oldValue) {\n if (newValue === oldValue) return;\n this.optionElements.forEach(element => (element.multiline = newValue));\n }\n\n @Watch('open')\n openChanged(isOpen: boolean) {\n if (isOpen) {\n this.addTouchEventListeners();\n } else {\n this.removeTouchEventListeners();\n }\n this.scheduledAfterRender.push(async () => {\n await waitForNextPaint();\n const { popoverTopContainer, popoverElement } = this;\n const height = (isOpen && popoverTopContainer?.offsetHeight) || 0;\n if (height) {\n popoverElement.style.setProperty('--comp-popover-top-container-height', `${height}px`);\n } else {\n popoverElement.style.removeProperty('--comp-popover-top-container-height');\n }\n });\n }\n\n @Watch('value')\n @Watch('selectedOptions')\n buildStructuredSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n if (multiple) {\n this.structuredSelectedOptions = !!selectedOptions?.length\n ? selectedOptions.map(option => (typeof option === 'string' ? { value: option } : option))\n : [];\n } else {\n this.structuredSelectedOptions = value ? [{ value }] : [];\n }\n }\n\n @Watch('value')\n valueUpdated() {\n if (this.multiple) return;\n this.clearSearchText();\n }\n\n // #endregion\n // #region Local Methods\n\n get badgeValue(): string {\n if (!this.multiple) return null;\n const optionsLength = this.selectedOptions?.length ?? 0;\n if (this.open && this.searchable) return optionsLength ? `${optionsLength}` : null;\n else return optionsLength > 1 ? `+${optionsLength - 1}` : null;\n }\n\n get firstSelectedOptionElement() {\n const { firstSelectedValue } = this;\n return firstSelectedValue ? this.optionElements.find(({ value }) => value === firstSelectedValue) : null;\n }\n\n get firstSelectedValue() {\n return this.multiple ? this.selectedOptions?.[0] : this.value;\n }\n\n get innerInputContainer(): HTMLElement {\n return this.inputField?.shadowRoot?.querySelector('.input-container');\n }\n\n get innerInputField(): HTMLInputElement | HTMLButtonElement {\n return this.inputField?.shadowRoot?.querySelector('.input-field');\n }\n\n get inputId() {\n return `select-guid-${this.guid}`;\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n get optionElements() {\n return Array.from(this.hostElement.querySelectorAll<HTMLQ2OptionElement>('q2-option'));\n }\n\n get popoverMinHeight() {\n const { minRows } = this;\n const firstOption = this.hostElement.querySelector<HTMLQ2OptionElement>('q2-option:not([hidden])');\n let minHeight = firstOption && window.getComputedStyle(firstOption).minHeight;\n\n // Safari doesn't return a min-height for non-visible items\n if (!minHeight || minHeight === '0px') minHeight = '44px';\n\n return minRows * parseInt(minHeight);\n }\n\n get selectedDisplay() {\n if (this.prioritizeSearch || this.searchText) return this.searchText;\n if (this.hasCustomDisplay) return '';\n return this.multiple ? this.calculateMultiSelectSelectedDisplay() : this.calculateSingleSelectSelectedDisplay();\n }\n\n get selectedDisplaySlot() {\n return this.hostElement.querySelector<HTMLElement>('[slot=\"_selected-display\"]');\n }\n\n get wrapperClasses() {\n const { errors } = this;\n const classes = ['q2-select-container'];\n if (Array.isArray(errors) && errors.length > 0) classes.push('has-error');\n if (this.inputFocused) classes.push('is-focused');\n if (this.searchable) classes.push('is-searchable');\n return classes.join(' ');\n }\n\n _togglePopover() {\n const { innerInputField } = this;\n innerInputField?.click();\n innerInputField?.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n }\n\n addTouchEventListeners = () => {\n if (!isMobile() || !this.popoverElement) return;\n\n this.popoverElement.addEventListener('touchmove', this.handleTouchMove, { passive: true });\n };\n\n calculateMultiSelectSelectedDisplay() {\n const { firstSelectedOptionElement, firstSelectedValue, multilineOptions } = this;\n if (!firstSelectedValue) return '';\n if (firstSelectedOptionElement?.display) return loc(firstSelectedOptionElement.display);\n if (multilineOptions && this.searchable) return this.searchText;\n if (multilineOptions) return '';\n return (\n firstSelectedOptionElement?.textContent?.trim() ?? firstSelectedOptionElement?.value ?? firstSelectedValue\n );\n }\n\n calculateSingleSelectSelectedDisplay() {\n const { firstSelectedOptionElement, multilineOptions } = this;\n if (multilineOptions) {\n return (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) || this.value || '';\n } else {\n return (\n (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) ||\n firstSelectedOptionElement?.textContent?.trim() ||\n this.value ||\n ''\n );\n }\n }\n\n checkSelectedDisplay() {\n // This prevents an undefined property error when the spec tests are run\n try {\n this.hostElement;\n } catch (error) {\n return null;\n }\n let namedSlot = this.selectedDisplaySlot;\n const { value, multiple, selectedOptions, multilineOptions, firstSelectedOptionElement, prioritizeSearch } =\n this;\n const hasNoValue = !value && multiple && !selectedOptions?.length;\n if (prioritizeSearch || !multilineOptions || hasNoValue) return this.clearSelectedDisplay();\n\n if (!firstSelectedOptionElement || firstSelectedOptionElement.display) return this.clearSelectedDisplay();\n\n // Clone selected option and remove elements with hide-on-select attribute\n const selectionClone = firstSelectedOptionElement.firstElementChild.cloneNode(true) as HTMLElement;\n selectionClone.querySelectorAll('[hide-on-select]').forEach(element => element.remove());\n\n if (namedSlot) {\n const height = namedSlot.clientHeight === 0 ? 'auto' : `${namedSlot.clientHeight}px`;\n namedSlot.style.setProperty('--comp-selected-display-height', height);\n if (namedSlot.firstElementChild.outerHTML !== selectionClone.outerHTML) {\n namedSlot.replaceChild(selectionClone, namedSlot.firstElementChild);\n }\n } else {\n namedSlot = document.createElement('div');\n namedSlot.slot = '_selected-display';\n namedSlot.appendChild(selectionClone);\n this.hostElement.appendChild(namedSlot);\n }\n return namedSlot;\n }\n\n checkSelectedDisplayHeight() {\n const { selectedDisplaySlot } = this;\n if (!selectedDisplaySlot) return;\n selectedDisplaySlot.style.setProperty('--comp-selected-display-height', '44px');\n }\n\n checkSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n this.optionElements.forEach(option => {\n if (multiple) {\n option.selected = selectedOptions.includes(option.value);\n } else {\n option.selected = option.value === value;\n }\n });\n }\n\n clearSearchText() {\n if (!this.searchText) return;\n this.searchText = '';\n this.input.emit({ query: '' });\n }\n\n clearSelectedDisplay() {\n this.selectedDisplaySlot?.remove();\n }\n\n clearValue() {\n const { multiple } = this;\n this.value = '';\n this.selectedOptions = [];\n this.change.emit({ value: multiple ? undefined : '', selectedOptions: multiple ? [] : undefined });\n }\n\n clickedElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName !== 'click-elsewhere') return;\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n\n // close popover only if not nested in a shadow dom\n if (this.hostElement.getRootNode().nodeName !== '#document-fragment') {\n popoverElement.open = false;\n this.innerInputField.blur();\n }\n };\n\n closeDropdown() {\n this.open = false;\n this.lastTouchWasInPopover = false;\n this.clearSearchText();\n }\n\n destroyEventListeners = () => {\n if (!isMobile()) return;\n screen?.orientation?.removeEventListener('change', this.handleOrientationChange);\n window.removeEventListener('resize', this.handleOrientationChange);\n visualViewport?.removeEventListener('resize', this.handleOrientationChange);\n this.removeTouchEventListeners();\n };\n\n async executeActionSheet(event: MouseEvent | KeyboardEvent) {\n const result = await showActionSheetList(this, event);\n this.focusInput();\n this.handleSelectionChanges(result);\n }\n\n focusInput() {\n this.inputField?.dispatchEvent(new FocusEvent('focus'));\n }\n\n // Helps with checking for calls to handleExternalKeydown in spec tests\n handleOptionListExternalKeydown(event: KeyboardEvent) {\n this.optionList.handleExternalKeydown(event);\n }\n\n handleOrientationChange = () => {\n if (!isMobile()) return;\n\n let isLandscape: boolean;\n if (this.isModule) {\n isLandscape = window.Tecton?.platformDimensions.orientationType.includes('landscape');\n } else {\n isLandscape = screen?.orientation?.type?.includes('landscape');\n }\n if (isLandscape && this.searchable) this.searchable = false;\n if (!isLandscape) this.searchable = this.originalSearchable;\n };\n\n handleSelectionChanges(changeDetails: { value?: string; values?: IOptionValue[] }) {\n const { value = '', values = [] } = changeDetails;\n const selectedOptionValues = values.map(value => value.value);\n const { multiple } = this;\n if (!this.hostElement.onchange) {\n this.selectedOptions = selectedOptionValues;\n }\n\n this.change.emit({\n value: multiple ? undefined : value,\n selectedOptions: multiple ? selectedOptionValues : undefined,\n });\n }\n\n handleTouchMove = (event: TouchEvent) => {\n if (document.activeElement === this.hostElement) {\n const target = event.target as HTMLElement;\n if (target && target !== this.hostElement) {\n this.inputFocused = false;\n this.lastTouchWasInPopover = true;\n target.focus();\n }\n }\n };\n\n initEventListeners = () => {\n if (!isMobile()) return;\n screen?.orientation?.addEventListener('change', this.handleOrientationChange);\n window.addEventListener('resize', this.handleOrientationChange);\n visualViewport?.addEventListener('resize', this.handleOrientationChange);\n };\n\n initMutationObserver = () => {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n };\n\n inputBlurHandler = () => {\n this.inputFocused = false;\n };\n\n inputChangeHandler = (event: Event) => {\n event.stopPropagation();\n };\n\n inputClickHandler = async (event: MouseEvent) => {\n event.stopPropagation();\n\n // Check if the last interaction was a touch within the popover\n // If so, don't toggle the dropdown as the user is likely continuing to interact\n if (this.lastTouchWasInPopover && this.open && this.searchable) {\n // Reset the flag and don't toggle\n this.lastTouchWasInPopover = false;\n this.focusInput();\n return;\n }\n\n // Reset the flag for any other click\n this.lastTouchWasInPopover = false;\n\n if (shouldShowActionSheet(this)) {\n return this.executeActionSheet(event);\n }\n this.toggleDropdown();\n this.focusInput();\n };\n\n inputFocusHandler = () => {\n this.inputFocused = true;\n };\n\n inputInputHandler = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n const eventValue = event.detail.value;\n const shouldClearValue = !!this.value;\n\n if (shouldClearValue) this.clearValue();\n if (!this.open) this.openDropdownWithoutActiveElement();\n\n this.prioritizeSearch = true;\n this.searchText = eventValue;\n this.input.emit({ query: eventValue });\n };\n\n inputKeydownHandler = (event: KeyboardEvent) => {\n if (this.readonly || this.disabled) return;\n const { key, shiftKey } = event;\n const isShiftTab = key === 'Tab' && shiftKey;\n const hasSlot = this.hasPopoverTop || this.hasPopoverBottom;\n if ((hasSlot || this.multiple) && (key === 'Tab' || isShiftTab)) return;\n\n // slots are incompatible with action sheet\n if (shouldShowActionSheet(this, event) && !hasSlot) {\n return this.executeActionSheet(event);\n }\n\n const keysForOptionListToHandle = [\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'Home',\n 'End',\n 'Escape',\n 'Tab',\n ];\n\n if (this.searchable && (key === ' ' || key === 'Enter') && this.inputField.value == '') {\n event.preventDefault();\n if (!this.open) this.openDropdownWithoutActiveElement();\n }\n\n if (this.searchable && !keysForOptionListToHandle.includes(key)) return;\n if (this.shouldClearSearchText(event)) this.clearSearchText();\n\n // Prevent click event from firing when spacebar is pressed\n if (key === ' ') event.preventDefault();\n\n this.handleOptionListExternalKeydown(event);\n };\n\n onCustomDisplayClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.focusInput();\n this.toggleDropdown();\n };\n\n onMutationObserved = () => {\n const { hostElement, hasPopoverTop, hasPopoverBottom } = this;\n const displaySlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"q2-select-display\"]');\n const hasCustomDisplay = displaySlot?.assignedNodes().length > 0;\n\n if (this.hasCustomDisplay !== hasCustomDisplay) {\n this.hasCustomDisplay = hasCustomDisplay;\n }\n\n const popTopSlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"popover-top\"]');\n const topSlotHasNode = popTopSlot?.assignedNodes().length > 0;\n if (hasPopoverTop !== topSlotHasNode) {\n this.hasPopoverTop = topSlotHasNode;\n }\n\n const popBottomSlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"popover-bottom\"]');\n const bottomSlotHasNode = popBottomSlot?.assignedNodes().length > 0;\n if (hasPopoverBottom !== bottomSlotHasNode) {\n this.hasPopoverBottom = bottomSlotHasNode;\n }\n\n if (this.multilineOptions) this.handleMultilineOptionsUpdate(this.multilineOptions, null);\n this.checkSelectedOptions();\n };\n\n onOptionListChange = (event: Q2OptionListCustomEvent<{ value: string; values: IOptionValue[] }>) => {\n event.stopPropagation();\n const { values } = event.detail;\n\n if (values.length === 0) this.showAllOptions();\n this.handleSelectionChanges(event.detail);\n };\n\n onPopoverState = ({\n detail: { open, action },\n }: CustomEvent<{ open: boolean; action: 'close' | 'select' | 'open' }>) => {\n if (!open || this.searchText) {\n if (action !== 'select') {\n this.optionList.setActiveElement(null);\n }\n this.inputField.focus();\n }\n\n if (this.open === open) return;\n this.open = open;\n };\n\n openDropdownWithoutActiveElement() {\n if (this.readonly || this.disabled) return;\n this.optionList.setActiveElement(null);\n this.open = true;\n }\n\n removeTouchEventListeners = () => {\n if (!isMobile() || !this.popoverElement) return;\n\n this.popoverElement.removeEventListener('touchmove', this.handleTouchMove);\n };\n\n setCustomLabel() {\n const customLabel = this.hostElement.querySelector('[slot=\"label\"]');\n if (customLabel) {\n this.inputField?.appendChild(customLabel.cloneNode(true));\n this.hostElement.removeChild(customLabel);\n }\n }\n\n setStatusMessage(message) {\n clearTimeout(this.statusMessageTimer);\n this.statusMessage = '';\n this.statusMessageTimer = setTimeout(() => {\n this.statusMessage = message;\n }, 1000);\n }\n\n shouldClearSearchText(event: KeyboardEvent) {\n return this.searchable && !!this.searchText && event.key === 'Escape';\n }\n\n showAllOptions = () => {\n this.showSelected = false;\n };\n\n showSelectedOptions = () => {\n this.showSelected = true;\n };\n\n toggleDropdown() {\n if (this.readonly || this.disabled) return;\n\n if (this.open && !this.searchText) {\n this.closeDropdown();\n } else {\n this.openDropdownWithoutActiveElement();\n }\n }\n\n visibilityToggleKeyDown = (event: KeyboardEvent) => {\n const key = event.key;\n const isShiftTab = key === 'Tab' && event.shiftKey;\n const isRadioControlKey = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(key);\n if (isRadioControlKey) event.stopPropagation();\n if (isShiftTab) {\n event.stopPropagation();\n // allows shift+tab keys to select the top slot when present\n if (this.hasPopoverTop) return;\n\n this.optionList.setDefaultActiveElement();\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderCustomDisplay() {\n const hasSelectedDisplay = this.checkSelectedDisplay();\n if (!hasSelectedDisplay) return;\n this.checkSelectedDisplayHeight();\n\n return (\n <slot\n name=\"_selected-display\"\n slot=\"custom-display\"\n />\n );\n }\n\n renderOptionsDropdown() {\n return (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.innerInputContainer}\n open={this.open}\n max-height={this.popoverMaxHeight}\n minHeight={this.popoverMinHeight}\n direction={this.popDirection}\n mode={this.popoverMode || undefined}\n block\n >\n <div class=\"popover-content\">\n <q2-option-list\n onPopoverState={this.onPopoverState}\n ref={el => (this.optionList = el)}\n type=\"listbox\"\n id=\"option-list\"\n show-selected={this.showSelected}\n label={this.listLabel}\n multiple={this.multiple}\n selectedOptions={this.structuredSelectedOptions}\n onChange={this.onOptionListChange}\n >\n <slot />\n </q2-option-list>\n <div\n class=\"popover-top-container\"\n ref={el => (this.popoverTopContainer = el)}\n hidden={!this.multiple && !this.hasPopoverTop}\n tabindex=\"-1\"\n >\n <slot name=\"popover-top\"></slot>\n {this.multiple && this.renderVisibilityToggle()}\n </div>\n </div>\n <div\n class=\"popover-bottom-container\"\n hidden={!this.hasPopoverBottom}\n tabindex=\"-1\"\n >\n <slot name=\"popover-bottom\" />\n </div>\n </q2-popover>\n );\n }\n\n renderSelectField() {\n return (\n <Fragment>\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n role=\"status\"\n class=\"sr\"\n >\n {this.statusMessage}\n </div>\n <q2-input\n ref={el => (this.inputField = el)}\n class=\"q2-select-input\"\n label={(this.label && loc(this.label)) || ''}\n value={this.selectedDisplay}\n clearable={(this.clearable && (!!this.value || !!this.selectedOptions?.length)) || undefined}\n errors={\n (Array.isArray(this.errors) &&\n this.errors.length > 0 &&\n this.errors.map(error => loc(error))) ||\n (this.invalid && ['tecton.element.select.invalid']) ||\n []\n }\n disabled={this.disabled}\n optional={this.optional}\n readonly={!!this.readonly}\n placeholder={this.placeholder || undefined}\n hideLabel={this.hideLabel}\n ariaExpanded={`${this.open}`}\n ariaControls=\"option-list\"\n ariaHaspopup=\"listbox\"\n test-id=\"toggleDropdown\"\n hide-messages\n iconRight=\"chevron-down\"\n onClick={this.inputClickHandler}\n onInput={this.inputInputHandler}\n onKeyDown={this.inputKeydownHandler}\n onFocus={this.inputFocusHandler}\n onBlur={this.inputBlurHandler}\n onChange={this.inputChangeHandler}\n badgeValue={this.badgeValue}\n badgeTheme={this.inputFocused ? 'primary' : undefined}\n _role=\"combobox\"\n _preventEntry={!this.searchable}\n >\n {this.renderCustomDisplay()}\n </q2-input>\n <div\n class=\"custom-display-content\"\n hidden={!this.hasCustomDisplay || !!this.searchText}\n onClick={this.onCustomDisplayClick}\n >\n <slot name=\"q2-select-display\" />\n </div>\n {this.renderOptionsDropdown()}\n </Fragment>\n );\n }\n\n renderVisibilityToggle() {\n const selectedOptionsCount = this.selectedOptions?.length ?? 0;\n const { showSelected } = this;\n return (\n <div class=\"multi-select-header\">\n <fieldset>\n <legend aria-label={loc('tecton.element.select.multiHeader.showing')}>\n {loc('tecton.element.select.multiHeader.showing')}\n </legend>\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"all\"\n name=\"viewDisplay\"\n value=\"all\"\n checked={!showSelected}\n aria-label={loc('tecton.element.select.multiHeader.allAriaLabel')}\n test-id=\"allOptionsButton\"\n onClick={this.showAllOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"all\">{loc('tecton.element.select.multiHeader.all')}</label>\n </div>\n\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"selected\"\n disabled={selectedOptionsCount === 0}\n name=\"viewDisplay\"\n value=\"selected\"\n aria-label={loc('tecton.element.select.multiHeader.selectedAriaLabel', [\n selectedOptionsCount,\n ])}\n checked={showSelected}\n test-id=\"selectedOptionsButton\"\n onClick={this.showSelectedOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"selected\">\n {loc('tecton.element.select.multiHeader.selected', [selectedOptionsCount])}\n </label>\n </div>\n </fieldset>\n </div>\n );\n }\n\n render() {\n return (\n <click-elsewhere\n class={this.wrapperClasses}\n onChange={this.clickedElsewhere}\n >\n {this.renderSelectField()}\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n\n// #endregion\n"],"version":3}
1
+ {"file":"q2-select.entry.cjs.js","mappings":"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","names":["createGuid","loc","isMobile","shouldShowActionSheet","handleAriaLabel","overrideFocus","isRelatedTargetWithinHost","isEventFromElement","getBrowserInfo","waitForNextPaint","showActionSheetList","h","Fragment"],"sources":["src/components/q2-select/q2-select.scss?tag=q2-select&encapsulation=shadow","src/components/q2-select/q2-select.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import '../../styles/dropdowns';\n\n:host {\n --comp-default-select-margin: #{var-list(var-prefixer(select-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(select-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-select-margin, --comp-default-select-margin);\n}\n\n.q2-select-container {\n position: relative;\n display: block;\n}\n\n.q2-select-input {\n margin: 0;\n\n --tct-input-min-height: #{var-list(var-prefixer(select-input-min-height))};\n --tct-input-max-height: #{var-list(var-prefixer(select-input-max-height), none)};\n}\n\n::slotted([slot='_selected-display']) {\n width: 100%;\n min-height: var(--comp-selected-display-height, 44px);\n}\n\n.custom-display-content {\n position: absolute;\n bottom: 0;\n left: calc(var-list(--tct-scale-2, --app-scale-2x, 10px) + 1px);\n height: 44px;\n width: calc(100% - 34px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n overflow: hidden;\n cursor: pointer;\n transition: left var-list(--tct-tween-2, --app-tween-1, unquote('0.2s ease'));\n}\n\n.custom-display-content:not([hidden]) {\n display: flex;\n align-items: center;\n}\n\n.is-searchable.is-focused .custom-display-content,\n.is-searchable .custom-display-content:active {\n left: calc(var-list(--tct-scale-3, --app-scale-3x, 15px) + 1px);\n}\n\n.has-error .custom-display-content {\n width: calc(100% - 68px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n}\n\n.popover-content {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.popover-bottom-container {\n position: sticky;\n bottom: 0;\n z-index: 5;\n}\n\n.popover-top-container {\n position: sticky;\n top: 0;\n z-index: 5;\n .multi-select-header {\n padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-2, var(--app-scale-2x, 10px));\n background: var(--app-white);\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n align-items: center;\n\n fieldset {\n margin: 0;\n padding: 0;\n border: 0;\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n }\n\n legend {\n padding: 0;\n float: left;\n }\n\n label {\n cursor: pointer;\n padding: var-list(\n var-prefixer(select-multi-select-option-padding),\n var-prefixer(btn-badge-padding),\n unquote('2px 5px')\n );\n font-size: var-list(\n var-prefixer(select-multi-select-option-font-size),\n var-prefixer(btn-badge-font-size),\n inherit\n );\n border-radius: var-list(\n var-prefixer(select-multi-select-option-radius),\n var-prefixer(btn-badge-border-radius),\n --app-border-radius-1,\n 4px\n );\n background: var-list(\n --tct-select-multi-select-option-background,\n var-prefixer(select-multi-select-option-bg),\n --tct-badge-background,\n var-prefixer(btn-badge-bg),\n transparent\n );\n color: var-list(\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-font-color),\n inherit\n );\n\n &:hover {\n background: var-list(\n --tct-select-multi-select-option-hover-background,\n var-prefixer(select-multi-select-option-hover-background-color),\n var-prefixer(btn-badge-hover-bg),\n var-prefixer(gray-14),\n --app-gray-l3,\n #f2f2f2\n );\n color: var-list(\n --tct-select-multi-select-option-hover-color,\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-hover-font-color),\n var-prefixer(gray-5),\n --app-gray-d2,\n #404040\n );\n }\n }\n\n input {\n &:checked + label {\n &,\n &:enabled:hover {\n background: var-list(\n --tct-select-multi-select-option-active-background,\n var-prefixer(select-multi-select-option-active-background-color),\n var-prefixer(btn-primary-bg),\n #2e2e2e\n );\n color: var-list(\n var-prefixer(select-multi-select-option-active-color),\n var-prefixer(btn-primary-font-color),\n --app-white,\n #ffffff\n );\n }\n }\n\n &:disabled + label {\n opacity: var-list(\n var-prefixer(select-multi-select-option-disabled-opacity),\n var-prefixer(btn-disabled-opacity),\n --app-disabled-opacity,\n 0.4\n );\n cursor: not-allowed;\n }\n\n &:focus-visible + label {\n box-shadow: var(--const-double-focus-ring);\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n State,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Method,\n Fragment,\n} from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent, Q2OptionListCustomEvent } from 'src/components';\nimport {\n createGuid,\n getBrowserInfo,\n handleAriaLabel,\n isEventFromElement,\n isMobile,\n isRelatedTargetWithinHost,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from '../../utils';\nimport { IOptionValue } from '../q2-option-list/q2-option-list';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n/**\n * @slot popover-top - An optional slot to display custom content persistently at the top of the popover. This is **not** compatible with the action sheet workflow.\n * @slot popover-bottom - An optional slot to display custom content persistently at the bottom of the popover. This is **not** compatible with the action sheet workflow.\n * @slot q2-select-display - An optional slot to display custom HTML content in the display area.\n */\n@Component({ tag: 'q2-select', shadow: true, styleUrl: 'q2-select.scss' })\nexport class Q2Select implements ComponentInterface {\n // #region Own Properties\n\n guid = createGuid();\n inputField?: HTMLQ2InputElement;\n lastTouchWasInPopover: boolean = false;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n originalSearchable: boolean;\n popoverElement?: HTMLQ2PopoverElement;\n popoverTopContainer?: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n statusMessageTimer: NodeJS.Timeout;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasCustomDisplay: boolean = false;\n\n @State()\n hasPopoverBottom: boolean = false;\n\n @State()\n hasPopoverTop: boolean = false;\n\n @State()\n inputFocused: boolean = false;\n\n @State()\n open: boolean = false;\n\n /**\n * Determines what text to show in the input field.\n * When `true`, the component will display the search text in the input field\n * When `false`, the component will display the selected option(s) in the input field\n */\n @State()\n prioritizeSearch: boolean = false;\n\n @State()\n searchText: string = '';\n\n @State()\n showSelected: boolean = false;\n\n @State()\n statusMessage: string;\n\n @State()\n structuredSelectedOptions: IOptionValue[] = [];\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /** Disables all interaction with the field and leverages the disabled visual style of `q2-input`. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * The presence of `errors` will mark the field as invalid, putting it into an error state.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n * @warning\n * If your `q2-select` renders inside of an iframe, and you are using multiline/robust content options,\n * any custom CSS you apply to your options will not get passed up to the platform which displays the action sheet.\n * For this reason, we strongly suggest using the [q2-card](https://tecton.q2developer.com/design-system/q2-card/) component since its styling is managed by Tecton.\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** Determines whether to show an error state. Its primary use-case is for an unfilled field. */\n @Prop({ reflect: true })\n invalid: boolean;\n\n /**\n * The text that will be used as the label for the field.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Determines the label that is applied to the option list for accessibility purposes.\n * @localizable\n */\n @Prop()\n listLabel: string = loc('tecton.element.select.listLabel');\n\n /** The minimum number of rows the component will try to display below or above the component when opened. */\n @Prop()\n minRows: number = 3;\n\n /** Enables text wrapping for `q2-option` elements. When `false`, the text truncates and does not wrap. */\n @Prop({ reflect: true })\n multilineOptions: boolean = false;\n\n /** Enables multi-select functionality. */\n @Prop({ reflect: true })\n multiple: boolean = false;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean = false;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user selects an option.\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean = false;\n\n /** Enables search functionality. */\n @Prop({ reflect: true, mutable: true })\n searchable: boolean = false;\n\n /**\n * Each item in this array should correspond to the value of a `q2-option` element.\n * This property is only relevant for `multiple` (i.e., multi-select) implementations.\n */\n @Prop({ mutable: true })\n selectedOptions: string[] = [];\n\n /**\n * The current value for the select. This should correspond to the value of a nested q2-option element.\n * This property is only relevant for single-select implementations.\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n *\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string; selectedOptions: string[] }>;\n\n /**\n * Emitted when the input value changes.\n *\n * Requires the `searchable` prop to be set to `true`.\n */\n @Event()\n input: EventEmitter<{ query: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.destroyEventListeners();\n }\n\n componentWillLoad() {\n this.originalSearchable = this.searchable;\n handleAriaLabel(this);\n this.handleOrientationChange();\n this.buildStructuredSelectedOptions();\n this.handleMultilineOptionsUpdate(this.multilineOptions, false);\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n this.initEventListeners();\n overrideFocus(this.hostElement);\n setTimeout(() => this.checkSelectedDisplay(), 0);\n this.setCustomLabel();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent<{ value: string; selectedOptions: string[] }>) {\n if (this.readonly || this.disabled) return;\n if (event.target !== this.hostElement || this.hostElement.onchange) return;\n if (this.multiple) {\n this.value = null;\n this.selectedOptions = event.detail.selectedOptions;\n } else {\n this.value = event.detail.value;\n this.selectedOptions = [];\n }\n }\n\n @Listen('clear')\n onClearHandler() {\n this.clearValue();\n }\n\n @Listen('displayChanged')\n handleSelectedDisplay(event: CustomEvent) {\n if (!this.multiple && !!this.value && this.value === event.detail.value) {\n this.inputField.value = event.detail.display;\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const fromHost = isRelatedTargetWithinHost(event, this.hostElement);\n const prioritizeSearch = (this.prioritizeSearch = fromHost && this.searchable);\n if (prioritizeSearch) {\n this.clearSelectedDisplay();\n } else if (isEventFromElement(event, this.hostElement)) {\n this.innerInputField.focus();\n }\n }\n\n @Listen('focusout')\n handleFocusout(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const isLeavingHost =\n !this.popoverElement?.contains(relatedTarget) && !this.hostElement.contains(relatedTarget);\n if (isLeavingHost) this.closeDropdown();\n this.prioritizeSearch = !isLeavingHost && this.searchable;\n }\n\n @Listen('input')\n onHostElementInput(event: CustomEvent) {\n if (!this.searchable || event.target !== this.hostElement || this.hostElement.oninput) return;\n const options = this.optionElements;\n const query = this.searchText.trim().toLocaleLowerCase();\n let matchedCount = 0;\n options.forEach(option => {\n if (query === '') {\n option.hidden = false;\n return;\n }\n\n const title =\n option.firstElementChild?.tagName === 'Q2-CARD'\n ? (option.firstElementChild as HTMLQ2CardElement).title\n : null;\n const { display = '', innerText = '' } = option;\n const searchParams = [display, title, innerText];\n const matched = searchParams.some(text => text?.toLocaleLowerCase().includes(query) ?? false);\n\n option.hidden = !matched;\n if (matched) matchedCount++;\n });\n\n const statusMessageLocString = query\n ? 'tecton.element.select.searchable.results'\n : 'tecton.element.select.allOptions';\n const count = query ? matchedCount : options.length;\n this.setStatusMessage(loc(statusMessageLocString, [count]));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n this.inputKeydownHandler(event);\n }\n\n @Listen('popoverStateChanged')\n popoverStateChanged({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n }\n\n @Listen('tctClick')\n handleTctClick() {\n const { name, version } = getBrowserInfo();\n const majorVersion = Number(version.split('.')[0]);\n // Only Safari under iOS 18 having issue when searchable\n if (this.searchable && name === 'Safari' && !isNaN(majorVersion) && majorVersion < 18) {\n this.scheduledAfterRender.push(() => this.innerInputField.blur());\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<input>` to hide the popover if it is visible.\n *\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover if it is hidden.\n *\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * @warning\n * Only applicable when the input is searchable.\n *\n * @testOnly\n */\n @Method()\n searchOptions(query: string) {\n if (!this.searchable) return;\n\n const { innerInputField } = this;\n innerInputField.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n innerInputField.value = query;\n innerInputField.dispatchEvent(new InputEvent('input'));\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover and selecting the option(s) with the specified value(s).\n *\n * If the multi-select is enabled and the `closePopover` argument is `true` (default), the popover will be closed\n * after the option(s) are selected.\n *\n * @testOnly\n */\n @Method()\n async setValue(values: string | string[], options: { closePopover?: boolean } = { closePopover: true }) {\n const valuesSet = new Set(Array.isArray(values) ? values : [values]);\n if (!this.open) {\n await this.openPopover();\n await waitForNextPaint();\n }\n\n valuesSet.forEach(value => {\n this.optionElements.find(option => option.value === value)?.click();\n });\n\n if (options.closePopover) {\n await this.closePopover();\n await waitForNextPaint();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('multilineOptions')\n handleMultilineOptionsUpdate(newValue, oldValue) {\n if (newValue === oldValue) return;\n this.optionElements.forEach(element => (element.multiline = newValue));\n }\n\n @Watch('open')\n openChanged(isOpen: boolean) {\n if (isOpen) {\n this.addTouchEventListeners();\n } else {\n this.removeTouchEventListeners();\n }\n this.scheduledAfterRender.push(async () => {\n await waitForNextPaint();\n const { popoverTopContainer, popoverElement } = this;\n const height = (isOpen && popoverTopContainer?.offsetHeight) || 0;\n if (height) {\n popoverElement.style.setProperty('--comp-popover-top-container-height', `${height}px`);\n } else {\n popoverElement.style.removeProperty('--comp-popover-top-container-height');\n }\n });\n }\n\n @Watch('value')\n @Watch('selectedOptions')\n buildStructuredSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n if (multiple) {\n this.structuredSelectedOptions = !!selectedOptions?.length\n ? selectedOptions.map(option => (typeof option === 'string' ? { value: option } : option))\n : [];\n } else {\n this.structuredSelectedOptions = value ? [{ value }] : [];\n }\n }\n\n @Watch('value')\n valueUpdated() {\n if (this.multiple) return;\n this.clearSearchText();\n }\n\n // #endregion\n // #region Local Methods\n\n get badgeValue(): string {\n if (!this.multiple) return null;\n const optionsLength = this.selectedOptions?.length ?? 0;\n if (this.open && this.searchable) return optionsLength ? `${optionsLength}` : null;\n else return optionsLength > 1 ? `+${optionsLength - 1}` : null;\n }\n\n get firstSelectedOptionElement() {\n const { firstSelectedValue } = this;\n return firstSelectedValue ? this.optionElements.find(({ value }) => value === firstSelectedValue) : null;\n }\n\n get firstSelectedValue() {\n return this.multiple ? this.selectedOptions?.[0] : this.value;\n }\n\n get innerInputContainer(): HTMLElement {\n return this.inputField?.shadowRoot?.querySelector('.input-container');\n }\n\n get innerInputField(): HTMLInputElement | HTMLButtonElement {\n return this.inputField?.shadowRoot?.querySelector('.input-field');\n }\n\n get inputId() {\n return `select-guid-${this.guid}`;\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n get optionElements() {\n return Array.from(this.hostElement.querySelectorAll<HTMLQ2OptionElement>('q2-option'));\n }\n\n get popoverMinHeight() {\n const { minRows } = this;\n const firstOption = this.hostElement.querySelector<HTMLQ2OptionElement>('q2-option:not([hidden])');\n let minHeight = firstOption && window.getComputedStyle(firstOption).minHeight;\n\n // Safari doesn't return a min-height for non-visible items\n if (!minHeight || minHeight === '0px') minHeight = '44px';\n\n return minRows * parseInt(minHeight);\n }\n\n get selectedDisplay() {\n if (this.prioritizeSearch || this.searchText) return this.searchText;\n if (this.hasCustomDisplay) return '';\n return this.multiple ? this.calculateMultiSelectSelectedDisplay() : this.calculateSingleSelectSelectedDisplay();\n }\n\n get selectedDisplaySlot() {\n return this.hostElement.querySelector<HTMLElement>('[slot=\"_selected-display\"]');\n }\n\n get wrapperClasses() {\n const { errors } = this;\n const classes = ['q2-select-container'];\n if (Array.isArray(errors) && errors.length > 0) classes.push('has-error');\n if (this.inputFocused) classes.push('is-focused');\n if (this.searchable) classes.push('is-searchable');\n return classes.join(' ');\n }\n\n _togglePopover() {\n const { innerInputField } = this;\n innerInputField?.click();\n innerInputField?.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n }\n\n addTouchEventListeners = () => {\n if (!isMobile() || !this.popoverElement) return;\n\n this.popoverElement.addEventListener('touchmove', this.handleTouchMove, { passive: true });\n };\n\n calculateMultiSelectSelectedDisplay() {\n const { firstSelectedOptionElement, firstSelectedValue, multilineOptions } = this;\n if (!firstSelectedValue) return '';\n if (firstSelectedOptionElement?.display) return loc(firstSelectedOptionElement.display);\n if (multilineOptions && this.searchable) return this.searchText;\n if (multilineOptions) return '';\n return (\n firstSelectedOptionElement?.textContent?.trim() ?? firstSelectedOptionElement?.value ?? firstSelectedValue\n );\n }\n\n calculateSingleSelectSelectedDisplay() {\n const { firstSelectedOptionElement, multilineOptions } = this;\n if (multilineOptions) {\n return (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) || this.value || '';\n } else {\n return (\n (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) ||\n firstSelectedOptionElement?.textContent?.trim() ||\n this.value ||\n ''\n );\n }\n }\n\n checkSelectedDisplay() {\n // This prevents an undefined property error when the spec tests are run\n try {\n this.hostElement;\n } catch (error) {\n return null;\n }\n let namedSlot = this.selectedDisplaySlot;\n const { value, multiple, selectedOptions, multilineOptions, firstSelectedOptionElement, prioritizeSearch } =\n this;\n const hasNoValue = !value && multiple && !selectedOptions?.length;\n if (prioritizeSearch || !multilineOptions || hasNoValue) return this.clearSelectedDisplay();\n\n if (!firstSelectedOptionElement || firstSelectedOptionElement.display) return this.clearSelectedDisplay();\n\n // Clone selected option and remove elements with hide-on-select attribute\n const selectionClone = firstSelectedOptionElement.firstElementChild.cloneNode(true) as HTMLElement;\n selectionClone.querySelectorAll('[hide-on-select]').forEach(element => element.remove());\n\n if (namedSlot) {\n const height = namedSlot.clientHeight === 0 ? 'auto' : `${namedSlot.clientHeight}px`;\n namedSlot.style.setProperty('--comp-selected-display-height', height);\n if (namedSlot.firstElementChild.outerHTML !== selectionClone.outerHTML) {\n namedSlot.replaceChild(selectionClone, namedSlot.firstElementChild);\n }\n } else {\n namedSlot = document.createElement('div');\n namedSlot.slot = '_selected-display';\n namedSlot.appendChild(selectionClone);\n this.hostElement.appendChild(namedSlot);\n }\n return namedSlot;\n }\n\n checkSelectedDisplayHeight() {\n const { selectedDisplaySlot } = this;\n if (!selectedDisplaySlot) return;\n selectedDisplaySlot.style.setProperty('--comp-selected-display-height', '44px');\n }\n\n checkSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n this.optionElements.forEach(option => {\n if (multiple) {\n option.selected = selectedOptions.includes(option.value);\n } else {\n option.selected = option.value === value;\n }\n });\n }\n\n clearSearchText() {\n if (!this.searchText) return;\n this.searchText = '';\n this.input.emit({ query: '' });\n }\n\n clearSelectedDisplay() {\n this.selectedDisplaySlot?.remove();\n }\n\n clearValue() {\n const { multiple } = this;\n this.value = '';\n this.selectedOptions = [];\n this.change.emit({ value: multiple ? undefined : '', selectedOptions: multiple ? [] : undefined });\n }\n\n clickedElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName !== 'click-elsewhere') return;\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n\n // close popover only if not nested in a shadow dom\n if (this.hostElement.getRootNode().nodeName !== '#document-fragment') {\n popoverElement.open = false;\n }\n };\n\n closeDropdown() {\n this.open = false;\n this.lastTouchWasInPopover = false;\n this.clearSearchText();\n }\n\n destroyEventListeners = () => {\n if (!isMobile()) return;\n screen?.orientation?.removeEventListener('change', this.handleOrientationChange);\n window.removeEventListener('resize', this.handleOrientationChange);\n visualViewport?.removeEventListener('resize', this.handleOrientationChange);\n this.removeTouchEventListeners();\n };\n\n async executeActionSheet(event: MouseEvent | KeyboardEvent) {\n const result = await showActionSheetList(this, event);\n this.focusInput();\n this.handleSelectionChanges(result);\n }\n\n focusInput() {\n this.inputField?.dispatchEvent(new FocusEvent('focus'));\n }\n\n // Helps with checking for calls to handleExternalKeydown in spec tests\n handleOptionListExternalKeydown(event: KeyboardEvent) {\n this.optionList.handleExternalKeydown(event);\n }\n\n handleOrientationChange = () => {\n if (!isMobile()) return;\n\n let isLandscape: boolean;\n if (this.isModule) {\n isLandscape = window.Tecton?.platformDimensions.orientationType.includes('landscape');\n } else {\n isLandscape = screen?.orientation?.type?.includes('landscape');\n }\n if (isLandscape && this.searchable) this.searchable = false;\n if (!isLandscape) this.searchable = this.originalSearchable;\n };\n\n handleSelectionChanges(changeDetails: { value?: string; values?: IOptionValue[] }) {\n const { value = '', values = [] } = changeDetails;\n const selectedOptionValues = values.map(value => value.value);\n const { multiple } = this;\n if (!this.hostElement.onchange) {\n this.selectedOptions = selectedOptionValues;\n }\n\n this.change.emit({\n value: multiple ? undefined : value,\n selectedOptions: multiple ? selectedOptionValues : undefined,\n });\n }\n\n handleTouchMove = (event: TouchEvent) => {\n if (document.activeElement === this.hostElement) {\n const target = event.target as HTMLElement;\n if (target && target !== this.hostElement) {\n this.inputFocused = false;\n this.lastTouchWasInPopover = true;\n target.focus();\n }\n }\n };\n\n initEventListeners = () => {\n if (!isMobile()) return;\n screen?.orientation?.addEventListener('change', this.handleOrientationChange);\n window.addEventListener('resize', this.handleOrientationChange);\n visualViewport?.addEventListener('resize', this.handleOrientationChange);\n };\n\n initMutationObserver = () => {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n };\n\n inputBlurHandler = () => {\n this.inputFocused = false;\n };\n\n inputChangeHandler = (event: Event) => {\n event.stopPropagation();\n };\n\n inputClickHandler = async (event: MouseEvent) => {\n event.stopPropagation();\n\n // Check if the last interaction was a touch within the popover\n // If so, don't toggle the dropdown as the user is likely continuing to interact\n if (this.lastTouchWasInPopover && this.open && this.searchable) {\n // Reset the flag and don't toggle\n this.lastTouchWasInPopover = false;\n this.focusInput();\n return;\n }\n\n // Reset the flag for any other click\n this.lastTouchWasInPopover = false;\n\n if (shouldShowActionSheet(this)) {\n return this.executeActionSheet(event);\n }\n this.toggleDropdown();\n this.focusInput();\n };\n\n inputFocusHandler = () => {\n this.inputFocused = true;\n };\n\n inputInputHandler = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n const eventValue = event.detail.value;\n const shouldClearValue = !!this.value;\n\n if (shouldClearValue) this.clearValue();\n if (!this.open) this.openDropdownWithoutActiveElement();\n\n this.prioritizeSearch = true;\n this.searchText = eventValue;\n this.input.emit({ query: eventValue });\n };\n\n inputKeydownHandler = (event: KeyboardEvent) => {\n if (this.readonly || this.disabled) return;\n const { key, shiftKey } = event;\n const isShiftTab = key === 'Tab' && shiftKey;\n const hasSlot = this.hasPopoverTop || this.hasPopoverBottom;\n if ((hasSlot || this.multiple) && (key === 'Tab' || isShiftTab)) return;\n\n // slots are incompatible with action sheet\n if (shouldShowActionSheet(this, event) && !hasSlot) {\n return this.executeActionSheet(event);\n }\n\n const keysForOptionListToHandle = [\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'Home',\n 'End',\n 'Escape',\n 'Tab',\n ];\n\n if (this.searchable && (key === ' ' || key === 'Enter') && this.inputField.value == '') {\n event.preventDefault();\n if (!this.open) this.openDropdownWithoutActiveElement();\n }\n\n if (this.searchable && !keysForOptionListToHandle.includes(key)) return;\n if (this.shouldClearSearchText(event)) this.clearSearchText();\n\n // Prevent click event from firing when spacebar is pressed\n if (key === ' ') event.preventDefault();\n\n this.handleOptionListExternalKeydown(event);\n };\n\n onCustomDisplayClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.focusInput();\n this.toggleDropdown();\n };\n\n onMutationObserved = () => {\n const { hostElement, hasPopoverTop, hasPopoverBottom } = this;\n const displaySlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"q2-select-display\"]');\n const hasCustomDisplay = displaySlot?.assignedNodes().length > 0;\n\n if (this.hasCustomDisplay !== hasCustomDisplay) {\n this.hasCustomDisplay = hasCustomDisplay;\n }\n\n const popTopSlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"popover-top\"]');\n const topSlotHasNode = popTopSlot?.assignedNodes().length > 0;\n if (hasPopoverTop !== topSlotHasNode) {\n this.hasPopoverTop = topSlotHasNode;\n }\n\n const popBottomSlot = hostElement.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"popover-bottom\"]');\n const bottomSlotHasNode = popBottomSlot?.assignedNodes().length > 0;\n if (hasPopoverBottom !== bottomSlotHasNode) {\n this.hasPopoverBottom = bottomSlotHasNode;\n }\n\n if (this.multilineOptions) this.handleMultilineOptionsUpdate(this.multilineOptions, null);\n this.checkSelectedOptions();\n };\n\n onOptionListChange = (event: Q2OptionListCustomEvent<{ value: string; values: IOptionValue[] }>) => {\n event.stopPropagation();\n const { values } = event.detail;\n\n if (values.length === 0) this.showAllOptions();\n this.handleSelectionChanges(event.detail);\n };\n\n onPopoverState = ({\n detail: { open, action },\n }: CustomEvent<{ open: boolean; action: 'close' | 'select' | 'open' }>) => {\n if (!open || this.searchText) {\n if (action !== 'select') {\n this.optionList.setActiveElement(null);\n }\n this.inputField.focus();\n }\n\n if (this.open === open) return;\n this.open = open;\n };\n\n openDropdownWithoutActiveElement() {\n if (this.readonly || this.disabled) return;\n this.optionList.setActiveElement(null);\n this.open = true;\n }\n\n removeTouchEventListeners = () => {\n if (!isMobile() || !this.popoverElement) return;\n\n this.popoverElement.removeEventListener('touchmove', this.handleTouchMove);\n };\n\n setCustomLabel() {\n const customLabel = this.hostElement.querySelector('[slot=\"label\"]');\n if (customLabel) {\n this.inputField?.appendChild(customLabel.cloneNode(true));\n this.hostElement.removeChild(customLabel);\n }\n }\n\n setStatusMessage(message) {\n clearTimeout(this.statusMessageTimer);\n this.statusMessage = '';\n this.statusMessageTimer = setTimeout(() => {\n this.statusMessage = message;\n }, 1000);\n }\n\n shouldClearSearchText(event: KeyboardEvent) {\n return this.searchable && !!this.searchText && event.key === 'Escape';\n }\n\n showAllOptions = () => {\n this.showSelected = false;\n };\n\n showSelectedOptions = () => {\n this.showSelected = true;\n };\n\n toggleDropdown() {\n if (this.readonly || this.disabled) return;\n\n if (this.open && !this.searchText) {\n this.closeDropdown();\n } else {\n this.openDropdownWithoutActiveElement();\n }\n }\n\n visibilityToggleKeyDown = (event: KeyboardEvent) => {\n const key = event.key;\n const isShiftTab = key === 'Tab' && event.shiftKey;\n const isRadioControlKey = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(key);\n if (isRadioControlKey) event.stopPropagation();\n if (isShiftTab) {\n event.stopPropagation();\n // allows shift+tab keys to select the top slot when present\n if (this.hasPopoverTop) return;\n\n this.optionList.setDefaultActiveElement();\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderCustomDisplay() {\n const hasSelectedDisplay = this.checkSelectedDisplay();\n if (!hasSelectedDisplay) return;\n this.checkSelectedDisplayHeight();\n\n return (\n <slot\n name=\"_selected-display\"\n slot=\"custom-display\"\n />\n );\n }\n\n renderOptionsDropdown() {\n return (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.innerInputContainer}\n open={this.open}\n max-height={this.popoverMaxHeight}\n minHeight={this.popoverMinHeight}\n direction={this.popDirection}\n mode={this.popoverMode || undefined}\n block\n >\n <div class=\"popover-content\">\n <q2-option-list\n onPopoverState={this.onPopoverState}\n ref={el => (this.optionList = el)}\n type=\"listbox\"\n id=\"option-list\"\n show-selected={this.showSelected}\n label={this.listLabel}\n multiple={this.multiple}\n selectedOptions={this.structuredSelectedOptions}\n onChange={this.onOptionListChange}\n >\n <slot />\n </q2-option-list>\n <div\n class=\"popover-top-container\"\n ref={el => (this.popoverTopContainer = el)}\n hidden={!this.multiple && !this.hasPopoverTop}\n tabindex=\"-1\"\n >\n <slot name=\"popover-top\"></slot>\n {this.multiple && this.renderVisibilityToggle()}\n </div>\n </div>\n <div\n class=\"popover-bottom-container\"\n hidden={!this.hasPopoverBottom}\n tabindex=\"-1\"\n >\n <slot name=\"popover-bottom\" />\n </div>\n </q2-popover>\n );\n }\n\n renderSelectField() {\n return (\n <Fragment>\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n role=\"status\"\n class=\"sr\"\n >\n {this.statusMessage}\n </div>\n <q2-input\n ref={el => (this.inputField = el)}\n class=\"q2-select-input\"\n label={(this.label && loc(this.label)) || ''}\n value={this.selectedDisplay}\n clearable={(this.clearable && (!!this.value || !!this.selectedOptions?.length)) || undefined}\n errors={\n (Array.isArray(this.errors) &&\n this.errors.length > 0 &&\n this.errors.map(error => loc(error))) ||\n (this.invalid && ['tecton.element.select.invalid']) ||\n []\n }\n disabled={this.disabled}\n optional={this.optional}\n readonly={!!this.readonly}\n placeholder={this.placeholder || undefined}\n hideLabel={this.hideLabel}\n ariaExpanded={`${this.open}`}\n ariaControls=\"option-list\"\n ariaHaspopup=\"listbox\"\n test-id=\"toggleDropdown\"\n hide-messages\n iconRight=\"chevron-down\"\n onClick={this.inputClickHandler}\n onInput={this.inputInputHandler}\n onKeyDown={this.inputKeydownHandler}\n onFocus={this.inputFocusHandler}\n onBlur={this.inputBlurHandler}\n onChange={this.inputChangeHandler}\n badgeValue={this.badgeValue}\n badgeTheme={this.inputFocused ? 'primary' : undefined}\n _role=\"combobox\"\n _preventEntry={!this.searchable}\n >\n {this.renderCustomDisplay()}\n </q2-input>\n <div\n class=\"custom-display-content\"\n hidden={!this.hasCustomDisplay || !!this.searchText}\n onClick={this.onCustomDisplayClick}\n >\n <slot name=\"q2-select-display\" />\n </div>\n {this.renderOptionsDropdown()}\n </Fragment>\n );\n }\n\n renderVisibilityToggle() {\n const selectedOptionsCount = this.selectedOptions?.length ?? 0;\n const { showSelected } = this;\n return (\n <div class=\"multi-select-header\">\n <fieldset>\n <legend aria-label={loc('tecton.element.select.multiHeader.showing')}>\n {loc('tecton.element.select.multiHeader.showing')}\n </legend>\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"all\"\n name=\"viewDisplay\"\n value=\"all\"\n checked={!showSelected}\n aria-label={loc('tecton.element.select.multiHeader.allAriaLabel')}\n test-id=\"allOptionsButton\"\n onClick={this.showAllOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"all\">{loc('tecton.element.select.multiHeader.all')}</label>\n </div>\n\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"selected\"\n disabled={selectedOptionsCount === 0}\n name=\"viewDisplay\"\n value=\"selected\"\n aria-label={loc('tecton.element.select.multiHeader.selectedAriaLabel', [\n selectedOptionsCount,\n ])}\n checked={showSelected}\n test-id=\"selectedOptionsButton\"\n onClick={this.showSelectedOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"selected\">\n {loc('tecton.element.select.multiHeader.selected', [selectedOptionsCount])}\n </label>\n </div>\n </fieldset>\n </div>\n );\n }\n\n render() {\n return (\n <click-elsewhere\n class={this.wrapperClasses}\n onChange={this.clickedElsewhere}\n >\n {this.renderSelectField()}\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n\n// #endregion\n"],"version":3}