solid-ui 3.1.3-11 → 3.1.3-12

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.
Files changed (153) hide show
  1. package/README.md +2 -0
  2. package/dist/chunks/{account-CdqIoTsl.js → account-Bb818bGF.js} +20 -15
  3. package/dist/chunks/account-Bb818bGF.js.map +1 -0
  4. package/dist/chunks/{auth-D8B5yczR.js → auth-ClVI18ss.js} +90 -79
  5. package/dist/chunks/auth-ClVI18ss.js.map +1 -0
  6. package/dist/chunks/{avatar-DNGFKkhm.js → avatar-DGu_PX5y.js} +12 -4
  7. package/dist/chunks/avatar-DGu_PX5y.js.map +1 -0
  8. package/dist/chunks/{button-oanBb_ha.js → button-B9-nlEpz.js} +2 -2
  9. package/dist/chunks/{button-oanBb_ha.js.map → button-B9-nlEpz.js.map} +1 -1
  10. package/dist/chunks/{combobox-Dav1bNHS.js → combobox-DrT0Nb-A.js} +3 -3
  11. package/dist/chunks/combobox-DrT0Nb-A.js.map +1 -0
  12. package/dist/chunks/{dialog-Ujvm11_B.js → dialog-kyHgc-uy.js} +2 -2
  13. package/dist/chunks/{dialog-Ujvm11_B.js.map → dialog-kyHgc-uy.js.map} +1 -1
  14. package/dist/chunks/{guard-DZGvf4tS.js → guard-DEqOFEs4.js} +78 -52
  15. package/dist/chunks/guard-DEqOFEs4.js.map +1 -0
  16. package/dist/chunks/{login-button-Ta3tkpn4.js → login-button-Czm-E9Na.js} +4 -4
  17. package/dist/chunks/{login-button-Ta3tkpn4.js.map → login-button-Czm-E9Na.js.map} +1 -1
  18. package/dist/chunks/{logout-button-Db6VmUmJ.js → logout-button-BrR_jOhK.js} +4 -4
  19. package/dist/chunks/{logout-button-Db6VmUmJ.js.map → logout-button-BrR_jOhK.js.map} +1 -1
  20. package/dist/chunks/{menu-CQEXqNO6.js → menu-1PG19fCC.js} +3 -3
  21. package/dist/chunks/{menu-CQEXqNO6.js.map → menu-1PG19fCC.js.map} +1 -1
  22. package/dist/chunks/{menu-item-BHJ4xljI.js → menu-item-C9uErV38.js} +71 -54
  23. package/dist/chunks/menu-item-C9uErV38.js.map +1 -0
  24. package/dist/chunks/{provider-CoVkCkMs.js → provider-qd_4VaKB.js} +5 -2
  25. package/dist/chunks/provider-qd_4VaKB.js.map +1 -0
  26. package/dist/chunks/{signup-button-wO4uoqUi.js → signup-button-BnA5p-uJ.js} +4 -4
  27. package/dist/chunks/{signup-button-wO4uoqUi.js.map → signup-button-BnA5p-uJ.js.map} +1 -1
  28. package/dist/chunks/{src-B9CXYA44.js → src-DJOb1wMf.js} +2 -2
  29. package/dist/chunks/{src-B9CXYA44.js.map → src-DJOb1wMf.js.map} +1 -1
  30. package/dist/components/account/Account.cjs.js +6 -4
  31. package/dist/components/account/Account.cjs.js.map +1 -1
  32. package/dist/components/account/Account.d.ts +2 -0
  33. package/dist/components/account/Account.d.ts.map +1 -1
  34. package/dist/components/account/Account.esm.js +10 -4
  35. package/dist/components/account/Account.esm.js.map +1 -1
  36. package/dist/components/account/Account.stories.d.ts +10 -2
  37. package/dist/components/account/Account.stories.d.ts.map +1 -1
  38. package/dist/components/account/Account.styles.cjs.js +1 -1
  39. package/dist/components/account/Account.styles.cjs.js.map +1 -1
  40. package/dist/components/account/Account.styles.esm.js +1 -1
  41. package/dist/components/account/Account.styles.esm.js.map +1 -1
  42. package/dist/components/account.js +1 -1
  43. package/dist/components/all.cjs.js +1 -0
  44. package/dist/components/all.d.ts +2 -0
  45. package/dist/components/all.d.ts.map +1 -0
  46. package/dist/components/all.esm.js +24 -0
  47. package/dist/components/avatar/Avatar.cjs.js +1 -1
  48. package/dist/components/avatar/Avatar.cjs.js.map +1 -1
  49. package/dist/components/avatar/Avatar.d.ts +3 -0
  50. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  51. package/dist/components/avatar/Avatar.esm.js +9 -1
  52. package/dist/components/avatar/Avatar.esm.js.map +1 -1
  53. package/dist/components/avatar/Avatar.stories.d.ts +4 -4
  54. package/dist/components/avatar.js +1 -1
  55. package/dist/components/button/Button.styles.cjs.js +1 -1
  56. package/dist/components/button/Button.styles.cjs.js.map +1 -1
  57. package/dist/components/button/Button.styles.esm.js +1 -1
  58. package/dist/components/button/Button.styles.esm.js.map +1 -1
  59. package/dist/components/button.js +1 -1
  60. package/dist/components/combobox/Combobox.cjs.js +1 -1
  61. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  62. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  63. package/dist/components/combobox/Combobox.esm.js +1 -1
  64. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  65. package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
  66. package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
  67. package/dist/components/combobox/Combobox.styles.esm.js +1 -1
  68. package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
  69. package/dist/components/combobox.js +1 -1
  70. package/dist/components/dialog.js +1 -1
  71. package/dist/components/guard/Guard.cjs.js +4 -2
  72. package/dist/components/guard/Guard.cjs.js.map +1 -1
  73. package/dist/components/guard/Guard.d.ts +7 -0
  74. package/dist/components/guard/Guard.d.ts.map +1 -1
  75. package/dist/components/guard/Guard.esm.js +74 -48
  76. package/dist/components/guard/Guard.esm.js.map +1 -1
  77. package/dist/components/guard/Guard.stories.d.ts +14 -3
  78. package/dist/components/guard/Guard.stories.d.ts.map +1 -1
  79. package/dist/components/guard.js +1 -1
  80. package/dist/components/index.cjs.js +1 -1
  81. package/dist/components/index.d.ts +0 -1
  82. package/dist/components/index.d.ts.map +1 -1
  83. package/dist/components/index.esm.js +1 -24
  84. package/dist/components/login-button.js +1 -1
  85. package/dist/components/login-modal.js +1 -1
  86. package/dist/components/logout-button.js +1 -1
  87. package/dist/components/menu/Menu.cjs.js +1 -1
  88. package/dist/components/menu/Menu.cjs.js.map +1 -1
  89. package/dist/components/menu/Menu.esm.js +1 -1
  90. package/dist/components/menu/Menu.esm.js.map +1 -1
  91. package/dist/components/menu/Menu.stories.d.ts.map +1 -1
  92. package/dist/components/menu/Menu.styles.cjs.js +1 -1
  93. package/dist/components/menu/Menu.styles.cjs.js.map +1 -1
  94. package/dist/components/menu/Menu.styles.esm.js +1 -1
  95. package/dist/components/menu/Menu.styles.esm.js.map +1 -1
  96. package/dist/components/menu-item/MenuItem.cjs.js +4 -4
  97. package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
  98. package/dist/components/menu-item/MenuItem.d.ts +1 -0
  99. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  100. package/dist/components/menu-item/MenuItem.esm.js +72 -55
  101. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  102. package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
  103. package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
  104. package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
  105. package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -1
  106. package/dist/components/menu-item.js +1 -1
  107. package/dist/components/menu.js +1 -1
  108. package/dist/components/provider/Provider.cjs.js +1 -1
  109. package/dist/components/provider/Provider.cjs.js.map +1 -1
  110. package/dist/components/provider/Provider.d.ts +1 -0
  111. package/dist/components/provider/Provider.d.ts.map +1 -1
  112. package/dist/components/provider/Provider.esm.js +3 -0
  113. package/dist/components/provider/Provider.esm.js.map +1 -1
  114. package/dist/components/provider.js +1 -1
  115. package/dist/components/signup-button.js +1 -1
  116. package/dist/components.js +14 -14
  117. package/dist/index.js +3 -3
  118. package/dist/lib/auth/NoopAuth.cjs.js +1 -1
  119. package/dist/lib/auth/NoopAuth.cjs.js.map +1 -1
  120. package/dist/lib/auth/NoopAuth.d.ts +2 -2
  121. package/dist/lib/auth/NoopAuth.d.ts.map +1 -1
  122. package/dist/lib/auth/NoopAuth.esm.js +2 -3
  123. package/dist/lib/auth/NoopAuth.esm.js.map +1 -1
  124. package/dist/lib/auth/SolidAuth.cjs.js +1 -1
  125. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  126. package/dist/lib/auth/SolidAuth.d.ts +6 -0
  127. package/dist/lib/auth/SolidAuth.d.ts.map +1 -1
  128. package/dist/lib/auth/SolidAuth.esm.js +28 -16
  129. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  130. package/dist/lib/auth/context.cjs.js.map +1 -1
  131. package/dist/lib/auth/context.d.ts +2 -0
  132. package/dist/lib/auth/context.d.ts.map +1 -1
  133. package/dist/lib/auth/context.esm.js.map +1 -1
  134. package/dist/loader.js +3 -3
  135. package/dist/solid-ui.js +92 -88
  136. package/dist/solid-ui.min.js +92 -88
  137. package/dist/solid-ui.min.js.map +1 -1
  138. package/dist/storybook/auth/StorybookAuth.d.ts +1 -0
  139. package/dist/storybook/auth/StorybookAuth.d.ts.map +1 -1
  140. package/dist/storybook/components/StorybookProvider.d.ts +1 -0
  141. package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
  142. package/dist/storybook/helpers.d.ts.map +1 -1
  143. package/dist/storybook/stubs.d.ts +7 -3
  144. package/dist/storybook/stubs.d.ts.map +1 -1
  145. package/dist/theme.css +1 -1
  146. package/package.json +1 -1
  147. package/dist/chunks/account-CdqIoTsl.js.map +0 -1
  148. package/dist/chunks/auth-D8B5yczR.js.map +0 -1
  149. package/dist/chunks/avatar-DNGFKkhm.js.map +0 -1
  150. package/dist/chunks/combobox-Dav1bNHS.js.map +0 -1
  151. package/dist/chunks/guard-DZGvf4tS.js.map +0 -1
  152. package/dist/chunks/menu-item-BHJ4xljI.js.map +0 -1
  153. package/dist/chunks/provider-CoVkCkMs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.cjs.js","names":["customElement","WebComponent","Task","html","nothing","property","query","state","debounce","FormControlTrait","styles","AsyncOptionsInfo","Error","defineAsyncComboboxOptionsProvider","provider","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_selectOnlyDecs","attribute","_asyncOptionsUrlDecs","_asyncOptionsResultsFieldDecs","_asyncOptionsLabelFieldDecs","_asyncOptionsValueFieldDecs","_asyncOptionsProviderDecs","Function","_optionsFallbackDecs","Array","_inputElementDecs","_filterDecs","_displayValueDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","selectOnly","asyncOptionsUrl","asyncOptionsResultsField","asyncOptionsLabelField","asyncOptionsValueField","asyncOptionsProvider","optionsFallback","inputElement","filter","displayValue","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_selectOnly","_init_asyncOptionsUrl","_init_asyncOptionsResultsField","_init_asyncOptionsLabelField","_init_asyncOptionsValueField","_init_asyncOptionsProvider","_init_optionsFallback","_init_inputElement","_init_filter","_init_displayValue","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","controlTrait","addTrait","getControlElement","getInternals","listboxId","controlId","selectedOption","_selectedOption","disconnectedCallback","removeOpenListeners","willUpdate","changedProperties","has","updateAsyncOptionsTask","options","getFilteredOptions","option","find","selectable","optionLabel","updateDisplayValue","getInitialActiveIndex","undefined","render","activeOption","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","index","setActiveIndex","template","asyncOptionsTask","initial","complete","pending","error","isError","message","Object","getOptionsFromDOM","toLowerCase","querySelectorAll","from","textContent","selectedIndex","findIndex","length","getNextIndex","currentIndex","direction","updateDebouncedFilter","results","response","fetch","replace","encodeURIComponent","data","json","labelField","valueField","result","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","cancel","selectOption","previousValue","setValue","focus","preventScroll","dispatchEvent","CustomEvent","bubbles","composed","detail","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","target","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { Task } from '@lit/task'\nimport { html, nothing, TemplateResult, type PropertyValues } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { debounce } from '@/lib/timing'\nimport FormControlTrait from '@/lib/components/traits/FormControlTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '~icons/svg-spinners/3-dots-fade'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\nclass AsyncOptionsInfo extends Error {}\n\nexport type ComboboxOptionData = {\n value: unknown;\n label: string;\n template?: TemplateResult;\n selectable?: boolean;\n}\n\nexport type ComboboxChangeEvent = CustomEvent<{ option: ComboboxOptionData }>\n\nexport type AsyncComboboxOptionsProvider = (query: string) => Promise<ComboboxOptionData[]>\n\nexport function defineAsyncComboboxOptionsProvider<T extends AsyncComboboxOptionsProvider> (provider: T): T {\n return provider\n}\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property()\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @property({ type: Boolean, reflect: true, attribute: 'select-only' })\n accessor selectOnly = false\n\n @property({ type: String, attribute: 'async-options-url' })\n accessor asyncOptionsUrl = ''\n\n @property({ type: String, attribute: 'async-options-results-field' })\n accessor asyncOptionsResultsField = ''\n\n @property({ type: String, attribute: 'async-options-label-field' })\n accessor asyncOptionsLabelField = ''\n\n @property({ type: String, attribute: 'async-options-value-field' })\n accessor asyncOptionsValueField = ''\n\n @property({ type: Function })\n accessor asyncOptionsProvider: AsyncComboboxOptionsProvider | null = null\n\n @property({ type: Array })\n accessor optionsFallback: ComboboxOptionData[] | null = null\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor displayValue = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private controlTrait: FormControlTrait\n private openListenersAttached = false\n private updateDebouncedFilter = debounce(300, (value) => (this.filter = value))\n private asyncOptionsTask?: Task<readonly [string], ComboboxOptionData[]>\n private _selectedOption: ComboboxOptionData | undefined\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.controlTrait = this.addTrait(\n new FormControlTrait(this, {\n getControlElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n })\n )\n\n this.listboxId = `listbox-${this.controlTrait.controlId}`\n }\n\n get selectedOption (): ComboboxOptionData | undefined {\n return this._selectedOption\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('asyncOptionsUrl') || changedProperties.has('asyncOptionsProvider')) {\n this.updateAsyncOptionsTask()\n }\n\n if (changedProperties.has('value')) {\n const options = this.getFilteredOptions()\n const option = options.find((option) => option.selectable !== false && option.value === this.value) ??\n this.optionsFallback?.find((option) => option.value === this.value)\n const optionLabel = option?.selectable !== false && option?.label\n\n this.updateDisplayValue(optionLabel || this.value)\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n\n if (this._selectedOption && this._selectedOption.value !== this.value) {\n this._selectedOption = undefined\n }\n }\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.controlTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.controlTrait.controlId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.displayValue}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.selectOnly ? this.updateDisplayValue(this.inputElement?.value ?? '') : this.controlTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map((option, index) => {\n return option.selectable !== false\n ? html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.template ?? option.label}\n </div>`\n : html`<div class=\"non-selectable-option\">${option.template ?? option.label}</div>`\n })}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n if (this.asyncOptionsTask) {\n return this.asyncOptionsTask.render({\n initial: () => this.optionsFallback ?? [],\n complete: (options) => options,\n pending: () => [\n {\n value: '',\n label: 'Loading...',\n template: html`<icon-svg-spinners-3-dots-fade></icon-svg-spinners-3-dots-fade>`,\n selectable: false\n } as const,\n ],\n error: (error) => {\n const isError = !(error instanceof AsyncOptionsInfo)\n const message = Object(error).message ?? 'Something went wrong'\n\n return [\n {\n value: '',\n label: message,\n template: html`<span class=\"message message--${isError ? 'error' : 'info'}\">${message}</span>`,\n selectable: false\n } as const,\n ]\n },\n })\n }\n\n return this.getOptionsFromDOM().filter((option) =>\n String(option.label).toLowerCase().includes(this.filter)\n )\n }\n\n private getOptionsFromDOM (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private updateDisplayValue (value: unknown) {\n this.displayValue = String(value)\n\n if (this.open) {\n const filter = this.displayValue.toLowerCase()\n\n if (this.asyncOptionsTask) {\n this.updateDebouncedFilter(filter)\n } else {\n this.filter = filter\n }\n }\n }\n\n private updateAsyncOptionsTask () {\n if (!this.asyncOptionsUrl && !this.asyncOptionsProvider) {\n this.asyncOptionsTask = undefined\n\n return\n }\n\n this.asyncOptionsTask ??= new Task(\n this,\n async ([filter]) => {\n if (this.asyncOptionsProvider) {\n const results = await this.asyncOptionsProvider(filter)\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n return results\n }\n\n const response = await fetch(\n this.asyncOptionsUrl.replace('%search%', encodeURIComponent(filter))\n )\n const data = await response.json()\n const results = Array.from(\n this.asyncOptionsResultsField\n ? data[this.asyncOptionsResultsField]\n : data\n )\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n const labelField = this.asyncOptionsLabelField || 'label'\n const valueField = this.asyncOptionsValueField || 'value'\n\n return results.map((result) => ({\n label: String(Object(result)[labelField]),\n value: Object(result)[valueField],\n }))\n },\n () => [this.filter]\n )\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n this.updateDebouncedFilter.cancel()\n }\n\n private selectOption (option: ComboboxOptionData) {\n const previousValue = this.value\n\n this._selectedOption = option\n\n this.hide()\n this.controlTrait.setValue(option.value)\n this.inputElement?.focus({ preventScroll: true })\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n\n if (previousValue === this.value) {\n this.updateDisplayValue(option.label)\n }\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n if (event.target === this.inputElement) {\n return\n }\n\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex])\n } else if (!this.open) {\n event.preventDefault()\n this.controlTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n default:\n if (!this.open) {\n this.show()\n }\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.cjs.js","names":["customElement","WebComponent","Task","html","nothing","property","query","state","debounce","FormControlTrait","styles","AsyncOptionsInfo","Error","defineAsyncComboboxOptionsProvider","provider","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_selectOnlyDecs","attribute","_asyncOptionsUrlDecs","_asyncOptionsResultsFieldDecs","_asyncOptionsLabelFieldDecs","_asyncOptionsValueFieldDecs","_asyncOptionsProviderDecs","Function","_optionsFallbackDecs","Array","_inputElementDecs","_filterDecs","_displayValueDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","selectOnly","asyncOptionsUrl","asyncOptionsResultsField","asyncOptionsLabelField","asyncOptionsValueField","asyncOptionsProvider","optionsFallback","inputElement","filter","displayValue","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_selectOnly","_init_asyncOptionsUrl","_init_asyncOptionsResultsField","_init_asyncOptionsLabelField","_init_asyncOptionsValueField","_init_asyncOptionsProvider","_init_optionsFallback","_init_inputElement","_init_filter","_init_displayValue","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","controlTrait","addTrait","getControlElement","getInternals","listboxId","controlId","selectedOption","_selectedOption","disconnectedCallback","removeOpenListeners","willUpdate","changedProperties","has","updateAsyncOptionsTask","options","getFilteredOptions","option","find","selectable","optionLabel","updateDisplayValue","getInitialActiveIndex","undefined","render","activeOption","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","index","setActiveIndex","template","asyncOptionsTask","initial","complete","pending","error","isError","message","Object","getOptionsFromDOM","toLowerCase","querySelectorAll","from","textContent","selectedIndex","findIndex","length","getNextIndex","currentIndex","direction","updateDebouncedFilter","results","response","fetch","replace","encodeURIComponent","data","json","labelField","valueField","result","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","cancel","selectOption","previousValue","setValue","focus","preventScroll","dispatchEvent","CustomEvent","bubbles","composed","detail","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","target","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { Task } from '@lit/task'\nimport { html, nothing, TemplateResult, type PropertyValues } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { debounce } from '@/lib/timing'\nimport FormControlTrait from '@/lib/components/traits/FormControlTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '~icons/svg-spinners/3-dots-fade'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\nclass AsyncOptionsInfo extends Error {}\n\nexport type ComboboxOptionData = {\n value: unknown;\n label: string;\n template?: TemplateResult;\n selectable?: boolean;\n}\n\nexport type ComboboxChangeEvent = CustomEvent<{ option: ComboboxOptionData }>\n\nexport type AsyncComboboxOptionsProvider = (query: string) => Promise<ComboboxOptionData[]>\n\nexport function defineAsyncComboboxOptionsProvider<T extends AsyncComboboxOptionsProvider> (provider: T): T {\n return provider\n}\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property()\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @property({ type: Boolean, reflect: true, attribute: 'select-only' })\n accessor selectOnly = false\n\n @property({ type: String, attribute: 'async-options-url' })\n accessor asyncOptionsUrl = ''\n\n @property({ type: String, attribute: 'async-options-results-field' })\n accessor asyncOptionsResultsField = ''\n\n @property({ type: String, attribute: 'async-options-label-field' })\n accessor asyncOptionsLabelField = ''\n\n @property({ type: String, attribute: 'async-options-value-field' })\n accessor asyncOptionsValueField = ''\n\n @property({ type: Function })\n accessor asyncOptionsProvider: AsyncComboboxOptionsProvider | null = null\n\n @property({ type: Array })\n accessor optionsFallback: ComboboxOptionData[] | null = null\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor displayValue = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private controlTrait: FormControlTrait\n private openListenersAttached = false\n private updateDebouncedFilter = debounce(300, (value) => (this.filter = value))\n private asyncOptionsTask?: Task<readonly [string], ComboboxOptionData[]>\n private _selectedOption: ComboboxOptionData | undefined\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.controlTrait = this.addTrait(\n new FormControlTrait(this, {\n getControlElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n })\n )\n\n this.listboxId = `listbox-${this.controlTrait.controlId}`\n }\n\n get selectedOption (): ComboboxOptionData | undefined {\n return this._selectedOption\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('asyncOptionsUrl') || changedProperties.has('asyncOptionsProvider')) {\n this.updateAsyncOptionsTask()\n }\n\n if (changedProperties.has('value')) {\n const options = this.getFilteredOptions()\n const option = options.find((option) => option.selectable !== false && option.value === this.value) ??\n this.optionsFallback?.find((option) => option.value === this.value)\n const optionLabel = option?.selectable !== false && option?.label\n\n this.updateDisplayValue(optionLabel || this.value)\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n\n if (this._selectedOption && this._selectedOption.value !== this.value) {\n this._selectedOption = undefined\n }\n }\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.controlTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.controlTrait.controlId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.displayValue}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.selectOnly ? this.updateDisplayValue(this.inputElement?.value ?? '') : this.controlTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map((option, index) => {\n return option.selectable !== false\n ? html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${option.value === this.value ? 'true' : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.template ?? option.label}\n </div>`\n : html`<div class=\"non-selectable-option\">${option.template ?? option.label}</div>`\n })}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n if (this.asyncOptionsTask) {\n return this.asyncOptionsTask.render({\n initial: () => this.optionsFallback ?? [],\n complete: (options) => options,\n pending: () => [\n {\n value: '',\n label: 'Loading...',\n template: html`<icon-svg-spinners-3-dots-fade></icon-svg-spinners-3-dots-fade>`,\n selectable: false\n } as const,\n ],\n error: (error) => {\n const isError = !(error instanceof AsyncOptionsInfo)\n const message = Object(error).message ?? 'Something went wrong'\n\n return [\n {\n value: '',\n label: message,\n template: html`<span class=\"message message--${isError ? 'error' : 'info'}\">${message}</span>`,\n selectable: false\n } as const,\n ]\n },\n })\n }\n\n return this.getOptionsFromDOM().filter((option) =>\n String(option.label).toLowerCase().includes(this.filter)\n )\n }\n\n private getOptionsFromDOM (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private updateDisplayValue (value: unknown) {\n this.displayValue = String(value)\n\n if (this.open) {\n const filter = this.displayValue.toLowerCase()\n\n if (this.asyncOptionsTask) {\n this.updateDebouncedFilter(filter)\n } else {\n this.filter = filter\n }\n }\n }\n\n private updateAsyncOptionsTask () {\n if (!this.asyncOptionsUrl && !this.asyncOptionsProvider) {\n this.asyncOptionsTask = undefined\n\n return\n }\n\n this.asyncOptionsTask ??= new Task(\n this,\n async ([filter]) => {\n if (this.asyncOptionsProvider) {\n const results = await this.asyncOptionsProvider(filter)\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n return results\n }\n\n const response = await fetch(\n this.asyncOptionsUrl.replace('%search%', encodeURIComponent(filter))\n )\n const data = await response.json()\n const results = Array.from(\n this.asyncOptionsResultsField\n ? data[this.asyncOptionsResultsField]\n : data\n )\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n const labelField = this.asyncOptionsLabelField || 'label'\n const valueField = this.asyncOptionsValueField || 'value'\n\n return results.map((result) => ({\n label: String(Object(result)[labelField]),\n value: Object(result)[valueField],\n }))\n },\n () => [this.filter]\n )\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n this.updateDebouncedFilter.cancel()\n }\n\n private selectOption (option: ComboboxOptionData) {\n const previousValue = this.value\n\n this._selectedOption = option\n\n this.hide()\n this.controlTrait.setValue(option.value)\n this.inputElement?.focus({ preventScroll: true })\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n\n if (previousValue === this.value) {\n this.updateDisplayValue(option.label)\n }\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n if (event.target === this.inputElement) {\n return\n }\n\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex])\n } else if (!this.open) {\n event.preventDefault()\n this.controlTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n default:\n if (!this.open) {\n this.show()\n }\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option)\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.ts"],"names":[],"mappings":"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"}
@@ -393,7 +393,7 @@ new (ye = (p = /*#__PURE__*/ new WeakMap(), m = /*#__PURE__*/ new WeakMap(), h =
393
393
  ${e.map((e, t) => e.selectable === !1 ? a`<div class="non-selectable-option">${e.template ?? e.label}</div>` : a`<div
394
394
  id=${this.getOptionId(t)}
395
395
  role="option"
396
- aria-selected=${this.open && t === this.activeIndex ? "true" : "false"}
396
+ aria-selected=${e.value === this.value ? "true" : "false"}
397
397
  data-active=${t === this.activeIndex || o}
398
398
  @mousemove=${() => this.setActiveIndex(t)}
399
399
  >
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.esm.js","names":["customElement","WebComponent","Task","html","nothing","property","query","state","debounce","FormControlTrait","styles","AsyncOptionsInfo","Error","defineAsyncComboboxOptionsProvider","provider","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_selectOnlyDecs","attribute","_asyncOptionsUrlDecs","_asyncOptionsResultsFieldDecs","_asyncOptionsLabelFieldDecs","_asyncOptionsValueFieldDecs","_asyncOptionsProviderDecs","Function","_optionsFallbackDecs","Array","_inputElementDecs","_filterDecs","_displayValueDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","selectOnly","asyncOptionsUrl","asyncOptionsResultsField","asyncOptionsLabelField","asyncOptionsValueField","asyncOptionsProvider","optionsFallback","inputElement","filter","displayValue","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_selectOnly","_init_asyncOptionsUrl","_init_asyncOptionsResultsField","_init_asyncOptionsLabelField","_init_asyncOptionsValueField","_init_asyncOptionsProvider","_init_optionsFallback","_init_inputElement","_init_filter","_init_displayValue","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","controlTrait","addTrait","getControlElement","getInternals","listboxId","controlId","selectedOption","_selectedOption","disconnectedCallback","removeOpenListeners","willUpdate","changedProperties","has","updateAsyncOptionsTask","options","getFilteredOptions","option","find","selectable","optionLabel","updateDisplayValue","getInitialActiveIndex","undefined","render","activeOption","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","index","setActiveIndex","template","asyncOptionsTask","initial","complete","pending","error","isError","message","Object","getOptionsFromDOM","toLowerCase","querySelectorAll","from","textContent","selectedIndex","findIndex","length","getNextIndex","currentIndex","direction","updateDebouncedFilter","results","response","fetch","replace","encodeURIComponent","data","json","labelField","valueField","result","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","cancel","selectOption","previousValue","setValue","focus","preventScroll","dispatchEvent","CustomEvent","bubbles","composed","detail","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","target","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { Task } from '@lit/task'\nimport { html, nothing, TemplateResult, type PropertyValues } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { debounce } from '@/lib/timing'\nimport FormControlTrait from '@/lib/components/traits/FormControlTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '~icons/svg-spinners/3-dots-fade'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\nclass AsyncOptionsInfo extends Error {}\n\nexport type ComboboxOptionData = {\n value: unknown;\n label: string;\n template?: TemplateResult;\n selectable?: boolean;\n}\n\nexport type ComboboxChangeEvent = CustomEvent<{ option: ComboboxOptionData }>\n\nexport type AsyncComboboxOptionsProvider = (query: string) => Promise<ComboboxOptionData[]>\n\nexport function defineAsyncComboboxOptionsProvider<T extends AsyncComboboxOptionsProvider> (provider: T): T {\n return provider\n}\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property()\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @property({ type: Boolean, reflect: true, attribute: 'select-only' })\n accessor selectOnly = false\n\n @property({ type: String, attribute: 'async-options-url' })\n accessor asyncOptionsUrl = ''\n\n @property({ type: String, attribute: 'async-options-results-field' })\n accessor asyncOptionsResultsField = ''\n\n @property({ type: String, attribute: 'async-options-label-field' })\n accessor asyncOptionsLabelField = ''\n\n @property({ type: String, attribute: 'async-options-value-field' })\n accessor asyncOptionsValueField = ''\n\n @property({ type: Function })\n accessor asyncOptionsProvider: AsyncComboboxOptionsProvider | null = null\n\n @property({ type: Array })\n accessor optionsFallback: ComboboxOptionData[] | null = null\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor displayValue = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private controlTrait: FormControlTrait\n private openListenersAttached = false\n private updateDebouncedFilter = debounce(300, (value) => (this.filter = value))\n private asyncOptionsTask?: Task<readonly [string], ComboboxOptionData[]>\n private _selectedOption: ComboboxOptionData | undefined\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.controlTrait = this.addTrait(\n new FormControlTrait(this, {\n getControlElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n })\n )\n\n this.listboxId = `listbox-${this.controlTrait.controlId}`\n }\n\n get selectedOption (): ComboboxOptionData | undefined {\n return this._selectedOption\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('asyncOptionsUrl') || changedProperties.has('asyncOptionsProvider')) {\n this.updateAsyncOptionsTask()\n }\n\n if (changedProperties.has('value')) {\n const options = this.getFilteredOptions()\n const option = options.find((option) => option.selectable !== false && option.value === this.value) ??\n this.optionsFallback?.find((option) => option.value === this.value)\n const optionLabel = option?.selectable !== false && option?.label\n\n this.updateDisplayValue(optionLabel || this.value)\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n\n if (this._selectedOption && this._selectedOption.value !== this.value) {\n this._selectedOption = undefined\n }\n }\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.controlTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.controlTrait.controlId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.displayValue}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.selectOnly ? this.updateDisplayValue(this.inputElement?.value ?? '') : this.controlTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map((option, index) => {\n return option.selectable !== false\n ? html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.template ?? option.label}\n </div>`\n : html`<div class=\"non-selectable-option\">${option.template ?? option.label}</div>`\n })}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n if (this.asyncOptionsTask) {\n return this.asyncOptionsTask.render({\n initial: () => this.optionsFallback ?? [],\n complete: (options) => options,\n pending: () => [\n {\n value: '',\n label: 'Loading...',\n template: html`<icon-svg-spinners-3-dots-fade></icon-svg-spinners-3-dots-fade>`,\n selectable: false\n } as const,\n ],\n error: (error) => {\n const isError = !(error instanceof AsyncOptionsInfo)\n const message = Object(error).message ?? 'Something went wrong'\n\n return [\n {\n value: '',\n label: message,\n template: html`<span class=\"message message--${isError ? 'error' : 'info'}\">${message}</span>`,\n selectable: false\n } as const,\n ]\n },\n })\n }\n\n return this.getOptionsFromDOM().filter((option) =>\n String(option.label).toLowerCase().includes(this.filter)\n )\n }\n\n private getOptionsFromDOM (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private updateDisplayValue (value: unknown) {\n this.displayValue = String(value)\n\n if (this.open) {\n const filter = this.displayValue.toLowerCase()\n\n if (this.asyncOptionsTask) {\n this.updateDebouncedFilter(filter)\n } else {\n this.filter = filter\n }\n }\n }\n\n private updateAsyncOptionsTask () {\n if (!this.asyncOptionsUrl && !this.asyncOptionsProvider) {\n this.asyncOptionsTask = undefined\n\n return\n }\n\n this.asyncOptionsTask ??= new Task(\n this,\n async ([filter]) => {\n if (this.asyncOptionsProvider) {\n const results = await this.asyncOptionsProvider(filter)\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n return results\n }\n\n const response = await fetch(\n this.asyncOptionsUrl.replace('%search%', encodeURIComponent(filter))\n )\n const data = await response.json()\n const results = Array.from(\n this.asyncOptionsResultsField\n ? data[this.asyncOptionsResultsField]\n : data\n )\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n const labelField = this.asyncOptionsLabelField || 'label'\n const valueField = this.asyncOptionsValueField || 'value'\n\n return results.map((result) => ({\n label: String(Object(result)[labelField]),\n value: Object(result)[valueField],\n }))\n },\n () => [this.filter]\n )\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n this.updateDebouncedFilter.cancel()\n }\n\n private selectOption (option: ComboboxOptionData) {\n const previousValue = this.value\n\n this._selectedOption = option\n\n this.hide()\n this.controlTrait.setValue(option.value)\n this.inputElement?.focus({ preventScroll: true })\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n\n if (previousValue === this.value) {\n this.updateDisplayValue(option.label)\n }\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n if (event.target === this.inputElement) {\n return\n }\n\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex])\n } else if (!this.open) {\n event.preventDefault()\n this.controlTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n default:\n if (!this.open) {\n this.show()\n }\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.esm.js","names":["customElement","WebComponent","Task","html","nothing","property","query","state","debounce","FormControlTrait","styles","AsyncOptionsInfo","Error","defineAsyncComboboxOptionsProvider","provider","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_selectOnlyDecs","attribute","_asyncOptionsUrlDecs","_asyncOptionsResultsFieldDecs","_asyncOptionsLabelFieldDecs","_asyncOptionsValueFieldDecs","_asyncOptionsProviderDecs","Function","_optionsFallbackDecs","Array","_inputElementDecs","_filterDecs","_displayValueDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","selectOnly","asyncOptionsUrl","asyncOptionsResultsField","asyncOptionsLabelField","asyncOptionsValueField","asyncOptionsProvider","optionsFallback","inputElement","filter","displayValue","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_selectOnly","_init_asyncOptionsUrl","_init_asyncOptionsResultsField","_init_asyncOptionsLabelField","_init_asyncOptionsValueField","_init_asyncOptionsProvider","_init_optionsFallback","_init_inputElement","_init_filter","_init_displayValue","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","controlTrait","addTrait","getControlElement","getInternals","listboxId","controlId","selectedOption","_selectedOption","disconnectedCallback","removeOpenListeners","willUpdate","changedProperties","has","updateAsyncOptionsTask","options","getFilteredOptions","option","find","selectable","optionLabel","updateDisplayValue","getInitialActiveIndex","undefined","render","activeOption","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","index","setActiveIndex","template","asyncOptionsTask","initial","complete","pending","error","isError","message","Object","getOptionsFromDOM","toLowerCase","querySelectorAll","from","textContent","selectedIndex","findIndex","length","getNextIndex","currentIndex","direction","updateDebouncedFilter","results","response","fetch","replace","encodeURIComponent","data","json","labelField","valueField","result","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","cancel","selectOption","previousValue","setValue","focus","preventScroll","dispatchEvent","CustomEvent","bubbles","composed","detail","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","target","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { Task } from '@lit/task'\nimport { html, nothing, TemplateResult, type PropertyValues } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { debounce } from '@/lib/timing'\nimport FormControlTrait from '@/lib/components/traits/FormControlTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '~icons/svg-spinners/3-dots-fade'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\nclass AsyncOptionsInfo extends Error {}\n\nexport type ComboboxOptionData = {\n value: unknown;\n label: string;\n template?: TemplateResult;\n selectable?: boolean;\n}\n\nexport type ComboboxChangeEvent = CustomEvent<{ option: ComboboxOptionData }>\n\nexport type AsyncComboboxOptionsProvider = (query: string) => Promise<ComboboxOptionData[]>\n\nexport function defineAsyncComboboxOptionsProvider<T extends AsyncComboboxOptionsProvider> (provider: T): T {\n return provider\n}\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property()\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @property({ type: Boolean, reflect: true, attribute: 'select-only' })\n accessor selectOnly = false\n\n @property({ type: String, attribute: 'async-options-url' })\n accessor asyncOptionsUrl = ''\n\n @property({ type: String, attribute: 'async-options-results-field' })\n accessor asyncOptionsResultsField = ''\n\n @property({ type: String, attribute: 'async-options-label-field' })\n accessor asyncOptionsLabelField = ''\n\n @property({ type: String, attribute: 'async-options-value-field' })\n accessor asyncOptionsValueField = ''\n\n @property({ type: Function })\n accessor asyncOptionsProvider: AsyncComboboxOptionsProvider | null = null\n\n @property({ type: Array })\n accessor optionsFallback: ComboboxOptionData[] | null = null\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor displayValue = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private controlTrait: FormControlTrait\n private openListenersAttached = false\n private updateDebouncedFilter = debounce(300, (value) => (this.filter = value))\n private asyncOptionsTask?: Task<readonly [string], ComboboxOptionData[]>\n private _selectedOption: ComboboxOptionData | undefined\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.controlTrait = this.addTrait(\n new FormControlTrait(this, {\n getControlElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n })\n )\n\n this.listboxId = `listbox-${this.controlTrait.controlId}`\n }\n\n get selectedOption (): ComboboxOptionData | undefined {\n return this._selectedOption\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('asyncOptionsUrl') || changedProperties.has('asyncOptionsProvider')) {\n this.updateAsyncOptionsTask()\n }\n\n if (changedProperties.has('value')) {\n const options = this.getFilteredOptions()\n const option = options.find((option) => option.selectable !== false && option.value === this.value) ??\n this.optionsFallback?.find((option) => option.value === this.value)\n const optionLabel = option?.selectable !== false && option?.label\n\n this.updateDisplayValue(optionLabel || this.value)\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n\n if (this._selectedOption && this._selectedOption.value !== this.value) {\n this._selectedOption = undefined\n }\n }\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.controlTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.controlTrait.controlId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.displayValue}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.selectOnly ? this.updateDisplayValue(this.inputElement?.value ?? '') : this.controlTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.controlTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map((option, index) => {\n return option.selectable !== false\n ? html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${option.value === this.value ? 'true' : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.template ?? option.label}\n </div>`\n : html`<div class=\"non-selectable-option\">${option.template ?? option.label}</div>`\n })}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n if (this.asyncOptionsTask) {\n return this.asyncOptionsTask.render({\n initial: () => this.optionsFallback ?? [],\n complete: (options) => options,\n pending: () => [\n {\n value: '',\n label: 'Loading...',\n template: html`<icon-svg-spinners-3-dots-fade></icon-svg-spinners-3-dots-fade>`,\n selectable: false\n } as const,\n ],\n error: (error) => {\n const isError = !(error instanceof AsyncOptionsInfo)\n const message = Object(error).message ?? 'Something went wrong'\n\n return [\n {\n value: '',\n label: message,\n template: html`<span class=\"message message--${isError ? 'error' : 'info'}\">${message}</span>`,\n selectable: false\n } as const,\n ]\n },\n })\n }\n\n return this.getOptionsFromDOM().filter((option) =>\n String(option.label).toLowerCase().includes(this.filter)\n )\n }\n\n private getOptionsFromDOM (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private updateDisplayValue (value: unknown) {\n this.displayValue = String(value)\n\n if (this.open) {\n const filter = this.displayValue.toLowerCase()\n\n if (this.asyncOptionsTask) {\n this.updateDebouncedFilter(filter)\n } else {\n this.filter = filter\n }\n }\n }\n\n private updateAsyncOptionsTask () {\n if (!this.asyncOptionsUrl && !this.asyncOptionsProvider) {\n this.asyncOptionsTask = undefined\n\n return\n }\n\n this.asyncOptionsTask ??= new Task(\n this,\n async ([filter]) => {\n if (this.asyncOptionsProvider) {\n const results = await this.asyncOptionsProvider(filter)\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n return results\n }\n\n const response = await fetch(\n this.asyncOptionsUrl.replace('%search%', encodeURIComponent(filter))\n )\n const data = await response.json()\n const results = Array.from(\n this.asyncOptionsResultsField\n ? data[this.asyncOptionsResultsField]\n : data\n )\n\n if (results.length === 0) {\n throw new AsyncOptionsInfo('No results found')\n }\n\n const labelField = this.asyncOptionsLabelField || 'label'\n const valueField = this.asyncOptionsValueField || 'value'\n\n return results.map((result) => ({\n label: String(Object(result)[labelField]),\n value: Object(result)[valueField],\n }))\n },\n () => [this.filter]\n )\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n this.updateDebouncedFilter.cancel()\n }\n\n private selectOption (option: ComboboxOptionData) {\n const previousValue = this.value\n\n this._selectedOption = option\n\n this.hide()\n this.controlTrait.setValue(option.value)\n this.inputElement?.focus({ preventScroll: true })\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n\n if (previousValue === this.value) {\n this.updateDisplayValue(option.label)\n }\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n if (event.target === this.inputElement) {\n return\n }\n\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex])\n } else if (!this.open) {\n event.preventDefault()\n this.controlTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n default:\n if (!this.open) {\n this.show()\n }\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option)\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=require("lit").css`:host{flex-direction:column;align-items:flex-start;gap:5px;display:inline-flex}:host label{color:var(--solid-ui-color-gray-600);font-size:var(--solid-ui-font-size-sm);font-weight:400}:host wa-popup{width:100%;display:block}:host wa-popup::part(popup){border:1px solid var(--solid-ui-color-gray-100);background:#fff;border-radius:5px;overflow:hidden;box-shadow:0 4px 16px #00000059}:host .input-wrapper{width:100%;position:relative}:host .input-wrapper input{border:1px solid var(--solid-ui-color-gray-400);border-radius:5px;width:100%;padding:10px 40px 10px 10px}:host .input-wrapper icon-lucide-chevron-down{color:var(--solid-ui-color-gray-500);width:var(--solid-ui-font-size-lg);height:var(--solid-ui-font-size-lg);pointer-events:none;position:absolute;top:50%;right:15px;transform:translateY(-50%)}:host .listbox{max-height:inherit;flex-direction:column;display:flex;overflow:auto}:host .listbox [role=option],:host .listbox .non-selectable-option{color:var(--solid-ui-color-gray-700);padding:12px 8px}:host .listbox [role=option]{border-bottom:1px solid var(--solid-ui-color-gray-100);cursor:pointer}:host .listbox [role=option]:hover,:host .listbox [role=option][data-active]{background:#0000000d}:host .listbox .non-selectable-option{justify-content:center;align-items:center;display:flex}:host .listbox .non-selectable-option icon-svg-spinners-3-dots-fade{width:2rem}:host .listbox .non-selectable-option .message--error{color:var(--solid-ui-color-error)}`;exports.default=e;
1
+ var e=require("lit").css`:host{flex-direction:column;align-items:flex-start;gap:5px;display:inline-flex}:host label{color:var(--solid-ui-color-gray-600);font-size:var(--solid-ui-font-size-sm);font-weight:400}:host wa-popup{width:100%;display:block}:host wa-popup::part(popup){border:1px solid var(--solid-ui-color-gray-100);background:#fff;border-radius:5px;padding:4px;overflow:hidden;box-shadow:0 4px 16px #00000059}:host .input-wrapper{width:100%;position:relative}:host .input-wrapper input{border:1px solid var(--solid-ui-color-gray-400);border-radius:5px;width:100%;padding:10px 40px 10px 10px}:host .input-wrapper icon-lucide-chevron-down{color:var(--solid-ui-color-gray-500);width:var(--solid-ui-font-size-lg);height:var(--solid-ui-font-size-lg);pointer-events:none;position:absolute;top:50%;right:15px;transform:translateY(-50%)}:host .listbox{max-height:inherit;flex-direction:column;gap:2px;display:flex;overflow:auto}:host .listbox [role=option],:host .listbox .non-selectable-option{color:var(--solid-ui-color-gray-700);border-radius:5px;padding:12px 8px}:host .listbox [role=option]{cursor:pointer}:host .listbox [role=option]:hover,:host .listbox [role=option][data-active]{background:var(--solid-ui-color-primary-hover)}:host .listbox [role=option][aria-selected=true]{background:var(--solid-ui-color-primary-selected)}:host .listbox .non-selectable-option{justify-content:center;align-items:center;display:flex}:host .listbox .non-selectable-option icon-svg-spinners-3-dots-fade{width:2rem}:host .listbox .non-selectable-option .message--error{color:var(--solid-ui-color-error)}`;exports.default=e;
2
2
  //# sourceMappingURL=Combobox.styles.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.styles.cjs.js","names":[],"sources":["../../../src/components/combobox/Combobox.styles.css"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n wa-popup {\n display: block;\n width: 100%;\n }\n\n wa-popup::part(popup) {\n background: white;\n border: 1px solid var(--solid-ui-color-gray-100);\n border-radius: 5px;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n\n .listbox {\n display: flex;\n flex-direction: column;\n max-height: inherit;\n overflow: auto;\n\n [role=\"option\"], .non-selectable-option {\n color: var(--solid-ui-color-gray-700);\n padding: 12px 8px;\n }\n\n [role=\"option\"] {\n border-bottom: 1px solid var(--solid-ui-color-gray-100);\n cursor: pointer;\n\n &:hover,\n &[data-active] {\n background: rgba(0, 0, 0, 0.05);\n }\n }\n\n .non-selectable-option {\n display: flex;\n justify-content: center;\n align-items: center;\n\n icon-svg-spinners-3-dots-fade {\n width: 2rem;\n }\n\n .message--error {\n color: var(--solid-ui-color-error);\n }\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Combobox.styles.cjs.js","names":[],"sources":["../../../src/components/combobox/Combobox.styles.css"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n wa-popup {\n display: block;\n width: 100%;\n }\n\n wa-popup::part(popup) {\n background: white;\n border: 1px solid var(--solid-ui-color-gray-100);\n border-radius: 5px;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n padding: 4px;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n\n .listbox {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: inherit;\n overflow: auto;\n\n [role=\"option\"], .non-selectable-option {\n color: var(--solid-ui-color-gray-700);\n padding: 12px 8px;\n border-radius: 5px;\n }\n\n [role=\"option\"] {\n cursor: pointer;\n\n &:hover,\n &[data-active] {\n background: var(--solid-ui-color-primary-hover);\n }\n\n &[aria-selected=\"true\"] {\n background: var(--solid-ui-color-primary-selected);\n }\n }\n\n .non-selectable-option {\n display: flex;\n justify-content: center;\n align-items: center;\n\n icon-svg-spinners-3-dots-fade {\n width: 2rem;\n }\n\n .message--error {\n color: var(--solid-ui-color-error);\n }\n }\n }\n}\n"],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import { css as e } from "lit";
2
2
  //#region src/components/combobox/Combobox.styles.css
3
- var t = e`:host{flex-direction:column;align-items:flex-start;gap:5px;display:inline-flex}:host label{color:var(--solid-ui-color-gray-600);font-size:var(--solid-ui-font-size-sm);font-weight:400}:host wa-popup{width:100%;display:block}:host wa-popup::part(popup){border:1px solid var(--solid-ui-color-gray-100);background:#fff;border-radius:5px;overflow:hidden;box-shadow:0 4px 16px #00000059}:host .input-wrapper{width:100%;position:relative}:host .input-wrapper input{border:1px solid var(--solid-ui-color-gray-400);border-radius:5px;width:100%;padding:10px 40px 10px 10px}:host .input-wrapper icon-lucide-chevron-down{color:var(--solid-ui-color-gray-500);width:var(--solid-ui-font-size-lg);height:var(--solid-ui-font-size-lg);pointer-events:none;position:absolute;top:50%;right:15px;transform:translateY(-50%)}:host .listbox{max-height:inherit;flex-direction:column;display:flex;overflow:auto}:host .listbox [role=option],:host .listbox .non-selectable-option{color:var(--solid-ui-color-gray-700);padding:12px 8px}:host .listbox [role=option]{border-bottom:1px solid var(--solid-ui-color-gray-100);cursor:pointer}:host .listbox [role=option]:hover,:host .listbox [role=option][data-active]{background:#0000000d}:host .listbox .non-selectable-option{justify-content:center;align-items:center;display:flex}:host .listbox .non-selectable-option icon-svg-spinners-3-dots-fade{width:2rem}:host .listbox .non-selectable-option .message--error{color:var(--solid-ui-color-error)}`;
3
+ var t = e`:host{flex-direction:column;align-items:flex-start;gap:5px;display:inline-flex}:host label{color:var(--solid-ui-color-gray-600);font-size:var(--solid-ui-font-size-sm);font-weight:400}:host wa-popup{width:100%;display:block}:host wa-popup::part(popup){border:1px solid var(--solid-ui-color-gray-100);background:#fff;border-radius:5px;padding:4px;overflow:hidden;box-shadow:0 4px 16px #00000059}:host .input-wrapper{width:100%;position:relative}:host .input-wrapper input{border:1px solid var(--solid-ui-color-gray-400);border-radius:5px;width:100%;padding:10px 40px 10px 10px}:host .input-wrapper icon-lucide-chevron-down{color:var(--solid-ui-color-gray-500);width:var(--solid-ui-font-size-lg);height:var(--solid-ui-font-size-lg);pointer-events:none;position:absolute;top:50%;right:15px;transform:translateY(-50%)}:host .listbox{max-height:inherit;flex-direction:column;gap:2px;display:flex;overflow:auto}:host .listbox [role=option],:host .listbox .non-selectable-option{color:var(--solid-ui-color-gray-700);border-radius:5px;padding:12px 8px}:host .listbox [role=option]{cursor:pointer}:host .listbox [role=option]:hover,:host .listbox [role=option][data-active]{background:var(--solid-ui-color-primary-hover)}:host .listbox [role=option][aria-selected=true]{background:var(--solid-ui-color-primary-selected)}:host .listbox .non-selectable-option{justify-content:center;align-items:center;display:flex}:host .listbox .non-selectable-option icon-svg-spinners-3-dots-fade{width:2rem}:host .listbox .non-selectable-option .message--error{color:var(--solid-ui-color-error)}`;
4
4
  //#endregion
5
5
  export { t as default };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.styles.esm.js","names":[],"sources":["../../../src/components/combobox/Combobox.styles.css"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n wa-popup {\n display: block;\n width: 100%;\n }\n\n wa-popup::part(popup) {\n background: white;\n border: 1px solid var(--solid-ui-color-gray-100);\n border-radius: 5px;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n\n .listbox {\n display: flex;\n flex-direction: column;\n max-height: inherit;\n overflow: auto;\n\n [role=\"option\"], .non-selectable-option {\n color: var(--solid-ui-color-gray-700);\n padding: 12px 8px;\n }\n\n [role=\"option\"] {\n border-bottom: 1px solid var(--solid-ui-color-gray-100);\n cursor: pointer;\n\n &:hover,\n &[data-active] {\n background: rgba(0, 0, 0, 0.05);\n }\n }\n\n .non-selectable-option {\n display: flex;\n justify-content: center;\n align-items: center;\n\n icon-svg-spinners-3-dots-fade {\n width: 2rem;\n }\n\n .message--error {\n color: var(--solid-ui-color-error);\n }\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Combobox.styles.esm.js","names":[],"sources":["../../../src/components/combobox/Combobox.styles.css"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n wa-popup {\n display: block;\n width: 100%;\n }\n\n wa-popup::part(popup) {\n background: white;\n border: 1px solid var(--solid-ui-color-gray-100);\n border-radius: 5px;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n padding: 4px;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n\n .listbox {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: inherit;\n overflow: auto;\n\n [role=\"option\"], .non-selectable-option {\n color: var(--solid-ui-color-gray-700);\n padding: 12px 8px;\n border-radius: 5px;\n }\n\n [role=\"option\"] {\n cursor: pointer;\n\n &:hover,\n &[data-active] {\n background: var(--solid-ui-color-primary-hover);\n }\n\n &[aria-selected=\"true\"] {\n background: var(--solid-ui-color-primary-selected);\n }\n }\n\n .non-selectable-option {\n display: flex;\n justify-content: center;\n align-items: center;\n\n icon-svg-spinners-3-dots-fade {\n width: 2rem;\n }\n\n .message--error {\n color: var(--solid-ui-color-error);\n }\n }\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../chunks/combobox-Dav1bNHS.js";
1
+ import { n as e, r as t, t as n } from "../chunks/combobox-DrT0Nb-A.js";
2
2
  export { e as Combobox, n as default, t as defineAsyncComboboxOptionsProvider };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../chunks/dialog-Ujvm11_B.js";
1
+ import { n as e, t } from "../chunks/dialog-kyHgc-uy.js";
2
2
  export { e as Dialog, t as default };
@@ -1,6 +1,8 @@
1
- const e=require("../../lib/auth/context.cjs.js"),t=require("../../lib/components/decorators.cjs.js"),n=require("../../lib/components/web-component/WebComponent.cjs.js");require("../../lib/components/index.cjs.js"),require("../../lib/auth/index.cjs.js");let r=require("@lit/context"),i=require("lit");var a,o,s,c,l,u,d;function f(e,t,n){p(e,t),t.set(e,n)}function p(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function m(e,t,n){return e.set(g(e,t),n),n}function h(e,t){return e.get(g(e,t))}function g(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function _(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],v=t[3],y=!l;if(!y){n||Array.isArray(_)||(_=[_]);var x={},S=[],C=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?x={get:b(function(){return v(this)},r,`get`),set:function(e){t[4](this,e)}}:x[C]=v,f||b(x[C],r,i===2?``:C)):f||(x=Object.getOwnPropertyDescriptor(e,r))}for(var w=e,T=_.length-1;T>=0;T-=n?2:1){var E=_[T],D=n?_[T-1]:void 0,O={},k={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,O)};try{if(y)(g=c(E.call(D,w,k),`class decorators`,`return`))&&(w=g);else{var A,j;k.static=u,k.private=d,d?i===2?A=function(e){return h(e),x.value}:(i<4&&(A=o(x,`get`,h)),i!==3&&(j=o(x,`set`,h))):(A=function(e){return e[r]},(i<2||i===4)&&(j=function(e,t){e[r]=t}));var M=k.access={has:d?m.bind():function(e){return r in e}};if(A&&(M.get=A),j&&(M.set=j),w=E.call(D,p?{get:x.get,set:x.set}:x[C],k),p){if(typeof w==`object`&&w)(g=c(w.get,`accessor.get`))&&(x.get=g),(g=c(w.set,`accessor.set`))&&(x.set=g),(g=c(w.init,`accessor.init`))&&S.push(g);else if(w!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(w,(f?`field`:`method`)+` decorators`,`return`)&&(f?S.push(w):x[C]=w)}}finally{O.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=S.length-1;n>=0;n--)t=S[n].call(e,t);return t}),f||y||(d?p?l.push(o(x,`get`),o(x,`set`)):l.push(i===2?x[C]:o.call.bind(x[C])):Object.defineProperty(e,r,x)),w}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return x(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],g=p.length>3,_=16&m,y=!!(8&m),b=(m&=7)==0,S=h+`/`+y;if(!b&&!g){var C=u.get(S);if(!0===C||C===3&&m!==4||C===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(S,!(m>2)||m)}l(y?e:e.prototype,p,_,g?`#`+h:v(h),m,r,y?a||=[]:i||=[],o,y,g,b,m===1,y&&g?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function v(e){var t=y(e,`string`);return typeof t==`symbol`?t:t+``}function y(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function x(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}c=[t.customElement(`solid-guard`)];var S,C=new WeakMap;d=(l=(0,r.consume)({context:e.authContext,subscribe:!0}),`auth`),a=class extends n.default{constructor(...t){super(...t),f(this,C,(o(this),u(this,e.DEFAULT_AUTH_CONTEXT)))}get[d](){return h(C,this)}set auth(e){m(C,this,e)}render(){return this.auth.account?i.html`
1
+ const e=require("../../lib/auth/context.cjs.js"),t=require("../../lib/components/decorators.cjs.js"),n=require("../../lib/components/web-component/WebComponent.cjs.js");require("../../lib/components/index.cjs.js"),require("../../lib/auth/index.cjs.js");let r=require("@lit/context"),i=require("lit");var a,o,s,c,l,u,d,f,p,m;function h(e,t,n){g(e,t),t.set(e,n)}function g(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function _(e,t,n){return e.set(y(e,t),n),n}function v(e,t){return e.get(y(e,t))}function y(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function b(e,t,n){return(t=S(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],v=t[3],y=!l;if(!y){n||Array.isArray(_)||(_=[_]);var b={},x=[],S=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?b={get:w(function(){return v(this)},r,`get`),set:function(e){t[4](this,e)}}:b[S]=v,f||w(b[S],r,i===2?``:S)):f||(b=Object.getOwnPropertyDescriptor(e,r))}for(var C=e,T=_.length-1;T>=0;T-=n?2:1){var E=_[T],D=n?_[T-1]:void 0,O={},k={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,O)};try{if(y)(g=c(E.call(D,C,k),`class decorators`,`return`))&&(C=g);else{var A,j;k.static=u,k.private=d,d?i===2?A=function(e){return h(e),b.value}:(i<4&&(A=o(b,`get`,h)),i!==3&&(j=o(b,`set`,h))):(A=function(e){return e[r]},(i<2||i===4)&&(j=function(e,t){e[r]=t}));var M=k.access={has:d?m.bind():function(e){return r in e}};if(A&&(M.get=A),j&&(M.set=j),C=E.call(D,p?{get:b.get,set:b.set}:b[S],k),p){if(typeof C==`object`&&C)(g=c(C.get,`accessor.get`))&&(b.get=g),(g=c(C.set,`accessor.set`))&&(b.set=g),(g=c(C.init,`accessor.init`))&&x.push(g);else if(C!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(C,(f?`field`:`method`)+` decorators`,`return`)&&(f?x.push(C):b[S]=C)}}finally{O.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=x.length-1;n>=0;n--)t=x[n].call(e,t);return t}),f||y||(d?p?l.push(o(b,`get`),o(b,`set`)):l.push(i===2?b[S]:o.call.bind(b[S])):Object.defineProperty(e,r,b)),C}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return T(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],g=p.length>3,_=16&m,v=!!(8&m),y=(m&=7)==0,b=h+`/`+v;if(!y&&!g){var x=u.get(b);if(!0===x||x===3&&m!==4||x===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(b,!(m>2)||m)}l(v?e:e.prototype,p,_,g?`#`+h:S(h),m,r,v?a||=[]:i||=[],o,v,g,y,m===1,v&&g?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function S(e){var t=C(e,`string`);return typeof t==`symbol`?t:t+``}function C(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function w(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function T(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}function E(e){return e}u=[t.customElement(`solid-ui-guard`)];var D;new(p=(s=new WeakMap,m=(d=(0,r.consume)({context:e.authContext,subscribe:!0}),`auth`),o=class extends n.default{constructor(...t){super(...t),h(this,s,(c(this),f(this,e.DEFAULT_AUTH_CONTEXT))),b(this,`unsubscribeSessionUpdated`,void 0)}get[m](){return v(s,this)}set auth(e){_(s,this,e)}connectedCallback(){super.connectedCallback(),this.unsubscribeSessionUpdated=this.auth.onSessionUpdated(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.unsubscribeSessionUpdated?.()}render(){return this.auth.initialized?this.auth.account?i.html`
2
2
  <slot></slot>
3
3
  `:i.html`
4
4
  <slot name="guest"></slot>
5
- `}},{e:[u,o],c:[S,s]}=_(a,[[l,1,`auth`]],c,0,void 0,n.default),s(),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return S}});
5
+ `:i.html`
6
+ <slot name="initializing"></slot>
7
+ `}},{e:[f,c],c:[D,l]}=x(o,[[d,1,`auth`]],u,0,void 0,n.default),o),a=class extends E{constructor(){super(D),b(this,`states`,{initializing:e=>!e.auth.initialized,loggedIn:e=>!!e.auth.account}),l()}},b(a,p,void 0),a),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return D}});
6
8
  //# sourceMappingURL=Guard.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Guard.cjs.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_Guard","_A","WeakMap","_ref","_authDecs","context","subscribe","Guard","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","account","_Guard2","e","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/guard/Guard.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\n@customElement('solid-guard')\nexport default class Guard extends WebComponent {\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n if (!this.auth.account) {\n return html`\n <slot name=\"guest\"></slot>\n `\n }\n\n return html`\n <slot></slot>\n `\n }\n}\n"],"mappings":"8tIAG2EM,EAAA,CAE1EN,EAAAA,cAAc,aAAa,CAAC,EAAA,IAAAO,EAAAC,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAAAA,EAAAA,QAAAA,CAElB,CAAEC,QAASR,EAAAA,YAAaS,UAAW,EAAK,CAAC,EAAC,QAcpDa,EAAAZ,cAfkCb,EAAAA,OAAa,CAAAc,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAAT,GAAAU,EAAA,IAAA,EAAAC,EAAA,KAETd,EAAAA,oBAAoB,EAAA,CAAA,CAAA,IAAAK,IAAA,CAAA,OAAAU,EAAAZ,EAAA,IAAA,CAAA,CAAA,IAAxCa,KAAIC,EAAA,CAAAC,EAAAf,EAAA,KAAAc,CAAA,CAAA,CAEXE,QAAU,CAOlB,OANK,KAAKH,KAAKI,QAMRtB,EAAAA,IAAI;;MALFA,EAAAA,IAAI;;OAQf,CACF,EAAC,CAAAwB,EAAA,CAAAR,EAAAD,GAAAU,EAAA,CAAArB,EAAAsB,IAAAC,EAAAJ,EAAA,CAAA,CAAAf,EAAA,EAAA,MAAA,CAAA,EAAAL,EAAA,EAAA,IAAA,GAfkCL,EAAAA,OAAY,EAAA4B,EAAA"}
1
+ {"version":3,"file":"Guard.cjs.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_Guard","_Guard2","_A","WeakMap","_ref","_authDecs","context","subscribe","_Guard3","Guard","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_defineProperty","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","connectedCallback","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","initialized","account","e","c","_initClass","_applyDecs","_Class","_identity","initializing","component","loggedIn","default"],"sources":["../../../src/components/guard/Guard.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\n@customElement('solid-ui-guard')\nexport default class Guard extends WebComponent {\n static states = {\n initializing: (component: Guard) => !component.auth.initialized,\n loggedIn: (component: Guard) => !!component.auth.account,\n }\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => this.requestUpdate())\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\n\n protected render () {\n if (!this.auth.initialized) {\n return html`\n <slot name=\"initializing\"></slot>\n `\n }\n\n if (!this.auth.account) {\n return html`\n <slot name=\"guest\"></slot>\n `\n }\n\n return html`\n <slot></slot>\n `\n }\n}\n"],"mappings":"w3IAG2EM,EAAA,CAE1EN,EAAAA,cAAc,gBAAgB,CAAC,EAAA,IAAAO,EAAA,IAAAC,GAAAC,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAAAA,EAAAA,QAAAA,CAOrB,CAAEC,QAAST,EAAAA,YAAaU,UAAW,EAAK,CAAC,EAAC,QAAAC,EAPrD,cACmCd,EAAAA,OAAa,CAAAgB,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAAV,GAAAW,EAAA,IAAA,EAAAC,EAAA,KAOThB,EAAAA,oBAAoB,EAAA,EAAAiB,EAAA,KAAA,4BAAA,IAAA,EAAA,CAAA,CAAA,IAAAX,IAAA,CAAA,OAAAY,EAAAd,EAAA,IAAA,CAAA,CAAA,IAAxCe,KAAIC,EAAA,CAAAC,EAAAjB,EAAA,KAAAgB,CAAA,CAAA,CAIrBE,mBAAqB,CACnB,MAAMA,kBAAkB,EAExB,KAAKC,0BAA4B,KAAKJ,KAAKK,qBAAuB,KAAKC,cAAc,CAAC,CACxF,CAEAC,sBAAwB,CACtB,MAAMA,qBAAqB,EAE3B,KAAKH,4BAA4B,CACnC,CAEUI,QAAU,CAalB,OAZK,KAAKR,KAAKS,YAMV,KAAKT,KAAKU,QAMR/B,EAAAA,IAAI;;MALFA,EAAAA,IAAI;;QANJA,EAAAA,IAAI;;OAcf,CACF,EAAC,CAAAgC,EAAA,CAAAd,EAAAD,GAAAgB,EAAA,CAAA7B,EAAA8B,IAAAC,EAAAvB,EAAA,CAAA,CAAAH,EAAA,EAAA,MAAA,CAAA,EAAAN,EAAA,EAAA,IAAA,GAxCkCL,EAAAA,OAAY,EAAAc,GAAAwB,EAAA,cAAAC,CAAA,CAAAvB,aAAA,CAAA,MAAAV,CAAA,EAAAe,EAAA,KAAA,SAC7B,CACdmB,aAAeC,GAAqB,CAACA,EAAUlB,KAAKS,YACpDU,SAAWD,GAAqB,CAAC,CAACA,EAAUlB,KAAKU,OACnD,CAAC,EAAAG,EAAA,CAAA,CAAA,EAAAf,EAAAiB,EAAA/B,EAAA,IAAA,EAAA,EAAA+B"}
@@ -1,6 +1,13 @@
1
1
  import { WebComponent } from '../../lib/components';
2
2
  export default class Guard extends WebComponent {
3
+ static states: {
4
+ initializing: (component: Guard) => boolean;
5
+ loggedIn: (component: Guard) => boolean;
6
+ };
3
7
  private accessor auth;
8
+ private unsubscribeSessionUpdated?;
9
+ connectedCallback(): void;
10
+ disconnectedCallback(): void;
4
11
  protected render(): import('lit-html').TemplateResult<1>;
5
12
  }
6
13
  //# sourceMappingURL=Guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Guard.d.ts","sourceRoot":"","sources":["../../../src/components/guard/Guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM9D,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,YAAY;IAE7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,SAAS,CAAC,MAAM;CAWjB"}
1
+ {"version":3,"file":"Guard.d.ts","sourceRoot":"","sources":["../../../src/components/guard/Guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM9D,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,YAAY;IAC7C,MAAM,CAAC,MAAM;kCACe,KAAK;8BACT,KAAK;MAC5B;IAGD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,OAAO,CAAC,yBAAyB,CAAC,CAAY;IAE9C,iBAAiB;IAMjB,oBAAoB;IAMpB,SAAS,CAAC,MAAM;CAiBjB"}