@proyecto-viviana/solidaria 0.4.0 → 0.4.1
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/_chunk/DragManager.js +627 -0
- package/dist/_chunk/DragManager.js.map +1 -0
- package/dist/_chunk/DragManager.jsx +627 -0
- package/dist/_chunk/DragManager.jsx.map +1 -0
- package/dist/_chunk/FocusScope.js +400 -0
- package/dist/_chunk/FocusScope.js.map +1 -0
- package/dist/_chunk/FocusScope.jsx +375 -0
- package/dist/_chunk/FocusScope.jsx.map +1 -0
- package/dist/_chunk/actiongroup.js +13 -79
- package/dist/_chunk/actiongroup.js.map +1 -1
- package/dist/_chunk/actiongroup.jsx +13 -79
- package/dist/_chunk/actiongroup.jsx.map +1 -1
- package/dist/_chunk/{live-announcer.js → announce.js} +1 -1
- package/dist/_chunk/announce.js.map +1 -0
- package/dist/_chunk/{live-announcer.jsx → announce.jsx} +1 -1
- package/dist/_chunk/announce.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +56 -8
- package/dist/_chunk/autocomplete.js.map +1 -1
- package/dist/_chunk/autocomplete.jsx +56 -8
- package/dist/_chunk/autocomplete.jsx.map +1 -1
- package/dist/_chunk/breadcrumbs.js +6 -4
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +6 -4
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +8 -9
- package/dist/_chunk/button.js.map +1 -1
- package/dist/_chunk/button.jsx +8 -9
- package/dist/_chunk/button.jsx.map +1 -1
- package/dist/_chunk/calendar.js +27 -26
- package/dist/_chunk/calendar.js.map +1 -1
- package/dist/_chunk/calendar.jsx +27 -26
- package/dist/_chunk/calendar.jsx.map +1 -1
- package/dist/_chunk/checkbox.js +5 -4
- package/dist/_chunk/checkbox.js.map +1 -1
- package/dist/_chunk/checkbox.jsx +5 -4
- package/dist/_chunk/checkbox.jsx.map +1 -1
- package/dist/_chunk/color.js +302 -18
- package/dist/_chunk/color.js.map +1 -1
- package/dist/_chunk/color.jsx +302 -18
- package/dist/_chunk/color.jsx.map +1 -1
- package/dist/_chunk/combobox.js +638 -12
- package/dist/_chunk/combobox.js.map +1 -1
- package/dist/_chunk/combobox.jsx +638 -12
- package/dist/_chunk/combobox.jsx.map +1 -1
- package/dist/_chunk/constants.js +19 -0
- package/dist/_chunk/constants.js.map +1 -0
- package/dist/_chunk/constants.jsx +19 -0
- package/dist/_chunk/constants.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +3 -171
- package/dist/_chunk/createCollator.js.map +1 -1
- package/dist/_chunk/createCollator.jsx +3 -165
- package/dist/_chunk/createCollator.jsx.map +1 -1
- package/dist/_chunk/createField.js +2 -1
- package/dist/_chunk/createField.js.map +1 -1
- package/dist/_chunk/createField.jsx +2 -1
- package/dist/_chunk/createField.jsx.map +1 -1
- package/dist/_chunk/createFocus.js +12 -8
- package/dist/_chunk/createFocus.js.map +1 -1
- package/dist/_chunk/createFocus.jsx +12 -8
- package/dist/_chunk/createFocus.jsx.map +1 -1
- package/dist/_chunk/createFocusWithin.js +12 -13
- package/dist/_chunk/createFocusWithin.js.map +1 -1
- package/dist/_chunk/createFocusWithin.jsx +12 -13
- package/dist/_chunk/createFocusWithin.jsx.map +1 -1
- package/dist/_chunk/createFocusable.js +3 -3
- package/dist/_chunk/createFocusable.js.map +1 -1
- package/dist/_chunk/createFocusable.jsx +3 -3
- package/dist/_chunk/createFocusable.jsx.map +1 -1
- package/dist/_chunk/{form.js → createFormReset.js} +1 -1
- package/dist/_chunk/createFormReset.js.map +1 -0
- package/dist/_chunk/{form.jsx → createFormReset.jsx} +1 -1
- package/dist/_chunk/createFormReset.jsx.map +1 -0
- package/dist/_chunk/createHover.js +2 -1
- package/dist/_chunk/createHover.js.map +1 -1
- package/dist/_chunk/createHover.jsx +2 -1
- package/dist/_chunk/createHover.jsx.map +1 -1
- package/dist/_chunk/createInteractionModality.js +2 -3
- package/dist/_chunk/createInteractionModality.js.map +1 -1
- package/dist/_chunk/createInteractionModality.jsx +2 -3
- package/dist/_chunk/createInteractionModality.jsx.map +1 -1
- package/dist/_chunk/createLabel.js +2 -1
- package/dist/_chunk/createLabel.js.map +1 -1
- package/dist/_chunk/createLabel.jsx +2 -1
- package/dist/_chunk/createLabel.jsx.map +1 -1
- package/dist/_chunk/createLabels.js +3 -2
- package/dist/_chunk/createLabels.js.map +1 -1
- package/dist/_chunk/createLabels.jsx +3 -2
- package/dist/_chunk/createLabels.jsx.map +1 -1
- package/dist/_chunk/createLandmark.js +1 -1
- package/dist/_chunk/createLandmark.jsx +1 -1
- package/dist/_chunk/createProgressBar.js +2 -1
- package/dist/_chunk/createProgressBar.js.map +1 -1
- package/dist/_chunk/createProgressBar.jsx +2 -1
- package/dist/_chunk/createProgressBar.jsx.map +1 -1
- package/dist/_chunk/createSelectableItem.js +7 -3
- package/dist/_chunk/createSelectableItem.js.map +1 -1
- package/dist/_chunk/createSelectableItem.jsx +7 -3
- package/dist/_chunk/createSelectableItem.jsx.map +1 -1
- package/dist/_chunk/createStringFormatter.js +61 -0
- package/dist/_chunk/createStringFormatter.js.map +1 -0
- package/dist/_chunk/createStringFormatter.jsx +61 -0
- package/dist/_chunk/createStringFormatter.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +5 -4
- package/dist/_chunk/createToggle.js.map +1 -1
- package/dist/_chunk/createToggle.jsx +5 -4
- package/dist/_chunk/createToggle.jsx.map +1 -1
- package/dist/_chunk/datepicker.js +1413 -1100
- package/dist/_chunk/datepicker.js.map +1 -1
- package/dist/_chunk/datepicker.jsx +1413 -1100
- package/dist/_chunk/datepicker.jsx.map +1 -1
- package/dist/_chunk/disclosure.js +2 -2
- package/dist/_chunk/disclosure.js.map +1 -1
- package/dist/_chunk/disclosure.jsx +2 -2
- package/dist/_chunk/disclosure.jsx.map +1 -1
- package/dist/_chunk/dnd.js +1586 -495
- package/dist/_chunk/dnd.js.map +1 -1
- package/dist/_chunk/dnd.jsx +1586 -495
- package/dist/_chunk/dnd.jsx.map +1 -1
- package/dist/_chunk/env.js +1 -19
- package/dist/_chunk/env.js.map +1 -1
- package/dist/_chunk/env.jsx +1 -19
- package/dist/_chunk/env.jsx.map +1 -1
- package/dist/_chunk/focus.js +1 -1
- package/dist/_chunk/focus.js.map +1 -1
- package/dist/_chunk/focus.jsx +1 -1
- package/dist/_chunk/focus.jsx.map +1 -1
- package/dist/_chunk/focus2.js +54 -318
- package/dist/_chunk/focus2.js.map +1 -1
- package/dist/_chunk/focus2.jsx +53 -292
- package/dist/_chunk/focus2.jsx.map +1 -1
- package/dist/_chunk/grid.js +1 -1
- package/dist/_chunk/grid.jsx +1 -1
- package/dist/_chunk/gridlist.js +14 -9
- package/dist/_chunk/gridlist.js.map +1 -1
- package/dist/_chunk/gridlist.jsx +14 -9
- package/dist/_chunk/gridlist.jsx.map +1 -1
- package/dist/_chunk/i18n.js +3 -58
- package/dist/_chunk/i18n.js.map +1 -1
- package/dist/_chunk/i18n.jsx +3 -58
- package/dist/_chunk/i18n.jsx.map +1 -1
- package/dist/_chunk/interactions.js +99 -9
- package/dist/_chunk/interactions.js.map +1 -1
- package/dist/_chunk/interactions.jsx +97 -9
- package/dist/_chunk/interactions.jsx.map +1 -1
- package/dist/_chunk/link.js +2 -1
- package/dist/_chunk/link.js.map +1 -1
- package/dist/_chunk/link.jsx +2 -1
- package/dist/_chunk/link.jsx.map +1 -1
- package/dist/_chunk/listbox.js +42 -10
- package/dist/_chunk/listbox.js.map +1 -1
- package/dist/_chunk/listbox.jsx +42 -10
- package/dist/_chunk/listbox.jsx.map +1 -1
- package/dist/_chunk/locale.js +173 -0
- package/dist/_chunk/locale.js.map +1 -0
- package/dist/_chunk/locale.jsx +167 -0
- package/dist/_chunk/locale.jsx.map +1 -0
- package/dist/_chunk/menu.js +5 -4
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +5 -4
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +3 -2
- package/dist/_chunk/numberfield.js.map +1 -1
- package/dist/_chunk/numberfield.jsx +3 -2
- package/dist/_chunk/numberfield.jsx.map +1 -1
- package/dist/_chunk/overlays.js +1 -1
- package/dist/_chunk/overlays.jsx +1 -1
- package/dist/_chunk/popover.js +3 -3
- package/dist/_chunk/popover.js.map +1 -1
- package/dist/_chunk/popover.jsx +3 -3
- package/dist/_chunk/popover.jsx.map +1 -1
- package/dist/_chunk/radio.js +7 -6
- package/dist/_chunk/radio.js.map +1 -1
- package/dist/_chunk/radio.jsx +7 -6
- package/dist/_chunk/radio.jsx.map +1 -1
- package/dist/_chunk/reactivity.js +21 -0
- package/dist/_chunk/reactivity.js.map +1 -0
- package/dist/_chunk/reactivity.jsx +21 -0
- package/dist/_chunk/reactivity.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +2 -1
- package/dist/_chunk/searchfield.js.map +1 -1
- package/dist/_chunk/searchfield.jsx +2 -1
- package/dist/_chunk/searchfield.jsx.map +1 -1
- package/dist/_chunk/select.js +8 -5
- package/dist/_chunk/select.js.map +1 -1
- package/dist/_chunk/select.jsx +8 -5
- package/dist/_chunk/select.jsx.map +1 -1
- package/dist/_chunk/selection.js +8 -21
- package/dist/_chunk/selection.js.map +1 -1
- package/dist/_chunk/selection.jsx +8 -21
- package/dist/_chunk/selection.jsx.map +1 -1
- package/dist/_chunk/separator.js +1 -1
- package/dist/_chunk/separator.jsx +1 -1
- package/dist/_chunk/slider.js +5 -4
- package/dist/_chunk/slider.js.map +1 -1
- package/dist/_chunk/slider.jsx +5 -4
- package/dist/_chunk/slider.jsx.map +1 -1
- package/dist/_chunk/spinbutton.js +153 -0
- package/dist/_chunk/spinbutton.js.map +1 -0
- package/dist/_chunk/spinbutton.jsx +153 -0
- package/dist/_chunk/spinbutton.jsx.map +1 -0
- package/dist/_chunk/table.js +45 -8
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +45 -8
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/tabs.js +11 -8
- package/dist/_chunk/tabs.js.map +1 -1
- package/dist/_chunk/tabs.jsx +11 -8
- package/dist/_chunk/tabs.jsx.map +1 -1
- package/dist/_chunk/tag.js +54 -18
- package/dist/_chunk/tag.js.map +1 -1
- package/dist/_chunk/tag.jsx +54 -18
- package/dist/_chunk/tag.jsx.map +1 -1
- package/dist/_chunk/textfield.js +2 -1
- package/dist/_chunk/textfield.js.map +1 -1
- package/dist/_chunk/textfield.jsx +2 -1
- package/dist/_chunk/textfield.jsx.map +1 -1
- package/dist/_chunk/toolbar.js +4 -36
- package/dist/_chunk/toolbar.js.map +1 -1
- package/dist/_chunk/toolbar.jsx +4 -36
- package/dist/_chunk/toolbar.jsx.map +1 -1
- package/dist/_chunk/tooltip.js +2 -2
- package/dist/_chunk/tooltip.js.map +1 -1
- package/dist/_chunk/tooltip.jsx +2 -2
- package/dist/_chunk/tooltip.jsx.map +1 -1
- package/dist/_chunk/tree.js +42 -14
- package/dist/_chunk/tree.js.map +1 -1
- package/dist/_chunk/tree.jsx +42 -14
- package/dist/_chunk/tree.jsx.map +1 -1
- package/dist/_chunk/utils.js +59 -19
- package/dist/_chunk/utils.js.map +1 -1
- package/dist/_chunk/utils.jsx +59 -19
- package/dist/_chunk/utils.jsx.map +1 -1
- package/dist/_chunk/visually-hidden.js +3 -2
- package/dist/_chunk/visually-hidden.js.map +1 -1
- package/dist/_chunk/visually-hidden.jsx +3 -2
- package/dist/_chunk/visually-hidden.jsx.map +1 -1
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -7
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/collections/index.js +1 -1
- package/dist/collections/index.jsx +1 -1
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/intl/index.d.ts +30 -0
- package/dist/color/intl/index.d.ts.map +1 -0
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/intl/generated-locales.d.ts +16 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -0
- package/dist/combobox/intl/index.d.ts +2 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +45 -23
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +34 -6
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +13 -13
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +55 -7
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +6 -15
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +17 -0
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -0
- package/dist/datepicker/createTimeField.d.ts +12 -49
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +3 -3
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -2
- package/dist/datepicker/index.jsx +2 -2
- package/dist/datepicker/intl.d.ts +12 -0
- package/dist/datepicker/intl.d.ts.map +1 -0
- package/dist/dnd/DragManager.d.ts +86 -0
- package/dist/dnd/DragManager.d.ts.map +1 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +42 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts.map +1 -0
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +12 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +7 -15
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +5 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +3 -2
- package/dist/dnd/index.jsx +3 -2
- package/dist/dnd/intl/index.d.ts +39 -0
- package/dist/dnd/intl/index.d.ts.map +1 -0
- package/dist/dnd/utils.d.ts +5 -0
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +7 -0
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/index.d.ts +2 -1
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/focus/index.js +3 -2
- package/dist/focus/index.jsx +3 -2
- package/dist/focus/virtualFocus.d.ts +26 -0
- package/dist/focus/virtualFocus.d.ts.map +1 -0
- package/dist/form/index.js +1 -1
- package/dist/form/index.jsx +1 -1
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/i18n/index.js +4 -2
- package/dist/i18n/index.jsx +4 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -12
- package/dist/index.jsx +18 -12
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/index.js +1 -2
- package/dist/interactions/index.jsx +1 -2
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +1 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/live-announcer/index.js +1 -1
- package/dist/live-announcer/index.jsx +1 -1
- package/dist/select/createSelect.d.ts +2 -0
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/selection/createSelectableItem.d.ts.map +1 -1
- package/dist/selection/index.js +2 -1
- package/dist/selection/index.jsx +2 -1
- package/dist/spinbutton/createSpinButton.d.ts +41 -0
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -0
- package/dist/spinbutton/index.d.ts +3 -0
- package/dist/spinbutton/index.d.ts.map +1 -0
- package/dist/spinbutton/index.js +2 -0
- package/dist/spinbutton/index.jsx +2 -0
- package/dist/spinbutton/intl.d.ts +5 -0
- package/dist/spinbutton/intl.d.ts.map +1 -0
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/types.d.ts +8 -0
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts +15 -0
- package/dist/table/utils.d.ts.map +1 -0
- package/dist/tabs/createTabs.d.ts +1 -0
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +7 -0
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/utils/animation.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +1 -0
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -3
- package/dist/utils/index.jsx +4 -3
- package/package.json +2 -2
- package/src/actiongroup/createActionGroup.ts +26 -109
- package/src/autocomplete/createAutocomplete.ts +136 -15
- package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
- package/src/button/createToggleButtonGroup.ts +19 -14
- package/src/calendar/createCalendar.ts +3 -4
- package/src/calendar/createCalendarCell.ts +17 -3
- package/src/calendar/createCalendarGrid.ts +5 -4
- package/src/calendar/createRangeCalendar.ts +27 -17
- package/src/calendar/createRangeCalendarCell.ts +17 -3
- package/src/calendar/intl/index.ts +8 -0
- package/src/color/createColorArea.ts +17 -10
- package/src/color/createColorField.ts +8 -1
- package/src/color/createColorSlider.ts +1 -2
- package/src/color/createColorSwatch.ts +4 -2
- package/src/color/createColorWheel.ts +0 -6
- package/src/color/intl/index.ts +316 -0
- package/src/combobox/createComboBox.ts +35 -4
- package/src/combobox/intl/generated-locales.ts +635 -0
- package/src/combobox/intl/index.ts +8 -2
- package/src/datepicker/createDateField.ts +228 -213
- package/src/datepicker/createDatePicker.ts +157 -146
- package/src/datepicker/createDatePickerGroup.ts +88 -82
- package/src/datepicker/createDateRangePicker.ts +230 -179
- package/src/datepicker/createDateSegment.ts +386 -389
- package/src/datepicker/createDisplayNames.ts +45 -0
- package/src/datepicker/createTimeField.ts +36 -129
- package/src/datepicker/index.ts +13 -14
- package/src/datepicker/intl.ts +633 -0
- package/src/dnd/DragManager.ts +693 -0
- package/src/dnd/DropTargetKeyboardNavigation.ts +337 -0
- package/src/dnd/createDrag.ts +31 -5
- package/src/dnd/createDraggableCollection.ts +33 -15
- package/src/dnd/createDraggableItem.ts +92 -5
- package/src/dnd/createDroppableCollection.ts +487 -373
- package/src/dnd/index.ts +11 -0
- package/src/dnd/intl/ar-AE.json +29 -0
- package/src/dnd/intl/bg-BG.json +29 -0
- package/src/dnd/intl/cs-CZ.json +29 -0
- package/src/dnd/intl/da-DK.json +29 -0
- package/src/dnd/intl/de-DE.json +29 -0
- package/src/dnd/intl/el-GR.json +29 -0
- package/src/dnd/intl/en-US.json +29 -0
- package/src/dnd/intl/es-ES.json +29 -0
- package/src/dnd/intl/et-EE.json +29 -0
- package/src/dnd/intl/fi-FI.json +29 -0
- package/src/dnd/intl/fr-FR.json +29 -0
- package/src/dnd/intl/he-IL.json +29 -0
- package/src/dnd/intl/hr-HR.json +29 -0
- package/src/dnd/intl/hu-HU.json +29 -0
- package/src/dnd/intl/index.ts +139 -0
- package/src/dnd/intl/it-IT.json +29 -0
- package/src/dnd/intl/ja-JP.json +29 -0
- package/src/dnd/intl/ko-KR.json +29 -0
- package/src/dnd/intl/lt-LT.json +29 -0
- package/src/dnd/intl/lv-LV.json +29 -0
- package/src/dnd/intl/nb-NO.json +29 -0
- package/src/dnd/intl/nl-NL.json +29 -0
- package/src/dnd/intl/pl-PL.json +29 -0
- package/src/dnd/intl/pt-BR.json +29 -0
- package/src/dnd/intl/pt-PT.json +29 -0
- package/src/dnd/intl/ro-RO.json +29 -0
- package/src/dnd/intl/ru-RU.json +29 -0
- package/src/dnd/intl/sk-SK.json +29 -0
- package/src/dnd/intl/sl-SI.json +29 -0
- package/src/dnd/intl/sr-SP.json +29 -0
- package/src/dnd/intl/sv-SE.json +29 -0
- package/src/dnd/intl/tr-TR.json +29 -0
- package/src/dnd/intl/uk-UA.json +29 -0
- package/src/dnd/intl/zh-CN.json +29 -0
- package/src/dnd/intl/zh-TW.json +29 -0
- package/src/dnd/utils.ts +36 -0
- package/src/focus/FocusScope.tsx +120 -12
- package/src/focus/index.ts +8 -0
- package/src/focus/virtualFocus.ts +55 -0
- package/src/gridlist/createGridList.ts +52 -16
- package/src/index.ts +11 -3
- package/src/interactions/FocusableProvider.tsx +11 -6
- package/src/interactions/createFocus.ts +26 -21
- package/src/interactions/createFocusWithin.ts +23 -24
- package/src/interactions/createInteractionModality.ts +5 -3
- package/src/label/createLabels.ts +7 -4
- package/src/listbox/createListBox.ts +74 -2
- package/src/listbox/createOption.ts +16 -1
- package/src/select/createSelect.ts +23 -2
- package/src/selection/createSelectableItem.ts +14 -0
- package/src/spinbutton/createSpinButton.ts +163 -0
- package/src/spinbutton/index.ts +10 -0
- package/src/spinbutton/intl.ts +115 -0
- package/src/table/createTable.ts +26 -1
- package/src/table/createTableColumnHeader.ts +10 -0
- package/src/table/createTableRow.ts +10 -0
- package/src/table/createTableSelectionCheckbox.ts +24 -1
- package/src/table/types.ts +8 -0
- package/src/table/utils.ts +41 -0
- package/src/tabs/createTabs.ts +53 -12
- package/src/tag/createTag.ts +21 -32
- package/src/tag/createTagGroup.ts +92 -0
- package/src/toolbar/createToolbar.ts +6 -58
- package/src/tree/createTree.ts +69 -14
- package/src/tree/createTreeSelectionCheckbox.ts +14 -1
- package/src/utils/animation.ts +119 -27
- package/src/utils/dom.ts +3 -2
- package/src/utils/index.ts +2 -0
- package/dist/_chunk/createLongPress.js +0 -91
- package/dist/_chunk/createLongPress.js.map +0 -1
- package/dist/_chunk/createLongPress.jsx +0 -91
- package/dist/_chunk/createLongPress.jsx.map +0 -1
- package/dist/_chunk/form.js.map +0 -1
- package/dist/_chunk/form.jsx.map +0 -1
- package/dist/_chunk/live-announcer.js.map +0 -1
- package/dist/_chunk/live-announcer.jsx.map +0 -1
- package/dist/datepicker/createTimeSegment.d.ts +0 -29
- package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
- package/src/datepicker/createTimeSegment.ts +0 -352
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disclosure.js","names":[],"sources":["../../src/disclosure/createDisclosure.ts","../../src/disclosure/createDisclosureGroup.ts"],"sourcesContent":["/**\n * createDisclosure hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * Port of @react-aria/disclosure useDisclosure.\n */\n\nimport { type JSX, createEffect, onCleanup } from \"solid-js\";\nimport { type DisclosureState } from \"@proyecto-viviana/solid-stately\";\nimport { createId, canUseDOM } from \"../ssr\";\nimport { createPress } from \"../interactions/createPress\";\nimport { mergeProps } from \"../utils/mergeProps\";\n\nexport interface AriaDisclosureProps {\n /** Whether the disclosure is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureAria {\n /** Props for the disclosure trigger button. */\n buttonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Props for the disclosure panel. */\n panelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the disclosure trigger is currently pressed. */\n isPressed: () => boolean;\n}\n\nexport function getDisclosurePanelHiddenAttribute(\n isExpanded: boolean,\n hasDOM = canUseDOM,\n): true | undefined {\n return hasDOM ? undefined : !isExpanded || undefined;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * A disclosure is a widget that can be toggled to show or hide content.\n * It consists of a trigger button and a panel.\n *\n * @example\n * ```tsx\n * import { createDisclosure } from 'solidaria';\n * import { createDisclosureState } from 'solid-stately';\n *\n * function Disclosure(props) {\n * const state = createDisclosureState(props);\n * let panelRef;\n * const { buttonProps, panelProps } = createDisclosure(\n * { get isDisabled() { return props.isDisabled; } },\n * state,\n * () => panelRef\n * );\n *\n * return (\n * <div>\n * <button {...buttonProps}>Toggle</button>\n * <div {...panelProps} ref={panelRef}>\n * {props.children}\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosure(\n props: AriaDisclosureProps | (() => AriaDisclosureProps),\n state: DisclosureState,\n panelRef: () => HTMLElement | null,\n): DisclosureAria {\n // Handle both plain object and accessor function patterns\n const getProps = typeof props === \"function\" ? props : () => props;\n\n const triggerId = createId();\n const panelId = createId();\n\n let raf: number | null = null;\n let isExpandedRef: boolean | null = null;\n\n const requestFrame = (callback: FrameRequestCallback): number => {\n if (typeof requestAnimationFrame === \"function\") {\n return requestAnimationFrame(callback);\n }\n\n return window.setTimeout(() => callback(performance.now()), 16);\n };\n\n const cancelFrame = (id: number) => {\n if (typeof cancelAnimationFrame === \"function\") {\n cancelAnimationFrame(id);\n } else {\n window.clearTimeout(id);\n }\n };\n\n const cancelPendingRaf = () => {\n if (raf != null && canUseDOM) {\n cancelFrame(raf);\n raf = null;\n }\n };\n\n const setPanelSize = (panel: HTMLElement, width: string, height: string) => {\n panel.style.setProperty(\"--disclosure-panel-width\", width);\n panel.style.setProperty(\"--disclosure-panel-height\", height);\n };\n\n const getPanelAnimations = (panel: HTMLElement): Animation[] => {\n return typeof panel.getAnimations === \"function\" ? panel.getAnimations() : [];\n };\n\n // Handle browser find-in-page reveal for collapsed panels.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const handleBeforeMatch = () => {\n cancelPendingRaf();\n raf = requestFrame(() => {\n if (panelRef() === panel) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n raf = null;\n });\n\n state.toggle();\n };\n\n panel.addEventListener(\"beforematch\", handleBeforeMatch);\n onCleanup(() => {\n panel.removeEventListener(\"beforematch\", handleBeforeMatch);\n });\n });\n\n // Handle panel visibility and animation sizing.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const isExpanded = state.isExpanded();\n cancelPendingRaf();\n\n if (isExpandedRef === null || typeof panel.getAnimations !== \"function\") {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, \"auto\", \"auto\");\n } else {\n panel.setAttribute(\"hidden\", \"until-found\");\n setPanelSize(panel, \"0px\", \"0px\");\n }\n } else if (isExpanded !== isExpandedRef) {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && state.isExpanded()) {\n setPanelSize(panel, \"auto\", \"auto\");\n }\n })\n .catch(() => {});\n } else {\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n // Force style recalculation before animating to zero.\n window.getComputedStyle(panel).height;\n\n setPanelSize(panel, \"0px\", \"0px\");\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && !state.isExpanded()) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n })\n .catch(() => {});\n }\n }\n\n isExpandedRef = isExpanded;\n });\n\n onCleanup(cancelPendingRaf);\n\n // Use createPress for proper interaction handling (matches Select/Menu pattern)\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return getProps().isDisabled;\n },\n onPressStart(event) {\n if (event.pointerType === \"keyboard\") {\n state.toggle();\n }\n },\n onPress(event) {\n if (event.pointerType !== \"keyboard\") {\n state.toggle();\n }\n },\n });\n\n return {\n isPressed,\n // Button props - merge with pressProps for consistent interaction handling\n // Using getter (not createMemo) to match createSelect pattern\n get buttonProps(): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const p = getProps();\n return mergeProps(\n pressProps as Record<string, unknown>,\n {\n id: triggerId,\n type: \"button\",\n \"aria-expanded\": state.isExpanded(),\n \"aria-controls\": panelId,\n disabled: p.isDisabled,\n } as Record<string, unknown>,\n ) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n },\n // Panel props\n get panelProps(): JSX.HTMLAttributes<HTMLElement> {\n return {\n id: panelId,\n role: \"group\",\n \"aria-labelledby\": triggerId,\n \"aria-hidden\": !state.isExpanded(),\n hidden: getDisclosurePanelHiddenAttribute(state.isExpanded()),\n };\n },\n };\n}\n","/**\n * createDisclosureGroup hook for Solidaria\n *\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * Port of @react-aria/disclosure.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { type DisclosureGroupState } from \"@proyecto-viviana/solid-stately\";\nimport { type MaybeAccessor } from \"../utils/reactivity\";\n\nexport interface AriaDisclosureGroupProps {\n /** Whether the disclosure group is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureGroupAria {\n /** Props for the disclosure group container. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * @example\n * ```tsx\n * import { createDisclosureGroup } from 'solidaria';\n * import { createDisclosureGroupState } from 'solid-stately';\n *\n * function Accordion(props) {\n * const state = createDisclosureGroupState(props);\n * const { groupProps } = createDisclosureGroup(props, state);\n *\n * return (\n * <div {...groupProps}>\n * {props.children}\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosureGroup(\n _props: MaybeAccessor<AriaDisclosureGroupProps>,\n _state: DisclosureGroupState,\n): DisclosureGroupAria {\n return {\n get groupProps() {\n return {};\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"disclosure.js","names":["mergeProps"],"sources":["../../src/disclosure/createDisclosure.ts","../../src/disclosure/createDisclosureGroup.ts"],"sourcesContent":["/**\n * createDisclosure hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * Port of @react-aria/disclosure useDisclosure.\n */\n\nimport { type JSX, createEffect, onCleanup } from \"solid-js\";\nimport { type DisclosureState } from \"@proyecto-viviana/solid-stately\";\nimport { createId, canUseDOM } from \"../ssr\";\nimport { createPress } from \"../interactions/createPress\";\nimport { mergeProps } from \"../utils/mergeProps\";\n\nexport interface AriaDisclosureProps {\n /** Whether the disclosure is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureAria {\n /** Props for the disclosure trigger button. */\n buttonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Props for the disclosure panel. */\n panelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the disclosure trigger is currently pressed. */\n isPressed: () => boolean;\n}\n\nexport function getDisclosurePanelHiddenAttribute(\n isExpanded: boolean,\n hasDOM = canUseDOM,\n): true | undefined {\n return hasDOM ? undefined : !isExpanded || undefined;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * A disclosure is a widget that can be toggled to show or hide content.\n * It consists of a trigger button and a panel.\n *\n * @example\n * ```tsx\n * import { createDisclosure } from 'solidaria';\n * import { createDisclosureState } from 'solid-stately';\n *\n * function Disclosure(props) {\n * const state = createDisclosureState(props);\n * let panelRef;\n * const { buttonProps, panelProps } = createDisclosure(\n * { get isDisabled() { return props.isDisabled; } },\n * state,\n * () => panelRef\n * );\n *\n * return (\n * <div>\n * <button {...buttonProps}>Toggle</button>\n * <div {...panelProps} ref={panelRef}>\n * {props.children}\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosure(\n props: AriaDisclosureProps | (() => AriaDisclosureProps),\n state: DisclosureState,\n panelRef: () => HTMLElement | null,\n): DisclosureAria {\n // Handle both plain object and accessor function patterns\n const getProps = typeof props === \"function\" ? props : () => props;\n\n const triggerId = createId();\n const panelId = createId();\n\n let raf: number | null = null;\n let isExpandedRef: boolean | null = null;\n\n const requestFrame = (callback: FrameRequestCallback): number => {\n if (typeof requestAnimationFrame === \"function\") {\n return requestAnimationFrame(callback);\n }\n\n return window.setTimeout(() => callback(performance.now()), 16);\n };\n\n const cancelFrame = (id: number) => {\n if (typeof cancelAnimationFrame === \"function\") {\n cancelAnimationFrame(id);\n } else {\n window.clearTimeout(id);\n }\n };\n\n const cancelPendingRaf = () => {\n if (raf != null && canUseDOM) {\n cancelFrame(raf);\n raf = null;\n }\n };\n\n const setPanelSize = (panel: HTMLElement, width: string, height: string) => {\n panel.style.setProperty(\"--disclosure-panel-width\", width);\n panel.style.setProperty(\"--disclosure-panel-height\", height);\n };\n\n const getPanelAnimations = (panel: HTMLElement): Animation[] => {\n return typeof panel.getAnimations === \"function\" ? panel.getAnimations() : [];\n };\n\n // Handle browser find-in-page reveal for collapsed panels.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const handleBeforeMatch = () => {\n cancelPendingRaf();\n raf = requestFrame(() => {\n if (panelRef() === panel) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n raf = null;\n });\n\n state.toggle();\n };\n\n panel.addEventListener(\"beforematch\", handleBeforeMatch);\n onCleanup(() => {\n panel.removeEventListener(\"beforematch\", handleBeforeMatch);\n });\n });\n\n // Handle panel visibility and animation sizing.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const isExpanded = state.isExpanded();\n cancelPendingRaf();\n\n if (isExpandedRef === null || typeof panel.getAnimations !== \"function\") {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, \"auto\", \"auto\");\n } else {\n panel.setAttribute(\"hidden\", \"until-found\");\n setPanelSize(panel, \"0px\", \"0px\");\n }\n } else if (isExpanded !== isExpandedRef) {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && state.isExpanded()) {\n setPanelSize(panel, \"auto\", \"auto\");\n }\n })\n .catch(() => {});\n } else {\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n // Force style recalculation before animating to zero.\n window.getComputedStyle(panel).height;\n\n setPanelSize(panel, \"0px\", \"0px\");\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && !state.isExpanded()) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n })\n .catch(() => {});\n }\n }\n\n isExpandedRef = isExpanded;\n });\n\n onCleanup(cancelPendingRaf);\n\n // Use createPress for proper interaction handling (matches Select/Menu pattern)\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return getProps().isDisabled;\n },\n onPressStart(event) {\n if (event.pointerType === \"keyboard\") {\n state.toggle();\n }\n },\n onPress(event) {\n if (event.pointerType !== \"keyboard\") {\n state.toggle();\n }\n },\n });\n\n return {\n isPressed,\n // Button props - merge with pressProps for consistent interaction handling\n // Using getter (not createMemo) to match createSelect pattern\n get buttonProps(): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const p = getProps();\n return mergeProps(\n pressProps as Record<string, unknown>,\n {\n id: triggerId,\n type: \"button\",\n \"aria-expanded\": state.isExpanded(),\n \"aria-controls\": panelId,\n disabled: p.isDisabled,\n } as Record<string, unknown>,\n ) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n },\n // Panel props\n get panelProps(): JSX.HTMLAttributes<HTMLElement> {\n return {\n id: panelId,\n role: \"group\",\n \"aria-labelledby\": triggerId,\n \"aria-hidden\": !state.isExpanded(),\n hidden: getDisclosurePanelHiddenAttribute(state.isExpanded()),\n };\n },\n };\n}\n","/**\n * createDisclosureGroup hook for Solidaria\n *\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * Port of @react-aria/disclosure.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { type DisclosureGroupState } from \"@proyecto-viviana/solid-stately\";\nimport { type MaybeAccessor } from \"../utils/reactivity\";\n\nexport interface AriaDisclosureGroupProps {\n /** Whether the disclosure group is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureGroupAria {\n /** Props for the disclosure group container. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * @example\n * ```tsx\n * import { createDisclosureGroup } from 'solidaria';\n * import { createDisclosureGroupState } from 'solid-stately';\n *\n * function Accordion(props) {\n * const state = createDisclosureGroupState(props);\n * const { groupProps } = createDisclosureGroup(props, state);\n *\n * return (\n * <div {...groupProps}>\n * {props.children}\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosureGroup(\n _props: MaybeAccessor<AriaDisclosureGroupProps>,\n _state: DisclosureGroupState,\n): DisclosureGroupAria {\n return {\n get groupProps() {\n return {};\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createPress } from "./createPress.jsx";
|
|
2
|
-
import {
|
|
2
|
+
import { i as mergeProps$1 } from "./env.jsx";
|
|
3
3
|
import { canUseDOM, createId } from "../ssr/index.jsx";
|
|
4
4
|
import { createEffect, onCleanup } from "solid-js";
|
|
5
5
|
//#region src/disclosure/createDisclosure.ts
|
|
@@ -133,7 +133,7 @@ function createDisclosure(props, state, panelRef) {
|
|
|
133
133
|
isPressed,
|
|
134
134
|
get buttonProps() {
|
|
135
135
|
const p = getProps();
|
|
136
|
-
return mergeProps(pressProps, {
|
|
136
|
+
return mergeProps$1(pressProps, {
|
|
137
137
|
id: triggerId,
|
|
138
138
|
type: "button",
|
|
139
139
|
"aria-expanded": state.isExpanded(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disclosure.jsx","names":[],"sources":["../../src/disclosure/createDisclosure.ts","../../src/disclosure/createDisclosureGroup.ts"],"sourcesContent":["/**\n * createDisclosure hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * Port of @react-aria/disclosure useDisclosure.\n */\n\nimport { type JSX, createEffect, onCleanup } from \"solid-js\";\nimport { type DisclosureState } from \"@proyecto-viviana/solid-stately\";\nimport { createId, canUseDOM } from \"../ssr\";\nimport { createPress } from \"../interactions/createPress\";\nimport { mergeProps } from \"../utils/mergeProps\";\n\nexport interface AriaDisclosureProps {\n /** Whether the disclosure is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureAria {\n /** Props for the disclosure trigger button. */\n buttonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Props for the disclosure panel. */\n panelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the disclosure trigger is currently pressed. */\n isPressed: () => boolean;\n}\n\nexport function getDisclosurePanelHiddenAttribute(\n isExpanded: boolean,\n hasDOM = canUseDOM,\n): true | undefined {\n return hasDOM ? undefined : !isExpanded || undefined;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * A disclosure is a widget that can be toggled to show or hide content.\n * It consists of a trigger button and a panel.\n *\n * @example\n * ```tsx\n * import { createDisclosure } from 'solidaria';\n * import { createDisclosureState } from 'solid-stately';\n *\n * function Disclosure(props) {\n * const state = createDisclosureState(props);\n * let panelRef;\n * const { buttonProps, panelProps } = createDisclosure(\n * { get isDisabled() { return props.isDisabled; } },\n * state,\n * () => panelRef\n * );\n *\n * return (\n * <div>\n * <button {...buttonProps}>Toggle</button>\n * <div {...panelProps} ref={panelRef}>\n * {props.children}\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosure(\n props: AriaDisclosureProps | (() => AriaDisclosureProps),\n state: DisclosureState,\n panelRef: () => HTMLElement | null,\n): DisclosureAria {\n // Handle both plain object and accessor function patterns\n const getProps = typeof props === \"function\" ? props : () => props;\n\n const triggerId = createId();\n const panelId = createId();\n\n let raf: number | null = null;\n let isExpandedRef: boolean | null = null;\n\n const requestFrame = (callback: FrameRequestCallback): number => {\n if (typeof requestAnimationFrame === \"function\") {\n return requestAnimationFrame(callback);\n }\n\n return window.setTimeout(() => callback(performance.now()), 16);\n };\n\n const cancelFrame = (id: number) => {\n if (typeof cancelAnimationFrame === \"function\") {\n cancelAnimationFrame(id);\n } else {\n window.clearTimeout(id);\n }\n };\n\n const cancelPendingRaf = () => {\n if (raf != null && canUseDOM) {\n cancelFrame(raf);\n raf = null;\n }\n };\n\n const setPanelSize = (panel: HTMLElement, width: string, height: string) => {\n panel.style.setProperty(\"--disclosure-panel-width\", width);\n panel.style.setProperty(\"--disclosure-panel-height\", height);\n };\n\n const getPanelAnimations = (panel: HTMLElement): Animation[] => {\n return typeof panel.getAnimations === \"function\" ? panel.getAnimations() : [];\n };\n\n // Handle browser find-in-page reveal for collapsed panels.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const handleBeforeMatch = () => {\n cancelPendingRaf();\n raf = requestFrame(() => {\n if (panelRef() === panel) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n raf = null;\n });\n\n state.toggle();\n };\n\n panel.addEventListener(\"beforematch\", handleBeforeMatch);\n onCleanup(() => {\n panel.removeEventListener(\"beforematch\", handleBeforeMatch);\n });\n });\n\n // Handle panel visibility and animation sizing.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const isExpanded = state.isExpanded();\n cancelPendingRaf();\n\n if (isExpandedRef === null || typeof panel.getAnimations !== \"function\") {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, \"auto\", \"auto\");\n } else {\n panel.setAttribute(\"hidden\", \"until-found\");\n setPanelSize(panel, \"0px\", \"0px\");\n }\n } else if (isExpanded !== isExpandedRef) {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && state.isExpanded()) {\n setPanelSize(panel, \"auto\", \"auto\");\n }\n })\n .catch(() => {});\n } else {\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n // Force style recalculation before animating to zero.\n window.getComputedStyle(panel).height;\n\n setPanelSize(panel, \"0px\", \"0px\");\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && !state.isExpanded()) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n })\n .catch(() => {});\n }\n }\n\n isExpandedRef = isExpanded;\n });\n\n onCleanup(cancelPendingRaf);\n\n // Use createPress for proper interaction handling (matches Select/Menu pattern)\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return getProps().isDisabled;\n },\n onPressStart(event) {\n if (event.pointerType === \"keyboard\") {\n state.toggle();\n }\n },\n onPress(event) {\n if (event.pointerType !== \"keyboard\") {\n state.toggle();\n }\n },\n });\n\n return {\n isPressed,\n // Button props - merge with pressProps for consistent interaction handling\n // Using getter (not createMemo) to match createSelect pattern\n get buttonProps(): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const p = getProps();\n return mergeProps(\n pressProps as Record<string, unknown>,\n {\n id: triggerId,\n type: \"button\",\n \"aria-expanded\": state.isExpanded(),\n \"aria-controls\": panelId,\n disabled: p.isDisabled,\n } as Record<string, unknown>,\n ) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n },\n // Panel props\n get panelProps(): JSX.HTMLAttributes<HTMLElement> {\n return {\n id: panelId,\n role: \"group\",\n \"aria-labelledby\": triggerId,\n \"aria-hidden\": !state.isExpanded(),\n hidden: getDisclosurePanelHiddenAttribute(state.isExpanded()),\n };\n },\n };\n}\n","/**\n * createDisclosureGroup hook for Solidaria\n *\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * Port of @react-aria/disclosure.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { type DisclosureGroupState } from \"@proyecto-viviana/solid-stately\";\nimport { type MaybeAccessor } from \"../utils/reactivity\";\n\nexport interface AriaDisclosureGroupProps {\n /** Whether the disclosure group is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureGroupAria {\n /** Props for the disclosure group container. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * @example\n * ```tsx\n * import { createDisclosureGroup } from 'solidaria';\n * import { createDisclosureGroupState } from 'solid-stately';\n *\n * function Accordion(props) {\n * const state = createDisclosureGroupState(props);\n * const { groupProps } = createDisclosureGroup(props, state);\n *\n * return (\n * <div {...groupProps}>\n * {props.children}\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosureGroup(\n _props: MaybeAccessor<AriaDisclosureGroupProps>,\n _state: DisclosureGroupState,\n): DisclosureGroupAria {\n return {\n get groupProps() {\n return {};\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"disclosure.jsx","names":["mergeProps"],"sources":["../../src/disclosure/createDisclosure.ts","../../src/disclosure/createDisclosureGroup.ts"],"sourcesContent":["/**\n * createDisclosure hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * Port of @react-aria/disclosure useDisclosure.\n */\n\nimport { type JSX, createEffect, onCleanup } from \"solid-js\";\nimport { type DisclosureState } from \"@proyecto-viviana/solid-stately\";\nimport { createId, canUseDOM } from \"../ssr\";\nimport { createPress } from \"../interactions/createPress\";\nimport { mergeProps } from \"../utils/mergeProps\";\n\nexport interface AriaDisclosureProps {\n /** Whether the disclosure is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureAria {\n /** Props for the disclosure trigger button. */\n buttonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Props for the disclosure panel. */\n panelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the disclosure trigger is currently pressed. */\n isPressed: () => boolean;\n}\n\nexport function getDisclosurePanelHiddenAttribute(\n isExpanded: boolean,\n hasDOM = canUseDOM,\n): true | undefined {\n return hasDOM ? undefined : !isExpanded || undefined;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a disclosure component.\n *\n * A disclosure is a widget that can be toggled to show or hide content.\n * It consists of a trigger button and a panel.\n *\n * @example\n * ```tsx\n * import { createDisclosure } from 'solidaria';\n * import { createDisclosureState } from 'solid-stately';\n *\n * function Disclosure(props) {\n * const state = createDisclosureState(props);\n * let panelRef;\n * const { buttonProps, panelProps } = createDisclosure(\n * { get isDisabled() { return props.isDisabled; } },\n * state,\n * () => panelRef\n * );\n *\n * return (\n * <div>\n * <button {...buttonProps}>Toggle</button>\n * <div {...panelProps} ref={panelRef}>\n * {props.children}\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosure(\n props: AriaDisclosureProps | (() => AriaDisclosureProps),\n state: DisclosureState,\n panelRef: () => HTMLElement | null,\n): DisclosureAria {\n // Handle both plain object and accessor function patterns\n const getProps = typeof props === \"function\" ? props : () => props;\n\n const triggerId = createId();\n const panelId = createId();\n\n let raf: number | null = null;\n let isExpandedRef: boolean | null = null;\n\n const requestFrame = (callback: FrameRequestCallback): number => {\n if (typeof requestAnimationFrame === \"function\") {\n return requestAnimationFrame(callback);\n }\n\n return window.setTimeout(() => callback(performance.now()), 16);\n };\n\n const cancelFrame = (id: number) => {\n if (typeof cancelAnimationFrame === \"function\") {\n cancelAnimationFrame(id);\n } else {\n window.clearTimeout(id);\n }\n };\n\n const cancelPendingRaf = () => {\n if (raf != null && canUseDOM) {\n cancelFrame(raf);\n raf = null;\n }\n };\n\n const setPanelSize = (panel: HTMLElement, width: string, height: string) => {\n panel.style.setProperty(\"--disclosure-panel-width\", width);\n panel.style.setProperty(\"--disclosure-panel-height\", height);\n };\n\n const getPanelAnimations = (panel: HTMLElement): Animation[] => {\n return typeof panel.getAnimations === \"function\" ? panel.getAnimations() : [];\n };\n\n // Handle browser find-in-page reveal for collapsed panels.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const handleBeforeMatch = () => {\n cancelPendingRaf();\n raf = requestFrame(() => {\n if (panelRef() === panel) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n raf = null;\n });\n\n state.toggle();\n };\n\n panel.addEventListener(\"beforematch\", handleBeforeMatch);\n onCleanup(() => {\n panel.removeEventListener(\"beforematch\", handleBeforeMatch);\n });\n });\n\n // Handle panel visibility and animation sizing.\n createEffect(() => {\n if (!canUseDOM) return;\n\n const panel = panelRef();\n if (!panel) return;\n\n const isExpanded = state.isExpanded();\n cancelPendingRaf();\n\n if (isExpandedRef === null || typeof panel.getAnimations !== \"function\") {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, \"auto\", \"auto\");\n } else {\n panel.setAttribute(\"hidden\", \"until-found\");\n setPanelSize(panel, \"0px\", \"0px\");\n }\n } else if (isExpanded !== isExpandedRef) {\n if (isExpanded) {\n panel.removeAttribute(\"hidden\");\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && state.isExpanded()) {\n setPanelSize(panel, \"auto\", \"auto\");\n }\n })\n .catch(() => {});\n } else {\n setPanelSize(panel, `${panel.scrollWidth}px`, `${panel.scrollHeight}px`);\n\n // Force style recalculation before animating to zero.\n window.getComputedStyle(panel).height;\n\n setPanelSize(panel, \"0px\", \"0px\");\n\n Promise.all(getPanelAnimations(panel).map((animation) => animation.finished))\n .then(() => {\n if (panelRef() === panel && !state.isExpanded()) {\n panel.setAttribute(\"hidden\", \"until-found\");\n }\n })\n .catch(() => {});\n }\n }\n\n isExpandedRef = isExpanded;\n });\n\n onCleanup(cancelPendingRaf);\n\n // Use createPress for proper interaction handling (matches Select/Menu pattern)\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return getProps().isDisabled;\n },\n onPressStart(event) {\n if (event.pointerType === \"keyboard\") {\n state.toggle();\n }\n },\n onPress(event) {\n if (event.pointerType !== \"keyboard\") {\n state.toggle();\n }\n },\n });\n\n return {\n isPressed,\n // Button props - merge with pressProps for consistent interaction handling\n // Using getter (not createMemo) to match createSelect pattern\n get buttonProps(): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const p = getProps();\n return mergeProps(\n pressProps as Record<string, unknown>,\n {\n id: triggerId,\n type: \"button\",\n \"aria-expanded\": state.isExpanded(),\n \"aria-controls\": panelId,\n disabled: p.isDisabled,\n } as Record<string, unknown>,\n ) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n },\n // Panel props\n get panelProps(): JSX.HTMLAttributes<HTMLElement> {\n return {\n id: panelId,\n role: \"group\",\n \"aria-labelledby\": triggerId,\n \"aria-hidden\": !state.isExpanded(),\n hidden: getDisclosurePanelHiddenAttribute(state.isExpanded()),\n };\n },\n };\n}\n","/**\n * createDisclosureGroup hook for Solidaria\n *\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * Port of @react-aria/disclosure.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { type DisclosureGroupState } from \"@proyecto-viviana/solid-stately\";\nimport { type MaybeAccessor } from \"../utils/reactivity\";\n\nexport interface AriaDisclosureGroupProps {\n /** Whether the disclosure group is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface DisclosureGroupAria {\n /** Props for the disclosure group container. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides accessibility implementation for a group of disclosures (accordion).\n *\n * @example\n * ```tsx\n * import { createDisclosureGroup } from 'solidaria';\n * import { createDisclosureGroupState } from 'solid-stately';\n *\n * function Accordion(props) {\n * const state = createDisclosureGroupState(props);\n * const { groupProps } = createDisclosureGroup(props, state);\n *\n * return (\n * <div {...groupProps}>\n * {props.children}\n * </div>\n * );\n * }\n * ```\n */\nexport function createDisclosureGroup(\n _props: MaybeAccessor<AriaDisclosureGroupProps>,\n _state: DisclosureGroupState,\n): DisclosureGroupAria {\n return {\n get groupProps() {\n return {};\n },\n };\n}\n"],"mappings":"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"}
|