terracotta 2.0.0-next.2 → 2.0.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.d.ts +4 -4
- package/dist/alert-dialog.d.ts +3 -3
- package/dist/alert-dialog.d.ts.map +1 -1
- package/dist/alert-dialog.js +2 -1
- package/dist/alert-dialog.js.map +1 -1
- package/dist/alert.d.ts +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/checkbox.d.ts +2 -2
- package/dist/checkbox.js +1 -1
- package/dist/combobox.d.ts +6 -6
- package/dist/combobox.d.ts.map +1 -1
- package/dist/combobox.js +15 -7
- package/dist/combobox.js.map +1 -1
- package/dist/command-bar.d.ts +3 -3
- package/dist/command-bar.d.ts.map +1 -1
- package/dist/command-bar.js +3 -2
- package/dist/command-bar.js.map +1 -1
- package/dist/command.d.ts +4 -4
- package/dist/command.js +6 -3
- package/dist/command.js.map +1 -1
- package/dist/context-menu.d.ts +3 -3
- package/dist/context-menu.d.ts.map +1 -1
- package/dist/context-menu.js +3 -2
- package/dist/context-menu.js.map +1 -1
- package/dist/{create-autocomplete-option-state-DOc_JXd8.d.ts → create-autocomplete-option-state-BvuqrZcm.d.ts} +1 -1
- package/dist/{create-autocomplete-option-state-DOc_JXd8.d.ts.map → create-autocomplete-option-state-BvuqrZcm.d.ts.map} +1 -1
- package/dist/{create-autocomplete-option-state-IiLdhCUt.js → create-autocomplete-option-state-Q9WDo3l_.js} +2 -2
- package/dist/{create-autocomplete-option-state-IiLdhCUt.js.map → create-autocomplete-option-state-Q9WDo3l_.js.map} +1 -1
- package/dist/{create-autocomplete-state-3KnrcfFZ.d.ts → create-autocomplete-state-BM_omktY.d.ts} +1 -1
- package/dist/{create-autocomplete-state-3KnrcfFZ.d.ts.map → create-autocomplete-state-BM_omktY.d.ts.map} +1 -1
- package/dist/{create-autocomplete-state-BdRcsVdD.js → create-autocomplete-state-Bjlghg6V.js} +1 -1
- package/dist/{create-autocomplete-state-BdRcsVdD.js.map → create-autocomplete-state-Bjlghg6V.js.map} +1 -1
- package/dist/{create-check-state-VhSIb3pa.js → create-check-state-BfsP3AXV.js} +1 -1
- package/dist/{create-check-state-VhSIb3pa.js.map → create-check-state-BfsP3AXV.js.map} +1 -1
- package/dist/{create-check-state-Coo9xbiw.d.ts → create-check-state-CnHLcl4i.d.ts} +1 -1
- package/dist/{create-check-state-Coo9xbiw.d.ts.map → create-check-state-CnHLcl4i.d.ts.map} +1 -1
- package/dist/create-dependency-list-m97ANAoA.js +14 -0
- package/dist/create-dependency-list-m97ANAoA.js.map +1 -0
- package/dist/{create-disclosure-state-BjJp24Q-.d.ts → create-disclosure-state-KgGBmcBm.d.ts} +1 -1
- package/dist/{create-disclosure-state-BjJp24Q-.d.ts.map → create-disclosure-state-KgGBmcBm.d.ts.map} +1 -1
- package/dist/{create-select-option-state-ZfKnDc6r.d.ts → create-select-option-state-BvZB8Y6v.d.ts} +1 -1
- package/dist/{create-select-option-state-ZfKnDc6r.d.ts.map → create-select-option-state-BvZB8Y6v.d.ts.map} +1 -1
- package/dist/{create-toggle-state-Jr1hhice.js → create-toggle-state-BDIRlqKW.js} +1 -1
- package/dist/{create-toggle-state-Jr1hhice.js.map → create-toggle-state-BDIRlqKW.js.map} +1 -1
- package/dist/{create-toggle-state-efdeSHNT.d.ts → create-toggle-state-DNiUQJnR.d.ts} +1 -1
- package/dist/{create-toggle-state-efdeSHNT.d.ts.map → create-toggle-state-DNiUQJnR.d.ts.map} +1 -1
- package/dist/create-transition-state-C5t74CCP.d.ts +39 -0
- package/dist/create-transition-state-C5t74CCP.d.ts.map +1 -0
- package/dist/create-transition-state-Ce8QK2Gk.js +89 -0
- package/dist/create-transition-state-Ce8QK2Gk.js.map +1 -0
- package/dist/{create-type-ahead-DofYDmD3.js → create-type-ahead-DlDn2zHV.js} +1 -1
- package/dist/{create-type-ahead-DofYDmD3.js.map → create-type-ahead-DlDn2zHV.js.map} +1 -1
- package/dist/{create-unmountable-BN8SuFZm.d.ts → create-unmountable-BdP4cv3v.d.ts} +1 -1
- package/dist/create-unmountable-BdP4cv3v.d.ts.map +1 -0
- package/dist/dialog.d.ts +3 -3
- package/dist/dialog.d.ts.map +1 -1
- package/dist/dialog.js +3 -2
- package/dist/dialog.js.map +1 -1
- package/dist/disclosure.d.ts +4 -4
- package/dist/{dynamic-prop-BXiVOsNr.d.ts → dynamic-prop-3i6ROoNE.d.ts} +1 -1
- package/dist/{dynamic-prop-BXiVOsNr.d.ts.map → dynamic-prop-3i6ROoNE.d.ts.map} +1 -1
- package/dist/feed.d.ts +1 -1
- package/dist/{index-BRrO30DW.d.ts → index-DJLl0cnE.d.ts} +2 -2
- package/dist/{index-BRrO30DW.d.ts.map → index-DJLl0cnE.d.ts.map} +1 -1
- package/dist/listbox.d.ts +5 -5
- package/dist/listbox.d.ts.map +1 -1
- package/dist/listbox.js +8 -4
- package/dist/listbox.js.map +1 -1
- package/dist/menu.d.ts +1 -1
- package/dist/menu.js +1 -1
- package/dist/popover.d.ts +4 -4
- package/dist/popover.d.ts.map +1 -1
- package/dist/popover.js +7 -3
- package/dist/popover.js.map +1 -1
- package/dist/radio-group.d.ts +2 -2
- package/dist/select.d.ts +3 -3
- package/dist/select.js +1 -1
- package/dist/states.d.ts +7 -6
- package/dist/states.d.ts.map +1 -1
- package/dist/states.js +5 -4
- package/dist/states.js.map +1 -1
- package/dist/tabs.d.ts +2 -2
- package/dist/toast.d.ts +1 -1
- package/dist/toggle.d.ts +3 -3
- package/dist/toggle.js +1 -1
- package/dist/toolbar.d.ts +1 -1
- package/dist/transition.d.ts +4 -7
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +81 -95
- package/dist/transition.js.map +1 -1
- package/dist/{wait-for-transition-2M-Jo4Cq.js → wait-for-transition-DS5jK6Gv.js} +1 -1
- package/dist/wait-for-transition-DS5jK6Gv.js.map +1 -0
- package/package.json +1 -1
- package/src/components/alert-dialog/AlertDialogPanel.ts +2 -1
- package/src/components/combobox/ComboboxInput.ts +6 -1
- package/src/components/combobox/ComboboxOptions.ts +8 -1
- package/src/components/command/CommandOptions.ts +4 -0
- package/src/components/command-bar/CommandBarPanel.ts +2 -1
- package/src/components/context-menu/ContextMenuPanel.ts +2 -1
- package/src/components/dialog/DialogPanel.ts +2 -1
- package/src/components/listbox/ListboxButton.ts +4 -0
- package/src/components/listbox/ListboxOptions.ts +2 -1
- package/src/components/popover/PopoverButton.ts +4 -0
- package/src/components/popover/PopoverPanel.ts +2 -1
- package/src/components/transition/index.ts +126 -160
- package/src/states/create-transition-state.ts +159 -0
- package/src/states/index.ts +6 -0
- package/src/utils/create-dependency-list.ts +21 -0
- package/src/utils/wait-for-transition.ts +1 -3
- package/dist/create-unmountable-BN8SuFZm.d.ts.map +0 -1
- package/dist/wait-for-transition-2M-Jo4Cq.js.map +0 -1
package/dist/accordion.d.ts
CHANGED
|
@@ -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-
|
|
2
|
-
import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-
|
|
3
|
-
import { n as ButtonProps } from "./index-
|
|
4
|
-
import { t as UnmountableProps } from "./create-unmountable-
|
|
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-BvZB8Y6v.js";
|
|
2
|
+
import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-3i6ROoNE.js";
|
|
3
|
+
import { n as ButtonProps } from "./index-DJLl0cnE.js";
|
|
4
|
+
import { t as UnmountableProps } from "./create-unmountable-BdP4cv3v.js";
|
|
5
5
|
import { JSX, ValidComponent } from "solid-js";
|
|
6
6
|
|
|
7
7
|
//#region src/components/accordion/Accordion.d.ts
|
package/dist/alert-dialog.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-
|
|
2
|
-
import { t as UnmountableProps } from "./create-unmountable-
|
|
3
|
-
import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-
|
|
1
|
+
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-3i6ROoNE.js";
|
|
2
|
+
import { t as UnmountableProps } from "./create-unmountable-BdP4cv3v.js";
|
|
3
|
+
import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-KgGBmcBm.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;;;
|
|
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"}
|
package/dist/alert-dialog.js
CHANGED
|
@@ -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);
|
package/dist/alert-dialog.js.map
CHANGED
|
@@ -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
package/dist/button.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ButtonProps, t as Button } from "./index-
|
|
1
|
+
import { n as ButtonProps, t as Button } from "./index-DJLl0cnE.js";
|
|
2
2
|
export { Button, ButtonProps };
|
package/dist/checkbox.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-
|
|
2
|
-
import { a as CheckStateRenderProps, n as CheckStateControlledOptions, o as CheckStateUncontrolledOptions } from "./create-check-state-
|
|
1
|
+
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-3i6ROoNE.js";
|
|
2
|
+
import { a as CheckStateRenderProps, n as CheckStateControlledOptions, o as CheckStateUncontrolledOptions } from "./create-check-state-CnHLcl4i.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-
|
|
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
|
package/dist/combobox.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-
|
|
2
|
-
import { n as ButtonProps } from "./index-
|
|
3
|
-
import { t as UnmountableProps } from "./create-unmountable-
|
|
4
|
-
import { n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-
|
|
5
|
-
import { i as MultipleAutocompleteStateControlledOptions, l as SingleAutocompleteStateUncontrolledOptions, o as MultipleAutocompleteStateUncontrolledOptions, r as AutocompleteStateRenderProps, s as SingleAutocompleteStateControlledOptions } from "./create-autocomplete-state-
|
|
6
|
-
import { n as AutocompleteOptionStateRenderProps, t as AutocompleteOptionStateOptions } from "./create-autocomplete-option-state-
|
|
1
|
+
import { i as Prettify, n as HeadlessPropsWithRef, r as OmitAndMerge, t as HeadlessProps } from "./dynamic-prop-3i6ROoNE.js";
|
|
2
|
+
import { n as ButtonProps } from "./index-DJLl0cnE.js";
|
|
3
|
+
import { t as UnmountableProps } from "./create-unmountable-BdP4cv3v.js";
|
|
4
|
+
import { n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-KgGBmcBm.js";
|
|
5
|
+
import { i as MultipleAutocompleteStateControlledOptions, l as SingleAutocompleteStateUncontrolledOptions, o as MultipleAutocompleteStateUncontrolledOptions, r as AutocompleteStateRenderProps, s as SingleAutocompleteStateControlledOptions } from "./create-autocomplete-state-BM_omktY.js";
|
|
6
|
+
import { n as AutocompleteOptionStateRenderProps, t as AutocompleteOptionStateOptions } from "./create-autocomplete-option-state-BvuqrZcm.js";
|
|
7
7
|
import { JSX, ValidComponent } from "solid-js";
|
|
8
8
|
|
|
9
9
|
//#region src/components/combobox/Combobox.d.ts
|
package/dist/combobox.d.ts.map
CHANGED
|
@@ -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 {
|
|
13
|
-
import { n as
|
|
14
|
-
import { t as
|
|
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
|
-
|
|
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();
|
package/dist/combobox.js.map
CHANGED
|
@@ -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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"}
|
package/dist/command-bar.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-
|
|
2
|
-
import { t as UnmountableProps } from "./create-unmountable-
|
|
3
|
-
import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-
|
|
1
|
+
import { i as Prettify, n as HeadlessPropsWithRef, t as HeadlessProps } from "./dynamic-prop-3i6ROoNE.js";
|
|
2
|
+
import { t as UnmountableProps } from "./create-unmountable-BdP4cv3v.js";
|
|
3
|
+
import { a as DisclosureStateRenderProps, n as DisclosureStateControlledOptions, o as DisclosureStateUncontrolledOptions } from "./create-disclosure-state-KgGBmcBm.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;;;
|
|
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"}
|
package/dist/command-bar.js
CHANGED
|
@@ -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
|
|
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(() => {
|