{"version":3,"names":["optionCss","CalciteOptionStyle0","Option","this","mutationObserver","createObserver","ensureTextContentDependentProps","calciteInternalOptionChange","emit","handlePropChange","_newValue","_oldValue","propName","el","textContent","internallySetLabel","internallySetValue","label","value","connectedCallback","observe","attributeFilter","characterData","childList","subtree","disconnectedCallback","disconnect","render","h","key","optionGroupCss","CalciteOptionGroupStyle0","OptionGroup","calciteInternalOptionGroupChange","Fragment","CSS","icon","iconContainer","select","wrapper","IDS","validationMessage","selectCss","CalciteSelectStyle0","isOption","optionOrGroup","tagName","isOptionGroup","Select","componentToNativeEl","Map","populateInternalSelect","handleInternalSelectChange","selected","selectEl","selectedOptions","selectFromNativeOption","requestAnimationFrame","emitChangeEvent","optionsAndGroups","Array","from","children","filter","child","clearInternalSelect","forEach","append","toNativeElement","storeSelectRef","node","calciteSelectChange","valid","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","valueHandler","updateItemsFromValue","selectedOptionHandler","selectedOption","connectLabel","connectForm","disconnectLabel","disconnectForm","componentWillLoad","setUpLoadableComponent","componentDidLoad","setComponentLoaded","afterConnectDefaultValueSet","componentDidRender","updateHostInteraction","setFocus","componentFocusable","focusElement","handleOptionOrGroupChange","event","stopPropagation","target","nativeEl","get","updateNativeElement","deselectAllExcept","onLabelClick","querySelectorAll","item","nativeOptionOrGroup","disabled","option","innerText","remove","clear","nativeOption","futureSelected","document","createElement","set","group","Error","except","renderChevron","class","scale","getIconScale","Host","InteractiveContainer","toAriaBoolean","status","getLabelText","onChange","ref","HiddenFormInputSlot","component","Validation","validationIcon","id","message"],"sources":["src/components/option/option.scss?tag=calcite-option&encapsulation=shadow","src/components/option/option.tsx","src/components/option-group/option-group.scss?tag=calcite-option-group&encapsulation=shadow","src/components/option-group/option-group.tsx","src/components/select/resources.ts","src/components/select/select.scss?tag=calcite-select&encapsulation=shadow","src/components/select/select.tsx"],"sourcesContent":[":host {\n @apply block;\n}\n\n@include base-component();\n","import { Component, Element, Event, EventEmitter, h, Prop, VNode, Watch } from \"@stencil/core\";\nimport { createObserver } from \"../../utils/observers\";\n\n@Component({\n tag: \"calcite-option\",\n styleUrl: \"option.scss\",\n shadow: true,\n})\nexport class Option {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n */\n @Prop({\n reflect: true,\n })\n disabled = false;\n\n /**\n * Accessible name for the component.\n */\n @Prop({ mutable: true })\n label: string;\n\n /**\n * When `true`, the component is selected.\n */\n @Prop({\n reflect: true,\n })\n selected: boolean;\n\n /**\n * The component's value.\n */\n @Prop({ mutable: true })\n value: any;\n\n @Watch(\"disabled\")\n @Watch(\"label\")\n @Watch(\"selected\")\n @Watch(\"value\")\n protected handlePropChange(_newValue: any, _oldValue: any, propName: string): void {\n if (propName === \"label\" || propName === \"value\") {\n this.ensureTextContentDependentProps();\n }\n\n this.calciteInternalOptionChange.emit();\n }\n\n //--------------------------------------------------------------------------\n //\n // Variables\n //\n //--------------------------------------------------------------------------\n\n @Element()\n private el: HTMLCalciteOptionElement;\n\n private internallySetLabel: string;\n\n private internallySetValue: any;\n\n private mutationObserver: MutationObserver = createObserver(\"mutation\", () => {\n this.ensureTextContentDependentProps();\n this.calciteInternalOptionChange.emit();\n });\n\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n\n /**\n * @internal\n */\n @Event({ cancelable: false })\n private calciteInternalOptionChange: EventEmitter;\n\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n\n private ensureTextContentDependentProps(): void {\n const {\n el: { textContent },\n internallySetLabel,\n internallySetValue,\n label,\n value,\n } = this;\n\n if (!label || label === internallySetLabel) {\n this.label = textContent;\n this.internallySetLabel = textContent;\n }\n\n if (\n value == null /* intentional loose equals to handle both undefined & null */ ||\n value === internallySetValue\n ) {\n this.value = textContent;\n this.internallySetValue = textContent;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n\n connectedCallback(): void {\n this.ensureTextContentDependentProps();\n this.mutationObserver?.observe(this.el, {\n attributeFilter: [\"label\", \"value\"],\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n\n disconnectedCallback(): void {\n this.mutationObserver?.disconnect();\n }\n\n //--------------------------------------------------------------------------\n //\n // Render Methods\n //\n //--------------------------------------------------------------------------\n\n render(): VNode {\n return {this.label};\n }\n}\n",":host {\n @apply block;\n}\n\n@include base-component();\n","import { Component, Event, EventEmitter, Fragment, h, Prop, VNode, Watch } from \"@stencil/core\";\n\n/**\n * @slot - A slot for adding `calcite-option`s.\n */\n@Component({\n tag: \"calcite-option-group\",\n styleUrl: \"option-group.scss\",\n shadow: true,\n})\nexport class OptionGroup {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n */\n @Prop({\n reflect: true,\n })\n disabled = false;\n\n /**\n * Accessible name for the component.\n */\n @Prop()\n label!: string;\n\n @Watch(\"disabled\")\n @Watch(\"label\")\n protected handlePropChange(): void {\n this.calciteInternalOptionGroupChange.emit();\n }\n\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n\n /**\n * @internal\n */\n @Event({ cancelable: false })\n private calciteInternalOptionGroupChange: EventEmitter;\n\n //--------------------------------------------------------------------------\n //\n // Render Methods\n //\n //--------------------------------------------------------------------------\n\n render(): VNode {\n return (\n \n
{this.label}
\n \n
\n );\n }\n}\n","export const CSS = {\n icon: \"icon\",\n iconContainer: \"icon-container\",\n select: \"select\",\n wrapper: \"wrapper\",\n};\n\nexport const IDS = {\n validationMessage: \"selectValidationMessage\",\n};\n","/**\n * CSS Custom Properties\n *\n * These properties can be overridden using the component's tag as selector.\n *\n * @prop --calcite-select-font-size: The font size of `calcite-option`s in the component.\n * @prop --calcite-select-spacing: The padding around the selected option text.\n */\n\n:host {\n @extend %component-spacing;\n @apply flex flex-col;\n}\n\n.wrapper {\n @apply relative flex items-stretch;\n inline-size: var(--select-width);\n\n &:focus-within,\n &:active,\n &:hover {\n .icon {\n color: var(--calcite-color-text-1);\n }\n }\n}\n\n@include disabled();\n\n:host([scale=\"s\"]) {\n --calcite-select-font-size: theme(\"fontSize.n2h\");\n --calcite-select-spacing-inline: theme(\"spacing.2\") theme(\"spacing.8\");\n\n .wrapper {\n @apply h-6;\n }\n\n .icon-container {\n @apply px-2;\n }\n}\n\n:host([scale=\"m\"]) {\n --calcite-select-font-size: theme(\"fontSize.n1h\");\n --calcite-select-spacing-inline: theme(\"spacing.3\") theme(\"spacing.10\");\n\n .wrapper {\n @apply h-8;\n }\n\n .icon-container {\n @apply px-3;\n }\n}\n\n:host([scale=\"l\"]) {\n --calcite-select-font-size: theme(\"fontSize.0h\");\n --calcite-select-spacing-inline: theme(\"spacing.4\") theme(\"spacing.12\");\n\n .wrapper {\n block-size: 44px;\n }\n\n .icon-container {\n @apply px-4;\n }\n}\n\n:host([width=\"auto\"]) {\n @apply w-auto;\n}\n\n:host([width=\"half\"]) {\n @apply w-1/2;\n}\n\n:host([width=\"full\"]) {\n @apply w-full;\n}\n\n.select {\n @apply bg-foreground-1 border-color-input text-color-2 font-inherit focus-base m-0 box-border w-full cursor-pointer appearance-none truncate rounded-none border border-solid;\n font-size: var(--calcite-select-font-size);\n padding-inline: var(--calcite-select-spacing-inline);\n border-inline-end-width: theme(\"borderWidth.0\");\n\n &:focus {\n @apply focus-inset;\n }\n}\n\n// override user agent stylesheet disabled styling\nselect:disabled {\n @apply border-color-input bg-opacity-100;\n}\n\n.icon-container {\n @apply border-color-input text-color-2 pointer-events-none absolute inset-y-0 flex items-center border-0 border-solid bg-transparent;\n inset-inline-end: theme(\"inset.0\");\n border-inline-width: theme(\"borderWidth.0\") theme(\"borderWidth.DEFAULT\");\n\n .icon {\n color: var(--calcite-color-text-3);\n }\n}\n\n:host([status=\"invalid\"]) {\n select,\n .icon-container {\n @apply border-color-danger;\n }\n\n select:focus,\n .icon-container:focus {\n @apply focus-inset-danger;\n }\n}\n\n.select:focus ~ .icon-container {\n @apply border-color-transparent;\n}\n\n@include form-validation-message();\n@include hidden-form-input();\n@include base-component();\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n VNode,\n Watch,\n} from \"@stencil/core\";\nimport { focusElement, toAriaBoolean } from \"../../utils/dom\";\nimport {\n afterConnectDefaultValueSet,\n connectForm,\n disconnectForm,\n FormComponent,\n HiddenFormInputSlot,\n MutableValidityState,\n} from \"../../utils/form\";\nimport {\n InteractiveComponent,\n InteractiveContainer,\n updateHostInteraction,\n} from \"../../utils/interactive\";\nimport { connectLabel, disconnectLabel, getLabelText, LabelableComponent } from \"../../utils/label\";\nimport {\n componentFocusable,\n LoadableComponent,\n setComponentLoaded,\n setUpLoadableComponent,\n} from \"../../utils/loadable\";\nimport { createObserver } from \"../../utils/observers\";\nimport { Scale, Status, Width } from \"../interfaces\";\nimport { getIconScale } from \"../../utils/component\";\nimport { Validation } from \"../functional/Validation\";\nimport { IconNameOrString } from \"../icon/interfaces\";\nimport { CSS, IDS } from \"./resources\";\n\ntype OptionOrGroup = HTMLCalciteOptionElement | HTMLCalciteOptionGroupElement;\ntype NativeOptionOrGroup = HTMLOptionElement | HTMLOptGroupElement;\n\nfunction isOption(optionOrGroup: OptionOrGroup): optionOrGroup is HTMLCalciteOptionElement {\n return optionOrGroup.tagName === \"CALCITE-OPTION\";\n}\n\nfunction isOptionGroup(\n optionOrGroup: OptionOrGroup,\n): optionOrGroup is HTMLCalciteOptionGroupElement {\n return optionOrGroup.tagName === \"CALCITE-OPTION-GROUP\";\n}\n\n/**\n * @slot - A slot for adding `calcite-option`s.\n */\n@Component({\n tag: \"calcite-select\",\n styleUrl: \"select.scss\",\n shadow: true,\n})\nexport class Select\n implements LabelableComponent, FormComponent, InteractiveComponent, LoadableComponent\n{\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * The `id` of the form that will be associated with the component.\n *\n * When not set, the component will be associated with its ancestor form element, if any.\n */\n @Prop({ reflect: true }) form: string;\n\n /**\n * Accessible name for the component.\n *\n */\n @Prop() label!: string;\n\n /** Specifies the validation message to display under the component. */\n @Prop() validationMessage: string;\n\n /** Specifies the validation icon to display under the component. */\n @Prop({ reflect: true }) validationIcon: IconNameOrString | boolean;\n\n /**\n * The current validation state of the component.\n *\n * @readonly\n * @mdn [ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)\n */\n // eslint-disable-next-line @stencil-community/strict-mutable -- updated in form util when syncing hidden input\n @Prop({ mutable: true }) validity: MutableValidityState = {\n valid: false,\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n };\n\n /**\n * Specifies the name of the component.\n *\n * Required to pass the component's `value` on form submission.\n */\n @Prop({ reflect: true }) name: string;\n\n /** When `true`, the component must have a value in order for the form to submit. */\n @Prop({ reflect: true }) required = false;\n\n /**\n * Specifies the size of the component.\n */\n @Prop({ reflect: true }) scale: Scale = \"m\";\n\n /** Specifies the status of the input field, which determines message and icons. */\n @Prop({ reflect: true }) status: Status = \"idle\";\n\n /** The component's `selectedOption` value. */\n @Prop({ mutable: true }) value: string = null;\n\n @Watch(\"value\")\n valueHandler(value: string): void {\n this.updateItemsFromValue(value);\n }\n\n /**\n * The component's selected option `HTMLElement`.\n *\n * @readonly\n */\n @Prop({ mutable: true }) selectedOption: HTMLCalciteOptionElement;\n\n @Watch(\"selectedOption\")\n selectedOptionHandler(selectedOption: HTMLCalciteOptionElement): void {\n this.value = selectedOption?.value;\n }\n\n /**\n * Specifies the width of the component.\n */\n @Prop({ reflect: true }) width: Width = \"auto\";\n\n //--------------------------------------------------------------------------\n //\n // Private Properties\n //\n //--------------------------------------------------------------------------\n\n @Element() el: HTMLCalciteSelectElement;\n\n labelEl: HTMLCalciteLabelElement;\n\n formEl: HTMLFormElement;\n\n defaultValue: Select[\"value\"];\n\n private componentToNativeEl = new Map();\n\n private mutationObserver = createObserver(\"mutation\", () => this.populateInternalSelect());\n\n private selectEl: HTMLSelectElement;\n\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n\n connectedCallback(): void {\n const { el } = this;\n\n this.mutationObserver?.observe(el, {\n subtree: true,\n childList: true,\n });\n\n connectLabel(this);\n connectForm(this);\n }\n\n disconnectedCallback(): void {\n this.mutationObserver?.disconnect();\n disconnectLabel(this);\n disconnectForm(this);\n }\n\n componentWillLoad(): void {\n setUpLoadableComponent(this);\n\n if (typeof this.value === \"string\") {\n this.updateItemsFromValue(this.value);\n }\n }\n\n componentDidLoad(): void {\n setComponentLoaded(this);\n afterConnectDefaultValueSet(this, this.selectedOption?.value ?? \"\");\n }\n\n componentDidRender(): void {\n updateHostInteraction(this);\n }\n\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n\n /** Sets focus on the component. */\n @Method()\n async setFocus(): Promise {\n await componentFocusable(this);\n\n focusElement(this.selectEl);\n }\n\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n\n /**\n * Fires when the `selectedOption` changes.\n */\n @Event({ cancelable: false }) calciteSelectChange: EventEmitter;\n\n private handleInternalSelectChange = (): void => {\n const selected = this.selectEl.selectedOptions[0];\n this.selectFromNativeOption(selected);\n requestAnimationFrame(() => this.emitChangeEvent());\n };\n\n @Listen(\"calciteInternalOptionChange\")\n @Listen(\"calciteInternalOptionGroupChange\")\n protected handleOptionOrGroupChange(event: CustomEvent): void {\n event.stopPropagation();\n\n const optionOrGroup = event.target as OptionOrGroup;\n const nativeEl = this.componentToNativeEl.get(optionOrGroup);\n\n if (!nativeEl) {\n return;\n }\n\n this.updateNativeElement(optionOrGroup, nativeEl);\n\n if (isOption(optionOrGroup) && optionOrGroup.selected) {\n this.deselectAllExcept(optionOrGroup);\n this.selectedOption = optionOrGroup;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n\n onLabelClick(): void {\n this.setFocus();\n }\n\n private updateItemsFromValue(value: string): void {\n this.el\n .querySelectorAll(\"calcite-option\")\n .forEach((item) => (item.selected = item.value === value));\n }\n\n private updateNativeElement(\n optionOrGroup: OptionOrGroup,\n nativeOptionOrGroup: NativeOptionOrGroup,\n ): void {\n nativeOptionOrGroup.disabled = optionOrGroup.disabled;\n nativeOptionOrGroup.label = optionOrGroup.label;\n\n if (isOption(optionOrGroup)) {\n const option = nativeOptionOrGroup as HTMLOptionElement;\n option.selected = optionOrGroup.selected;\n option.value = optionOrGroup.value;\n\n // need to set innerText for mobile\n // see https://stackoverflow.com/questions/35021620/ios-safari-not-showing-all-options-for-select-menu/41749701\n option.innerText = optionOrGroup.label;\n }\n }\n\n private populateInternalSelect = (): void => {\n const optionsAndGroups = Array.from(\n this.el.children as HTMLCollectionOf,\n ).filter(\n (child) => child.tagName === \"CALCITE-OPTION\" || child.tagName === \"CALCITE-OPTION-GROUP\",\n ) as OptionOrGroup[];\n\n this.clearInternalSelect();\n\n optionsAndGroups.forEach((optionOrGroup) =>\n this.selectEl?.append(this.toNativeElement(optionOrGroup)),\n );\n };\n\n private clearInternalSelect(): void {\n this.componentToNativeEl.forEach((value) => value.remove());\n this.componentToNativeEl.clear();\n }\n\n private storeSelectRef = (node: HTMLSelectElement): void => {\n this.selectEl = node;\n this.populateInternalSelect();\n\n const selected = this.selectEl.selectedOptions[0];\n this.selectFromNativeOption(selected);\n };\n\n private selectFromNativeOption(nativeOption: HTMLOptionElement): void {\n if (!nativeOption) {\n return;\n }\n\n let futureSelected: HTMLCalciteOptionElement;\n\n this.componentToNativeEl.forEach((nativeOptionOrGroup, optionOrGroup) => {\n if (isOption(optionOrGroup) && nativeOptionOrGroup === nativeOption) {\n optionOrGroup.selected = true;\n futureSelected = optionOrGroup;\n this.deselectAllExcept(optionOrGroup);\n }\n });\n\n if (futureSelected) {\n this.selectedOption = futureSelected;\n }\n }\n\n private toNativeElement(\n optionOrGroup: HTMLCalciteOptionElement | HTMLCalciteOptionGroupElement,\n ): NativeOptionOrGroup {\n if (isOption(optionOrGroup)) {\n const option = document.createElement(\"option\");\n this.updateNativeElement(optionOrGroup, option);\n this.componentToNativeEl.set(optionOrGroup, option);\n\n return option;\n }\n\n if (isOptionGroup(optionOrGroup)) {\n const group = document.createElement(\"optgroup\");\n this.updateNativeElement(optionOrGroup, group);\n\n Array.from(optionOrGroup.children as HTMLCollectionOf).forEach(\n (option) => {\n const nativeOption = this.toNativeElement(option);\n group.append(nativeOption);\n this.componentToNativeEl.set(optionOrGroup, nativeOption);\n },\n );\n\n this.componentToNativeEl.set(optionOrGroup, group);\n\n return group;\n }\n\n throw new Error(\"unsupported element child provided\");\n }\n\n private deselectAllExcept(except: HTMLCalciteOptionElement): void {\n this.el.querySelectorAll(\"calcite-option\").forEach((option) => {\n if (option === except) {\n return;\n }\n\n option.selected = false;\n });\n }\n\n private emitChangeEvent = (): void => {\n this.calciteSelectChange.emit();\n };\n\n //--------------------------------------------------------------------------\n //\n // Render Methods\n //\n //--------------------------------------------------------------------------\n\n renderChevron(): VNode {\n return (\n
\n \n
\n );\n }\n\n render(): VNode {\n const { disabled } = this;\n\n return (\n \n \n
\n \n \n \n {this.renderChevron()}\n \n
\n {this.validationMessage && this.status === \"invalid\" ? (\n \n ) : null}\n
\n
\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}