@proyecto-viviana/solidaria-components 0.4.0 → 0.5.0
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/ActionBar.d.ts.map +1 -1
- package/dist/ActionBar.js +2 -11
- package/dist/ActionBar.js.map +1 -1
- package/dist/ActionBar.jsx +2 -11
- package/dist/ActionBar.jsx.map +1 -1
- package/dist/ActionGroup.d.ts.map +1 -1
- package/dist/ActionGroup.js +1 -1
- package/dist/ActionGroup.js.map +1 -1
- package/dist/ActionGroup.jsx +1 -1
- package/dist/ActionGroup.jsx.map +1 -1
- package/dist/Autocomplete.d.ts +2 -2
- package/dist/Autocomplete.d.ts.map +1 -1
- package/dist/Autocomplete.js +7 -7
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Autocomplete.jsx +7 -7
- package/dist/Autocomplete.jsx.map +1 -1
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +18 -18
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs.jsx +21 -26
- package/dist/Breadcrumbs.jsx.map +1 -1
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +100 -65
- package/dist/Calendar.js.map +1 -1
- package/dist/Calendar.jsx +10 -1
- package/dist/Calendar.jsx.map +1 -1
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +15 -18
- package/dist/Color.js.map +1 -1
- package/dist/Color.jsx +15 -19
- package/dist/Color.jsx.map +1 -1
- package/dist/ComboBox.d.ts +4 -0
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +21 -13
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBox.jsx +23 -13
- package/dist/ComboBox.jsx.map +1 -1
- package/dist/DateField.d.ts +11 -2
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField2.js +237 -234
- package/dist/DateField2.js.map +1 -1
- package/dist/DateField2.jsx +134 -97
- package/dist/DateField2.jsx.map +1 -1
- package/dist/DatePicker.d.ts +42 -3
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +6 -990
- package/dist/DatePicker.jsx +6 -681
- package/dist/DatePicker2.js +1171 -0
- package/dist/DatePicker2.js.map +1 -0
- package/dist/DatePicker2.jsx +820 -0
- package/dist/DatePicker2.jsx.map +1 -0
- package/dist/DateRangePickerContext.d.ts +2 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -1
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +3 -0
- package/dist/Disclosure.js.map +1 -1
- package/dist/Disclosure.jsx +1 -1
- package/dist/Disclosure.jsx.map +1 -1
- package/dist/ElementTag.d.ts +29 -0
- package/dist/ElementTag.d.ts.map +1 -0
- package/dist/ElementTag.js +220 -0
- package/dist/ElementTag.js.map +1 -0
- package/dist/ElementTag.jsx +67 -0
- package/dist/ElementTag.jsx.map +1 -0
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +2 -2
- package/dist/GridList.js.map +1 -1
- package/dist/GridList.jsx +2 -2
- package/dist/GridList.jsx.map +1 -1
- package/dist/Landmark.js +4 -3
- package/dist/Landmark.js.map +1 -1
- package/dist/Landmark.jsx +3 -3
- package/dist/Landmark.jsx.map +1 -1
- package/dist/Link.js +3 -2
- package/dist/Link.js.map +1 -1
- package/dist/Link.jsx +3 -3
- package/dist/Link.jsx.map +1 -1
- package/dist/ListBox.d.ts +2 -2
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +327 -166
- package/dist/ListBox.js.map +1 -1
- package/dist/ListBox.jsx +161 -25
- package/dist/ListBox.jsx.map +1 -1
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +7 -5
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.jsx +5 -5
- package/dist/Modal.jsx.map +1 -1
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +16 -9
- package/dist/Popover.js.map +1 -1
- package/dist/Popover.jsx +25 -4
- package/dist/Popover.jsx.map +1 -1
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +182 -46
- package/dist/RangeCalendar.js.map +1 -1
- package/dist/RangeCalendar.jsx +72 -2
- package/dist/RangeCalendar.jsx.map +1 -1
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +26 -2
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchField.jsx +26 -2
- package/dist/SearchField.jsx.map +1 -1
- package/dist/Select.d.ts +7 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +64 -51
- package/dist/Select.js.map +1 -1
- package/dist/Select.jsx +35 -20
- package/dist/Select.jsx.map +1 -1
- package/dist/Separator.js +3 -2
- package/dist/Separator.js.map +1 -1
- package/dist/Separator.jsx +2 -2
- package/dist/Separator.jsx.map +1 -1
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +35 -33
- package/dist/SharedElementTransition.js.map +1 -1
- package/dist/SharedElementTransition.jsx +35 -33
- package/dist/SharedElementTransition.jsx.map +1 -1
- package/dist/StepList.d.ts.map +1 -1
- package/dist/StepList.js +2 -9
- package/dist/StepList.js.map +1 -1
- package/dist/StepList.jsx +1 -6
- package/dist/StepList.jsx.map +1 -1
- package/dist/Table.d.ts +2 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +10 -3
- package/dist/Table.js.map +1 -1
- package/dist/Table.jsx +10 -3
- package/dist/Table.jsx.map +1 -1
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +3 -0
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.jsx +1 -1
- package/dist/Tabs.jsx.map +1 -1
- package/dist/TagGroup.d.ts +3 -1
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +12 -8
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroup.jsx +11 -8
- package/dist/TagGroup.jsx.map +1 -1
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +9 -8
- package/dist/Text.js.map +1 -1
- package/dist/Text.jsx +3 -3
- package/dist/Text.jsx.map +1 -1
- package/dist/TextField.js +4 -1
- package/dist/TextField.js.map +1 -1
- package/dist/TextField.jsx +4 -1
- package/dist/TextField.jsx.map +1 -1
- package/dist/TimeField.d.ts +14 -50
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +111 -205
- package/dist/TimeField.js.map +1 -1
- package/dist/TimeField.jsx +76 -82
- package/dist/TimeField.jsx.map +1 -1
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +3 -3
- package/dist/Tree.js.map +1 -1
- package/dist/Tree.jsx +3 -3
- package/dist/Tree.jsx.map +1 -1
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +3 -11
- package/dist/VisuallyHidden.js.map +1 -1
- package/dist/VisuallyHidden.jsx +3 -4
- package/dist/VisuallyHidden.jsx.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.jsx +6 -6
- package/dist/useDragAndDrop.d.ts +0 -8
- package/dist/useDragAndDrop.d.ts.map +1 -1
- package/dist/useDragAndDrop2.js +6 -2
- package/dist/useDragAndDrop2.js.map +1 -1
- package/dist/useDragAndDrop2.jsx +6 -2
- package/dist/useDragAndDrop2.jsx.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/dist/utils.jsx +2 -2
- package/dist/utils.jsx.map +1 -1
- package/package.json +3 -9
- package/src/ActionBar.tsx +10 -12
- package/src/ActionGroup.tsx +5 -3
- package/src/Autocomplete.tsx +14 -9
- package/src/Breadcrumbs.tsx +57 -42
- package/src/Calendar.tsx +30 -1
- package/src/Color.tsx +42 -27
- package/src/ComboBox.tsx +49 -17
- package/src/DateField.tsx +285 -52
- package/src/DatePicker.tsx +345 -57
- package/src/DateRangePickerContext.tsx +2 -0
- package/src/Disclosure.tsx +4 -0
- package/src/ElementTag.tsx +116 -0
- package/src/GridList.tsx +8 -2
- package/src/Landmark.tsx +4 -4
- package/src/Link.tsx +4 -4
- package/src/ListBox.tsx +323 -21
- package/src/Modal.tsx +21 -5
- package/src/Popover.tsx +28 -7
- package/src/RangeCalendar.tsx +120 -1
- package/src/SearchField.tsx +53 -1
- package/src/Select.tsx +114 -22
- package/src/Separator.tsx +3 -3
- package/src/SharedElementTransition.tsx +92 -36
- package/src/StepList.tsx +0 -7
- package/src/Table.tsx +19 -4
- package/src/Tabs.tsx +1 -0
- package/src/TagGroup.tsx +26 -6
- package/src/Text.tsx +5 -4
- package/src/TextField.tsx +1 -1
- package/src/TimeField.tsx +113 -196
- package/src/Tree.tsx +14 -4
- package/src/VisuallyHidden.tsx +8 -12
- package/src/index.ts +3 -8
- package/src/useDragAndDrop.ts +8 -10
- package/src/utils.tsx +3 -3
- package/dist/DatePicker.js.map +0 -1
- package/dist/DatePicker.jsx.map +0 -1
- package/dist/HiddenTimeInput.d.ts +0 -25
- package/dist/HiddenTimeInput.d.ts.map +0 -1
- package/dist/HiddenTimeInput.js +0 -104
- package/dist/HiddenTimeInput.js.map +0 -1
- package/dist/HiddenTimeInput.jsx +0 -69
- package/dist/HiddenTimeInput.jsx.map +0 -1
- package/src/HiddenTimeInput.tsx +0 -133
package/dist/SearchField.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchField.jsx","names":["mergeProps"],"sources":["../src/SearchField.tsx"],"sourcesContent":["/**\n * SearchField component for solidaria-components\n *\n * A pre-wired headless search field that combines state + aria hooks.\n * Port of react-aria-components/src/SearchField.tsx\n */\n\nimport {\n type JSX,\n type Context,\n createContext,\n createMemo,\n onCleanup,\n onMount,\n splitProps,\n useContext,\n Show,\n} from \"solid-js\";\nimport {\n createSearchField,\n createFocusRing,\n createHover,\n createPress,\n mergeProps,\n type AriaSearchFieldProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createSearchFieldState,\n VALID_VALIDITY_STATE,\n type SearchFieldState,\n type ValidationResult,\n} from \"@proyecto-viviana/solid-stately\";\nimport { FormContext, type FormProps } from \"./Form\";\nimport { FieldErrorContext, type FieldErrorContextValue } from \"./FieldError\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n Provider,\n} from \"./utils\";\nimport { TextContext } from \"./Text\";\n\nexport interface SearchFieldRenderProps {\n /** Whether the search field is empty. */\n isEmpty: boolean;\n /** Whether the search field is disabled. */\n isDisabled: boolean;\n /** Whether the search field is invalid. */\n isInvalid: boolean;\n /** Whether the search field is read-only. */\n isReadOnly: boolean;\n /** Whether the search field is required. */\n isRequired: boolean;\n /** The current value. */\n value: string;\n}\n\nexport interface SearchFieldProps extends Omit<AriaSearchFieldProps, \"label\">, SlotProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler called when the value changes. */\n onChange?: (value: string) => void;\n /** Handler called when the user submits the search. */\n onSubmit?: (value: string) => void;\n /** Handler called when the field is cleared. */\n onClear?: () => void;\n /** A visible label for the search field. */\n label?: JSX.Element;\n /** The children of the component. */\n children?: RenderChildren<SearchFieldRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldRenderProps>;\n /** Ref for the outer search field element. */\n ref?: (el: HTMLDivElement) => void;\n}\n\nexport interface SearchFieldInputRenderProps {\n /** Whether the input is focused. */\n isFocused: boolean;\n /** Whether the input has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the input is hovered. */\n isHovered: boolean;\n /** Whether the input is disabled. */\n isDisabled: boolean;\n /** Whether the input is invalid. */\n isInvalid: boolean;\n}\n\nexport interface SearchFieldInputProps\n extends SlotProps, Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"class\" | \"style\"> {\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldInputRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldInputRenderProps>;\n}\n\nexport interface SearchFieldClearButtonRenderProps {\n /** Whether the button is pressed. */\n isPressed: boolean;\n /** Whether the button is hovered. */\n isHovered: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n}\n\nexport interface SearchFieldClearButtonProps\n extends\n SlotProps,\n Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"class\" | \"style\" | \"children\"> {\n /** The children of the button. */\n children?: RenderChildren<SearchFieldClearButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldClearButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldClearButtonRenderProps>;\n}\n\ninterface SearchFieldContextValue extends Partial<SearchFieldProps> {\n state?: SearchFieldState;\n inputProps?: JSX.InputHTMLAttributes<HTMLInputElement>;\n clearButtonProps?: {\n \"aria-label\": string;\n tabIndex: number;\n disabled?: boolean;\n onMouseDown: (e: MouseEvent) => void;\n onClick: () => void;\n };\n labelProps?: JSX.HTMLAttributes<HTMLElement>;\n descriptionProps?: JSX.HTMLAttributes<HTMLElement>;\n errorMessageProps?: JSX.HTMLAttributes<HTMLElement>;\n isDisabled?: boolean;\n isInvalid?: boolean;\n isRequired?: boolean;\n isReadOnly?: boolean;\n setInputRef?: (el: HTMLInputElement) => void;\n slots?: Record<string, SearchFieldProps>;\n}\n\nexport const SearchFieldContext = createContext<SearchFieldContextValue | null>(null);\n\nfunction withFormValidationBehavior(\n props: SearchFieldProps,\n formContext: FormProps | null,\n): SearchFieldProps {\n if (!formContext?.validationBehavior) {\n return props;\n }\n\n return new Proxy(props, {\n get(target, property, receiver) {\n const localValue = Reflect.get(target, property, receiver);\n if (property === \"validationBehavior\" && localValue === undefined) {\n return formContext.validationBehavior;\n }\n\n return localValue;\n },\n has(target, property) {\n return (\n Reflect.has(target, property) ||\n (property === \"validationBehavior\" && formContext.validationBehavior !== undefined)\n );\n },\n ownKeys(target) {\n const keys = new Set(Reflect.ownKeys(target));\n if (formContext.validationBehavior !== undefined) {\n keys.add(\"validationBehavior\");\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (property === \"validationBehavior\" && formContext.validationBehavior !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => formContext.validationBehavior,\n };\n }\n\n return undefined;\n },\n });\n}\n\nfunction eventWithCurrentTarget<T extends HTMLElement>(event: Event, element: T): Event {\n return new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n}\n\nfunction clearDelegatedTextEntryHandlers(element: HTMLElement) {\n const delegatedElement = element as HTMLElement & {\n $$input?: unknown;\n $$change?: unknown;\n };\n delete delegatedElement.$$input;\n delete delegatedElement.$$change;\n}\n\n/**\n * A search field allows a user to enter and clear a search query.\n */\nexport function SearchField(props: SearchFieldProps): JSX.Element {\n const formContext = useContext(FormContext);\n const contextProps = useContext(SearchFieldContext);\n const contextSlotProps = contextProps?.slots?.[props.slot ?? \"default\"];\n const contextBaseProps = createMemo<SearchFieldProps>(() => {\n if (!contextProps) return {};\n const {\n state: _state,\n inputProps: _inputProps,\n clearButtonProps: _clearButtonProps,\n labelProps: _labelProps,\n descriptionProps: _descriptionProps,\n errorMessageProps: _errorMessageProps,\n isDisabled: _isDisabled,\n isInvalid: _isInvalid,\n isRequired: _isRequired,\n isReadOnly: _isReadOnly,\n setInputRef: _setInputRef,\n slots: _slots,\n ...restContextProps\n } = contextProps;\n return restContextProps as SearchFieldProps;\n });\n const baseProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as SearchFieldProps;\n const mergedProps = withFormValidationBehavior(baseProps, formContext);\n\n const [local, stateProps, ariaProps, rest] = splitProps(\n mergedProps,\n [\"children\", \"class\", \"style\", \"slot\", \"ref\"],\n [\"value\", \"defaultValue\", \"onChange\", \"onSubmit\", \"onClear\"],\n [\n \"label\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"isDisabled\",\n \"isReadOnly\",\n \"isRequired\",\n \"isInvalid\",\n \"description\",\n \"errorMessage\",\n \"id\",\n \"autoFocus\",\n \"excludeFromTabOrder\",\n \"name\",\n \"form\",\n \"validationBehavior\",\n \"type\",\n \"placeholder\",\n \"autoComplete\",\n \"inputMode\",\n \"enterKeyHint\",\n \"autoCorrect\",\n \"autoCapitalize\",\n \"spellCheck\",\n \"maxLength\",\n \"minLength\",\n \"pattern\",\n \"onFocus\",\n \"onBlur\",\n \"onFocusChange\",\n \"onKeyDown\",\n \"onKeyUp\",\n \"onCopy\",\n \"onCut\",\n \"onPaste\",\n \"onCompositionStart\",\n \"onCompositionEnd\",\n \"onCompositionUpdate\",\n \"onSelect\",\n \"onBeforeInput\",\n \"onInput\",\n ],\n );\n\n const state = createSearchFieldState({\n get value() {\n return stateProps.value;\n },\n get defaultValue() {\n return stateProps.defaultValue;\n },\n get onChange() {\n return stateProps.onChange;\n },\n });\n\n let inputRef: HTMLInputElement | undefined;\n const setInputRef = (el: HTMLInputElement) => {\n inputRef = el;\n };\n\n const searchFieldAria = createSearchField(\n {\n get isDisabled() {\n return ariaProps.isDisabled;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly;\n },\n get isRequired() {\n return ariaProps.isRequired;\n },\n get isInvalid() {\n return ariaProps.isInvalid;\n },\n get label() {\n return ariaProps.label;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get description() {\n return ariaProps.description;\n },\n get errorMessage() {\n return ariaProps.errorMessage;\n },\n get placeholder() {\n return ariaProps.placeholder;\n },\n get name() {\n return ariaProps.name;\n },\n get form() {\n return ariaProps.form;\n },\n get validationBehavior() {\n return ariaProps.validationBehavior;\n },\n get type() {\n return ariaProps.type;\n },\n get autoFocus() {\n return ariaProps.autoFocus;\n },\n get excludeFromTabOrder() {\n return ariaProps.excludeFromTabOrder;\n },\n get autoComplete() {\n return ariaProps.autoComplete;\n },\n get inputMode() {\n return ariaProps.inputMode;\n },\n get enterKeyHint() {\n return ariaProps.enterKeyHint;\n },\n get autoCorrect() {\n return ariaProps.autoCorrect;\n },\n get autoCapitalize() {\n return ariaProps.autoCapitalize;\n },\n get spellCheck() {\n return ariaProps.spellCheck;\n },\n get maxLength() {\n return ariaProps.maxLength;\n },\n get minLength() {\n return ariaProps.minLength;\n },\n get pattern() {\n return ariaProps.pattern;\n },\n get onFocus() {\n return ariaProps.onFocus;\n },\n get onBlur() {\n return ariaProps.onBlur;\n },\n get onFocusChange() {\n return ariaProps.onFocusChange;\n },\n get onKeyDown() {\n return ariaProps.onKeyDown;\n },\n get onKeyUp() {\n return ariaProps.onKeyUp;\n },\n get onCopy() {\n return ariaProps.onCopy;\n },\n get onCut() {\n return ariaProps.onCut;\n },\n get onPaste() {\n return ariaProps.onPaste;\n },\n get onCompositionStart() {\n return ariaProps.onCompositionStart;\n },\n get onCompositionEnd() {\n return ariaProps.onCompositionEnd;\n },\n get onCompositionUpdate() {\n return ariaProps.onCompositionUpdate;\n },\n get onSelect() {\n return ariaProps.onSelect;\n },\n get onBeforeInput() {\n return ariaProps.onBeforeInput;\n },\n get onInput() {\n return ariaProps.onInput;\n },\n get onSubmit() {\n return stateProps.onSubmit;\n },\n get onClear() {\n return stateProps.onClear;\n },\n },\n state,\n () => inputRef ?? null,\n );\n\n const renderValues = createMemo<SearchFieldRenderProps>(() => ({\n isEmpty: state.value() === \"\",\n isDisabled: ariaProps.isDisabled ?? false,\n isInvalid: searchFieldAria.isInvalid ?? false,\n isRequired: ariaProps.isRequired ?? false,\n isReadOnly: ariaProps.isReadOnly ?? false,\n value: state.value(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return local.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField\",\n },\n renderValues,\n );\n const childRenderValues: SearchFieldRenderProps = {\n get isEmpty() {\n return state.value() === \"\";\n },\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get isInvalid() {\n return searchFieldAria.isInvalid ?? false;\n },\n get isRequired() {\n return ariaProps.isRequired ?? false;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly ?? false;\n },\n get value() {\n return state.value();\n },\n };\n\n const domProps = createMemo(() =>\n filterDOMProps(rest as Record<string, unknown>, { global: true }),\n );\n\n const fieldValidation = createMemo<ValidationResult>(() => {\n const isInvalid = searchFieldAria.isInvalid;\n const errorMessage = ariaProps.errorMessage;\n const validationErrors = isInvalid && typeof errorMessage === \"string\" ? [errorMessage] : [];\n\n return {\n isInvalid,\n validationErrors,\n validationDetails: isInvalid\n ? { ...VALID_VALIDITY_STATE, customError: true, valid: false }\n : VALID_VALIDITY_STATE,\n };\n });\n const fieldErrorContext: FieldErrorContextValue = {\n get validation() {\n return fieldValidation();\n },\n get errorMessageProps() {\n return searchFieldAria.errorMessageProps;\n },\n };\n const contextValue: SearchFieldContextValue = {\n state,\n get inputProps() {\n return searchFieldAria.inputProps;\n },\n get clearButtonProps() {\n return searchFieldAria.clearButtonProps;\n },\n get labelProps() {\n return searchFieldAria.labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get descriptionProps() {\n return searchFieldAria.descriptionProps;\n },\n get errorMessageProps() {\n return searchFieldAria.errorMessageProps;\n },\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get isInvalid() {\n return searchFieldAria.isInvalid ?? false;\n },\n get isRequired() {\n return ariaProps.isRequired ?? false;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly ?? false;\n },\n setInputRef,\n };\n const fieldChildren = () => {\n const children = local.children;\n return typeof children === \"function\" ? children(childRenderValues) : children;\n };\n // Provide the description / errorMessage props as `TextContext` slots (mirrors\n // react-aria-components' SearchField), so a `<Text slot=\"description\">` /\n // `<Text slot=\"errorMessage\">` child picks up the `id` its `aria-describedby`\n // references. Additive: existing consumers reading these off\n // `SearchFieldContext` are unaffected.\n const textSlots = {\n slots: {\n get description() {\n return searchFieldAria.descriptionProps;\n },\n get errorMessage() {\n return searchFieldAria.errorMessageProps;\n },\n },\n };\n\n return (\n <FieldErrorContext.Provider value={fieldErrorContext}>\n <SearchFieldContext.Provider value={contextValue}>\n <div\n {...domProps()}\n ref={local.ref}\n class={renderProps.class()}\n style={renderProps.style()}\n data-empty={state.value() === \"\" || undefined}\n data-disabled={ariaProps.isDisabled || undefined}\n data-invalid={searchFieldAria.isInvalid || undefined}\n data-required={ariaProps.isRequired || undefined}\n data-readonly={ariaProps.isReadOnly || undefined}\n >\n <Provider values={[[TextContext, textSlots]] as Array<[Context<unknown>, unknown]>}>\n {fieldChildren()}\n </Provider>\n </div>\n </SearchFieldContext.Provider>\n </FieldErrorContext.Provider>\n );\n}\n\n/**\n * The label for a search field.\n */\nexport function SearchFieldLabel(props: {\n children?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties;\n}): JSX.Element {\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldLabel must be used within a SearchField\");\n }\n\n const cleanLabelProps = () => {\n const { ref: _ref, ...rest } = context.labelProps as Record<string, unknown>;\n return rest;\n };\n\n return (\n <label\n {...cleanLabelProps()}\n class={props.class ?? \"solidaria-SearchField-label\"}\n style={props.style}\n >\n {props.children}\n </label>\n );\n}\n\n/**\n * The input element for a search field.\n */\nexport function SearchFieldInput(props: SearchFieldInputProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\"]);\n let inputElement: HTMLInputElement | undefined;\n\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldInput must be used within a SearchField\");\n }\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return context.isDisabled;\n },\n });\n\n const renderValues = createMemo<SearchFieldInputRenderProps>(() => ({\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isHovered: isHovered(),\n isDisabled: !!context.isDisabled,\n isInvalid: !!context.isInvalid,\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField-input\",\n },\n renderValues,\n );\n\n const cleanInputProps = () => {\n const { ref: _ref, ...rest } = context.inputProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n\n const mergedInputProps = () =>\n ({\n ...domProps,\n ...cleanInputProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n }) as Record<string, unknown>;\n\n onMount(() => {\n const element = inputElement;\n if (!element) {\n return;\n }\n\n const inputHandler = (event: Event) => {\n const handler = mergedInputProps().onInput as\n | JSX.EventHandler<HTMLInputElement, InputEvent>\n | undefined;\n handler?.(\n eventWithCurrentTarget(event, element) as InputEvent & {\n currentTarget: HTMLInputElement;\n target: Element;\n },\n );\n clearDelegatedTextEntryHandlers(element);\n event.stopPropagation();\n };\n const changeHandler = (event: Event) => {\n const handler = mergedInputProps().onChange as\n | JSX.EventHandler<HTMLInputElement, Event>\n | undefined;\n handler?.(\n eventWithCurrentTarget(event, element) as Event & {\n currentTarget: HTMLInputElement;\n target: Element;\n },\n );\n clearDelegatedTextEntryHandlers(element);\n event.stopPropagation();\n };\n\n element.addEventListener(\"input\", inputHandler);\n element.addEventListener(\"change\", changeHandler);\n clearDelegatedTextEntryHandlers(element);\n onCleanup(() => {\n element.removeEventListener(\"input\", inputHandler);\n element.removeEventListener(\"change\", changeHandler);\n });\n });\n\n return (\n <input\n {...mergedInputProps()}\n ref={(element) => {\n inputElement = element;\n context.setInputRef?.(element);\n const ref = (domProps as { ref?: unknown }).ref;\n if (typeof ref === \"function\") {\n ref(element);\n }\n }}\n class={renderProps.class()}\n style={renderProps.style()}\n data-focused={isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-hovered={isHovered() || undefined}\n data-disabled={context.isDisabled || undefined}\n data-invalid={context.isInvalid || undefined}\n />\n );\n}\n\n/**\n * The clear button for a search field.\n */\nexport function SearchFieldClearButton(props: SearchFieldClearButtonProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\", \"children\"]);\n\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldClearButton must be used within a SearchField\");\n }\n\n const isDisabled = () => !!(context.isDisabled || context.isReadOnly);\n const isEmpty = () => (context.state?.value() ?? \"\") === \"\";\n const clear = () => {\n if (!isDisabled() && !isEmpty()) {\n context.clearButtonProps?.onClick();\n }\n };\n\n const { isPressed, pressProps } = createPress({\n get isDisabled() {\n return context.isDisabled || context.isReadOnly;\n },\n onClick: clear,\n onPress: clear,\n });\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return context.isDisabled || context.isReadOnly;\n },\n });\n\n const renderValues = createMemo<SearchFieldClearButtonRenderProps>(() => ({\n isPressed: isPressed(),\n isHovered: isHovered(),\n isDisabled: isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField-clear\",\n },\n renderValues,\n );\n\n const cleanPressProps = () => {\n const { ref: _ref, ...rest } = pressProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n\n return (\n <Show when={!isEmpty()}>\n <button\n {...domProps}\n type=\"button\"\n aria-label={context.clearButtonProps?.[\"aria-label\"] ?? \"Clear search\"}\n tabIndex={context.clearButtonProps?.tabIndex ?? -1}\n disabled={context.clearButtonProps?.disabled}\n onMouseDown={context.clearButtonProps?.onMouseDown}\n {...cleanPressProps()}\n onPointerUp={clear}\n onMouseUp={clear}\n onClick={clear}\n {...cleanHoverProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-pressed={isPressed() || undefined}\n data-hovered={isHovered() || undefined}\n data-disabled={isDisabled() || undefined}\n >\n {renderProps.renderChildren()}\n </button>\n </Show>\n );\n}\n\nSearchField.Label = SearchFieldLabel;\nSearchField.Input = SearchFieldInput;\nSearchField.ClearButton = SearchFieldClearButton;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchField.jsx","names":["mergeProps"],"sources":["../src/SearchField.tsx"],"sourcesContent":["/**\n * SearchField component for solidaria-components\n *\n * A pre-wired headless search field that combines state + aria hooks.\n * Port of react-aria-components/src/SearchField.tsx\n */\n\nimport {\n type JSX,\n type Context,\n createContext,\n createMemo,\n onCleanup,\n onMount,\n splitProps,\n useContext,\n Show,\n} from \"solid-js\";\nimport {\n createSearchField,\n createFocusRing,\n createHover,\n createPress,\n mergeProps,\n type AriaSearchFieldProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createSearchFieldState,\n VALID_VALIDITY_STATE,\n type SearchFieldState,\n type ValidationResult,\n} from \"@proyecto-viviana/solid-stately\";\nimport { FormContext, type FormProps } from \"./Form\";\nimport { FieldErrorContext, type FieldErrorContextValue } from \"./FieldError\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n Provider,\n} from \"./utils\";\nimport { TextContext } from \"./Text\";\nimport { useAutocompleteInput } from \"./Autocomplete\";\n\nexport interface SearchFieldRenderProps {\n /** Whether the search field is empty. */\n isEmpty: boolean;\n /** Whether the search field is disabled. */\n isDisabled: boolean;\n /** Whether the search field is invalid. */\n isInvalid: boolean;\n /** Whether the search field is read-only. */\n isReadOnly: boolean;\n /** Whether the search field is required. */\n isRequired: boolean;\n /** The current value. */\n value: string;\n}\n\nexport interface SearchFieldProps extends Omit<AriaSearchFieldProps, \"label\">, SlotProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler called when the value changes. */\n onChange?: (value: string) => void;\n /** Handler called when the user submits the search. */\n onSubmit?: (value: string) => void;\n /** Handler called when the field is cleared. */\n onClear?: () => void;\n /** A visible label for the search field. */\n label?: JSX.Element;\n /** The children of the component. */\n children?: RenderChildren<SearchFieldRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldRenderProps>;\n /** Ref for the outer search field element. */\n ref?: (el: HTMLDivElement) => void;\n}\n\nexport interface SearchFieldInputRenderProps {\n /** Whether the input is focused. */\n isFocused: boolean;\n /** Whether the input has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the input is hovered. */\n isHovered: boolean;\n /** Whether the input is disabled. */\n isDisabled: boolean;\n /** Whether the input is invalid. */\n isInvalid: boolean;\n}\n\nexport interface SearchFieldInputProps\n extends SlotProps, Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"class\" | \"style\"> {\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldInputRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldInputRenderProps>;\n}\n\nexport interface SearchFieldClearButtonRenderProps {\n /** Whether the button is pressed. */\n isPressed: boolean;\n /** Whether the button is hovered. */\n isHovered: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n}\n\nexport interface SearchFieldClearButtonProps\n extends\n SlotProps,\n Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"class\" | \"style\" | \"children\"> {\n /** The children of the button. */\n children?: RenderChildren<SearchFieldClearButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<SearchFieldClearButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<SearchFieldClearButtonRenderProps>;\n}\n\ninterface SearchFieldContextValue extends Partial<SearchFieldProps> {\n state?: SearchFieldState;\n inputProps?: JSX.InputHTMLAttributes<HTMLInputElement>;\n clearButtonProps?: {\n \"aria-label\": string;\n tabIndex: number;\n disabled?: boolean;\n onMouseDown: (e: MouseEvent) => void;\n onClick: () => void;\n };\n labelProps?: JSX.HTMLAttributes<HTMLElement>;\n descriptionProps?: JSX.HTMLAttributes<HTMLElement>;\n errorMessageProps?: JSX.HTMLAttributes<HTMLElement>;\n isDisabled?: boolean;\n isInvalid?: boolean;\n isRequired?: boolean;\n isReadOnly?: boolean;\n setInputRef?: (el: HTMLInputElement) => void;\n slots?: Record<string, SearchFieldProps>;\n}\n\nexport const SearchFieldContext = createContext<SearchFieldContextValue | null>(null);\n\nfunction withFormValidationBehavior(\n props: SearchFieldProps,\n formContext: FormProps | null,\n): SearchFieldProps {\n if (!formContext?.validationBehavior) {\n return props;\n }\n\n return new Proxy(props, {\n get(target, property, receiver) {\n const localValue = Reflect.get(target, property, receiver);\n if (property === \"validationBehavior\" && localValue === undefined) {\n return formContext.validationBehavior;\n }\n\n return localValue;\n },\n has(target, property) {\n return (\n Reflect.has(target, property) ||\n (property === \"validationBehavior\" && formContext.validationBehavior !== undefined)\n );\n },\n ownKeys(target) {\n const keys = new Set(Reflect.ownKeys(target));\n if (formContext.validationBehavior !== undefined) {\n keys.add(\"validationBehavior\");\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (property === \"validationBehavior\" && formContext.validationBehavior !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => formContext.validationBehavior,\n };\n }\n\n return undefined;\n },\n });\n}\n\nfunction eventWithCurrentTarget<T extends HTMLElement>(event: Event, element: T): Event {\n return new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n}\n\nfunction clearDelegatedTextEntryHandlers(element: HTMLElement) {\n const delegatedElement = element as HTMLElement & {\n $$input?: unknown;\n $$change?: unknown;\n };\n delete delegatedElement.$$input;\n delete delegatedElement.$$change;\n}\n\n/**\n * A search field allows a user to enter and clear a search query.\n */\nexport function SearchField(props: SearchFieldProps): JSX.Element {\n const formContext = useContext(FormContext);\n const contextProps = useContext(SearchFieldContext);\n const contextSlotProps = contextProps?.slots?.[props.slot ?? \"default\"];\n const contextBaseProps = createMemo<SearchFieldProps>(() => {\n if (!contextProps) return {};\n const {\n state: _state,\n inputProps: _inputProps,\n clearButtonProps: _clearButtonProps,\n labelProps: _labelProps,\n descriptionProps: _descriptionProps,\n errorMessageProps: _errorMessageProps,\n isDisabled: _isDisabled,\n isInvalid: _isInvalid,\n isRequired: _isRequired,\n isReadOnly: _isReadOnly,\n setInputRef: _setInputRef,\n slots: _slots,\n ...restContextProps\n } = contextProps;\n return restContextProps as SearchFieldProps;\n });\n const baseProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as SearchFieldProps;\n\n // When rendered inside an <Autocomplete>, the FieldInputContext (AutocompleteContext)\n // controls the input's value and keyboard handling: value + onChange make the field's\n // state controlled by the shared autocomplete state (which drives the collection\n // filter), and onKeyDown/onFocus/onBlur chain the autocomplete's virtual-focus\n // navigation into the input. This mirrors RAC's\n // useContextProps(props, inputRef, FieldInputContext). The remaining passthroughs\n // (aria-activedescendant/aria-controls/aria-autocomplete) and the input-ref\n // registration are applied at the <input> in SearchFieldInput.\n const autocompleteInput = useAutocompleteInput();\n const autocompleteProps = autocompleteInput\n ? ({\n get value() {\n return autocompleteInput.inputProps.value();\n },\n onChange: autocompleteInput.inputProps.onChange,\n onKeyDown: autocompleteInput.inputProps\n .onKeyDown as unknown as SearchFieldProps[\"onKeyDown\"],\n onFocus: autocompleteInput.inputProps.onFocus as unknown as SearchFieldProps[\"onFocus\"],\n onBlur: autocompleteInput.inputProps.onBlur as unknown as SearchFieldProps[\"onBlur\"],\n } as Partial<SearchFieldProps>)\n : undefined;\n\n const mergedProps = withFormValidationBehavior(\n autocompleteProps\n ? (mergeProps(baseProps, autocompleteProps) as SearchFieldProps)\n : baseProps,\n formContext,\n );\n\n const [local, stateProps, ariaProps, rest] = splitProps(\n mergedProps,\n [\"children\", \"class\", \"style\", \"slot\", \"ref\"],\n [\"value\", \"defaultValue\", \"onChange\", \"onSubmit\", \"onClear\"],\n [\n \"label\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"isDisabled\",\n \"isReadOnly\",\n \"isRequired\",\n \"isInvalid\",\n \"description\",\n \"errorMessage\",\n \"id\",\n \"autoFocus\",\n \"excludeFromTabOrder\",\n \"name\",\n \"form\",\n \"validationBehavior\",\n \"type\",\n \"placeholder\",\n \"autoComplete\",\n \"inputMode\",\n \"enterKeyHint\",\n \"autoCorrect\",\n \"autoCapitalize\",\n \"spellCheck\",\n \"maxLength\",\n \"minLength\",\n \"pattern\",\n \"onFocus\",\n \"onBlur\",\n \"onFocusChange\",\n \"onKeyDown\",\n \"onKeyUp\",\n \"onCopy\",\n \"onCut\",\n \"onPaste\",\n \"onCompositionStart\",\n \"onCompositionEnd\",\n \"onCompositionUpdate\",\n \"onSelect\",\n \"onBeforeInput\",\n \"onInput\",\n ],\n );\n\n const state = createSearchFieldState({\n get value() {\n return stateProps.value;\n },\n get defaultValue() {\n return stateProps.defaultValue;\n },\n get onChange() {\n return stateProps.onChange;\n },\n });\n\n let inputRef: HTMLInputElement | undefined;\n const setInputRef = (el: HTMLInputElement) => {\n inputRef = el;\n };\n\n const searchFieldAria = createSearchField(\n {\n get isDisabled() {\n return ariaProps.isDisabled;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly;\n },\n get isRequired() {\n return ariaProps.isRequired;\n },\n get isInvalid() {\n return ariaProps.isInvalid;\n },\n get label() {\n return ariaProps.label;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get description() {\n return ariaProps.description;\n },\n get errorMessage() {\n return ariaProps.errorMessage;\n },\n get placeholder() {\n return ariaProps.placeholder;\n },\n get name() {\n return ariaProps.name;\n },\n get form() {\n return ariaProps.form;\n },\n get validationBehavior() {\n return ariaProps.validationBehavior;\n },\n get type() {\n return ariaProps.type;\n },\n get autoFocus() {\n return ariaProps.autoFocus;\n },\n get excludeFromTabOrder() {\n return ariaProps.excludeFromTabOrder;\n },\n get autoComplete() {\n return ariaProps.autoComplete;\n },\n get inputMode() {\n return ariaProps.inputMode;\n },\n get enterKeyHint() {\n return ariaProps.enterKeyHint;\n },\n get autoCorrect() {\n return ariaProps.autoCorrect;\n },\n get autoCapitalize() {\n return ariaProps.autoCapitalize;\n },\n get spellCheck() {\n return ariaProps.spellCheck;\n },\n get maxLength() {\n return ariaProps.maxLength;\n },\n get minLength() {\n return ariaProps.minLength;\n },\n get pattern() {\n return ariaProps.pattern;\n },\n get onFocus() {\n return ariaProps.onFocus;\n },\n get onBlur() {\n return ariaProps.onBlur;\n },\n get onFocusChange() {\n return ariaProps.onFocusChange;\n },\n get onKeyDown() {\n return ariaProps.onKeyDown;\n },\n get onKeyUp() {\n return ariaProps.onKeyUp;\n },\n get onCopy() {\n return ariaProps.onCopy;\n },\n get onCut() {\n return ariaProps.onCut;\n },\n get onPaste() {\n return ariaProps.onPaste;\n },\n get onCompositionStart() {\n return ariaProps.onCompositionStart;\n },\n get onCompositionEnd() {\n return ariaProps.onCompositionEnd;\n },\n get onCompositionUpdate() {\n return ariaProps.onCompositionUpdate;\n },\n get onSelect() {\n return ariaProps.onSelect;\n },\n get onBeforeInput() {\n return ariaProps.onBeforeInput;\n },\n get onInput() {\n return ariaProps.onInput;\n },\n get onSubmit() {\n return stateProps.onSubmit;\n },\n get onClear() {\n return stateProps.onClear;\n },\n },\n state,\n () => inputRef ?? null,\n );\n\n const renderValues = createMemo<SearchFieldRenderProps>(() => ({\n isEmpty: state.value() === \"\",\n isDisabled: ariaProps.isDisabled ?? false,\n isInvalid: searchFieldAria.isInvalid ?? false,\n isRequired: ariaProps.isRequired ?? false,\n isReadOnly: ariaProps.isReadOnly ?? false,\n value: state.value(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return local.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField\",\n },\n renderValues,\n );\n const childRenderValues: SearchFieldRenderProps = {\n get isEmpty() {\n return state.value() === \"\";\n },\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get isInvalid() {\n return searchFieldAria.isInvalid ?? false;\n },\n get isRequired() {\n return ariaProps.isRequired ?? false;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly ?? false;\n },\n get value() {\n return state.value();\n },\n };\n\n const domProps = createMemo(() =>\n filterDOMProps(rest as Record<string, unknown>, { global: true }),\n );\n\n const fieldValidation = createMemo<ValidationResult>(() => {\n const isInvalid = searchFieldAria.isInvalid;\n const errorMessage = ariaProps.errorMessage;\n const validationErrors = isInvalid && typeof errorMessage === \"string\" ? [errorMessage] : [];\n\n return {\n isInvalid,\n validationErrors,\n validationDetails: isInvalid\n ? { ...VALID_VALIDITY_STATE, customError: true, valid: false }\n : VALID_VALIDITY_STATE,\n };\n });\n const fieldErrorContext: FieldErrorContextValue = {\n get validation() {\n return fieldValidation();\n },\n get errorMessageProps() {\n return searchFieldAria.errorMessageProps;\n },\n };\n const contextValue: SearchFieldContextValue = {\n state,\n get inputProps() {\n return searchFieldAria.inputProps;\n },\n get clearButtonProps() {\n return searchFieldAria.clearButtonProps;\n },\n get labelProps() {\n return searchFieldAria.labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get descriptionProps() {\n return searchFieldAria.descriptionProps;\n },\n get errorMessageProps() {\n return searchFieldAria.errorMessageProps;\n },\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get isInvalid() {\n return searchFieldAria.isInvalid ?? false;\n },\n get isRequired() {\n return ariaProps.isRequired ?? false;\n },\n get isReadOnly() {\n return ariaProps.isReadOnly ?? false;\n },\n setInputRef,\n };\n const fieldChildren = () => {\n const children = local.children;\n return typeof children === \"function\" ? children(childRenderValues) : children;\n };\n // Provide the description / errorMessage props as `TextContext` slots (mirrors\n // react-aria-components' SearchField), so a `<Text slot=\"description\">` /\n // `<Text slot=\"errorMessage\">` child picks up the `id` its `aria-describedby`\n // references. Additive: existing consumers reading these off\n // `SearchFieldContext` are unaffected.\n const textSlots = {\n slots: {\n get description() {\n return searchFieldAria.descriptionProps;\n },\n get errorMessage() {\n return searchFieldAria.errorMessageProps;\n },\n },\n };\n\n return (\n <FieldErrorContext.Provider value={fieldErrorContext}>\n <SearchFieldContext.Provider value={contextValue}>\n <div\n {...domProps()}\n ref={local.ref}\n class={renderProps.class()}\n style={renderProps.style()}\n data-empty={state.value() === \"\" || undefined}\n data-disabled={ariaProps.isDisabled || undefined}\n data-invalid={searchFieldAria.isInvalid || undefined}\n data-required={ariaProps.isRequired || undefined}\n data-readonly={ariaProps.isReadOnly || undefined}\n >\n <Provider values={[[TextContext, textSlots]] as Array<[Context<unknown>, unknown]>}>\n {fieldChildren()}\n </Provider>\n </div>\n </SearchFieldContext.Provider>\n </FieldErrorContext.Provider>\n );\n}\n\n/**\n * The label for a search field.\n */\nexport function SearchFieldLabel(props: {\n children?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties;\n}): JSX.Element {\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldLabel must be used within a SearchField\");\n }\n\n const cleanLabelProps = () => {\n const { ref: _ref, ...rest } = context.labelProps as Record<string, unknown>;\n return rest;\n };\n\n return (\n <label\n {...cleanLabelProps()}\n class={props.class ?? \"solidaria-SearchField-label\"}\n style={props.style}\n >\n {props.children}\n </label>\n );\n}\n\n/**\n * The input element for a search field.\n */\nexport function SearchFieldInput(props: SearchFieldInputProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\"]);\n let inputElement: HTMLInputElement | undefined;\n\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldInput must be used within a SearchField\");\n }\n\n // Inside an <Autocomplete>, expose the ARIA attributes that identify the\n // controlled collection and its virtually-focused option. value/onChange and the\n // keyboard handlers are already merged upstream in SearchField(); here we only add\n // the passthrough attributes that createTextField doesn't forward, and register the\n // input element as the autocomplete inputRef so the beforeinput + reverse-path\n // (aria-activedescendant mirror) listeners bind. Mirrors RAC's\n // [InputContext, {...inputProps, ref: inputRef}].\n const autocompleteInput = useAutocompleteInput();\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return context.isDisabled;\n },\n });\n\n const renderValues = createMemo<SearchFieldInputRenderProps>(() => ({\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isHovered: isHovered(),\n isDisabled: !!context.isDisabled,\n isInvalid: !!context.isInvalid,\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField-input\",\n },\n renderValues,\n );\n\n const cleanInputProps = () => {\n const { ref: _ref, ...rest } = context.inputProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n\n const autocompleteInputAttrs = (): Record<string, unknown> => {\n if (!autocompleteInput) {\n return {};\n }\n const inputProps = autocompleteInput.inputProps;\n return {\n \"aria-controls\": inputProps[\"aria-controls\"],\n \"aria-autocomplete\": inputProps[\"aria-autocomplete\"],\n \"aria-activedescendant\": inputProps[\"aria-activedescendant\"](),\n };\n };\n\n const mergedInputProps = () =>\n ({\n ...domProps,\n ...cleanInputProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n ...autocompleteInputAttrs(),\n }) as Record<string, unknown>;\n\n onMount(() => {\n const element = inputElement;\n if (!element) {\n return;\n }\n\n const inputHandler = (event: Event) => {\n const handler = mergedInputProps().onInput as\n | JSX.EventHandler<HTMLInputElement, InputEvent>\n | undefined;\n handler?.(\n eventWithCurrentTarget(event, element) as InputEvent & {\n currentTarget: HTMLInputElement;\n target: Element;\n },\n );\n clearDelegatedTextEntryHandlers(element);\n event.stopPropagation();\n };\n const changeHandler = (event: Event) => {\n const handler = mergedInputProps().onChange as\n | JSX.EventHandler<HTMLInputElement, Event>\n | undefined;\n handler?.(\n eventWithCurrentTarget(event, element) as Event & {\n currentTarget: HTMLInputElement;\n target: Element;\n },\n );\n clearDelegatedTextEntryHandlers(element);\n event.stopPropagation();\n };\n\n element.addEventListener(\"input\", inputHandler);\n element.addEventListener(\"change\", changeHandler);\n clearDelegatedTextEntryHandlers(element);\n onCleanup(() => {\n element.removeEventListener(\"input\", inputHandler);\n element.removeEventListener(\"change\", changeHandler);\n });\n });\n\n return (\n <input\n {...mergedInputProps()}\n ref={(element) => {\n inputElement = element;\n context.setInputRef?.(element);\n autocompleteInput?.inputRef(element);\n const ref = (domProps as { ref?: unknown }).ref;\n if (typeof ref === \"function\") {\n ref(element);\n }\n }}\n class={renderProps.class()}\n style={renderProps.style()}\n data-focused={isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-hovered={isHovered() || undefined}\n data-disabled={context.isDisabled || undefined}\n data-invalid={context.isInvalid || undefined}\n />\n );\n}\n\n/**\n * The clear button for a search field.\n */\nexport function SearchFieldClearButton(props: SearchFieldClearButtonProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\", \"children\"]);\n\n const context = useContext(SearchFieldContext);\n if (!context) {\n throw new Error(\"SearchFieldClearButton must be used within a SearchField\");\n }\n\n const isDisabled = () => !!(context.isDisabled || context.isReadOnly);\n const isEmpty = () => (context.state?.value() ?? \"\") === \"\";\n const clear = () => {\n if (!isDisabled() && !isEmpty()) {\n context.clearButtonProps?.onClick();\n }\n };\n\n const { isPressed, pressProps } = createPress({\n get isDisabled() {\n return context.isDisabled || context.isReadOnly;\n },\n onClick: clear,\n onPress: clear,\n });\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return context.isDisabled || context.isReadOnly;\n },\n });\n\n const renderValues = createMemo<SearchFieldClearButtonRenderProps>(() => ({\n isPressed: isPressed(),\n isHovered: isHovered(),\n isDisabled: isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-SearchField-clear\",\n },\n renderValues,\n );\n\n const cleanPressProps = () => {\n const { ref: _ref, ...rest } = pressProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n\n return (\n <Show when={!isEmpty()}>\n <button\n {...domProps}\n type=\"button\"\n aria-label={context.clearButtonProps?.[\"aria-label\"] ?? \"Clear search\"}\n tabIndex={context.clearButtonProps?.tabIndex ?? -1}\n disabled={context.clearButtonProps?.disabled}\n onMouseDown={context.clearButtonProps?.onMouseDown}\n {...cleanPressProps()}\n onPointerUp={clear}\n onMouseUp={clear}\n onClick={clear}\n {...cleanHoverProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-pressed={isPressed() || undefined}\n data-hovered={isHovered() || undefined}\n data-disabled={isDisabled() || undefined}\n >\n {renderProps.renderChildren()}\n </button>\n </Show>\n );\n}\n\nSearchField.Label = SearchFieldLabel;\nSearchField.Input = SearchFieldInput;\nSearchField.ClearButton = SearchFieldClearButton;\n"],"mappings":"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"}
|
package/dist/Select.d.ts
CHANGED
|
@@ -102,10 +102,14 @@ export interface SelectTriggerRenderProps {
|
|
|
102
102
|
isFocusVisible: boolean;
|
|
103
103
|
/** Whether the trigger is hovered. */
|
|
104
104
|
isHovered: boolean;
|
|
105
|
+
/** Whether the trigger is pressed. */
|
|
106
|
+
isPressed: boolean;
|
|
105
107
|
/** Whether the trigger is disabled. */
|
|
106
108
|
isDisabled: boolean;
|
|
107
109
|
}
|
|
108
110
|
export interface SelectTriggerProps extends SlotProps {
|
|
111
|
+
/** A ref callback/object for the underlying trigger button element. */
|
|
112
|
+
ref?: RefLike<HTMLButtonElement>;
|
|
109
113
|
/** The children of the trigger. A function may be provided to receive render props. */
|
|
110
114
|
children?: RenderChildren<SelectTriggerRenderProps>;
|
|
111
115
|
/** The CSS className for the element. */
|
|
@@ -154,6 +158,8 @@ export interface SelectOptionRenderProps {
|
|
|
154
158
|
isDisabled: boolean;
|
|
155
159
|
}
|
|
156
160
|
export interface SelectOptionProps<T> extends Omit<AriaOptionProps, "children" | "key">, SlotProps {
|
|
161
|
+
/** A ref callback/object for the underlying option element. */
|
|
162
|
+
ref?: RefLike<HTMLDivElement>;
|
|
157
163
|
/** The unique key for the option. */
|
|
158
164
|
id: Key;
|
|
159
165
|
/** The item value. */
|
|
@@ -181,6 +187,7 @@ interface SelectContextValue<T> {
|
|
|
181
187
|
isOpen: Accessor<boolean>;
|
|
182
188
|
isFocused: Accessor<boolean>;
|
|
183
189
|
isFocusVisible: Accessor<boolean>;
|
|
190
|
+
isPressed: Accessor<boolean>;
|
|
184
191
|
isDisabled: Accessor<boolean>;
|
|
185
192
|
placeholder?: string;
|
|
186
193
|
items: T[];
|
package/dist/Select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"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"}
|
package/dist/Select.js
CHANGED
|
@@ -13,7 +13,7 @@ import { DEFAULT_VALIDATION_RESULT, createSelectState } from "@proyecto-viviana/
|
|
|
13
13
|
* A pre-wired headless select that combines state + aria hooks.
|
|
14
14
|
* Port of react-aria-components/src/Select.tsx
|
|
15
15
|
*/
|
|
16
|
-
var _tmpl$ = /*#__PURE__*/ template(`<
|
|
16
|
+
var _tmpl$ = /*#__PURE__*/ template(`<span>`), _tmpl$2 = /*#__PURE__*/ template(`<option>`), _tmpl$3 = /*#__PURE__*/ template(`<input type=hidden>`), _tmpl$4 = /*#__PURE__*/ template(`<div><select><!$><!/><!$><!/></select><!$><!/><!$><!/>`), _tmpl$5 = /*#__PURE__*/ template(`<div>`), _tmpl$6 = /*#__PURE__*/ template(`<button>`), _tmpl$7 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/>`), _tmpl$8 = /*#__PURE__*/ template(`<div role=option data-empty-state style=display:contents>`);
|
|
17
17
|
function assignRef(ref, el) {
|
|
18
18
|
if (!ref) return;
|
|
19
19
|
if (typeof ref === "function") ref(el);
|
|
@@ -138,7 +138,7 @@ function Select(props) {
|
|
|
138
138
|
return ariaProps.isRequired;
|
|
139
139
|
}
|
|
140
140
|
});
|
|
141
|
-
const { labelProps, triggerProps, valueProps, menuProps, isFocused, isFocusVisible, isOpen } = createSelect(createMemo(() => {
|
|
141
|
+
const { labelProps, triggerProps, valueProps, menuProps, isFocused, isFocusVisible, isOpen, isPressed } = createSelect(createMemo(() => {
|
|
142
142
|
const clean = {};
|
|
143
143
|
for (const key in ariaProps) if (!key.startsWith("data-")) clean[key] = ariaProps[key];
|
|
144
144
|
return clean;
|
|
@@ -275,10 +275,23 @@ function Select(props) {
|
|
|
275
275
|
const RootChildren = () => {
|
|
276
276
|
const selectChildren = untrack(() => typeof local.children === "function" ? local.children(childRenderValues) : local.children);
|
|
277
277
|
return [
|
|
278
|
+
createComponent(Show, {
|
|
279
|
+
get when() {
|
|
280
|
+
return ariaProps.label;
|
|
281
|
+
},
|
|
282
|
+
get children() {
|
|
283
|
+
var _el$ = getNextElement(_tmpl$);
|
|
284
|
+
spread(_el$, mergeProps(cleanLabelProps), false, true);
|
|
285
|
+
insert(_el$, () => ariaProps.label);
|
|
286
|
+
runHydrationEvents();
|
|
287
|
+
return _el$;
|
|
288
|
+
}
|
|
289
|
+
}),
|
|
290
|
+
selectChildren,
|
|
278
291
|
(() => {
|
|
279
|
-
var _el$ = getNextElement(_tmpl$
|
|
280
|
-
spread(_el
|
|
281
|
-
spread(_el$
|
|
292
|
+
var _el$2 = getNextElement(_tmpl$4), _el$3 = _el$2.firstChild, _el$5 = _el$3.firstChild, [_el$6, _co$] = getNextMarker(_el$5.nextSibling), _el$7 = _el$6.nextSibling, [_el$8, _co$2] = getNextMarker(_el$7.nextSibling), _el$0 = _el$3.nextSibling, [_el$1, _co$3] = getNextMarker(_el$0.nextSibling), _el$10 = _el$1.nextSibling, [_el$11, _co$4] = getNextMarker(_el$10.nextSibling);
|
|
293
|
+
spread(_el$2, containerProps, false, true);
|
|
294
|
+
spread(_el$3, mergeProps(hiddenSelectProps, {
|
|
282
295
|
get name() {
|
|
283
296
|
return memo(() => !!hasSelection())() ? void 0 : stateProps.name;
|
|
284
297
|
},
|
|
@@ -288,17 +301,17 @@ function Select(props) {
|
|
|
288
301
|
"onInvalid": handleHiddenSelectInvalid,
|
|
289
302
|
"onChange": handleHiddenSelectChange
|
|
290
303
|
}), false, true);
|
|
291
|
-
insert(_el$
|
|
304
|
+
insert(_el$3, createComponent(Show, {
|
|
292
305
|
get when() {
|
|
293
306
|
return state.selectionMode() !== "multiple";
|
|
294
307
|
},
|
|
295
308
|
get children() {
|
|
296
|
-
var _el$
|
|
297
|
-
effect(() => setProperty(_el$
|
|
298
|
-
return _el$
|
|
309
|
+
var _el$4 = getNextElement(_tmpl$2);
|
|
310
|
+
effect(() => setProperty(_el$4, "selected", state.selectedKey() == null));
|
|
311
|
+
return _el$4;
|
|
299
312
|
}
|
|
300
|
-
}), _el$
|
|
301
|
-
insert(_el$
|
|
313
|
+
}), _el$6, _co$);
|
|
314
|
+
insert(_el$3, createComponent(For, {
|
|
302
315
|
get each() {
|
|
303
316
|
return stateProps.items;
|
|
304
317
|
},
|
|
@@ -306,20 +319,20 @@ function Select(props) {
|
|
|
306
319
|
const itemRecord = isObjectRecord(item) ? item : null;
|
|
307
320
|
const fallbackKey = itemRecord != null ? toKey(itemRecord.key) ?? toKey(itemRecord.id) : void 0;
|
|
308
321
|
const key = stateProps.getKey?.(item) ?? fallbackKey ?? String(item);
|
|
309
|
-
const fallbackTextValue = itemRecord != null ? toTextValue(itemRecord.textValue) ?? toTextValue(itemRecord.label) : void 0;
|
|
310
|
-
const textValue = stateProps.getTextValue?.(item) ?? fallbackTextValue ?? String(item);
|
|
322
|
+
const fallbackTextValue = itemRecord != null ? toTextValue(itemRecord.textValue) ?? toTextValue(itemRecord.label) ?? toTextValue(itemRecord.name) ?? toTextValue(itemRecord.title) : void 0;
|
|
323
|
+
const textValue = stateProps.getTextValue?.(item) ?? fallbackTextValue ?? (itemRecord != null ? String(key) : String(item));
|
|
311
324
|
const selectedKeys = state.selectedKeys();
|
|
312
325
|
const isSelected = state.selectionMode() === "multiple" ? selectedKeys === "all" ? true : selectedKeys.has(key) : key === state.selectedKey();
|
|
313
326
|
return (() => {
|
|
314
|
-
var _el$12 = getNextElement(_tmpl$);
|
|
327
|
+
var _el$12 = getNextElement(_tmpl$2);
|
|
315
328
|
setProperty(_el$12, "selected", isSelected);
|
|
316
329
|
insert(_el$12, textValue);
|
|
317
330
|
effect(() => setProperty(_el$12, "value", String(key)));
|
|
318
331
|
return _el$12;
|
|
319
332
|
})();
|
|
320
333
|
}
|
|
321
|
-
}), _el$
|
|
322
|
-
insert(_el
|
|
334
|
+
}), _el$8, _co$2);
|
|
335
|
+
insert(_el$2, createComponent(Show, {
|
|
323
336
|
get when() {
|
|
324
337
|
return memo(() => state.selectionMode() === "multiple")() && stateProps.name;
|
|
325
338
|
},
|
|
@@ -329,7 +342,7 @@ function Select(props) {
|
|
|
329
342
|
return memo(() => state.selectedKeys() === "all")() ? Array.from(state.collection()).map((item) => item.key) : Array.from(state.selectedKeys());
|
|
330
343
|
},
|
|
331
344
|
children: (key) => (() => {
|
|
332
|
-
var _el$13 = getNextElement(_tmpl$
|
|
345
|
+
var _el$13 = getNextElement(_tmpl$3);
|
|
333
346
|
effect((_p$) => {
|
|
334
347
|
var _v$4 = stateProps.name, _v$5 = ariaProps.form, _v$6 = resolveDisabled();
|
|
335
348
|
_v$4 !== _p$.e && setAttribute(_el$13, "name", _p$.e = _v$4);
|
|
@@ -346,44 +359,31 @@ function Select(props) {
|
|
|
346
359
|
})()
|
|
347
360
|
});
|
|
348
361
|
}
|
|
349
|
-
}), _el$
|
|
350
|
-
insert(_el
|
|
362
|
+
}), _el$1, _co$3);
|
|
363
|
+
insert(_el$2, createComponent(Show, {
|
|
351
364
|
get when() {
|
|
352
365
|
return memo(() => !!(state.selectionMode() !== "multiple" && stateProps.name))() && state.selectedKey() != null;
|
|
353
366
|
},
|
|
354
367
|
get children() {
|
|
355
|
-
var _el$
|
|
368
|
+
var _el$9 = getNextElement(_tmpl$3);
|
|
356
369
|
effect((_p$) => {
|
|
357
370
|
var _v$ = stateProps.name, _v$2 = ariaProps.form, _v$3 = resolveDisabled();
|
|
358
|
-
_v$ !== _p$.e && setAttribute(_el$
|
|
359
|
-
_v$2 !== _p$.t && setAttribute(_el$
|
|
360
|
-
_v$3 !== _p$.a && setProperty(_el$
|
|
371
|
+
_v$ !== _p$.e && setAttribute(_el$9, "name", _p$.e = _v$);
|
|
372
|
+
_v$2 !== _p$.t && setAttribute(_el$9, "form", _p$.t = _v$2);
|
|
373
|
+
_v$3 !== _p$.a && setProperty(_el$9, "disabled", _p$.a = _v$3);
|
|
361
374
|
return _p$;
|
|
362
375
|
}, {
|
|
363
376
|
e: void 0,
|
|
364
377
|
t: void 0,
|
|
365
378
|
a: void 0
|
|
366
379
|
});
|
|
367
|
-
effect(() => setProperty(_el$
|
|
368
|
-
return _el$
|
|
380
|
+
effect(() => setProperty(_el$9, "value", String(state.selectedKey())));
|
|
381
|
+
return _el$9;
|
|
369
382
|
}
|
|
370
|
-
}), _el$
|
|
383
|
+
}), _el$11, _co$4);
|
|
371
384
|
runHydrationEvents();
|
|
372
|
-
return _el
|
|
373
|
-
})()
|
|
374
|
-
createComponent(Show, {
|
|
375
|
-
get when() {
|
|
376
|
-
return ariaProps.label;
|
|
377
|
-
},
|
|
378
|
-
get children() {
|
|
379
|
-
var _el$11 = getNextElement(_tmpl$4);
|
|
380
|
-
spread(_el$11, mergeProps(cleanLabelProps), false, true);
|
|
381
|
-
insert(_el$11, () => ariaProps.label);
|
|
382
|
-
runHydrationEvents();
|
|
383
|
-
return _el$11;
|
|
384
|
-
}
|
|
385
|
-
}),
|
|
386
|
-
selectChildren
|
|
385
|
+
return _el$2;
|
|
386
|
+
})()
|
|
387
387
|
];
|
|
388
388
|
};
|
|
389
389
|
const baseRootProps = () => ({
|
|
@@ -435,6 +435,7 @@ function Select(props) {
|
|
|
435
435
|
isOpen,
|
|
436
436
|
isFocused,
|
|
437
437
|
isFocusVisible,
|
|
438
|
+
isPressed,
|
|
438
439
|
isDisabled: resolveDisabled,
|
|
439
440
|
placeholder: ariaProps.placeholder,
|
|
440
441
|
items: stateProps.items,
|
|
@@ -464,15 +465,17 @@ function SelectTrigger(props) {
|
|
|
464
465
|
"class",
|
|
465
466
|
"style",
|
|
466
467
|
"slot",
|
|
467
|
-
"children"
|
|
468
|
+
"children",
|
|
469
|
+
"ref"
|
|
468
470
|
]);
|
|
469
471
|
const context = useContext(SelectContext);
|
|
470
472
|
if (!context) throw new Error("SelectTrigger must be used within a Select");
|
|
471
|
-
const { isOpen, isFocused, isFocusVisible, state } = context;
|
|
473
|
+
const { isOpen, isFocused, isFocusVisible, isPressed, state } = context;
|
|
472
474
|
let triggerRef;
|
|
473
475
|
const setTriggerRef = (el) => {
|
|
474
476
|
triggerRef = el;
|
|
475
477
|
context.setTriggerRef(el);
|
|
478
|
+
assignRef(local.ref, el);
|
|
476
479
|
};
|
|
477
480
|
createEffect(() => {
|
|
478
481
|
if (context.autoFocus) triggerRef?.focus();
|
|
@@ -485,6 +488,7 @@ function SelectTrigger(props) {
|
|
|
485
488
|
isFocused: isFocused(),
|
|
486
489
|
isFocusVisible: isFocusVisible(),
|
|
487
490
|
isHovered: isHovered(),
|
|
491
|
+
isPressed: isPressed(),
|
|
488
492
|
isDisabled: state.isDisabled
|
|
489
493
|
}));
|
|
490
494
|
const renderProps = useRenderProps({
|
|
@@ -609,7 +613,7 @@ function SelectValue(props) {
|
|
|
609
613
|
defaultClassName: "solidaria-Select-value"
|
|
610
614
|
}, renderValues);
|
|
611
615
|
return (() => {
|
|
612
|
-
var _el$16 = getNextElement(_tmpl$
|
|
616
|
+
var _el$16 = getNextElement(_tmpl$);
|
|
613
617
|
spread(_el$16, mergeProps(domProps, valueProps, {
|
|
614
618
|
get ["class"]() {
|
|
615
619
|
return renderProps.class();
|
|
@@ -651,6 +655,7 @@ function SelectListBox(props) {
|
|
|
651
655
|
const state = selectState;
|
|
652
656
|
createEffect(() => {
|
|
653
657
|
if (!isOpen()) return;
|
|
658
|
+
state.selectionManager.setFocused(true);
|
|
654
659
|
if (state.focusedKey() != null) return;
|
|
655
660
|
const selectedKey = state.selectedKey();
|
|
656
661
|
if (selectedKey != null && !state.collection().getItem(selectedKey)?.isDisabled) state.setFocusedKey(selectedKey);
|
|
@@ -665,7 +670,7 @@ function SelectListBox(props) {
|
|
|
665
670
|
return !isOpen() || local.isInPopover === true;
|
|
666
671
|
}
|
|
667
672
|
});
|
|
668
|
-
const
|
|
673
|
+
const listBoxHook = createListBox({
|
|
669
674
|
...menuProps,
|
|
670
675
|
shouldSelectOnPressUp: true,
|
|
671
676
|
shouldFocusOnHover: true,
|
|
@@ -685,8 +690,11 @@ function SelectListBox(props) {
|
|
|
685
690
|
return rest;
|
|
686
691
|
};
|
|
687
692
|
const cleanListBoxProps = () => {
|
|
688
|
-
const { ref: _ref2, ...rest } = listBoxProps;
|
|
689
|
-
return
|
|
693
|
+
const { ref: _ref2, "aria-activedescendant": _activeDescendant, onFocus: _onFocus, ...rest } = listBoxHook.listBoxProps;
|
|
694
|
+
return {
|
|
695
|
+
...rest,
|
|
696
|
+
tabIndex: state.isDisabled ? void 0 : state.focusedKey() != null ? -1 : 0
|
|
697
|
+
};
|
|
690
698
|
};
|
|
691
699
|
const items = () => Array.from(state.collection());
|
|
692
700
|
createEffect(() => {
|
|
@@ -809,13 +817,18 @@ function SelectOption(props) {
|
|
|
809
817
|
"slot",
|
|
810
818
|
"id",
|
|
811
819
|
"item",
|
|
812
|
-
"textValue"
|
|
820
|
+
"textValue",
|
|
821
|
+
"ref"
|
|
813
822
|
]);
|
|
814
823
|
const context = useContext(SelectStateContext);
|
|
815
824
|
if (!context) throw new Error("SelectOption must be used within a Select");
|
|
816
825
|
const state = context;
|
|
817
826
|
const selectContext = useContext(SelectContext);
|
|
818
|
-
const [ref,
|
|
827
|
+
const [ref, setRefSignal] = createSignal(null);
|
|
828
|
+
const setRef = (el) => {
|
|
829
|
+
setRefSignal(el);
|
|
830
|
+
assignRef(local.ref, el);
|
|
831
|
+
};
|
|
819
832
|
const optionAria = createOption({
|
|
820
833
|
key: local.id,
|
|
821
834
|
get isDisabled() {
|
|
@@ -919,7 +932,7 @@ function SelectOption(props) {
|
|
|
919
932
|
return selectionIndicatorContext();
|
|
920
933
|
},
|
|
921
934
|
get children() {
|
|
922
|
-
var _el$23 = getNextElement(_tmpl$
|
|
935
|
+
var _el$23 = getNextElement(_tmpl$5);
|
|
923
936
|
use(setRef, _el$23);
|
|
924
937
|
spread(_el$23, mergeProps(cleanOptionProps, {
|
|
925
938
|
get ["class"]() {
|
|
@@ -950,7 +963,7 @@ function SelectOption(props) {
|
|
|
950
963
|
insert(_el$23, (() => {
|
|
951
964
|
var _c$3 = memo(() => !!hasPrimitiveLabel());
|
|
952
965
|
return () => _c$3() ? (() => {
|
|
953
|
-
var _el$24 = getNextElement(_tmpl$
|
|
966
|
+
var _el$24 = getNextElement(_tmpl$);
|
|
954
967
|
spread(_el$24, mergeProps(() => optionAria.labelProps), false, true);
|
|
955
968
|
insert(_el$24, () => renderProps.renderChildren());
|
|
956
969
|
runHydrationEvents();
|