terracotta 2.0.0-next.2 → 2.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/accordion.d.ts +4 -4
  2. package/dist/alert-dialog.d.ts +3 -3
  3. package/dist/alert-dialog.d.ts.map +1 -1
  4. package/dist/alert-dialog.js +2 -1
  5. package/dist/alert-dialog.js.map +1 -1
  6. package/dist/alert.d.ts +1 -1
  7. package/dist/button.d.ts +1 -1
  8. package/dist/checkbox.d.ts +2 -2
  9. package/dist/checkbox.js +1 -1
  10. package/dist/combobox.d.ts +6 -6
  11. package/dist/combobox.d.ts.map +1 -1
  12. package/dist/combobox.js +15 -7
  13. package/dist/combobox.js.map +1 -1
  14. package/dist/command-bar.d.ts +3 -3
  15. package/dist/command-bar.d.ts.map +1 -1
  16. package/dist/command-bar.js +3 -2
  17. package/dist/command-bar.js.map +1 -1
  18. package/dist/command.d.ts +4 -4
  19. package/dist/command.js +6 -3
  20. package/dist/command.js.map +1 -1
  21. package/dist/context-menu.d.ts +3 -3
  22. package/dist/context-menu.d.ts.map +1 -1
  23. package/dist/context-menu.js +3 -2
  24. package/dist/context-menu.js.map +1 -1
  25. package/dist/{create-autocomplete-option-state-DOc_JXd8.d.ts → create-autocomplete-option-state-CSvq7WHx.d.ts} +1 -1
  26. package/dist/{create-autocomplete-option-state-DOc_JXd8.d.ts.map → create-autocomplete-option-state-CSvq7WHx.d.ts.map} +1 -1
  27. package/dist/{create-autocomplete-option-state-IiLdhCUt.js → create-autocomplete-option-state-Q9WDo3l_.js} +2 -2
  28. package/dist/{create-autocomplete-option-state-IiLdhCUt.js.map → create-autocomplete-option-state-Q9WDo3l_.js.map} +1 -1
  29. package/dist/{create-autocomplete-state-3KnrcfFZ.d.ts → create-autocomplete-state-BR8U1R-Z.d.ts} +1 -1
  30. package/dist/{create-autocomplete-state-3KnrcfFZ.d.ts.map → create-autocomplete-state-BR8U1R-Z.d.ts.map} +1 -1
  31. package/dist/{create-autocomplete-state-BdRcsVdD.js → create-autocomplete-state-Bjlghg6V.js} +1 -1
  32. package/dist/{create-autocomplete-state-BdRcsVdD.js.map → create-autocomplete-state-Bjlghg6V.js.map} +1 -1
  33. package/dist/{create-check-state-Coo9xbiw.d.ts → create-check-state-83lhR9Xe.d.ts} +1 -1
  34. package/dist/{create-check-state-Coo9xbiw.d.ts.map → create-check-state-83lhR9Xe.d.ts.map} +1 -1
  35. package/dist/{create-check-state-VhSIb3pa.js → create-check-state-BfsP3AXV.js} +1 -1
  36. package/dist/{create-check-state-VhSIb3pa.js.map → create-check-state-BfsP3AXV.js.map} +1 -1
  37. package/dist/create-dependency-list-m97ANAoA.js +14 -0
  38. package/dist/create-dependency-list-m97ANAoA.js.map +1 -0
  39. package/dist/{create-disclosure-state-BjJp24Q-.d.ts → create-disclosure-state-3Tpy7mys.d.ts} +1 -1
  40. package/dist/{create-disclosure-state-BjJp24Q-.d.ts.map → create-disclosure-state-3Tpy7mys.d.ts.map} +1 -1
  41. package/dist/{create-select-option-state-ZfKnDc6r.d.ts → create-select-option-state-7uFoZCBc.d.ts} +1 -1
  42. package/dist/{create-select-option-state-ZfKnDc6r.d.ts.map → create-select-option-state-7uFoZCBc.d.ts.map} +1 -1
  43. package/dist/{create-toggle-state-Jr1hhice.js → create-toggle-state-BDIRlqKW.js} +1 -1
  44. package/dist/{create-toggle-state-Jr1hhice.js.map → create-toggle-state-BDIRlqKW.js.map} +1 -1
  45. package/dist/{create-toggle-state-efdeSHNT.d.ts → create-toggle-state-BpbLMhPG.d.ts} +1 -1
  46. package/dist/{create-toggle-state-efdeSHNT.d.ts.map → create-toggle-state-BpbLMhPG.d.ts.map} +1 -1
  47. package/dist/{create-type-ahead-DofYDmD3.js → create-type-ahead-DlDn2zHV.js} +1 -1
  48. package/dist/{create-type-ahead-DofYDmD3.js.map → create-type-ahead-DlDn2zHV.js.map} +1 -1
  49. package/dist/{create-unmountable-BN8SuFZm.d.ts → create-unmountable-BndAmhNP.d.ts} +1 -1
  50. package/dist/create-unmountable-BndAmhNP.d.ts.map +1 -0
  51. package/dist/dialog.d.ts +3 -3
  52. package/dist/dialog.d.ts.map +1 -1
  53. package/dist/dialog.js +3 -2
  54. package/dist/dialog.js.map +1 -1
  55. package/dist/disclosure.d.ts +4 -4
  56. package/dist/{dynamic-prop-BXiVOsNr.d.ts → dynamic-prop-Bjg5U8KQ.d.ts} +1 -1
  57. package/dist/{dynamic-prop-BXiVOsNr.d.ts.map → dynamic-prop-Bjg5U8KQ.d.ts.map} +1 -1
  58. package/dist/feed.d.ts +1 -1
  59. package/dist/{index-BRrO30DW.d.ts → index-Bc2kRhqv.d.ts} +2 -2
  60. package/dist/{index-BRrO30DW.d.ts.map → index-Bc2kRhqv.d.ts.map} +1 -1
  61. package/dist/listbox.d.ts +5 -5
  62. package/dist/listbox.d.ts.map +1 -1
  63. package/dist/listbox.js +8 -4
  64. package/dist/listbox.js.map +1 -1
  65. package/dist/menu.d.ts +1 -1
  66. package/dist/menu.js +1 -1
  67. package/dist/popover.d.ts +4 -4
  68. package/dist/popover.d.ts.map +1 -1
  69. package/dist/popover.js +7 -3
  70. package/dist/popover.js.map +1 -1
  71. package/dist/radio-group.d.ts +2 -2
  72. package/dist/select.d.ts +3 -3
  73. package/dist/select.js +1 -1
  74. package/dist/states.d.ts +5 -5
  75. package/dist/states.js +3 -3
  76. package/dist/tabs.d.ts +2 -2
  77. package/dist/toast.d.ts +1 -1
  78. package/dist/toggle.d.ts +3 -3
  79. package/dist/toggle.js +1 -1
  80. package/dist/toolbar.d.ts +1 -1
  81. package/dist/transition.d.ts +2 -2
  82. package/dist/transition.d.ts.map +1 -1
  83. package/dist/transition.js +21 -11
  84. package/dist/transition.js.map +1 -1
  85. package/dist/{wait-for-transition-2M-Jo4Cq.js → wait-for-transition-DS5jK6Gv.js} +1 -1
  86. package/dist/wait-for-transition-DS5jK6Gv.js.map +1 -0
  87. package/package.json +1 -1
  88. package/src/components/alert-dialog/AlertDialogPanel.ts +2 -1
  89. package/src/components/combobox/ComboboxInput.ts +6 -1
  90. package/src/components/combobox/ComboboxOptions.ts +8 -1
  91. package/src/components/command/CommandOptions.ts +4 -0
  92. package/src/components/command-bar/CommandBarPanel.ts +2 -1
  93. package/src/components/context-menu/ContextMenuPanel.ts +2 -1
  94. package/src/components/dialog/DialogPanel.ts +2 -1
  95. package/src/components/listbox/ListboxButton.ts +4 -0
  96. package/src/components/listbox/ListboxOptions.ts +2 -1
  97. package/src/components/popover/PopoverButton.ts +4 -0
  98. package/src/components/popover/PopoverPanel.ts +2 -1
  99. package/src/components/transition/index.ts +25 -12
  100. package/src/utils/create-dependency-list.ts +21 -0
  101. package/src/utils/wait-for-transition.ts +1 -3
  102. package/dist/create-unmountable-BN8SuFZm.d.ts.map +0 -1
  103. package/dist/wait-for-transition-2M-Jo4Cq.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { f as SelectStateRenderProps, h as SingleSelectStateUncontrolledOptions, i as SelectOptionStateRenderProps, l as MultipleSelectStateUncontrolledOptions, n as SelectOptionStateOptions, p as SingleSelectStateControlledOptions, s as MultipleSelectStateControlledOptions } from "./create-select-option-state-ZfKnDc6r.js";
2
- import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
3
- import { n as ButtonProps } from "./index-BRrO30DW.js";
4
- import { t as UnmountableProps } from "./create-unmountable-BN8SuFZm.js";
1
+ import { f as SelectStateRenderProps, h as SingleSelectStateUncontrolledOptions, i as SelectOptionStateRenderProps, l as MultipleSelectStateUncontrolledOptions, n as SelectOptionStateOptions, p as SingleSelectStateControlledOptions, s as MultipleSelectStateControlledOptions } from "./create-select-option-state-7uFoZCBc.js";
2
+ import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
3
+ import { n as ButtonProps } from "./index-Bc2kRhqv.js";
4
+ import { t as UnmountableProps } from "./create-unmountable-BndAmhNP.js";
5
5
  import { JSX, ValidComponent } from "solid-js";
6
6
 
7
7
  //#region src/components/accordion/Accordion.d.ts
@@ -1,6 +1,6 @@
1
- import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
2
- import { t as UnmountableProps } from "./create-unmountable-BN8SuFZm.js";
3
- import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-BjJp24Q-.js";
1
+ import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
2
+ import { t as UnmountableProps } from "./create-unmountable-BndAmhNP.js";
3
+ import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-3Tpy7mys.js";
4
4
  import { JSX, ValidComponent } from "solid-js";
5
5
 
6
6
  //#region src/components/alert-dialog/AlertDialog.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.d.ts","names":[],"sources":["../src/components/alert-dialog/AlertDialog.ts","../src/components/alert-dialog/AlertDialogDescription.ts","../src/components/alert-dialog/AlertDialogOverlay.ts","../src/components/alert-dialog/AlertDialogPanel.ts","../src/components/alert-dialog/AlertDialogTitle.ts"],"mappings":";;;;;;KA+BY,8BAAA,GAAiC,QAAA,CAC3C,gCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,0BAAA,WAAqC,cAAA,YAC/C,aAAA,CAAc,CAAA,EAAG,8BAAA;AAAA,KAEP,gCAAA,GAAmC,QAAA,CAC7C,kCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,4BAAA,WAAuC,cAAA,YACjD,aAAA,CAAc,CAAA,EAAG,gCAAA;AAAA,KAEP,gBAAA,WAA2B,cAAA,YACnC,0BAAA,CAA2B,CAAA,IAC3B,4BAAA,CAA6B,CAAA;AAAA,iBAQjB,WAAA,WAAsB,cAAA,SAAA,CACpC,KAAA,EAAO,gBAAA,CAAiB,CAAA,IACvB,GAAA,CAAI,OAAA;;;KC7CK,2BAAA,WAAsC,cAAA,UAChD,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,sBAAA,WAAiC,cAAA,OAAA,CAC/C,KAAA,EAAO,2BAAA,CAA4B,CAAA,IAClC,GAAA,CAAI,OAAA;;;KCJK,uBAAA,WAAkC,cAAA,YAC5C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,kBAAA,WAA6B,cAAA,SAAA,CAC3C,KAAA,EAAO,uBAAA,CAAwB,CAAA,IAC9B,GAAA,CAAI,OAAA;;;KCFK,qBAAA,WAAgC,cAAA,YAC1C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,gBAAA,WAA2B,cAAA,SAAA,CACzC,KAAA,EAAO,qBAAA,CAAsB,CAAA,IAC5B,GAAA,CAAI,OAAA;;;KCTK,qBAAA,WAAgC,cAAA,WAC1C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,gBAAA,WAA2B,cAAA,QAAA,CACzC,KAAA,EAAO,qBAAA,CAAsB,CAAA,IAC5B,GAAA,CAAI,OAAA"}
1
+ {"version":3,"file":"alert-dialog.d.ts","names":[],"sources":["../src/components/alert-dialog/AlertDialog.ts","../src/components/alert-dialog/AlertDialogDescription.ts","../src/components/alert-dialog/AlertDialogOverlay.ts","../src/components/alert-dialog/AlertDialogPanel.ts","../src/components/alert-dialog/AlertDialogTitle.ts"],"mappings":";;;;;;KA+BY,8BAAA,GAAiC,QAAA,CAC3C,gCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,0BAAA,WAAqC,cAAA,YAC/C,aAAA,CAAc,CAAA,EAAG,8BAAA;AAAA,KAEP,gCAAA,GAAmC,QAAA,CAC7C,kCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,4BAAA,WAAuC,cAAA,YACjD,aAAA,CAAc,CAAA,EAAG,gCAAA;AAAA,KAEP,gBAAA,WAA2B,cAAA,YACnC,0BAAA,CAA2B,CAAA,IAC3B,4BAAA,CAA6B,CAAA;AAAA,iBAQjB,WAAA,WAAsB,cAAA,SAAA,CACpC,KAAA,EAAO,gBAAA,CAAiB,CAAA,IACvB,GAAA,CAAI,OAAA;;;KC7CK,2BAAA,WAAsC,cAAA,UAChD,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,sBAAA,WAAiC,cAAA,OAAA,CAC/C,KAAA,EAAO,2BAAA,CAA4B,CAAA,IAClC,GAAA,CAAI,OAAA;;;KCJK,uBAAA,WAAkC,cAAA,YAC5C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,kBAAA,WAA6B,cAAA,SAAA,CAC3C,KAAA,EAAO,uBAAA,CAAwB,CAAA,IAC9B,GAAA,CAAI,OAAA;;;KCDK,qBAAA,WAAgC,cAAA,YAC1C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,gBAAA,WAA2B,cAAA,SAAA,CACzC,KAAA,EAAO,qBAAA,CAAsB,CAAA,IAC5B,GAAA,CAAI,OAAA;;;KCVK,qBAAA,WAAgC,cAAA,WAC1C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,gBAAA,WAA2B,cAAA,QAAA,CACzC,KAAA,EAAO,qBAAA,CAAsB,CAAA,IAC5B,GAAA,CAAI,OAAA"}
@@ -7,6 +7,7 @@ import { i as createTag } from "./namespace-BNSl8VB1.js";
7
7
  import { t as createUnmountable } from "./create-unmountable-BA-xISc6.js";
8
8
  import { i as useDisclosureState, n as DisclosureStateProvider, r as createDisclosureState, t as DisclosureStateChild } from "./create-disclosure-state-DvrsDbX_.js";
9
9
  import { t as useFocusStartPoint } from "./use-focus-start-point-DzHdmdUG.js";
10
+ import { t as createDependencyList } from "./create-dependency-list-m97ANAoA.js";
10
11
  import { createDynamic } from "@solidjs/web";
11
12
  import { createComponent, createContext, createEffect, createTrackedEffect, createUniqueId, merge, omit, useContext } from "solid-js";
12
13
  //#region src/components/alert-dialog/AlertDialogContext.ts
@@ -105,7 +106,7 @@ function AlertDialogPanel(props) {
105
106
  const context = useAlertDialogContext("AlertDialogPanel");
106
107
  const state = useDisclosureState();
107
108
  const [internalRef, setInternalRef] = createForwardRef(props);
108
- createEffect(() => [internalRef(), state.isOpen()], ([current, isOpen]) => {
109
+ createEffect(createDependencyList(() => [internalRef(), state.isOpen()]), ([current, isOpen]) => {
109
110
  if (current instanceof HTMLElement) {
110
111
  if (isOpen) {
111
112
  focusFirst(getFocusableElements(current), false);
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.js","names":[],"sources":["../src/components/alert-dialog/AlertDialogContext.ts","../src/components/alert-dialog/tags.ts","../src/components/alert-dialog/AlertDialog.ts","../src/components/alert-dialog/AlertDialogDescription.ts","../src/components/alert-dialog/AlertDialogOverlay.ts","../src/components/alert-dialog/AlertDialogPanel.ts","../src/components/alert-dialog/AlertDialogTitle.ts"],"sourcesContent":["import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface AlertDialogContextData {\n ownerID: string;\n panelID: string;\n titleID: string;\n descriptionID: string;\n}\n\nexport const AlertDialogContext = createContext<AlertDialogContextData>();\n\nexport function useAlertDialogContext(\n componentName: string,\n): AlertDialogContextData {\n const context = useContext(AlertDialogContext);\n assert(\n context,\n new Error(`<${componentName}> must be used inside a <AlertDialog>`),\n );\n return context;\n}\n","import { createTag } from '../../utils/namespace';\n\nexport const ALERT_DIALOG_TAG = createTag('alert-dialog');\nexport const ALERT_DIALOG_DESCRIPTION_TAG = createTag(\n 'alert-dialog-description',\n);\nexport const ALERT_DIALOG_OVERLAY_TAG = createTag('alert-dialog-overlay');\nexport const ALERT_DIALOG_PANEL_TAG = createTag('alert-dialog-panel');\nexport const ALERT_DIALOG_TITLE_TAG = createTag('alert-dialog-title');\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createTrackedEffect,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n DisclosureStateControlledOptions,\n DisclosureStateRenderProps,\n DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n createDisclosureState,\n DisclosureStateProvider,\n} from '../../states/create-disclosure-state';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { AlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TAG } from './tags';\n\nexport type AlertDialogControlledBaseProps = Prettify<\n DisclosureStateControlledOptions &\n DisclosureStateRenderProps &\n UnmountableProps\n>;\n\nexport type AlertDialogControlledProps<T extends ValidComponent = 'div'> =\n HeadlessProps<T, AlertDialogControlledBaseProps>;\n\nexport type AlertDialogUncontrolledBaseProps = Prettify<\n DisclosureStateUncontrolledOptions &\n DisclosureStateRenderProps &\n UnmountableProps\n>;\n\nexport type AlertDialogUncontrolledProps<T extends ValidComponent = 'div'> =\n HeadlessProps<T, AlertDialogUncontrolledBaseProps>;\n\nexport type AlertDialogProps<T extends ValidComponent = 'div'> =\n | AlertDialogControlledProps<T>\n | AlertDialogUncontrolledProps<T>;\n\nfunction isAlertDialogUncontrolled<T extends ValidComponent = 'div'>(\n props: AlertDialogProps<T>,\n): props is AlertDialogUncontrolledProps<T> {\n return 'defaultOpen' in props;\n}\n\nexport function AlertDialog<T extends ValidComponent = 'div'>(\n props: AlertDialogProps<T>,\n): JSX.Element {\n const ownerID = createUniqueId();\n const panelID = createUniqueId();\n const titleID = createUniqueId();\n const descriptionID = createUniqueId();\n\n const fsp = useFocusStartPoint();\n\n const state = createDisclosureState(props);\n\n createTrackedEffect(() => {\n if (state.isOpen()) {\n fsp.save();\n } else {\n fsp.load();\n }\n });\n\n return createComponent(AlertDialogContext, {\n value: {\n ownerID,\n panelID,\n titleID,\n descriptionID,\n },\n get children() {\n return createUnmountable(\n props,\n () => state.isOpen(),\n () =>\n createDynamic(\n () => props.as || ('div' as T),\n merge(\n isAlertDialogUncontrolled(props)\n ? omit(\n props,\n 'as',\n 'children',\n 'defaultOpen',\n 'disabled',\n 'onChange',\n 'onClose',\n 'onOpen',\n 'unmount',\n )\n : omit(\n props,\n 'as',\n 'children',\n 'isOpen',\n 'disabled',\n 'onChange',\n 'onClose',\n 'onOpen',\n 'unmount',\n ),\n ALERT_DIALOG_TAG,\n {\n id: ownerID,\n role: 'alertdialog',\n 'aria-modal': true,\n 'aria-labelledby': titleID,\n 'aria-describedby': descriptionID,\n get children() {\n return createComponent(DisclosureStateProvider, {\n state,\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createARIADisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n ),\n );\n },\n });\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_DESCRIPTION_TAG } from './tags';\n\nexport type AlertDialogDescriptionProps<T extends ValidComponent = 'p'> =\n HeadlessProps<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogDescription<T extends ValidComponent = 'p'>(\n props: AlertDialogDescriptionProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogDescription');\n const state = useDisclosureState();\n return createDynamic(\n () => props.as || ('p' as T),\n merge(\n omit(props, 'as', 'children'),\n ALERT_DIALOG_DESCRIPTION_TAG,\n {\n id: context.descriptionID,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_OVERLAY_TAG } from './tags';\nexport type AlertDialogOverlayProps<T extends ValidComponent = 'div'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogOverlay<T extends ValidComponent = 'div'>(\n props: AlertDialogOverlayProps<T>,\n): JSX.Element {\n useAlertDialogContext('AlertDialogOverlay');\n const state = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n return useEventListener(current, 'click', () => {\n state.close();\n });\n }\n return undefined;\n });\n\n return createDynamic(\n () => props.as || ('div' as T),\n merge(\n omit(props, 'as', 'children', 'ref'),\n ALERT_DIALOG_OVERLAY_TAG,\n {\n ref: setInternalRef,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_PANEL_TAG } from './tags';\n\nexport type AlertDialogPanelProps<T extends ValidComponent = 'div'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogPanel<T extends ValidComponent = 'div'>(\n props: AlertDialogPanelProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogPanel');\n const state = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(\n () => [internalRef(), state.isOpen()] as const,\n ([current, isOpen]) => {\n if (current instanceof HTMLElement) {\n if (isOpen) {\n focusFirst(getFocusableElements(current), false);\n\n return useEventListener(current, 'keydown', e => {\n if (!props.disabled) {\n switch (e.key) {\n case 'Tab': {\n e.preventDefault();\n lockFocus(current, e.shiftKey, false);\n break;\n }\n case 'Escape': {\n state.close();\n break;\n }\n default:\n break;\n }\n }\n });\n }\n }\n return undefined;\n },\n );\n\n return createDynamic(\n () => props.as || ('div' as T),\n merge(\n omit(props, 'as', 'children', 'ref'),\n ALERT_DIALOG_PANEL_TAG,\n {\n id: context.panelID,\n ref: setInternalRef,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TITLE_TAG } from './tags';\n\nexport type AlertDialogTitleProps<T extends ValidComponent = 'h2'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogTitle<T extends ValidComponent = 'h2'>(\n props: AlertDialogTitleProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogTitle');\n const state = useDisclosureState();\n\n return createDynamic(\n () => props.as || ('h2' as T),\n merge(\n omit(props, 'as', 'children'),\n ALERT_DIALOG_TITLE_TAG,\n {\n id: context.titleID,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"alert-dialog.js","names":[],"sources":["../src/components/alert-dialog/AlertDialogContext.ts","../src/components/alert-dialog/tags.ts","../src/components/alert-dialog/AlertDialog.ts","../src/components/alert-dialog/AlertDialogDescription.ts","../src/components/alert-dialog/AlertDialogOverlay.ts","../src/components/alert-dialog/AlertDialogPanel.ts","../src/components/alert-dialog/AlertDialogTitle.ts"],"sourcesContent":["import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface AlertDialogContextData {\n ownerID: string;\n panelID: string;\n titleID: string;\n descriptionID: string;\n}\n\nexport const AlertDialogContext = createContext<AlertDialogContextData>();\n\nexport function useAlertDialogContext(\n componentName: string,\n): AlertDialogContextData {\n const context = useContext(AlertDialogContext);\n assert(\n context,\n new Error(`<${componentName}> must be used inside a <AlertDialog>`),\n );\n return context;\n}\n","import { createTag } from '../../utils/namespace';\n\nexport const ALERT_DIALOG_TAG = createTag('alert-dialog');\nexport const ALERT_DIALOG_DESCRIPTION_TAG = createTag(\n 'alert-dialog-description',\n);\nexport const ALERT_DIALOG_OVERLAY_TAG = createTag('alert-dialog-overlay');\nexport const ALERT_DIALOG_PANEL_TAG = createTag('alert-dialog-panel');\nexport const ALERT_DIALOG_TITLE_TAG = createTag('alert-dialog-title');\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createTrackedEffect,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n DisclosureStateControlledOptions,\n DisclosureStateRenderProps,\n DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n createDisclosureState,\n DisclosureStateProvider,\n} from '../../states/create-disclosure-state';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { AlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TAG } from './tags';\n\nexport type AlertDialogControlledBaseProps = Prettify<\n DisclosureStateControlledOptions &\n DisclosureStateRenderProps &\n UnmountableProps\n>;\n\nexport type AlertDialogControlledProps<T extends ValidComponent = 'div'> =\n HeadlessProps<T, AlertDialogControlledBaseProps>;\n\nexport type AlertDialogUncontrolledBaseProps = Prettify<\n DisclosureStateUncontrolledOptions &\n DisclosureStateRenderProps &\n UnmountableProps\n>;\n\nexport type AlertDialogUncontrolledProps<T extends ValidComponent = 'div'> =\n HeadlessProps<T, AlertDialogUncontrolledBaseProps>;\n\nexport type AlertDialogProps<T extends ValidComponent = 'div'> =\n | AlertDialogControlledProps<T>\n | AlertDialogUncontrolledProps<T>;\n\nfunction isAlertDialogUncontrolled<T extends ValidComponent = 'div'>(\n props: AlertDialogProps<T>,\n): props is AlertDialogUncontrolledProps<T> {\n return 'defaultOpen' in props;\n}\n\nexport function AlertDialog<T extends ValidComponent = 'div'>(\n props: AlertDialogProps<T>,\n): JSX.Element {\n const ownerID = createUniqueId();\n const panelID = createUniqueId();\n const titleID = createUniqueId();\n const descriptionID = createUniqueId();\n\n const fsp = useFocusStartPoint();\n\n const state = createDisclosureState(props);\n\n createTrackedEffect(() => {\n if (state.isOpen()) {\n fsp.save();\n } else {\n fsp.load();\n }\n });\n\n return createComponent(AlertDialogContext, {\n value: {\n ownerID,\n panelID,\n titleID,\n descriptionID,\n },\n get children() {\n return createUnmountable(\n props,\n () => state.isOpen(),\n () =>\n createDynamic(\n () => props.as || ('div' as T),\n merge(\n isAlertDialogUncontrolled(props)\n ? omit(\n props,\n 'as',\n 'children',\n 'defaultOpen',\n 'disabled',\n 'onChange',\n 'onClose',\n 'onOpen',\n 'unmount',\n )\n : omit(\n props,\n 'as',\n 'children',\n 'isOpen',\n 'disabled',\n 'onChange',\n 'onClose',\n 'onOpen',\n 'unmount',\n ),\n ALERT_DIALOG_TAG,\n {\n id: ownerID,\n role: 'alertdialog',\n 'aria-modal': true,\n 'aria-labelledby': titleID,\n 'aria-describedby': descriptionID,\n get children() {\n return createComponent(DisclosureStateProvider, {\n state,\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createARIADisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n ),\n );\n },\n });\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_DESCRIPTION_TAG } from './tags';\n\nexport type AlertDialogDescriptionProps<T extends ValidComponent = 'p'> =\n HeadlessProps<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogDescription<T extends ValidComponent = 'p'>(\n props: AlertDialogDescriptionProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogDescription');\n const state = useDisclosureState();\n return createDynamic(\n () => props.as || ('p' as T),\n merge(\n omit(props, 'as', 'children'),\n ALERT_DIALOG_DESCRIPTION_TAG,\n {\n id: context.descriptionID,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_OVERLAY_TAG } from './tags';\nexport type AlertDialogOverlayProps<T extends ValidComponent = 'div'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogOverlay<T extends ValidComponent = 'div'>(\n props: AlertDialogOverlayProps<T>,\n): JSX.Element {\n useAlertDialogContext('AlertDialogOverlay');\n const state = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n return useEventListener(current, 'click', () => {\n state.close();\n });\n }\n return undefined;\n });\n\n return createDynamic(\n () => props.as || ('div' as T),\n merge(\n omit(props, 'as', 'children', 'ref'),\n ALERT_DIALOG_OVERLAY_TAG,\n {\n ref: setInternalRef,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport { createDependencyList } from '../../utils/create-dependency-list';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_PANEL_TAG } from './tags';\n\nexport type AlertDialogPanelProps<T extends ValidComponent = 'div'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogPanel<T extends ValidComponent = 'div'>(\n props: AlertDialogPanelProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogPanel');\n const state = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(\n createDependencyList(() => [internalRef(), state.isOpen()] as const),\n ([current, isOpen]) => {\n if (current instanceof HTMLElement) {\n if (isOpen) {\n focusFirst(getFocusableElements(current), false);\n\n return useEventListener(current, 'keydown', e => {\n if (!props.disabled) {\n switch (e.key) {\n case 'Tab': {\n e.preventDefault();\n lockFocus(current, e.shiftKey, false);\n break;\n }\n case 'Escape': {\n state.close();\n break;\n }\n default:\n break;\n }\n }\n });\n }\n }\n return undefined;\n },\n );\n\n return createDynamic(\n () => props.as || ('div' as T),\n merge(\n omit(props, 'as', 'children', 'ref'),\n ALERT_DIALOG_PANEL_TAG,\n {\n id: context.panelID,\n ref: setInternalRef,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, merge, omit } from 'solid-js';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport {\n DisclosureStateChild,\n useDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n} from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TITLE_TAG } from './tags';\n\nexport type AlertDialogTitleProps<T extends ValidComponent = 'h2'> =\n HeadlessPropsWithRef<T, DisclosureStateRenderProps>;\n\nexport function AlertDialogTitle<T extends ValidComponent = 'h2'>(\n props: AlertDialogTitleProps<T>,\n): JSX.Element {\n const context = useAlertDialogContext('AlertDialogTitle');\n const state = useDisclosureState();\n\n return createDynamic(\n () => props.as || ('h2' as T),\n merge(\n omit(props, 'as', 'children'),\n ALERT_DIALOG_TITLE_TAG,\n {\n id: context.titleID,\n get children() {\n return createComponent(DisclosureStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n createDisabledState(() => state.disabled()),\n createExpandedState(() => state.isOpen()),\n ) as ComponentProps<T>,\n );\n}\n"],"mappings":"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"}
package/dist/alert.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
1
+ import { t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
2
2
  import { JSX, ValidComponent } from "solid-js";
3
3
 
4
4
  //#region src/components/alert/index.d.ts
package/dist/button.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as ButtonProps, t as Button } from "./index-BRrO30DW.js";
1
+ import { n as ButtonProps, t as Button } from "./index-Bc2kRhqv.js";
2
2
  export { Button, ButtonProps };
@@ -1,5 +1,5 @@
1
- import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
2
- import { a as CheckStateRenderProps, n as CheckStateControlledOptions, o as CheckStateUncontrolledOptions } from "./create-check-state-Coo9xbiw.js";
1
+ import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
2
+ import { a as CheckStateRenderProps, n as CheckStateControlledOptions, o as CheckStateUncontrolledOptions } from "./create-check-state-83lhR9Xe.js";
3
3
  import { JSX, ValidComponent } from "solid-js";
4
4
 
5
5
  //#region src/components/checkbox/Checkbox.d.ts
package/dist/checkbox.js CHANGED
@@ -4,7 +4,7 @@ import { c as createDisabledState, n as createARIADisabledState, s as createChec
4
4
  import { t as useEventListener } from "./use-event-listener-B0fInUUI.js";
5
5
  import { i as createTag } from "./namespace-BNSl8VB1.js";
6
6
  import { Button } from "./button.js";
7
- import { i as useCheckState, n as CheckStateProvider, r as createCheckState, t as CheckStateChild } from "./create-check-state-VhSIb3pa.js";
7
+ import { i as useCheckState, n as CheckStateProvider, r as createCheckState, t as CheckStateChild } from "./create-check-state-BfsP3AXV.js";
8
8
  import { createDynamic } from "@solidjs/web";
9
9
  import { createComponent, createContext, createEffect, createUniqueId, merge, omit, useContext } from "solid-js";
10
10
  //#region src/components/checkbox/CheckboxContext.ts
@@ -1,9 +1,9 @@
1
- import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
2
- import { n as ButtonProps } from "./index-BRrO30DW.js";
3
- import { t as UnmountableProps } from "./create-unmountable-BN8SuFZm.js";
4
- import { n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-BjJp24Q-.js";
5
- import { i as MultipleAutocompleteStateControlledOptions, l as SingleAutocompleteStateUncontrolledOptions, o as MultipleAutocompleteStateUncontrolledOptions, r as AutocompleteStateRenderProps, s as SingleAutocompleteStateControlledOptions } from "./create-autocomplete-state-3KnrcfFZ.js";
6
- import { n as AutocompleteOptionStateRenderProps, t as AutocompleteOptionStateOptions } from "./create-autocomplete-option-state-DOc_JXd8.js";
1
+ import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
2
+ import { n as ButtonProps } from "./index-Bc2kRhqv.js";
3
+ import { t as UnmountableProps } from "./create-unmountable-BndAmhNP.js";
4
+ import { n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-3Tpy7mys.js";
5
+ import { i as MultipleAutocompleteStateControlledOptions, l as SingleAutocompleteStateUncontrolledOptions, o as MultipleAutocompleteStateUncontrolledOptions, r as AutocompleteStateRenderProps, s as SingleAutocompleteStateControlledOptions } from "./create-autocomplete-state-BR8U1R-Z.js";
6
+ import { n as AutocompleteOptionStateRenderProps, t as AutocompleteOptionStateOptions } from "./create-autocomplete-option-state-CSvq7WHx.js";
7
7
  import { JSX, ValidComponent } from "solid-js";
8
8
 
9
9
  //#region src/components/combobox/Combobox.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.d.ts","names":[],"sources":["../src/components/combobox/Combobox.ts","../src/components/combobox/ComboboxInput.ts","../src/components/combobox/ComboboxLabel.ts","../src/components/combobox/ComboboxOption.ts","../src/components/combobox/ComboboxOptions.ts"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.d.ts","names":[],"sources":["../src/components/combobox/Combobox.ts","../src/components/combobox/ComboboxInput.ts","../src/components/combobox/ComboboxLabel.ts","../src/components/combobox/ComboboxOption.ts","../src/components/combobox/ComboboxOptions.ts"],"mappings":"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"}
package/dist/combobox.js CHANGED
@@ -9,9 +9,10 @@ import { n as createOwnerAttribute, t as FocusNavigator } from "./focus-navigato
9
9
  import { Button } from "./button.js";
10
10
  import { t as createUnmountable } from "./create-unmountable-BA-xISc6.js";
11
11
  import { i as useDisclosureState, n as DisclosureStateProvider, r as createDisclosureState } from "./create-disclosure-state-DvrsDbX_.js";
12
- import { a as useAutocompleteState, i as createSingleAutocompleteState, n as AutocompleteStateProvider, r as createMultipleAutocompleteState, t as AutocompleteStateChild } from "./create-autocomplete-state-BdRcsVdD.js";
13
- import { n as createAutocompleteOptionState, r as COMMAND_INPUT_TAG, t as AutocompleteOptionStateProvider } from "./create-autocomplete-option-state-IiLdhCUt.js";
14
- import { t as waitForTransition } from "./wait-for-transition-2M-Jo4Cq.js";
12
+ import { t as createDependencyList } from "./create-dependency-list-m97ANAoA.js";
13
+ import { a as useAutocompleteState, i as createSingleAutocompleteState, n as AutocompleteStateProvider, r as createMultipleAutocompleteState, t as AutocompleteStateChild } from "./create-autocomplete-state-Bjlghg6V.js";
14
+ import { n as createAutocompleteOptionState, r as COMMAND_INPUT_TAG, t as AutocompleteOptionStateProvider } from "./create-autocomplete-option-state-Q9WDo3l_.js";
15
+ import { t as waitForTransition } from "./wait-for-transition-DS5jK6Gv.js";
15
16
  import { createDynamic } from "@solidjs/web";
16
17
  import { createComponent, createContext, createEffect, createMemo, createSignal, createUniqueId, merge, omit, useContext } from "solid-js";
17
18
  //#region src/components/combobox/ComboboxContext.ts
@@ -120,6 +121,7 @@ function ComboboxInput(props) {
120
121
  createEffect(internalRef, (current) => {
121
122
  if (current instanceof HTMLElement) {
122
123
  context.anchor = current;
124
+ context.inputHovering = false;
123
125
  return mergeFunc(current instanceof HTMLInputElement && useEventListener(current, "input", () => {
124
126
  if (!isDisabled()) autocompleteState.setQuery(current.value);
125
127
  }), useEventListener(current, "keydown", (e) => {
@@ -146,14 +148,17 @@ function ComboboxInput(props) {
146
148
  }), useEventListener(current, "click", () => {
147
149
  if (!isDisabled()) disclosureState.toggle();
148
150
  }), useEventListener(current, "blur", (e) => {
149
- if (context.optionsHovering) return;
151
+ console.log(context.inputHovering, context.optionsHovering);
152
+ if (context.inputHovering || context.optionsHovering) return;
150
153
  autocompleteState.blur();
151
154
  if (!(e.relatedTarget && current.contains(e.relatedTarget))) disclosureState.close();
152
155
  }), useEventListener(current, "mouseenter", () => {
153
156
  context.inputHovering = true;
154
157
  }), useEventListener(current, "mouseleave", () => {
155
158
  context.inputHovering = false;
156
- }));
159
+ }), () => {
160
+ context.inputHovering = false;
161
+ });
157
162
  }
158
163
  });
159
164
  createEffect(() => autocompleteState.query(), (query) => {
@@ -251,6 +256,7 @@ function ComboboxOptions(props) {
251
256
  createEffect(internalRef, (current) => {
252
257
  if (current instanceof HTMLElement) {
253
258
  context.controller.setRef(current);
259
+ context.optionsHovering = false;
254
260
  return mergeFunc(() => {
255
261
  context.controller.clearRef();
256
262
  }, useEventListener(current, "focusin", () => {
@@ -259,13 +265,15 @@ function ComboboxOptions(props) {
259
265
  context.optionsHovering = true;
260
266
  }), useEventListener(current, "mouseleave", () => {
261
267
  context.optionsHovering = false;
262
- }));
268
+ }), () => {
269
+ context.optionsHovering = false;
270
+ });
263
271
  }
264
272
  });
265
273
  createEffect(() => !disclosureState.isOpen(), (value) => {
266
274
  if (value) setInternalRef(void 0);
267
275
  });
268
- createEffect(() => [internalRef(), disclosureState.isOpen()], ([current, flag]) => {
276
+ createEffect(createDependencyList(() => [internalRef(), disclosureState.isOpen()]), ([current, flag]) => {
269
277
  if (current instanceof HTMLElement && flag) waitForTransition(current).then(() => {
270
278
  if (autocompleteState.hasSelected()) context.controller.setFirstChecked(SELECTED_NODE);
271
279
  else context.controller.setFirstChecked();
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","names":[],"sources":["../src/components/combobox/ComboboxContext.ts","../src/components/combobox/tags.ts","../src/components/combobox/Combobox.ts","../src/components/combobox/ComboboxInput.ts","../src/components/combobox/ComboboxLabel.ts","../src/components/combobox/ComboboxOption.ts","../src/components/combobox/ComboboxOptions.ts"],"sourcesContent":["import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\nimport { MATCHES_NODE } from '../../utils/namespace';\n\ninterface ComboboxContextData {\n multiple?: boolean;\n controller: FocusNavigator;\n inputID: string;\n labelID: string;\n optionsID: string;\n anchor?: HTMLElement | null;\n\n // TODO use triangle algorithm\n inputHovering: boolean;\n optionsHovering: boolean;\n\n getActiveDescendant(): string | undefined;\n setActiveDescendant(current: string | undefined): void;\n getSelectedDescendant(): string | undefined;\n setSelectedDescendant(current: string | undefined): void;\n}\n\nexport const ComboboxContext = createContext<ComboboxContextData>();\n\nexport function useComboboxContext(componentName: string): ComboboxContextData {\n const context = useContext(ComboboxContext);\n assert(\n context,\n new Error(`<${componentName}> must be used inside a <Combobox>`),\n );\n return context;\n}\n\nexport function createComboboxOptionFocusNavigator(): FocusNavigator {\n return new FocusNavigator(createUniqueId(), {\n virtual: true,\n base: MATCHES_NODE,\n });\n}\n","import { createTag } from '../../utils/namespace';\n\nexport const COMBOBOX_TAG = createTag('combobox');\nexport const COMBOBOX_INPUT_TAG = createTag('combobox-input');\nexport const COMBOBOX_OPTIONS_TAG = createTag('combobox-options');\nexport const COMBOBOX_OPTION_TAG = createTag('combobox-option');\nexport const COMBOBOX_LABEL_TAG = createTag('combobox-label');\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n MultipleAutocompleteStateControlledOptions,\n MultipleAutocompleteStateUncontrolledOptions,\n SingleAutocompleteStateControlledOptions,\n SingleAutocompleteStateUncontrolledOptions,\n} from '../../states/create-autocomplete-state';\nimport {\n AutocompleteStateProvider,\n createMultipleAutocompleteState,\n createSingleAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport type {\n DisclosureStateControlledOptions,\n DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n createDisclosureState,\n DisclosureStateProvider,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport {\n ComboboxContext,\n createComboboxOptionFocusNavigator,\n} from './ComboboxContext';\nimport { COMBOBOX_TAG } from './tags';\n\nexport interface ComboboxBaseProps {\n onDisclosureChange?: (value: boolean) => void;\n}\n\nexport interface ComboboxMultipleBaseProps<V> {\n onSelectChange?: (value: V[]) => void;\n}\n\nexport interface ComboboxSingleBaseProps<V> {\n onSelectChange?: (value?: V) => void;\n}\n\n// SCSCD = Single, Controlled Select, Controlled Disclosure\nexport type ComboboxSCSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSCSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSCSCDBaseProps<V>>;\n\n// SCSCD = Single, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxSCSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSCSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSCSUDBaseProps<V>>;\n\n// SCSCD = Single, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxSUSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSUSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSUSCDBaseProps<V>>;\n\n// SCSCD = Single, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxSUSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSUSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSUSUDBaseProps<V>>;\n\nexport type ComboboxSingleProps<V, T extends ValidComponent = 'div'> =\n | ComboboxSCSCDProps<V, T>\n | ComboboxSCSUDProps<V, T>\n | ComboboxSUSCDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\n// MCSCD = Multiple, Controlled Select, Controlled Disclosure\nexport type ComboboxMCSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMCSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMCSCDBaseProps<V>>;\n\n// MCSCD = Multiple, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxMCSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMCSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMCSUDBaseProps<V>>;\n\n// MCSCD = Multiple, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxMUSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMUSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMUSCDBaseProps<V>>;\n\n// MCSCD = Multiple, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxMUSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMUSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMUSUDBaseProps<V>>;\n\nexport type ComboboxMultipleProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMCSCDProps<V, T>\n | ComboboxMCSUDProps<V, T>\n | ComboboxMUSCDProps<V, T>\n | ComboboxMUSUDProps<V, T>;\n\ntype ComboboxSelectUncontrolledProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMUSCDProps<V, T>\n | ComboboxMUSUDProps<V, T>\n | ComboboxSUSCDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\ntype ComboboxDisclosureUncontrolledProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMCSUDProps<V, T>\n | ComboboxMUSUDProps<V, T>\n | ComboboxSCSUDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\nexport type ComboboxProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMultipleProps<V, T>\n | ComboboxSingleProps<V, T>;\n\nfunction isComboboxMultiple<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxMultipleProps<V, T> {\n return !!props.multiple;\n}\n\nfunction isComboboxSelectUncontrolled<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxSelectUncontrolledProps<V, T> {\n return 'defaultValue' in props;\n}\n\nfunction isComboboxDisclosureUncontrolled<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxDisclosureUncontrolledProps<V, T> {\n return 'defaultOpen' in props;\n}\n\nfunction getProps<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): ComponentProps<T> {\n if (isComboboxSelectUncontrolled(props)) {\n if (isComboboxDisclosureUncontrolled(props)) {\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultOpen',\n 'defaultValue',\n 'disabled',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n ) as ComponentProps<T>;\n }\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultValue',\n 'disabled',\n 'isOpen',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n ) as ComponentProps<T>;\n }\n if (isComboboxDisclosureUncontrolled(props)) {\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultOpen',\n 'disabled',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n 'value',\n ) as ComponentProps<T>;\n }\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'disabled',\n 'isOpen',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n 'value',\n ) as ComponentProps<T>;\n}\n\nexport function Combobox<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): JSX.Element {\n return createMemo(() => {\n const labelID = createUniqueId();\n const inputID = createUniqueId();\n const optionsID = createUniqueId();\n\n const disclosureState = createDisclosureState(\n merge(props, {\n onChange(value: boolean) {\n if (props.onDisclosureChange) {\n props.onDisclosureChange(value);\n }\n },\n }),\n );\n\n const autocompleteState = isComboboxMultiple(props)\n ? createMultipleAutocompleteState(\n merge(props, {\n onChange(value: V[]) {\n if (props.onSelectChange) {\n props.onSelectChange(value);\n }\n },\n }),\n )\n : createSingleAutocompleteState(\n merge(props, {\n onChange(value?: V) {\n if (props.onSelectChange) {\n props.onSelectChange(value);\n }\n },\n }),\n );\n\n const controller = createComboboxOptionFocusNavigator();\n const [activeDescendant, setActiveDescendant] = createSignal<string>();\n const [selectedDescendant, setSelectedDescendant] = createSignal<\n string | undefined\n >(undefined, {\n equals: false,\n });\n\n createEffect(\n () => !autocompleteState.hasActive(),\n value => {\n if (value) {\n setActiveDescendant(undefined);\n }\n },\n );\n\n return createComponent(ComboboxContext, {\n value: {\n get multiple() {\n return props.multiple;\n },\n labelID,\n inputID,\n optionsID,\n controller,\n inputHovering: false,\n optionsHovering: false,\n getActiveDescendant: activeDescendant,\n setActiveDescendant,\n getSelectedDescendant: selectedDescendant,\n setSelectedDescendant,\n },\n get children() {\n return createComponent(AutocompleteStateProvider, {\n state: autocompleteState,\n get children() {\n return createComponent(DisclosureStateProvider, {\n state: disclosureState,\n get children() {\n return createDynamic(\n () => props.as || 'div',\n merge(\n COMBOBOX_TAG,\n {\n 'aria-labelledby': labelID,\n get children() {\n return props.children;\n },\n },\n createDisabledState(() => autocompleteState.disabled()),\n createARIADisabledState(() => autocompleteState.disabled()),\n createHasSelectedState(() =>\n autocompleteState.hasSelected(),\n ),\n createHasActiveState(() => autocompleteState.hasActive()),\n createExpandedState(() => disclosureState.isOpen()),\n getProps(props),\n ) as ComponentProps<T>,\n );\n },\n });\n },\n });\n },\n });\n }) as unknown as JSX.Element;\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createEffect, merge, omit } from 'solid-js';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { mergeFunc } from '../../utils/merge-func';\nimport {\n createARIADisabledState,\n createARIAExpandedState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { COMMAND_INPUT_TAG } from '../command/tags';\nimport { useComboboxContext } from './ComboboxContext';\n\nexport type ComboboxInputProps<T extends ValidComponent = 'input'> =\n HeadlessPropsWithRef<T>;\n\nexport function ComboboxInput<T extends ValidComponent = 'input'>(\n props: ComboboxInputProps<T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxInput');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n const isDisabled = (): boolean | undefined =>\n autocompleteState.disabled() || props.disabled;\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n context.anchor = current;\n\n return mergeFunc(\n current instanceof HTMLInputElement &&\n useEventListener(current, 'input', () => {\n if (!isDisabled()) {\n autocompleteState.setQuery(current.value);\n }\n }),\n useEventListener(current, 'keydown', e => {\n if (!isDisabled()) {\n switch (e.key) {\n case 'Escape': {\n disclosureState.close();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.controller.setPrevChecked(true);\n } else {\n disclosureState.open();\n }\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.controller.setNextChecked(true);\n } else {\n disclosureState.open();\n }\n break;\n }\n case 'Enter': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.setSelectedDescendant(context.getActiveDescendant());\n }\n break;\n }\n default:\n break;\n }\n }\n }),\n useEventListener(current, 'click', () => {\n if (!isDisabled()) {\n disclosureState.toggle();\n }\n }),\n useEventListener(current, 'blur', e => {\n if (context.optionsHovering) {\n return;\n }\n autocompleteState.blur();\n if (!(e.relatedTarget && current.contains(e.relatedTarget as Node))) {\n disclosureState.close();\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n context.inputHovering = true;\n }),\n useEventListener(current, 'mouseleave', () => {\n context.inputHovering = false;\n }),\n );\n }\n return undefined;\n });\n\n createEffect(\n () => autocompleteState.query(),\n query => {\n if (query !== '') {\n if (disclosureState.isOpen()) {\n context.controller.setFirstChecked();\n } else {\n disclosureState.open();\n }\n }\n },\n );\n\n createEffect(\n () => context.getActiveDescendant(),\n activeDescendant => {\n if (activeDescendant) {\n const current = document.getElementById(activeDescendant);\n if (current) {\n context.controller.setCurrent(current);\n }\n }\n },\n );\n\n return createDynamic(\n () => props.as || ('input' as T),\n merge(\n COMMAND_INPUT_TAG,\n {\n id: context.inputID,\n ref: setInternalRef,\n // Guarantee it's a text\n type: 'text',\n // Guarantee it's interactive\n tabindex: 0,\n role: 'combobox',\n\n // Controls the options listbox\n 'aria-haspopup': 'listbox',\n 'aria-controls': context.optionsID,\n 'aria-labelledby': context.labelID,\n\n get 'aria-expanded'() {\n return disclosureState.isOpen();\n },\n get 'aria-activedescendant'() {\n return context.getActiveDescendant();\n },\n },\n createDisabledState(isDisabled),\n createARIADisabledState(isDisabled),\n createExpandedState(() => disclosureState.isOpen()),\n createARIAExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as', 'ref'),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { merge, omit } from 'solid-js';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_LABEL_TAG } from './tags';\n\nexport type ComboboxLabelProps<T extends ValidComponent = 'label'> =\n HeadlessProps<T>;\n\nexport function ComboboxLabel<T extends ValidComponent = 'label'>(\n props: ComboboxLabelProps<T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxLabel');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n\n return createDynamic(\n () => props.as || ('label' as T),\n merge(\n COMBOBOX_LABEL_TAG,\n {\n id: context.labelID,\n },\n createDisabledState(() => autocompleteState.disabled()),\n createExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as'),\n ) as ComponentProps<T>,\n );\n}\n","import type { JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createEffect,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n AutocompleteOptionStateOptions,\n AutocompleteOptionStateRenderProps,\n} from '../../states/create-autocomplete-option-state';\nimport {\n AutocompleteOptionStateProvider,\n createAutocompleteOptionState,\n} from '../../states/create-autocomplete-option-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport { mergeFunc } from '../../utils/merge-func';\nimport {\n createActiveState,\n createARIADisabledState,\n createARIASelectedState,\n createDisabledState,\n createMatchesState,\n createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useVirtualFocus } from '../../utils/virtual-focus';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTION_TAG } from './tags';\n\nexport type ComboboxOptionBaseProps<V> = Prettify<\n AutocompleteOptionStateOptions<V> & AutocompleteOptionStateRenderProps\n>;\n\nexport type ComboboxOptionProps<\n V,\n T extends ValidComponent = 'li',\n> = HeadlessPropsWithRef<\n T,\n OmitAndMerge<ComboboxOptionBaseProps<V>, ButtonProps<T>>\n>;\n\nexport function ComboboxOption<V, T extends ValidComponent = 'li'>(\n props: ComboboxOptionProps<V, T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxOptions');\n const disclosure = useDisclosureState();\n const state = createAutocompleteOptionState(props);\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n const id = createUniqueId();\n\n createEffect(\n () => !state.disabled() && context.getSelectedDescendant() === id,\n value => {\n if (value) {\n state.select();\n if (!context.multiple) {\n disclosure.close();\n }\n }\n },\n );\n\n function focusOption(): void {\n context.setActiveDescendant(id);\n state.focus();\n }\n\n // I would really love to use createEffect but for some reason\n // the timing is never accurate\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n return mergeFunc(\n useEventListener(current, 'click', () => {\n if (!state.disabled()) {\n state.select();\n focusOption();\n if (!context.multiple) {\n disclosure.close();\n }\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n if (!state.disabled()) {\n focusOption();\n }\n }),\n useEventListener(current, 'mouseleave', () => {\n state.blur();\n }),\n useVirtualFocus(el => {\n if (el === current) {\n focusOption();\n }\n }),\n );\n }\n return undefined;\n });\n\n return createComponent(\n Button,\n merge(\n COMBOBOX_OPTION_TAG,\n createOwnerAttribute(context.controller.getId()),\n {\n id,\n get as() {\n return props.as || ('li' as T);\n },\n role: 'option',\n tabindex: -1,\n ref: setInternalRef,\n },\n createDisabledState(() => state.disabled()),\n createARIADisabledState(() => state.disabled()),\n createSelectedState(() => state.isSelected()),\n createARIASelectedState(() => state.isSelected()),\n createActiveState(() => state.isActive()),\n createMatchesState(() => state.matches()),\n omit(props, 'as', 'children', 'disabled', 'value', 'ref'),\n {\n get children() {\n return createComponent(AutocompleteOptionStateProvider, {\n state,\n get children() {\n return props.children;\n },\n });\n },\n },\n ) as ButtonProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { AutocompleteStateRenderProps } from '../../states/create-autocomplete-state';\nimport {\n AutocompleteStateChild,\n useAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { mergeFunc } from '../../utils/merge-func';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { waitForTransition } from '../../utils/wait-for-transition';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTIONS_TAG } from './tags';\n\nexport type ComboboxOptionsBaseProps<V> = Prettify<\n UnmountableProps & AutocompleteStateRenderProps<V>\n>;\n\nexport type ComboboxOptionsProps<\n V,\n T extends ValidComponent = 'ul',\n> = HeadlessPropsWithRef<T, ComboboxOptionsBaseProps<V>>;\n\nexport function ComboboxOptions<V, T extends ValidComponent = 'ul'>(\n props: ComboboxOptionsProps<V, T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxOptions');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n context.controller.setRef(current);\n return mergeFunc(\n () => {\n context.controller.clearRef();\n },\n useEventListener(current, 'focusin', () => {\n if (context.anchor) {\n context.anchor.focus();\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n context.optionsHovering = true;\n }),\n useEventListener(current, 'mouseleave', () => {\n context.optionsHovering = false;\n }),\n );\n }\n return undefined;\n });\n\n createEffect(\n () => !disclosureState.isOpen(),\n value => {\n if (value) {\n setInternalRef(undefined);\n }\n },\n );\n\n // TODO check timing\n createEffect(\n () => [internalRef(), disclosureState.isOpen()],\n ([current, flag]) => {\n if (current instanceof HTMLElement && flag) {\n waitForTransition(current).then(() => {\n if (autocompleteState.hasSelected()) {\n context.controller.setFirstChecked(SELECTED_NODE);\n } else {\n context.controller.setFirstChecked();\n }\n });\n }\n },\n );\n\n return createUnmountable(\n props,\n () => disclosureState.isOpen(),\n () =>\n createDynamic(\n () => props.as || ('ul' as T),\n merge(\n COMBOBOX_OPTIONS_TAG,\n {\n id: context.optionsID,\n role: 'listbox',\n 'aria-multiselectable': context.multiple,\n ref: setInternalRef,\n // TODO should Combobox support \"horizontal\"?\n 'aria-orientation': 'vertical',\n tabindex: -1,\n },\n createDisabledState(() => autocompleteState.disabled()),\n createARIADisabledState(() => autocompleteState.disabled()),\n createExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as', 'children', 'ref'),\n {\n get children() {\n return createComponent(AutocompleteStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n ) as ComponentProps<T>,\n ),\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.js","names":[],"sources":["../src/components/combobox/ComboboxContext.ts","../src/components/combobox/tags.ts","../src/components/combobox/Combobox.ts","../src/components/combobox/ComboboxInput.ts","../src/components/combobox/ComboboxLabel.ts","../src/components/combobox/ComboboxOption.ts","../src/components/combobox/ComboboxOptions.ts"],"sourcesContent":["import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\nimport { MATCHES_NODE } from '../../utils/namespace';\n\ninterface ComboboxContextData {\n multiple?: boolean;\n controller: FocusNavigator;\n inputID: string;\n labelID: string;\n optionsID: string;\n anchor?: HTMLElement | null;\n\n // TODO use triangle algorithm\n inputHovering: boolean;\n optionsHovering: boolean;\n\n getActiveDescendant(): string | undefined;\n setActiveDescendant(current: string | undefined): void;\n getSelectedDescendant(): string | undefined;\n setSelectedDescendant(current: string | undefined): void;\n}\n\nexport const ComboboxContext = createContext<ComboboxContextData>();\n\nexport function useComboboxContext(componentName: string): ComboboxContextData {\n const context = useContext(ComboboxContext);\n assert(\n context,\n new Error(`<${componentName}> must be used inside a <Combobox>`),\n );\n return context;\n}\n\nexport function createComboboxOptionFocusNavigator(): FocusNavigator {\n return new FocusNavigator(createUniqueId(), {\n virtual: true,\n base: MATCHES_NODE,\n });\n}\n","import { createTag } from '../../utils/namespace';\n\nexport const COMBOBOX_TAG = createTag('combobox');\nexport const COMBOBOX_INPUT_TAG = createTag('combobox-input');\nexport const COMBOBOX_OPTIONS_TAG = createTag('combobox-options');\nexport const COMBOBOX_OPTION_TAG = createTag('combobox-option');\nexport const COMBOBOX_LABEL_TAG = createTag('combobox-label');\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n MultipleAutocompleteStateControlledOptions,\n MultipleAutocompleteStateUncontrolledOptions,\n SingleAutocompleteStateControlledOptions,\n SingleAutocompleteStateUncontrolledOptions,\n} from '../../states/create-autocomplete-state';\nimport {\n AutocompleteStateProvider,\n createMultipleAutocompleteState,\n createSingleAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport type {\n DisclosureStateControlledOptions,\n DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n createDisclosureState,\n DisclosureStateProvider,\n} from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport {\n ComboboxContext,\n createComboboxOptionFocusNavigator,\n} from './ComboboxContext';\nimport { COMBOBOX_TAG } from './tags';\n\nexport interface ComboboxBaseProps {\n onDisclosureChange?: (value: boolean) => void;\n}\n\nexport interface ComboboxMultipleBaseProps<V> {\n onSelectChange?: (value: V[]) => void;\n}\n\nexport interface ComboboxSingleBaseProps<V> {\n onSelectChange?: (value?: V) => void;\n}\n\n// SCSCD = Single, Controlled Select, Controlled Disclosure\nexport type ComboboxSCSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSCSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSCSCDBaseProps<V>>;\n\n// SCSCD = Single, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxSCSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSCSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSCSUDBaseProps<V>>;\n\n// SCSCD = Single, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxSUSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSUSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSUSCDBaseProps<V>>;\n\n// SCSCD = Single, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxSUSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxSingleBaseProps<V> &\n Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxSUSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxSUSUDBaseProps<V>>;\n\nexport type ComboboxSingleProps<V, T extends ValidComponent = 'div'> =\n | ComboboxSCSCDProps<V, T>\n | ComboboxSCSUDProps<V, T>\n | ComboboxSUSCDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\n// MCSCD = Multiple, Controlled Select, Controlled Disclosure\nexport type ComboboxMCSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMCSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMCSCDBaseProps<V>>;\n\n// MCSCD = Multiple, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxMCSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMCSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMCSUDBaseProps<V>>;\n\n// MCSCD = Multiple, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxMUSCDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateControlledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMUSCDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMUSCDBaseProps<V>>;\n\n// MCSCD = Multiple, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxMUSUDBaseProps<V> = Prettify<\n ComboboxBaseProps &\n ComboboxMultipleBaseProps<V> &\n Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n children?: JSX.Element;\n }\n>;\n\nexport type ComboboxMUSUDProps<\n V,\n T extends ValidComponent = 'div',\n> = HeadlessProps<T, ComboboxMUSUDBaseProps<V>>;\n\nexport type ComboboxMultipleProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMCSCDProps<V, T>\n | ComboboxMCSUDProps<V, T>\n | ComboboxMUSCDProps<V, T>\n | ComboboxMUSUDProps<V, T>;\n\ntype ComboboxSelectUncontrolledProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMUSCDProps<V, T>\n | ComboboxMUSUDProps<V, T>\n | ComboboxSUSCDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\ntype ComboboxDisclosureUncontrolledProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMCSUDProps<V, T>\n | ComboboxMUSUDProps<V, T>\n | ComboboxSCSUDProps<V, T>\n | ComboboxSUSUDProps<V, T>;\n\nexport type ComboboxProps<V, T extends ValidComponent = 'div'> =\n | ComboboxMultipleProps<V, T>\n | ComboboxSingleProps<V, T>;\n\nfunction isComboboxMultiple<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxMultipleProps<V, T> {\n return !!props.multiple;\n}\n\nfunction isComboboxSelectUncontrolled<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxSelectUncontrolledProps<V, T> {\n return 'defaultValue' in props;\n}\n\nfunction isComboboxDisclosureUncontrolled<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): props is ComboboxDisclosureUncontrolledProps<V, T> {\n return 'defaultOpen' in props;\n}\n\nfunction getProps<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): ComponentProps<T> {\n if (isComboboxSelectUncontrolled(props)) {\n if (isComboboxDisclosureUncontrolled(props)) {\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultOpen',\n 'defaultValue',\n 'disabled',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n ) as ComponentProps<T>;\n }\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultValue',\n 'disabled',\n 'isOpen',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n ) as ComponentProps<T>;\n }\n if (isComboboxDisclosureUncontrolled(props)) {\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'defaultOpen',\n 'disabled',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n 'value',\n ) as ComponentProps<T>;\n }\n return omit(\n props,\n 'as',\n 'by',\n 'children',\n 'disabled',\n 'isOpen',\n 'matchBy',\n 'multiple',\n 'onClose',\n 'onDisclosureChange',\n 'onOpen',\n 'onSelectChange',\n 'toggleable',\n 'value',\n ) as ComponentProps<T>;\n}\n\nexport function Combobox<V, T extends ValidComponent = 'div'>(\n props: ComboboxProps<V, T>,\n): JSX.Element {\n return createMemo(() => {\n const labelID = createUniqueId();\n const inputID = createUniqueId();\n const optionsID = createUniqueId();\n\n const disclosureState = createDisclosureState(\n merge(props, {\n onChange(value: boolean) {\n if (props.onDisclosureChange) {\n props.onDisclosureChange(value);\n }\n },\n }),\n );\n\n const autocompleteState = isComboboxMultiple(props)\n ? createMultipleAutocompleteState(\n merge(props, {\n onChange(value: V[]) {\n if (props.onSelectChange) {\n props.onSelectChange(value);\n }\n },\n }),\n )\n : createSingleAutocompleteState(\n merge(props, {\n onChange(value?: V) {\n if (props.onSelectChange) {\n props.onSelectChange(value);\n }\n },\n }),\n );\n\n const controller = createComboboxOptionFocusNavigator();\n const [activeDescendant, setActiveDescendant] = createSignal<string>();\n const [selectedDescendant, setSelectedDescendant] = createSignal<\n string | undefined\n >(undefined, {\n equals: false,\n });\n\n createEffect(\n () => !autocompleteState.hasActive(),\n value => {\n if (value) {\n setActiveDescendant(undefined);\n }\n },\n );\n\n return createComponent(ComboboxContext, {\n value: {\n get multiple() {\n return props.multiple;\n },\n labelID,\n inputID,\n optionsID,\n controller,\n inputHovering: false,\n optionsHovering: false,\n getActiveDescendant: activeDescendant,\n setActiveDescendant,\n getSelectedDescendant: selectedDescendant,\n setSelectedDescendant,\n },\n get children() {\n return createComponent(AutocompleteStateProvider, {\n state: autocompleteState,\n get children() {\n return createComponent(DisclosureStateProvider, {\n state: disclosureState,\n get children() {\n return createDynamic(\n () => props.as || 'div',\n merge(\n COMBOBOX_TAG,\n {\n 'aria-labelledby': labelID,\n get children() {\n return props.children;\n },\n },\n createDisabledState(() => autocompleteState.disabled()),\n createARIADisabledState(() => autocompleteState.disabled()),\n createHasSelectedState(() =>\n autocompleteState.hasSelected(),\n ),\n createHasActiveState(() => autocompleteState.hasActive()),\n createExpandedState(() => disclosureState.isOpen()),\n getProps(props),\n ) as ComponentProps<T>,\n );\n },\n });\n },\n });\n },\n });\n }) as unknown as JSX.Element;\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createEffect, merge, omit } from 'solid-js';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { mergeFunc } from '../../utils/merge-func';\nimport {\n createARIADisabledState,\n createARIAExpandedState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { COMMAND_INPUT_TAG } from '../command/tags';\nimport { useComboboxContext } from './ComboboxContext';\n\nexport type ComboboxInputProps<T extends ValidComponent = 'input'> =\n HeadlessPropsWithRef<T>;\n\nexport function ComboboxInput<T extends ValidComponent = 'input'>(\n props: ComboboxInputProps<T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxInput');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n const isDisabled = (): boolean | undefined =>\n autocompleteState.disabled() || props.disabled;\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n context.anchor = current;\n context.inputHovering = false;\n\n return mergeFunc(\n current instanceof HTMLInputElement &&\n useEventListener(current, 'input', () => {\n if (!isDisabled()) {\n autocompleteState.setQuery(current.value);\n }\n }),\n useEventListener(current, 'keydown', e => {\n if (!isDisabled()) {\n switch (e.key) {\n case 'Escape': {\n disclosureState.close();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.controller.setPrevChecked(true);\n } else {\n disclosureState.open();\n }\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.controller.setNextChecked(true);\n } else {\n disclosureState.open();\n }\n break;\n }\n case 'Enter': {\n e.preventDefault();\n if (disclosureState.isOpen()) {\n context.setSelectedDescendant(context.getActiveDescendant());\n }\n break;\n }\n default:\n break;\n }\n }\n }),\n useEventListener(current, 'click', () => {\n if (!isDisabled()) {\n disclosureState.toggle();\n }\n }),\n useEventListener(current, 'blur', e => {\n console.log(context.inputHovering, context.optionsHovering);\n if (context.inputHovering || context.optionsHovering) {\n return;\n }\n autocompleteState.blur();\n if (!(e.relatedTarget && current.contains(e.relatedTarget as Node))) {\n disclosureState.close();\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n context.inputHovering = true;\n }),\n useEventListener(current, 'mouseleave', () => {\n context.inputHovering = false;\n }),\n () => {\n context.inputHovering = false;\n },\n );\n }\n return undefined;\n });\n\n createEffect(\n () => autocompleteState.query(),\n query => {\n if (query !== '') {\n if (disclosureState.isOpen()) {\n context.controller.setFirstChecked();\n } else {\n disclosureState.open();\n }\n }\n },\n );\n\n createEffect(\n () => context.getActiveDescendant(),\n activeDescendant => {\n if (activeDescendant) {\n const current = document.getElementById(activeDescendant);\n if (current) {\n context.controller.setCurrent(current);\n }\n }\n },\n );\n\n return createDynamic(\n () => props.as || ('input' as T),\n merge(\n COMMAND_INPUT_TAG,\n {\n id: context.inputID,\n ref: setInternalRef,\n // Guarantee it's a text\n type: 'text',\n // Guarantee it's interactive\n tabindex: 0,\n role: 'combobox',\n\n // Controls the options listbox\n 'aria-haspopup': 'listbox',\n 'aria-controls': context.optionsID,\n 'aria-labelledby': context.labelID,\n\n get 'aria-expanded'() {\n return disclosureState.isOpen();\n },\n get 'aria-activedescendant'() {\n return context.getActiveDescendant();\n },\n },\n createDisabledState(isDisabled),\n createARIADisabledState(isDisabled),\n createExpandedState(() => disclosureState.isOpen()),\n createARIAExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as', 'ref'),\n ) as ComponentProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { merge, omit } from 'solid-js';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessProps } from '../../utils/dynamic-prop';\nimport {\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_LABEL_TAG } from './tags';\n\nexport type ComboboxLabelProps<T extends ValidComponent = 'label'> =\n HeadlessProps<T>;\n\nexport function ComboboxLabel<T extends ValidComponent = 'label'>(\n props: ComboboxLabelProps<T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxLabel');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n\n return createDynamic(\n () => props.as || ('label' as T),\n merge(\n COMBOBOX_LABEL_TAG,\n {\n id: context.labelID,\n },\n createDisabledState(() => autocompleteState.disabled()),\n createExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as'),\n ) as ComponentProps<T>,\n );\n}\n","import type { JSX, ValidComponent } from 'solid-js';\nimport {\n createComponent,\n createEffect,\n createUniqueId,\n merge,\n omit,\n} from 'solid-js';\nimport type {\n AutocompleteOptionStateOptions,\n AutocompleteOptionStateRenderProps,\n} from '../../states/create-autocomplete-option-state';\nimport {\n AutocompleteOptionStateProvider,\n createAutocompleteOptionState,\n} from '../../states/create-autocomplete-option-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport { mergeFunc } from '../../utils/merge-func';\nimport {\n createActiveState,\n createARIADisabledState,\n createARIASelectedState,\n createDisabledState,\n createMatchesState,\n createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useVirtualFocus } from '../../utils/virtual-focus';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTION_TAG } from './tags';\n\nexport type ComboboxOptionBaseProps<V> = Prettify<\n AutocompleteOptionStateOptions<V> & AutocompleteOptionStateRenderProps\n>;\n\nexport type ComboboxOptionProps<\n V,\n T extends ValidComponent = 'li',\n> = HeadlessPropsWithRef<\n T,\n OmitAndMerge<ComboboxOptionBaseProps<V>, ButtonProps<T>>\n>;\n\nexport function ComboboxOption<V, T extends ValidComponent = 'li'>(\n props: ComboboxOptionProps<V, T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxOptions');\n const disclosure = useDisclosureState();\n const state = createAutocompleteOptionState(props);\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n const id = createUniqueId();\n\n createEffect(\n () => !state.disabled() && context.getSelectedDescendant() === id,\n value => {\n if (value) {\n state.select();\n if (!context.multiple) {\n disclosure.close();\n }\n }\n },\n );\n\n function focusOption(): void {\n context.setActiveDescendant(id);\n state.focus();\n }\n\n // I would really love to use createEffect but for some reason\n // the timing is never accurate\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n return mergeFunc(\n useEventListener(current, 'click', () => {\n if (!state.disabled()) {\n state.select();\n focusOption();\n if (!context.multiple) {\n disclosure.close();\n }\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n if (!state.disabled()) {\n focusOption();\n }\n }),\n useEventListener(current, 'mouseleave', () => {\n state.blur();\n }),\n useVirtualFocus(el => {\n if (el === current) {\n focusOption();\n }\n }),\n );\n }\n return undefined;\n });\n\n return createComponent(\n Button,\n merge(\n COMBOBOX_OPTION_TAG,\n createOwnerAttribute(context.controller.getId()),\n {\n id,\n get as() {\n return props.as || ('li' as T);\n },\n role: 'option',\n tabindex: -1,\n ref: setInternalRef,\n },\n createDisabledState(() => state.disabled()),\n createARIADisabledState(() => state.disabled()),\n createSelectedState(() => state.isSelected()),\n createARIASelectedState(() => state.isSelected()),\n createActiveState(() => state.isActive()),\n createMatchesState(() => state.matches()),\n omit(props, 'as', 'children', 'disabled', 'value', 'ref'),\n {\n get children() {\n return createComponent(AutocompleteOptionStateProvider, {\n state,\n get children() {\n return props.children;\n },\n });\n },\n },\n ) as ButtonProps<T>,\n );\n}\n","import { createDynamic } from '@solidjs/web';\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js';\nimport { createComponent, createEffect, merge, omit } from 'solid-js';\nimport type { AutocompleteStateRenderProps } from '../../states/create-autocomplete-state';\nimport {\n AutocompleteStateChild,\n useAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport { createDependencyList } from '../../utils/create-dependency-list';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { HeadlessPropsWithRef } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { mergeFunc } from '../../utils/merge-func';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n createARIADisabledState,\n createDisabledState,\n createExpandedState,\n createHasActiveState,\n createHasQueryState,\n createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { waitForTransition } from '../../utils/wait-for-transition';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTIONS_TAG } from './tags';\n\nexport type ComboboxOptionsBaseProps<V> = Prettify<\n UnmountableProps & AutocompleteStateRenderProps<V>\n>;\n\nexport type ComboboxOptionsProps<\n V,\n T extends ValidComponent = 'ul',\n> = HeadlessPropsWithRef<T, ComboboxOptionsBaseProps<V>>;\n\nexport function ComboboxOptions<V, T extends ValidComponent = 'ul'>(\n props: ComboboxOptionsProps<V, T>,\n): JSX.Element {\n const context = useComboboxContext('ComboboxOptions');\n const autocompleteState = useAutocompleteState();\n const disclosureState = useDisclosureState();\n\n const [internalRef, setInternalRef] = createForwardRef(props);\n\n createEffect(internalRef, current => {\n if (current instanceof HTMLElement) {\n context.controller.setRef(current);\n context.optionsHovering = false;\n return mergeFunc(\n () => {\n context.controller.clearRef();\n },\n useEventListener(current, 'focusin', () => {\n if (context.anchor) {\n context.anchor.focus();\n }\n }),\n useEventListener(current, 'mouseenter', () => {\n context.optionsHovering = true;\n }),\n useEventListener(current, 'mouseleave', () => {\n context.optionsHovering = false;\n }),\n () => {\n context.optionsHovering = false;\n },\n );\n }\n return undefined;\n });\n\n createEffect(\n () => !disclosureState.isOpen(),\n value => {\n if (value) {\n setInternalRef(undefined);\n }\n },\n );\n\n // TODO check timing\n createEffect(\n createDependencyList(\n () => [internalRef(), disclosureState.isOpen()] as const,\n ),\n ([current, flag]) => {\n if (current instanceof HTMLElement && flag) {\n waitForTransition(current).then(() => {\n if (autocompleteState.hasSelected()) {\n context.controller.setFirstChecked(SELECTED_NODE);\n } else {\n context.controller.setFirstChecked();\n }\n });\n }\n },\n );\n\n return createUnmountable(\n props,\n () => disclosureState.isOpen(),\n () =>\n createDynamic(\n () => props.as || ('ul' as T),\n merge(\n COMBOBOX_OPTIONS_TAG,\n {\n id: context.optionsID,\n role: 'listbox',\n 'aria-multiselectable': context.multiple,\n ref: setInternalRef,\n // TODO should Combobox support \"horizontal\"?\n 'aria-orientation': 'vertical',\n tabindex: -1,\n },\n createDisabledState(() => autocompleteState.disabled()),\n createARIADisabledState(() => autocompleteState.disabled()),\n createExpandedState(() => disclosureState.isOpen()),\n createHasSelectedState(() => autocompleteState.hasSelected()),\n createHasActiveState(() => autocompleteState.hasActive()),\n createHasQueryState(() => autocompleteState.hasQuery()),\n omit(props, 'as', 'children', 'ref'),\n {\n get children() {\n return createComponent(AutocompleteStateChild, {\n get children() {\n return props.children;\n },\n });\n },\n },\n ) as ComponentProps<T>,\n ),\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-BXiVOsNr.js";
2
- import { t as UnmountableProps } from "./create-unmountable-BN8SuFZm.js";
3
- import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-BjJp24Q-.js";
1
+ import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-Bjg5U8KQ.js";
2
+ import { t as UnmountableProps } from "./create-unmountable-BndAmhNP.js";
3
+ import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-3Tpy7mys.js";
4
4
  import { JSX, ValidComponent } from "solid-js";
5
5
 
6
6
  //#region src/components/command-bar/CommandBar.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"command-bar.d.ts","names":[],"sources":["../src/components/command-bar/CommandBar.ts","../src/components/command-bar/CommandBarDescription.ts","../src/components/command-bar/CommandBarOverlay.ts","../src/components/command-bar/CommandBarPanel.ts","../src/components/command-bar/CommandBarTitle.ts"],"mappings":";;;;;;KAgCY,6BAAA,GAAgC,QAAA,CAC1C,gCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,yBAAA,WAAoC,cAAA,YAC9C,aAAA,CAAc,CAAA,EAAG,6BAAA;AAAA,KAEP,+BAAA,GAAkC,QAAA,CAC5C,kCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,2BAAA,WAAsC,cAAA,YAChD,aAAA,CAAc,CAAA,EAAG,+BAAA;AAAA,KAEP,eAAA,WAA0B,cAAA,YAClC,yBAAA,CAA0B,CAAA,IAC1B,2BAAA,CAA4B,CAAA;AAAA,iBAQhB,UAAA,WAAqB,cAAA,SAAA,CACnC,KAAA,EAAO,eAAA,CAAgB,CAAA,IACtB,GAAA,CAAI,OAAA;;;KC9CK,0BAAA,WAAqC,cAAA,UAC/C,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,qBAAA,WAAgC,cAAA,OAAA,CAC9C,KAAA,EAAO,0BAAA,CAA2B,CAAA,IACjC,GAAA,CAAI,OAAA;;;KCHK,sBAAA,WAAiC,cAAA,YAC3C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,iBAAA,WAA4B,cAAA,OAAA,CAC1C,KAAA,EAAO,sBAAA,CAAuB,CAAA,IAC7B,GAAA,CAAI,OAAA;;;KCFK,oBAAA,WAA+B,cAAA,YACzC,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,eAAA,WAA0B,cAAA,SAAA,CACxC,KAAA,EAAO,oBAAA,CAAqB,CAAA,IAC3B,GAAA,CAAI,OAAA;;;KCVK,oBAAA,WAA+B,cAAA,WACzC,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,eAAA,WAA0B,cAAA,QAAA,CACxC,KAAA,EAAO,oBAAA,CAAqB,CAAA,IAC3B,GAAA,CAAI,OAAA"}
1
+ {"version":3,"file":"command-bar.d.ts","names":[],"sources":["../src/components/command-bar/CommandBar.ts","../src/components/command-bar/CommandBarDescription.ts","../src/components/command-bar/CommandBarOverlay.ts","../src/components/command-bar/CommandBarPanel.ts","../src/components/command-bar/CommandBarTitle.ts"],"mappings":";;;;;;KAgCY,6BAAA,GAAgC,QAAA,CAC1C,gCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,yBAAA,WAAoC,cAAA,YAC9C,aAAA,CAAc,CAAA,EAAG,6BAAA;AAAA,KAEP,+BAAA,GAAkC,QAAA,CAC5C,kCAAA,GACE,0BAAA,GACA,gBAAA;AAAA,KAGQ,2BAAA,WAAsC,cAAA,YAChD,aAAA,CAAc,CAAA,EAAG,+BAAA;AAAA,KAEP,eAAA,WAA0B,cAAA,YAClC,yBAAA,CAA0B,CAAA,IAC1B,2BAAA,CAA4B,CAAA;AAAA,iBAQhB,UAAA,WAAqB,cAAA,SAAA,CACnC,KAAA,EAAO,eAAA,CAAgB,CAAA,IACtB,GAAA,CAAI,OAAA;;;KC9CK,0BAAA,WAAqC,cAAA,UAC/C,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,qBAAA,WAAgC,cAAA,OAAA,CAC9C,KAAA,EAAO,0BAAA,CAA2B,CAAA,IACjC,GAAA,CAAI,OAAA;;;KCHK,sBAAA,WAAiC,cAAA,YAC3C,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,iBAAA,WAA4B,cAAA,OAAA,CAC1C,KAAA,EAAO,sBAAA,CAAuB,CAAA,IAC7B,GAAA,CAAI,OAAA;;;KCDK,oBAAA,WAA+B,cAAA,YACzC,oBAAA,CAAqB,CAAA,EAAG,0BAAA;AAAA,iBAEV,eAAA,WAA0B,cAAA,SAAA,CACxC,KAAA,EAAO,oBAAA,CAAqB,CAAA,IAC3B,GAAA,CAAI,OAAA;;;KCXK,oBAAA,WAA+B,cAAA,WACzC,aAAA,CAAc,CAAA,EAAG,0BAAA;AAAA,iBAEH,eAAA,WAA0B,cAAA,QAAA,CACxC,KAAA,EAAO,oBAAA,CAAqB,CAAA,IAC3B,GAAA,CAAI,OAAA"}
@@ -7,7 +7,8 @@ import { i as createTag } from "./namespace-BNSl8VB1.js";
7
7
  import { t as createUnmountable } from "./create-unmountable-BA-xISc6.js";
8
8
  import { i as useDisclosureState, n as DisclosureStateProvider, r as createDisclosureState, t as DisclosureStateChild } from "./create-disclosure-state-DvrsDbX_.js";
9
9
  import { t as useFocusStartPoint } from "./use-focus-start-point-DzHdmdUG.js";
10
- import { t as waitForTransition } from "./wait-for-transition-2M-Jo4Cq.js";
10
+ import { t as createDependencyList } from "./create-dependency-list-m97ANAoA.js";
11
+ import { t as waitForTransition } from "./wait-for-transition-DS5jK6Gv.js";
11
12
  import { createDynamic } from "@solidjs/web";
12
13
  import { createComponent, createContext, createEffect, createUniqueId, merge, omit, onSettled, useContext } from "solid-js";
13
14
  //#region src/components/command-bar/CommandBarContext.ts
@@ -112,7 +113,7 @@ function CommandBarPanel(props) {
112
113
  const context = useCommandBarContext("CommandBarPanel");
113
114
  const state = useDisclosureState();
114
115
  const [internalRef, setInternalRef] = createForwardRef(props);
115
- createEffect(() => [internalRef(), state.isOpen()], ([current, isOpen]) => {
116
+ createEffect(createDependencyList(() => [internalRef(), state.isOpen()]), ([current, isOpen]) => {
116
117
  if (current instanceof HTMLElement) {
117
118
  if (isOpen) {
118
119
  waitForTransition(current).then(() => {