@proyecto-viviana/solidaria-components 0.5.0 → 0.7.0-rc.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/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +4 -7
- package/dist/ActionBar.d.ts +2 -10
- package/dist/ActionBar.d.ts.map +1 -1
- package/dist/ActionBar.js +95 -59
- package/dist/ActionBar.js.map +1 -1
- package/dist/ActionBar.jsx +42 -15
- package/dist/ActionBar.jsx.map +1 -1
- package/dist/ActionGroup.d.ts +1 -12
- package/dist/ActionGroup.d.ts.map +1 -1
- package/dist/ActionGroup.js +66 -44
- package/dist/ActionGroup.js.map +1 -1
- package/dist/ActionGroup.jsx +25 -10
- package/dist/ActionGroup.jsx.map +1 -1
- package/dist/Alert.d.ts +4 -1
- package/dist/Alert.d.ts.map +1 -1
- package/dist/Alert.js +25 -17
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.jsx +9 -5
- package/dist/Alert.jsx.map +1 -1
- package/dist/Autocomplete.d.ts +2 -9
- package/dist/Autocomplete.d.ts.map +1 -1
- package/dist/Autocomplete.js +18 -5
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Autocomplete.jsx +20 -7
- package/dist/Autocomplete.jsx.map +1 -1
- package/dist/Breadcrumbs.d.ts +2 -7
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +71 -51
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs.jsx +25 -12
- package/dist/Breadcrumbs.jsx.map +1 -1
- package/dist/Button.d.ts +1 -7
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +125 -72
- package/dist/Button.js.map +1 -1
- package/dist/Button.jsx +105 -43
- package/dist/Button.jsx.map +1 -1
- package/dist/Calendar.d.ts +1 -7
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +297 -221
- package/dist/Calendar.js.map +1 -1
- package/dist/Calendar.jsx +52 -32
- package/dist/Calendar.jsx.map +1 -1
- package/dist/CalendarPicker.d.ts +1 -10
- package/dist/CalendarPicker.d.ts.map +1 -1
- package/dist/CalendarPicker.js +12 -0
- package/dist/CalendarPicker.js.map +1 -1
- package/dist/CalendarPicker.jsx +12 -0
- package/dist/CalendarPicker.jsx.map +1 -1
- package/dist/Checkbox.d.ts +2 -7
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +332 -270
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.jsx +70 -77
- package/dist/Checkbox.jsx.map +1 -1
- package/dist/Collection.d.ts +33 -7
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +128 -74
- package/dist/Collection.js.map +1 -1
- package/dist/Collection.jsx +46 -7
- package/dist/Collection.jsx.map +1 -1
- package/dist/Color.d.ts +15 -20
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +572 -334
- package/dist/Color.js.map +1 -1
- package/dist/Color.jsx +205 -85
- package/dist/Color.jsx.map +1 -1
- package/dist/ColorEditor.d.ts +3 -1
- package/dist/ColorEditor.d.ts.map +1 -1
- package/dist/ColorEditor.js +147 -124
- package/dist/ColorEditor.js.map +1 -1
- package/dist/ColorEditor.jsx +4 -1
- package/dist/ColorEditor.jsx.map +1 -1
- package/dist/ComboBox.d.ts +31 -10
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +539 -274
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBox.jsx +213 -70
- package/dist/ComboBox.jsx.map +1 -1
- package/dist/ContextualHelpTrigger.d.ts +1 -7
- package/dist/ContextualHelpTrigger.d.ts.map +1 -1
- package/dist/ContextualHelpTrigger.js +102 -72
- package/dist/ContextualHelpTrigger.js.map +1 -1
- package/dist/ContextualHelpTrigger.jsx +36 -16
- package/dist/ContextualHelpTrigger.jsx.map +1 -1
- package/dist/DateField.d.ts +2 -7
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +0 -2
- package/dist/DateField.jsx +0 -2
- package/dist/DateField2.js +194 -179
- package/dist/DateField2.js.map +1 -1
- package/dist/DateField2.jsx +58 -55
- package/dist/DateField2.jsx.map +1 -1
- package/dist/DatePicker.d.ts +7 -7
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +2 -2
- package/dist/DatePicker.jsx +2 -2
- package/dist/DatePicker2.js +357 -435
- package/dist/DatePicker2.js.map +1 -1
- package/dist/DatePicker2.jsx +109 -178
- package/dist/DatePicker2.jsx.map +1 -1
- package/dist/DateRangePickerContext.d.ts +7 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -1
- package/dist/Dialog.d.ts +4 -9
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +168 -101
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.jsx +75 -27
- package/dist/Dialog.jsx.map +1 -1
- package/dist/Disclosure.d.ts +1 -9
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +121 -79
- package/dist/Disclosure.js.map +1 -1
- package/dist/Disclosure.jsx +32 -19
- package/dist/Disclosure.jsx.map +1 -1
- package/dist/DragAndDrop.d.ts +9 -6
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +37 -22
- package/dist/DragAndDrop.js.map +1 -1
- package/dist/DragAndDrop.jsx +20 -4
- package/dist/DragAndDrop.jsx.map +1 -1
- package/dist/DragPreview.d.ts +1 -1
- package/dist/DragPreview.d.ts.map +1 -1
- package/dist/DropZone.d.ts +1 -7
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +74 -40
- package/dist/DropZone.js.map +1 -1
- package/dist/DropZone.jsx +24 -8
- package/dist/DropZone.jsx.map +1 -1
- package/dist/ElementTag.d.ts +9 -20
- package/dist/ElementTag.d.ts.map +1 -1
- package/dist/ElementTag.js +8 -210
- package/dist/ElementTag.js.map +1 -1
- package/dist/ElementTag.jsx +8 -57
- package/dist/ElementTag.jsx.map +1 -1
- package/dist/FieldError.d.ts +8 -7
- package/dist/FieldError.d.ts.map +1 -1
- package/dist/FieldError.js +33 -13
- package/dist/FieldError.js.map +1 -1
- package/dist/FieldError.jsx +20 -5
- package/dist/FieldError.jsx.map +1 -1
- package/dist/FileTrigger.d.ts +1 -7
- package/dist/FileTrigger.d.ts.map +1 -1
- package/dist/FileTrigger.js +30 -12
- package/dist/FileTrigger.js.map +1 -1
- package/dist/FileTrigger.jsx +15 -2
- package/dist/FileTrigger.jsx.map +1 -1
- package/dist/Focusable.d.ts +2 -8
- package/dist/Focusable.d.ts.map +1 -1
- package/dist/Focusable.js +23 -6
- package/dist/Focusable.js.map +1 -1
- package/dist/Focusable.jsx +22 -5
- package/dist/Focusable.jsx.map +1 -1
- package/dist/Form.d.ts +9 -8
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +66 -43
- package/dist/Form.js.map +1 -1
- package/dist/Form.jsx +36 -16
- package/dist/Form.jsx.map +1 -1
- package/dist/GridList.d.ts +5 -10
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +372 -243
- package/dist/GridList.js.map +1 -1
- package/dist/GridList.jsx +177 -99
- package/dist/GridList.jsx.map +1 -1
- package/dist/HiddenDateInput.d.ts +1 -7
- package/dist/HiddenDateInput.d.ts.map +1 -1
- package/dist/Icon.d.ts +4 -1
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +41 -37
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.jsx +7 -3
- package/dist/Icon.jsx.map +1 -1
- package/dist/Keyboard.d.ts +1 -7
- package/dist/Keyboard.d.ts.map +1 -1
- package/dist/Keyboard.js +24 -11
- package/dist/Keyboard.js.map +1 -1
- package/dist/Keyboard.jsx +15 -2
- package/dist/Keyboard.jsx.map +1 -1
- package/dist/Label.d.ts +20 -0
- package/dist/Label.d.ts.map +1 -0
- package/dist/Label.js +60 -0
- package/dist/Label.js.map +1 -0
- package/dist/Label.jsx +47 -0
- package/dist/Label.jsx.map +1 -0
- package/dist/Landmark.d.ts +4 -1
- package/dist/Landmark.d.ts.map +1 -1
- package/dist/Landmark.js +10 -4
- package/dist/Landmark.js.map +1 -1
- package/dist/Landmark.jsx +5 -1
- package/dist/Landmark.jsx.map +1 -1
- package/dist/Link.d.ts +2 -7
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +56 -36
- package/dist/Link.js.map +1 -1
- package/dist/Link.jsx +52 -10
- package/dist/Link.jsx.map +1 -1
- package/dist/ListBox.d.ts +17 -13
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +647 -348
- package/dist/ListBox.js.map +1 -1
- package/dist/ListBox.jsx +339 -236
- package/dist/ListBox.jsx.map +1 -1
- package/dist/ListDropTargetDelegate.d.ts +3 -0
- package/dist/ListDropTargetDelegate.d.ts.map +1 -1
- package/dist/Menu.d.ts +39 -30
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +547 -368
- package/dist/Menu.js.map +1 -1
- package/dist/Menu.jsx +328 -230
- package/dist/Menu.jsx.map +1 -1
- package/dist/Meter.d.ts +6 -13
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +55 -18
- package/dist/Meter.js.map +1 -1
- package/dist/Meter.jsx +33 -8
- package/dist/Meter.jsx.map +1 -1
- package/dist/Modal.d.ts +1 -7
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +104 -56
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.jsx +68 -38
- package/dist/Modal.jsx.map +1 -1
- package/dist/NumberField.d.ts +4 -7
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +243 -124
- package/dist/NumberField.js.map +1 -1
- package/dist/NumberField.jsx +115 -26
- package/dist/NumberField.jsx.map +1 -1
- package/dist/Popover.d.ts +15 -7
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +370 -181
- package/dist/Popover.js.map +1 -1
- package/dist/Popover.jsx +215 -82
- package/dist/Popover.jsx.map +1 -1
- package/dist/Pressable.d.ts +2 -8
- package/dist/Pressable.d.ts.map +1 -1
- package/dist/Pressable.js +23 -6
- package/dist/Pressable.js.map +1 -1
- package/dist/Pressable.jsx +22 -5
- package/dist/Pressable.jsx.map +1 -1
- package/dist/PreviewTrigger.d.ts +24 -0
- package/dist/PreviewTrigger.d.ts.map +1 -0
- package/dist/PreviewTrigger.js +128 -0
- package/dist/PreviewTrigger.js.map +1 -0
- package/dist/PreviewTrigger.jsx +117 -0
- package/dist/PreviewTrigger.jsx.map +1 -0
- package/dist/ProgressBar.d.ts +1 -7
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +34 -14
- package/dist/ProgressBar.js.map +1 -1
- package/dist/ProgressBar.jsx +17 -3
- package/dist/ProgressBar.jsx.map +1 -1
- package/dist/RadioGroup.d.ts +2 -7
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +388 -269
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.jsx +110 -99
- package/dist/RadioGroup.jsx.map +1 -1
- package/dist/RangeCalendar.d.ts +3 -7
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +271 -202
- package/dist/RangeCalendar.js.map +1 -1
- package/dist/RangeCalendar.jsx +56 -37
- package/dist/RangeCalendar.jsx.map +1 -1
- package/dist/RouterProvider.d.ts +3 -9
- package/dist/RouterProvider.d.ts.map +1 -1
- package/dist/RouterProvider.js +15 -14
- package/dist/RouterProvider.js.map +1 -1
- package/dist/RouterProvider.jsx +14 -13
- package/dist/RouterProvider.jsx.map +1 -1
- package/dist/SearchField.d.ts +4 -7
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +191 -164
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchField.jsx +69 -62
- package/dist/SearchField.jsx.map +1 -1
- package/dist/Select.d.ts +5 -10
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +565 -359
- package/dist/Select.js.map +1 -1
- package/dist/Select.jsx +281 -161
- package/dist/Select.jsx.map +1 -1
- package/dist/SelectionIndicator.d.ts +1 -4
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +29 -13
- package/dist/SelectionIndicator.js.map +1 -1
- package/dist/SelectionIndicator.jsx +18 -4
- package/dist/SelectionIndicator.jsx.map +1 -1
- package/dist/Separator.d.ts +1 -7
- package/dist/Separator.d.ts.map +1 -1
- package/dist/Separator.js +22 -6
- package/dist/Separator.js.map +1 -1
- package/dist/Separator.jsx +16 -3
- package/dist/Separator.jsx.map +1 -1
- package/dist/SharedElementTransition.d.ts +1 -10
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +68 -40
- package/dist/SharedElementTransition.js.map +1 -1
- package/dist/SharedElementTransition.jsx +49 -25
- package/dist/SharedElementTransition.jsx.map +1 -1
- package/dist/Slider.d.ts +2 -8
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +155 -97
- package/dist/Slider.js.map +1 -1
- package/dist/Slider.jsx +25 -12
- package/dist/Slider.jsx.map +1 -1
- package/dist/StepList.d.ts +1 -7
- package/dist/StepList.d.ts.map +1 -1
- package/dist/StepList.js +112 -68
- package/dist/StepList.js.map +1 -1
- package/dist/StepList.jsx +58 -20
- package/dist/StepList.jsx.map +1 -1
- package/dist/Switch.d.ts +2 -9
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +164 -114
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.jsx +26 -13
- package/dist/Switch.jsx.map +1 -1
- package/dist/Table.d.ts +2 -1
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +689 -592
- package/dist/Table.js.map +1 -1
- package/dist/Table.jsx +317 -237
- package/dist/Table.jsx.map +1 -1
- package/dist/Tabs.d.ts +2 -7
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +278 -293
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.jsx +68 -66
- package/dist/Tabs.jsx.map +1 -1
- package/dist/TagGroup.d.ts +4 -11
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +153 -115
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroup.jsx +37 -24
- package/dist/TagGroup.jsx.map +1 -1
- package/dist/Text.d.ts +3 -3
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +24 -7
- package/dist/Text.js.map +1 -1
- package/dist/Text.jsx +17 -5
- package/dist/Text.jsx.map +1 -1
- package/dist/TextField.d.ts +3 -16
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +104 -129
- package/dist/TextField.js.map +1 -1
- package/dist/TextField.jsx +76 -102
- package/dist/TextField.jsx.map +1 -1
- package/dist/TimeField.d.ts +2 -15
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +86 -102
- package/dist/TimeField.js.map +1 -1
- package/dist/TimeField.jsx +32 -49
- package/dist/TimeField.jsx.map +1 -1
- package/dist/Toast.d.ts +10 -13
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +209 -108
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.jsx +127 -22
- package/dist/Toast.jsx.map +1 -1
- package/dist/ToggleButton.d.ts +1 -7
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +57 -35
- package/dist/ToggleButton.js.map +1 -1
- package/dist/ToggleButton.jsx +26 -12
- package/dist/ToggleButton.jsx.map +1 -1
- package/dist/ToggleButtonGroup.d.ts +1 -7
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +59 -44
- package/dist/ToggleButtonGroup.js.map +1 -1
- package/dist/ToggleButtonGroup.jsx +25 -12
- package/dist/ToggleButtonGroup.jsx.map +1 -1
- package/dist/TokenField.d.ts +52 -0
- package/dist/TokenField.d.ts.map +1 -0
- package/dist/TokenField.js +301 -0
- package/dist/TokenField.js.map +1 -0
- package/dist/TokenField.jsx +197 -0
- package/dist/TokenField.jsx.map +1 -0
- package/dist/Toolbar.d.ts +2 -7
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +35 -16
- package/dist/Toolbar.js.map +1 -1
- package/dist/Toolbar.jsx +15 -2
- package/dist/Toolbar.jsx.map +1 -1
- package/dist/Tooltip.d.ts +2 -7
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +105 -68
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.jsx +60 -36
- package/dist/Tooltip.jsx.map +1 -1
- package/dist/Tree.d.ts +8 -11
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +486 -339
- package/dist/Tree.js.map +1 -1
- package/dist/Tree.jsx +155 -107
- package/dist/Tree.jsx.map +1 -1
- package/dist/Virtualizer.d.ts +39 -9
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -2
- package/dist/Virtualizer.jsx +2 -2
- package/dist/Virtualizer2.js +491 -136
- package/dist/Virtualizer2.js.map +1 -1
- package/dist/Virtualizer2.jsx +455 -122
- package/dist/Virtualizer2.jsx.map +1 -1
- package/dist/VirtualizerLayouts.d.ts +55 -2
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.d.ts +4 -3
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +18 -11
- package/dist/VisuallyHidden.js.map +1 -1
- package/dist/VisuallyHidden.jsx +15 -9
- package/dist/VisuallyHidden.jsx.map +1 -1
- package/dist/contexts.d.ts +25 -0
- package/dist/contexts.d.ts.map +1 -1
- package/dist/contexts.js +3 -0
- package/dist/contexts.js.map +1 -1
- package/dist/contexts.jsx +3 -0
- package/dist/contexts.jsx.map +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.jsx +14 -11
- package/dist/intl/index.d.ts +16 -0
- package/dist/intl/index.d.ts.map +1 -0
- package/dist/intl.js +212 -0
- package/dist/intl.js.map +1 -0
- package/dist/intl.jsx +212 -0
- package/dist/intl.jsx.map +1 -0
- package/dist/useDragAndDrop.d.ts +4 -2
- package/dist/useDragAndDrop.d.ts.map +1 -1
- package/dist/useDragAndDrop2.js +39 -21
- package/dist/useDragAndDrop2.js.map +1 -1
- package/dist/useDragAndDrop2.jsx +39 -21
- package/dist/useDragAndDrop2.jsx.map +1 -1
- package/dist/utils.d.ts +28 -9
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +96 -24
- package/dist/utils.js.map +1 -1
- package/dist/utils.jsx +81 -24
- package/dist/utils.jsx.map +1 -1
- package/dist/virtualizer/Layout.d.ts +9 -0
- package/dist/virtualizer/Layout.d.ts.map +1 -1
- package/dist/virtualizer/Layout.js +23 -2
- package/dist/virtualizer/Layout.js.map +1 -1
- package/dist/virtualizer/Layout.jsx +23 -2
- package/dist/virtualizer/Layout.jsx.map +1 -1
- package/package.json +29 -10
- package/src/ActionBar.tsx +50 -24
- package/src/ActionGroup.tsx +31 -19
- package/src/Alert.tsx +10 -4
- package/src/Autocomplete.tsx +24 -15
- package/src/Breadcrumbs.tsx +32 -16
- package/src/Button.tsx +182 -67
- package/src/Calendar.tsx +65 -47
- package/src/CalendarPicker.tsx +16 -1
- package/src/Checkbox.tsx +84 -116
- package/src/Collection.tsx +84 -3
- package/src/Color.tsx +282 -104
- package/src/ColorEditor.tsx +5 -1
- package/src/ComboBox.tsx +384 -109
- package/src/ContextualHelpTrigger.tsx +47 -41
- package/src/DateField.tsx +74 -106
- package/src/DatePicker.tsx +156 -352
- package/src/DateRangePickerContext.tsx +8 -0
- package/src/Dialog.tsx +105 -38
- package/src/Disclosure.tsx +29 -19
- package/src/DragAndDrop.tsx +43 -8
- package/src/DragPreview.tsx +20 -1
- package/src/DropZone.tsx +32 -18
- package/src/ElementTag.tsx +14 -104
- package/src/FieldError.tsx +39 -7
- package/src/FileTrigger.tsx +18 -3
- package/src/Focusable.tsx +27 -6
- package/src/Form.tsx +57 -11
- package/src/GridList.tsx +233 -141
- package/src/HiddenDateInput.tsx +19 -3
- package/src/Icon.tsx +8 -2
- package/src/Keyboard.tsx +18 -2
- package/src/Label.tsx +77 -0
- package/src/Landmark.tsx +6 -1
- package/src/Link.tsx +65 -19
- package/src/ListBox.tsx +645 -468
- package/src/ListDropTargetDelegate.ts +4 -0
- package/src/Menu.tsx +512 -349
- package/src/Meter.tsx +42 -8
- package/src/Modal.tsx +85 -42
- package/src/NumberField.tsx +161 -48
- package/src/Popover.tsx +424 -148
- package/src/Pressable.tsx +27 -6
- package/src/PreviewTrigger.tsx +171 -0
- package/src/ProgressBar.tsx +25 -3
- package/src/RadioGroup.tsx +230 -161
- package/src/RangeCalendar.tsx +75 -63
- package/src/RouterProvider.tsx +24 -14
- package/src/SearchField.tsx +118 -121
- package/src/Select.tsx +454 -274
- package/src/SelectionIndicator.tsx +21 -3
- package/src/Separator.tsx +17 -1
- package/src/SharedElementTransition.tsx +115 -97
- package/src/Slider.tsx +35 -17
- package/src/StepList.tsx +71 -32
- package/src/Switch.tsx +45 -29
- package/src/Table.tsx +446 -380
- package/src/Tabs.tsx +132 -155
- package/src/TagGroup.tsx +53 -40
- package/src/Text.tsx +23 -6
- package/src/TextField.tsx +118 -159
- package/src/TimeField.tsx +34 -95
- package/src/Toast.tsx +141 -67
- package/src/ToggleButton.tsx +33 -15
- package/src/ToggleButtonGroup.tsx +27 -9
- package/src/TokenField.tsx +379 -0
- package/src/Toolbar.tsx +19 -9
- package/src/Tooltip.tsx +126 -84
- package/src/Tree.tsx +233 -173
- package/src/Virtualizer.tsx +400 -138
- package/src/VirtualizerLayouts.ts +211 -26
- package/src/VisuallyHidden.tsx +22 -8
- package/src/contexts.ts +13 -0
- package/src/index.ts +32 -11
- package/src/intl/ar-AE.json +6 -0
- package/src/intl/bg-BG.json +6 -0
- package/src/intl/cs-CZ.json +6 -0
- package/src/intl/da-DK.json +6 -0
- package/src/intl/de-DE.json +6 -0
- package/src/intl/el-GR.json +6 -0
- package/src/intl/en-US.json +6 -0
- package/src/intl/es-ES.json +6 -0
- package/src/intl/et-EE.json +6 -0
- package/src/intl/fi-FI.json +6 -0
- package/src/intl/fr-FR.json +6 -0
- package/src/intl/he-IL.json +6 -0
- package/src/intl/hr-HR.json +6 -0
- package/src/intl/hu-HU.json +6 -0
- package/src/intl/index.ts +125 -0
- package/src/intl/it-IT.json +6 -0
- package/src/intl/ja-JP.json +6 -0
- package/src/intl/ko-KR.json +6 -0
- package/src/intl/lt-LT.json +6 -0
- package/src/intl/lv-LV.json +6 -0
- package/src/intl/nb-NO.json +6 -0
- package/src/intl/nl-NL.json +6 -0
- package/src/intl/pl-PL.json +6 -0
- package/src/intl/pt-BR.json +6 -0
- package/src/intl/pt-PT.json +6 -0
- package/src/intl/ro-RO.json +6 -0
- package/src/intl/ru-RU.json +6 -0
- package/src/intl/sk-SK.json +6 -0
- package/src/intl/sl-SI.json +6 -0
- package/src/intl/sr-SP.json +6 -0
- package/src/intl/sv-SE.json +6 -0
- package/src/intl/tr-TR.json +6 -0
- package/src/intl/uk-UA.json +6 -0
- package/src/intl/zh-CN.json +6 -0
- package/src/intl/zh-TW.json +6 -0
- package/src/useDragAndDrop.ts +30 -32
- package/src/utils.tsx +124 -68
- package/src/virtualizer/Layout.ts +29 -0
package/dist/Table.jsx
CHANGED
|
@@ -2,11 +2,14 @@ import { dataAttr, filterDOMProps, useRenderProps } from "./utils.jsx";
|
|
|
2
2
|
import { ButtonContext } from "./Button.jsx";
|
|
3
3
|
import { SharedElementTransition } from "./SharedElementTransition.jsx";
|
|
4
4
|
import { useLinkProps, useRouter } from "./RouterProvider.jsx";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { t as racIntlStrings } from "./intl.jsx";
|
|
6
|
+
import { CollectionRendererContext, renderCollectionDropSlots, useCollectionRenderer, useCollectionRoot } from "./Collection.jsx";
|
|
7
|
+
import { o as useVirtualizerContext, t as PersistedVirtualItem } from "./Virtualizer2.jsx";
|
|
8
|
+
import { getNormalizedDropTargetKey, indexesOutsideRange, mergePersistedKeysIntoVirtualRange, useDndPersistedKeys, useRenderDropIndicator } from "./DragAndDrop.jsx";
|
|
9
|
+
import { createTreeDropTargetDelegate } from "./Tree.jsx";
|
|
10
|
+
import { For, Show, createContext, createEffect, createMemo, createRenderEffect, createSignal, createTrackedEffect, createUniqueId, untrack, useContext } from "solid-js";
|
|
11
|
+
import { createFocusRing, createHover, createStringFormatter, createTable, createTableCell, createTableColumnHeader, createTableColumnResize, createTableRow, createTableRowGroup, createTableSelectAllCheckbox, createTableSelectionCheckbox, getTableData, isFocusVisible, mergeProps, useLocale } from "@proyecto-viviana/solidaria";
|
|
12
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
10
13
|
import { createTableCollection, createTableColumnResizeState, createTableState, createTreeGridState } from "@proyecto-viviana/solid-stately";
|
|
11
14
|
//#region src/Table.tsx
|
|
12
15
|
/**
|
|
@@ -15,7 +18,7 @@ import { createTableCollection, createTableColumnResizeState, createTableState,
|
|
|
15
18
|
* A pre-wired headless table that combines state + aria hooks.
|
|
16
19
|
* Based on react-aria-components/src/Table.tsx
|
|
17
20
|
*/
|
|
18
|
-
function assignRef(ref, el) {
|
|
21
|
+
function assignRef$1(ref, el) {
|
|
19
22
|
if (!ref) return;
|
|
20
23
|
if (typeof ref === "function") ref(el);
|
|
21
24
|
else ref.current = el;
|
|
@@ -38,6 +41,24 @@ function resolveItemKey(item, getKey, index) {
|
|
|
38
41
|
const record = item;
|
|
39
42
|
return record.id ?? record.key ?? index;
|
|
40
43
|
}
|
|
44
|
+
/** RAC Table.tsx TableElementType / THead / TBody / row / cell: div when virtualized. */
|
|
45
|
+
function TableHost(props) {
|
|
46
|
+
const [local, rest] = splitProps(props, [
|
|
47
|
+
"hostTag",
|
|
48
|
+
"virtualized",
|
|
49
|
+
"children"
|
|
50
|
+
]);
|
|
51
|
+
if (local.virtualized) return <div {...rest}>{local.children}</div>;
|
|
52
|
+
switch (local.hostTag) {
|
|
53
|
+
case "table": return <table {...rest}>{local.children}</table>;
|
|
54
|
+
case "thead": return <thead {...rest}>{local.children}</thead>;
|
|
55
|
+
case "tbody": return <tbody {...rest}>{local.children}</tbody>;
|
|
56
|
+
case "tfoot": return <tfoot {...rest}>{local.children}</tfoot>;
|
|
57
|
+
case "tr": return <tr {...rest}>{local.children}</tr>;
|
|
58
|
+
case "th": return <th {...rest}>{local.children}</th>;
|
|
59
|
+
default: return <td {...rest}>{local.children}</td>;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
41
62
|
/**
|
|
42
63
|
* Turns the flat `items` into nested {@link RowDefinition}s by recursively expanding each
|
|
43
64
|
* item's children via `getChildItems`. The result feeds the tree-grid collection.
|
|
@@ -100,6 +121,7 @@ function Table(props) {
|
|
|
100
121
|
"UNSTABLE_defaultExpandedKeys",
|
|
101
122
|
"UNSTABLE_onExpandedChange"
|
|
102
123
|
]);
|
|
124
|
+
const locale = useLocale();
|
|
103
125
|
const [ref, setRef] = createSignal(null);
|
|
104
126
|
const normalizedColumns = createMemo(() => normalizeColumnDefinitions(stateProps.columns));
|
|
105
127
|
const rowHeaderColumnKeys = createMemo(() => getRowHeaderColumnKeys(normalizedColumns()));
|
|
@@ -195,43 +217,38 @@ function Table(props) {
|
|
|
195
217
|
const hooks = local.dragAndDropHooks;
|
|
196
218
|
return Boolean(hooks?.useDroppableCollectionState && hooks.useDroppableCollection && (hooks.dropTargetDelegate || parentCollectionRenderer?.dropTargetDelegate || hooks.ListDropTargetDelegate));
|
|
197
219
|
});
|
|
198
|
-
const
|
|
220
|
+
const dragStateValue = createMemo(() => {
|
|
199
221
|
const hooks = local.dragAndDropHooks;
|
|
200
222
|
return Boolean(hooks?.useDraggableCollectionState && hooks.useDraggableCollection);
|
|
201
|
-
})
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
223
|
+
})() ? local.dragAndDropHooks?.useDraggableCollectionState?.({
|
|
224
|
+
items: stateProps.items,
|
|
225
|
+
collection: state.collection,
|
|
226
|
+
selectedKeys: state.selectedKeys,
|
|
227
|
+
isSelected: (key) => state.isSelected(key)
|
|
228
|
+
}) : void 0;
|
|
229
|
+
const dragState = () => dragStateValue;
|
|
230
|
+
const dropStateValue = hasDroppableDnd() ? local.dragAndDropHooks?.useDroppableCollectionState?.({ get collection() {
|
|
231
|
+
return state.collection;
|
|
232
|
+
} }) : void 0;
|
|
233
|
+
const dropState = () => dropStateValue;
|
|
234
|
+
if (local.dragAndDropHooks?.useDraggableCollection && dragStateValue) local.dragAndDropHooks.useDraggableCollection({}, dragStateValue, () => ref());
|
|
235
|
+
const droppableCollectionValue = (() => {
|
|
207
236
|
if (!hasDroppableDnd()) return void 0;
|
|
208
|
-
return local.dragAndDropHooks?.useDroppableCollectionState?.({});
|
|
209
|
-
});
|
|
210
|
-
createEffect(() => {
|
|
211
|
-
if (!hasDraggableDnd()) return;
|
|
212
237
|
const hooks = local.dragAndDropHooks;
|
|
213
|
-
const
|
|
214
|
-
if (!hooks?.useDraggableCollection || !activeDragState) return;
|
|
215
|
-
hooks.useDraggableCollection({}, activeDragState, () => ref());
|
|
216
|
-
});
|
|
217
|
-
const droppableCollection = createMemo(() => {
|
|
218
|
-
if (!hasDroppableDnd()) return void 0;
|
|
219
|
-
const hooks = local.dragAndDropHooks;
|
|
220
|
-
const activeDropState = dropState();
|
|
238
|
+
const activeDropState = dropStateValue;
|
|
221
239
|
if (!hooks?.useDroppableCollection || !activeDropState) return void 0;
|
|
222
|
-
const resolveDirection = () =>
|
|
223
|
-
|
|
224
|
-
if (el && typeof window !== "undefined" && typeof window.getComputedStyle === "function") {
|
|
225
|
-
if (window.getComputedStyle(el).direction === "rtl") return "rtl";
|
|
226
|
-
}
|
|
227
|
-
return typeof document !== "undefined" && document.dir === "rtl" ? "rtl" : "ltr";
|
|
228
|
-
};
|
|
229
|
-
const dropTargetDelegate = hooks.dropTargetDelegate ?? parentCollectionRenderer?.dropTargetDelegate ?? (hooks.ListDropTargetDelegate ? new hooks.ListDropTargetDelegate(() => state.collection, () => ref(), {
|
|
240
|
+
const resolveDirection = () => locale().direction;
|
|
241
|
+
const baseDropTargetDelegate = hooks.dropTargetDelegate ?? parentCollectionRenderer?.dropTargetDelegate ?? (hooks.ListDropTargetDelegate ? new hooks.ListDropTargetDelegate(() => state.collection, () => ref(), {
|
|
230
242
|
layout: "grid",
|
|
231
243
|
orientation: "vertical",
|
|
232
244
|
direction: resolveDirection()
|
|
233
245
|
}) : void 0);
|
|
234
|
-
if (!
|
|
246
|
+
if (!baseDropTargetDelegate) return void 0;
|
|
247
|
+
const expandedKeys = state.expandedKeys;
|
|
248
|
+
const dropTargetDelegate = createTreeDropTargetDelegate(baseDropTargetDelegate, {
|
|
249
|
+
collection: state.collection,
|
|
250
|
+
expandedKeys: expandedKeys === "all" ? new Set(Array.from(state.collection, (node) => node.key)) : expandedKeys ?? /* @__PURE__ */ new Set()
|
|
251
|
+
}, resolveDirection());
|
|
235
252
|
return hooks.useDroppableCollection({
|
|
236
253
|
dropTargetDelegate,
|
|
237
254
|
keyboardDelegate: {
|
|
@@ -257,7 +274,8 @@ function Table(props) {
|
|
|
257
274
|
},
|
|
258
275
|
setFocusedKey: (key) => state.setFocusedKey(key)
|
|
259
276
|
}, activeDropState, () => ref());
|
|
260
|
-
});
|
|
277
|
+
})();
|
|
278
|
+
const droppableCollection = () => droppableCollectionValue;
|
|
261
279
|
const isRootDropTarget = createMemo(() => {
|
|
262
280
|
return Boolean(dropState()?.target?.type === "root");
|
|
263
281
|
});
|
|
@@ -293,7 +311,8 @@ function Table(props) {
|
|
|
293
311
|
},
|
|
294
312
|
get isVirtualized() {
|
|
295
313
|
return ariaProps.isVirtualized ?? parentCollectionRenderer?.isVirtualized ?? false;
|
|
296
|
-
}
|
|
314
|
+
},
|
|
315
|
+
getScrollElement: () => ref()
|
|
297
316
|
};
|
|
298
317
|
const collectionRenderer = createMemo(() => ({
|
|
299
318
|
...parentCollectionRenderer,
|
|
@@ -304,27 +323,29 @@ function Table(props) {
|
|
|
304
323
|
const tableProps = () => ({
|
|
305
324
|
ref: (el) => {
|
|
306
325
|
setRef(el);
|
|
307
|
-
assignRef(local.ref, el);
|
|
326
|
+
assignRef$1(local.ref, el);
|
|
308
327
|
},
|
|
309
|
-
...mergeProps
|
|
328
|
+
...mergeProps(domProps(), cleanGridProps(), cleanFocusProps(), droppableCollection()?.collectionProps ?? {}),
|
|
310
329
|
class: renderProps.class(),
|
|
311
330
|
style: renderProps.style(),
|
|
312
|
-
"data-focused": state.isFocused
|
|
313
|
-
"data-focus-visible": isFocusVisible()
|
|
314
|
-
"data-empty": stateProps.items.length === 0
|
|
315
|
-
"data-drop-target": isRootDropTarget()
|
|
331
|
+
"data-focused": dataAttr(state.isFocused),
|
|
332
|
+
"data-focus-visible": dataAttr(isFocusVisible()),
|
|
333
|
+
"data-empty": dataAttr(stateProps.items.length === 0),
|
|
334
|
+
"data-drop-target": dataAttr(isRootDropTarget()),
|
|
316
335
|
slot: local.slot
|
|
317
336
|
});
|
|
318
|
-
return <TableContext
|
|
319
|
-
<TableStateContext
|
|
320
|
-
<CollectionRendererContext
|
|
337
|
+
return <TableContext value={contextValue}>
|
|
338
|
+
<TableStateContext value={state}>
|
|
339
|
+
<CollectionRendererContext value={collectionRenderer()}>
|
|
321
340
|
{local.render ? local.render({
|
|
322
341
|
...tableProps(),
|
|
323
342
|
children: tableChildren()
|
|
324
|
-
}, renderValues()) : <table {...tableProps()}>
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
343
|
+
}, renderValues()) : <TableHost hostTag="table" virtualized={contextValue.isVirtualized} {...tableProps()}>
|
|
344
|
+
{tableChildren()}
|
|
345
|
+
</TableHost>}
|
|
346
|
+
</CollectionRendererContext>
|
|
347
|
+
</TableStateContext>
|
|
348
|
+
</TableContext>;
|
|
328
349
|
}
|
|
329
350
|
/**
|
|
330
351
|
* A header row in a table containing column headers.
|
|
@@ -338,7 +359,8 @@ function TableHeader(props) {
|
|
|
338
359
|
"children",
|
|
339
360
|
"ref"
|
|
340
361
|
]);
|
|
341
|
-
|
|
362
|
+
const context = useContext(TableContext);
|
|
363
|
+
if (!context) throw new Error("TableHeader must be used within a Table");
|
|
342
364
|
const { rowGroupProps } = createTableRowGroup(() => ({ type: "thead" }));
|
|
343
365
|
const { isHovered, hoverProps } = createHover({
|
|
344
366
|
isDisabled: false,
|
|
@@ -370,19 +392,24 @@ function TableHeader(props) {
|
|
|
370
392
|
return rest;
|
|
371
393
|
};
|
|
372
394
|
const headerProps = () => ({
|
|
373
|
-
ref: (el) => assignRef(local.ref, el),
|
|
395
|
+
ref: (el) => assignRef$1(local.ref, el),
|
|
374
396
|
...domProps,
|
|
375
397
|
...cleanRowGroupProps(),
|
|
376
398
|
...cleanHoverProps(),
|
|
377
399
|
class: renderProps.class(),
|
|
378
400
|
style: renderProps.style(),
|
|
379
401
|
"data-hovered": isHovered() || void 0,
|
|
380
|
-
children: <tr role="row">
|
|
402
|
+
children: <TableHost hostTag="tr" virtualized={context.isVirtualized} role="row">
|
|
403
|
+
{local.children}
|
|
404
|
+
</TableHost>
|
|
381
405
|
});
|
|
382
|
-
return local.render ? local.render(headerProps(), renderValues()) : <thead ref={(el) => assignRef(local.ref, el)} {...domProps} {...cleanRowGroupProps()} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={isHovered()
|
|
383
|
-
<tr role="row">
|
|
384
|
-
|
|
406
|
+
return local.render ? local.render(headerProps(), renderValues()) : <TableHost hostTag="thead" virtualized={context.isVirtualized} ref={(el) => assignRef$1(local.ref, el)} {...domProps} {...cleanRowGroupProps()} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={dataAttr(isHovered())}>
|
|
407
|
+
<TableHost hostTag="tr" virtualized={context.isVirtualized} role="row">
|
|
408
|
+
{local.children}
|
|
409
|
+
</TableHost>
|
|
410
|
+
</TableHost>;
|
|
385
411
|
}
|
|
412
|
+
const TableColumnDefinitionContext = createContext(null);
|
|
386
413
|
/**
|
|
387
414
|
* A column header in a table.
|
|
388
415
|
*/
|
|
@@ -497,31 +524,45 @@ function TableColumn(props) {
|
|
|
497
524
|
...widthStyle
|
|
498
525
|
};
|
|
499
526
|
});
|
|
500
|
-
const columnChildren = () =>
|
|
501
|
-
|
|
527
|
+
const columnChildren = () => {
|
|
528
|
+
const rawChildren = local.children;
|
|
529
|
+
return typeof rawChildren === "function" ? rawChildren(renderValues()) : rawChildren;
|
|
530
|
+
};
|
|
531
|
+
const columnAttrs = () => ({
|
|
502
532
|
ref: (el) => {
|
|
503
533
|
setRef(el);
|
|
504
|
-
assignRef(local.ref, el);
|
|
534
|
+
assignRef$1(local.ref, el);
|
|
505
535
|
},
|
|
506
536
|
...domProps,
|
|
507
|
-
...mergeProps
|
|
537
|
+
...mergeProps(cleanColumnHeaderProps(), cleanHoverProps(), cleanFocusProps()),
|
|
508
538
|
class: renderProps.class(),
|
|
509
539
|
style: columnStyle(),
|
|
510
|
-
"data-sortable": local.allowsSorting
|
|
540
|
+
"data-sortable": dataAttr(!!local.allowsSorting),
|
|
511
541
|
"data-sort-direction": sortDirection() || void 0,
|
|
512
|
-
"data-resizable": local.allowsResizing
|
|
513
|
-
"data-resizing": isResizing()
|
|
514
|
-
"data-hovered": isHovered()
|
|
515
|
-
"data-focused": state.focusedKey === local.id
|
|
516
|
-
"data-focus-visible": isFocusVisible() && state.focusedKey === local.id
|
|
517
|
-
|
|
542
|
+
"data-resizable": dataAttr(!!local.allowsResizing),
|
|
543
|
+
"data-resizing": dataAttr(isResizing()),
|
|
544
|
+
"data-hovered": dataAttr(isHovered()),
|
|
545
|
+
"data-focused": dataAttr(state.focusedKey === local.id),
|
|
546
|
+
"data-focus-visible": dataAttr(isFocusVisible() && state.focusedKey === local.id),
|
|
547
|
+
"data-key": local.id
|
|
518
548
|
});
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
549
|
+
const columnDefinition = {
|
|
550
|
+
key: local.id,
|
|
551
|
+
width: local.width ?? local.defaultWidth,
|
|
552
|
+
minWidth: local.minWidth,
|
|
553
|
+
maxWidth: local.maxWidth
|
|
554
|
+
};
|
|
555
|
+
if (local.render) return <TableColumnDefinitionContext value={columnDefinition}>
|
|
556
|
+
{local.render({
|
|
557
|
+
...columnAttrs(),
|
|
558
|
+
children: columnChildren()
|
|
559
|
+
}, renderValues())}
|
|
560
|
+
</TableColumnDefinitionContext>;
|
|
561
|
+
return <TableColumnDefinitionContext value={columnDefinition}>
|
|
562
|
+
<TableHost hostTag="th" virtualized={context.isVirtualized} {...columnAttrs()}>
|
|
563
|
+
{columnChildren()}
|
|
564
|
+
</TableHost>
|
|
565
|
+
</TableColumnDefinitionContext>;
|
|
525
566
|
}
|
|
526
567
|
/**
|
|
527
568
|
* The body of a table containing data rows.
|
|
@@ -564,21 +605,22 @@ function TableBody(props) {
|
|
|
564
605
|
if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return null;
|
|
565
606
|
const rowCount = items().length;
|
|
566
607
|
const baseRange = virtualizer.getVisibleRange(rowCount);
|
|
567
|
-
const persistedIndexes = Array.from(persistedKeys()).map((key) => rowNodes().findIndex((node) => node.key === key)).filter((index) => index >= 0);
|
|
568
608
|
const dropTarget = context.dropState?.target;
|
|
569
609
|
const normalizedDropKey = getNormalizedDropTargetKey(dropTarget, context.collection);
|
|
570
|
-
const
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
forceIncludeIndexes: [
|
|
574
|
-
dropTarget?.type === "item" ? rowNodes().findIndex((node) => node.key === dropTarget.key) : -1,
|
|
575
|
-
normalizedDropKey != null ? rowNodes().findIndex((node) => node.key === normalizedDropKey) : -1,
|
|
576
|
-
dropTarget?.type === "item" ? -1 : focusedIndex
|
|
577
|
-
].filter((index) => index >= 0),
|
|
610
|
+
const forceIncludeIndexes = [dropTarget?.type === "item" ? rowNodes().findIndex((node) => node.key === dropTarget.key) : -1, normalizedDropKey != null ? rowNodes().findIndex((node) => node.key === normalizedDropKey) : -1].filter((index) => index >= 0);
|
|
611
|
+
return mergePersistedKeysIntoVirtualRange(baseRange, [], rowCount, virtualizer, 80, {
|
|
612
|
+
forceIncludeIndexes,
|
|
578
613
|
forceIncludeMaxSpan: 320
|
|
579
614
|
});
|
|
580
615
|
});
|
|
581
|
-
|
|
616
|
+
const persistedOutsideIndexes = createMemo(() => {
|
|
617
|
+
const range = virtualRange();
|
|
618
|
+
if (!range) return [];
|
|
619
|
+
const persistedIndexes = Array.from(persistedKeys()).map((key) => rowNodes().findIndex((node) => node.key === key)).filter((index) => index >= 0);
|
|
620
|
+
return indexesOutsideRange(range, persistedIndexes);
|
|
621
|
+
});
|
|
622
|
+
createTrackedEffect(() => {
|
|
623
|
+
const _s2Cleanups = [];
|
|
582
624
|
if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return;
|
|
583
625
|
virtualizer.setDropTargetItemCountResolver(() => items().length);
|
|
584
626
|
virtualizer.setDropTargetIndexResolver((key) => {
|
|
@@ -593,11 +635,14 @@ function TableBody(props) {
|
|
|
593
635
|
key: typeof node.key === "string" || typeof node.key === "number" ? node.key : void 0
|
|
594
636
|
};
|
|
595
637
|
});
|
|
596
|
-
|
|
638
|
+
_s2Cleanups.push(() => {
|
|
597
639
|
virtualizer.setDropTargetIndexResolver(void 0);
|
|
598
640
|
virtualizer.setDropTargetItemCountResolver(void 0);
|
|
599
641
|
virtualizer.setDropTargetResolver(void 0);
|
|
600
642
|
});
|
|
643
|
+
return () => {
|
|
644
|
+
for (const c of _s2Cleanups) c();
|
|
645
|
+
};
|
|
601
646
|
});
|
|
602
647
|
const visibleItems = createMemo(() => {
|
|
603
648
|
if (context.state.treeColumn != null) return rowNodes().map((node) => node.value);
|
|
@@ -606,43 +651,42 @@ function TableBody(props) {
|
|
|
606
651
|
return items().slice(range.start, range.end);
|
|
607
652
|
});
|
|
608
653
|
const spacerColSpan = () => context.columns.length + (context.showSelectionCheckboxes ? 1 : 0);
|
|
654
|
+
const CollectionRoot = useCollectionRoot();
|
|
655
|
+
const collectionRows = () => {
|
|
656
|
+
const rows = <For each={visibleItems()}>
|
|
657
|
+
{(item, index) => {
|
|
658
|
+
const itemIndex = () => (virtualRange()?.start ?? 0) + index();
|
|
659
|
+
return renderCollectionDropSlots({
|
|
660
|
+
index: itemIndex(),
|
|
661
|
+
lastIndex: rowNodes().length - 1,
|
|
662
|
+
renderDropIndicator: (i, position) => parentCollectionRenderer?.renderDropIndicator?.(i, position),
|
|
663
|
+
children: local.children?.(item)
|
|
664
|
+
});
|
|
665
|
+
}}
|
|
666
|
+
</For>;
|
|
667
|
+
if (!context.isVirtualized) return rows;
|
|
668
|
+
return <CollectionRoot collection={virtualRange() ? items() : []} scrollRef={() => context.getScrollElement()} persistedKeys={persistedKeys()}>
|
|
669
|
+
{rows}
|
|
670
|
+
<For each={persistedOutsideIndexes()}>
|
|
671
|
+
{(index) => <PersistedVirtualItem index={index}>
|
|
672
|
+
{renderCollectionDropSlots({
|
|
673
|
+
index,
|
|
674
|
+
lastIndex: rowNodes().length - 1,
|
|
675
|
+
renderDropIndicator: (i, position) => parentCollectionRenderer?.renderDropIndicator?.(i, position),
|
|
676
|
+
children: local.children?.(items()[index])
|
|
677
|
+
})}
|
|
678
|
+
</PersistedVirtualItem>}
|
|
679
|
+
</For>
|
|
680
|
+
</CollectionRoot>;
|
|
681
|
+
};
|
|
609
682
|
const bodyChildren = () => <>
|
|
610
683
|
<SharedElementTransition>
|
|
611
|
-
<Show when={isEmpty() && local.renderEmptyState && !local.isLoading} fallback={
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
height: `${virtualRange().offsetTop}px`,
|
|
615
|
-
padding: "0",
|
|
616
|
-
border: "0"
|
|
617
|
-
}} />
|
|
618
|
-
</tr> : null}
|
|
619
|
-
<For each={visibleItems()}>
|
|
620
|
-
{(item, index) => {
|
|
621
|
-
const itemIndex = () => (virtualRange()?.start ?? 0) + index();
|
|
622
|
-
const beforeIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "before");
|
|
623
|
-
const onIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "on");
|
|
624
|
-
const afterIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "after");
|
|
625
|
-
return <>
|
|
626
|
-
{beforeIndicator()}
|
|
627
|
-
{onIndicator()}
|
|
628
|
-
{local.children?.(item)}
|
|
629
|
-
{afterIndicator()}
|
|
630
|
-
</>;
|
|
631
|
-
}}
|
|
632
|
-
</For>
|
|
633
|
-
{virtualRange()?.offsetBottom ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="bottom">
|
|
634
|
-
<td colSpan={spacerColSpan()} style={{
|
|
635
|
-
height: `${virtualRange().offsetBottom}px`,
|
|
636
|
-
padding: "0",
|
|
637
|
-
border: "0"
|
|
638
|
-
}} />
|
|
639
|
-
</tr> : null}
|
|
640
|
-
</>}>
|
|
641
|
-
<tr role="row" data-empty-state>
|
|
642
|
-
<th role="rowheader" colSpan={spacerColSpan()}>
|
|
684
|
+
<Show when={isEmpty() && local.renderEmptyState && !local.isLoading} fallback={collectionRows()}>
|
|
685
|
+
<TableHost hostTag="tr" virtualized={context.isVirtualized} role="row" data-empty-state>
|
|
686
|
+
<TableHost hostTag="th" virtualized={context.isVirtualized} role="rowheader" colSpan={spacerColSpan()}>
|
|
643
687
|
{local.renderEmptyState?.()}
|
|
644
|
-
</
|
|
645
|
-
</
|
|
688
|
+
</TableHost>
|
|
689
|
+
</TableHost>
|
|
646
690
|
</Show>
|
|
647
691
|
</SharedElementTransition>
|
|
648
692
|
<Show when={local.hasMore && local.onLoadMore}>
|
|
@@ -650,57 +694,17 @@ function TableBody(props) {
|
|
|
650
694
|
</Show>
|
|
651
695
|
</>;
|
|
652
696
|
const bodyProps = () => ({
|
|
653
|
-
ref: (el) => assignRef(local.ref, el),
|
|
697
|
+
ref: (el) => assignRef$1(local.ref, el),
|
|
654
698
|
...domProps,
|
|
655
699
|
...cleanRowGroupProps(),
|
|
656
700
|
class: renderProps.class(),
|
|
657
701
|
style: renderProps.style(),
|
|
658
|
-
"data-empty": isEmpty()
|
|
702
|
+
"data-empty": dataAttr(isEmpty()),
|
|
659
703
|
children: bodyChildren()
|
|
660
704
|
});
|
|
661
|
-
return local.render ? local.render(bodyProps(), renderValues()) : <tbody ref={(el) => assignRef(local.ref, el)} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()} data-empty={isEmpty()
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
{virtualRange()?.offsetTop ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="top">
|
|
665
|
-
<td colSpan={spacerColSpan()} style={{
|
|
666
|
-
height: `${virtualRange().offsetTop}px`,
|
|
667
|
-
padding: "0",
|
|
668
|
-
border: "0"
|
|
669
|
-
}} />
|
|
670
|
-
</tr> : null}
|
|
671
|
-
<For each={visibleItems()}>
|
|
672
|
-
{(item, index) => {
|
|
673
|
-
const itemIndex = () => (virtualRange()?.start ?? 0) + index();
|
|
674
|
-
const beforeIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "before");
|
|
675
|
-
const onIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "on");
|
|
676
|
-
const afterIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "after");
|
|
677
|
-
return <>
|
|
678
|
-
{beforeIndicator()}
|
|
679
|
-
{onIndicator()}
|
|
680
|
-
{local.children?.(item)}
|
|
681
|
-
{afterIndicator()}
|
|
682
|
-
</>;
|
|
683
|
-
}}
|
|
684
|
-
</For>
|
|
685
|
-
{virtualRange()?.offsetBottom ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="bottom">
|
|
686
|
-
<td colSpan={spacerColSpan()} style={{
|
|
687
|
-
height: `${virtualRange().offsetBottom}px`,
|
|
688
|
-
padding: "0",
|
|
689
|
-
border: "0"
|
|
690
|
-
}} />
|
|
691
|
-
</tr> : null}
|
|
692
|
-
</>}>
|
|
693
|
-
<tr role="row" data-empty-state>
|
|
694
|
-
<th role="rowheader" colSpan={spacerColSpan()}>
|
|
695
|
-
{local.renderEmptyState?.()}
|
|
696
|
-
</th>
|
|
697
|
-
</tr>
|
|
698
|
-
</Show>
|
|
699
|
-
</SharedElementTransition>
|
|
700
|
-
<Show when={local.hasMore && local.onLoadMore}>
|
|
701
|
-
<TableLoadMoreItem onLoadMore={local.onLoadMore} isLoading={local.isLoading} colSpan={spacerColSpan()} />
|
|
702
|
-
</Show>
|
|
703
|
-
</tbody>;
|
|
705
|
+
return local.render ? local.render(bodyProps(), renderValues()) : <TableHost hostTag="tbody" virtualized={context.isVirtualized} ref={(el) => assignRef$1(local.ref, el)} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()} data-empty={dataAttr(isEmpty())}>
|
|
706
|
+
{bodyChildren()}
|
|
707
|
+
</TableHost>;
|
|
704
708
|
}
|
|
705
709
|
/**
|
|
706
710
|
* The footer of a table containing summary rows.
|
|
@@ -713,7 +717,8 @@ function TableFooter(props) {
|
|
|
713
717
|
"slot",
|
|
714
718
|
"children"
|
|
715
719
|
]);
|
|
716
|
-
|
|
720
|
+
const context = useContext(TableContext);
|
|
721
|
+
if (!context) throw new Error("TableFooter must be used within a Table");
|
|
717
722
|
const { rowGroupProps } = createTableRowGroup(() => ({ type: "tfoot" }));
|
|
718
723
|
const items = createMemo(() => local.items ?? []);
|
|
719
724
|
const renderValues = createMemo(() => ({ isEmpty: items().length === 0 }));
|
|
@@ -726,16 +731,18 @@ function TableFooter(props) {
|
|
|
726
731
|
const { ref: _ref, ...rest } = rowGroupProps;
|
|
727
732
|
return rest;
|
|
728
733
|
};
|
|
729
|
-
return <tfoot {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()}>
|
|
734
|
+
return <TableHost hostTag="tfoot" virtualized={context.isVirtualized} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()}>
|
|
730
735
|
<Show when={local.items && typeof local.children === "function"} fallback={local.children}>
|
|
731
736
|
<For each={items()}>{(item) => local.children(item)}</For>
|
|
732
737
|
</Show>
|
|
733
|
-
</
|
|
738
|
+
</TableHost>;
|
|
734
739
|
}
|
|
735
740
|
function TableLoadMoreItem(props) {
|
|
736
|
-
|
|
741
|
+
const [sentinel, setSentinel] = createSignal();
|
|
737
742
|
const [isPending, setIsPending] = createSignal(false);
|
|
743
|
+
const scrollOffsetValue = createMemo(() => props.scrollOffset ?? 1);
|
|
738
744
|
const isLoading = () => !!props.isLoading || isPending();
|
|
745
|
+
const tableContext = useContext(TableContext);
|
|
739
746
|
const triggerLoadMore = async () => {
|
|
740
747
|
if (isPending()) return;
|
|
741
748
|
setIsPending(true);
|
|
@@ -745,7 +752,18 @@ function TableLoadMoreItem(props) {
|
|
|
745
752
|
setIsPending(false);
|
|
746
753
|
}
|
|
747
754
|
};
|
|
748
|
-
createEffect(() => {
|
|
755
|
+
createEffect(() => ({
|
|
756
|
+
current: sentinel(),
|
|
757
|
+
scrollOffset: scrollOffsetValue()
|
|
758
|
+
}), ({ current, scrollOffset }) => {
|
|
759
|
+
if (!current || typeof IntersectionObserver !== "function") return;
|
|
760
|
+
const margin = `0px 0px ${100 * scrollOffset}% 0px`;
|
|
761
|
+
const observer = new IntersectionObserver((entries) => {
|
|
762
|
+
if (entries[0]?.isIntersecting) triggerLoadMore();
|
|
763
|
+
}, { rootMargin: margin });
|
|
764
|
+
observer.observe(current);
|
|
765
|
+
return () => observer.disconnect();
|
|
766
|
+
});
|
|
749
767
|
const renderProps = useRenderProps({
|
|
750
768
|
children: props.children ?? (() => isLoading() ? <div role="progressbar" aria-label="loading" /> : null),
|
|
751
769
|
class: props.class,
|
|
@@ -753,28 +771,54 @@ function TableLoadMoreItem(props) {
|
|
|
753
771
|
defaultClassName: "solidaria-Table-loadMore"
|
|
754
772
|
}, () => ({ isLoading: isLoading() }));
|
|
755
773
|
return <>
|
|
756
|
-
<
|
|
774
|
+
<Show when={tableContext?.isVirtualized} fallback={<>
|
|
775
|
+
<tr style={{
|
|
776
|
+
position: "relative",
|
|
777
|
+
width: 0,
|
|
778
|
+
height: 0,
|
|
779
|
+
overflow: "hidden"
|
|
780
|
+
}} inert>
|
|
781
|
+
<td>
|
|
782
|
+
<div ref={setSentinel} data-testid="loadMoreSentinel" style={{
|
|
783
|
+
position: "absolute",
|
|
784
|
+
height: "1px",
|
|
785
|
+
width: "1px"
|
|
786
|
+
}} />
|
|
787
|
+
</td>
|
|
788
|
+
</tr>
|
|
789
|
+
<Show when={isLoading()}>
|
|
790
|
+
<tr role="row" tabindex={0} onFocus={() => {
|
|
791
|
+
triggerLoadMore();
|
|
792
|
+
}} class={renderProps.class()} style={renderProps.style()} data-loading>
|
|
793
|
+
<td role="rowheader" colspan={props.colSpan ?? 1}>
|
|
794
|
+
{renderProps.renderChildren()}
|
|
795
|
+
</td>
|
|
796
|
+
</tr>
|
|
797
|
+
</Show>
|
|
798
|
+
</>}>
|
|
799
|
+
<TableHost hostTag="tr" virtualized style={{
|
|
757
800
|
position: "relative",
|
|
758
801
|
width: 0,
|
|
759
802
|
height: 0,
|
|
760
803
|
overflow: "hidden"
|
|
761
804
|
}} inert>
|
|
762
|
-
|
|
763
|
-
|
|
805
|
+
<TableHost hostTag="td" virtualized>
|
|
806
|
+
<div ref={setSentinel} data-testid="loadMoreSentinel" style={{
|
|
764
807
|
position: "absolute",
|
|
765
808
|
height: "1px",
|
|
766
809
|
width: "1px"
|
|
767
810
|
}} />
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
811
|
+
</TableHost>
|
|
812
|
+
</TableHost>
|
|
813
|
+
<Show when={isLoading()}>
|
|
814
|
+
<TableHost hostTag="tr" virtualized role="row" tabindex={0} onFocus={() => {
|
|
772
815
|
triggerLoadMore();
|
|
773
816
|
}} class={renderProps.class()} style={renderProps.style()} data-loading>
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
817
|
+
<TableHost hostTag="td" virtualized role="rowheader" colSpan={props.colSpan ?? 1}>
|
|
818
|
+
{renderProps.renderChildren()}
|
|
819
|
+
</TableHost>
|
|
820
|
+
</TableHost>
|
|
821
|
+
</Show>
|
|
778
822
|
</Show>
|
|
779
823
|
</>;
|
|
780
824
|
}
|
|
@@ -923,8 +967,12 @@ function TableRow(props) {
|
|
|
923
967
|
return rest;
|
|
924
968
|
};
|
|
925
969
|
const rowContextValue = {
|
|
926
|
-
|
|
927
|
-
|
|
970
|
+
get rowKey() {
|
|
971
|
+
return rowKey();
|
|
972
|
+
},
|
|
973
|
+
get rowNode() {
|
|
974
|
+
return rowNode();
|
|
975
|
+
},
|
|
928
976
|
get isRowDisabled() {
|
|
929
977
|
return isDisabled();
|
|
930
978
|
},
|
|
@@ -935,7 +983,8 @@ function TableRow(props) {
|
|
|
935
983
|
index = registeredCellIds.length;
|
|
936
984
|
registeredCellIds.push(cellId);
|
|
937
985
|
}
|
|
938
|
-
|
|
986
|
+
const dataColumns = tableContext.columns.filter((column) => column.key !== "__selection__");
|
|
987
|
+
return explicitId ?? dataColumns[index]?.key;
|
|
939
988
|
}
|
|
940
989
|
};
|
|
941
990
|
const dragButtonProps = createMemo(() => {
|
|
@@ -996,8 +1045,8 @@ function TableRow(props) {
|
|
|
996
1045
|
"--table-row-level": rowLevel()
|
|
997
1046
|
};
|
|
998
1047
|
};
|
|
999
|
-
return <TableRowContext
|
|
1000
|
-
<ButtonContext
|
|
1048
|
+
return <TableRowContext value={rowContextValue}>
|
|
1049
|
+
<ButtonContext value={buttonContextValue}>
|
|
1001
1050
|
{(() => {
|
|
1002
1051
|
registeredCellIds.length = 0;
|
|
1003
1052
|
const rowChildrenContent = typeof local.children === "function" ? local.columns ? <For each={local.columns}>
|
|
@@ -1006,44 +1055,41 @@ function TableRow(props) {
|
|
|
1006
1055
|
const tableRowProps = () => ({
|
|
1007
1056
|
ref: (el) => {
|
|
1008
1057
|
setRef(el);
|
|
1009
|
-
assignRef(local.ref, el);
|
|
1058
|
+
assignRef$1(local.ref, el);
|
|
1059
|
+
const dragRef = (draggableItem()?.dragProps)?.ref;
|
|
1060
|
+
if (typeof dragRef === "function") dragRef(el);
|
|
1010
1061
|
},
|
|
1011
1062
|
...domProps,
|
|
1012
|
-
...mergeProps
|
|
1063
|
+
...mergeProps(cleanRowProps(), cleanHoverProps(), cleanFocusProps(), focusWithinProps, draggableItem()?.dragProps ?? {}, droppableItem()?.dropProps ?? {}),
|
|
1013
1064
|
class: renderProps.class(),
|
|
1014
1065
|
style: rowStyle(),
|
|
1015
1066
|
"data-key": rowKey(),
|
|
1016
|
-
"data-selected": isSelected()
|
|
1017
|
-
"data-focused": isFocused()
|
|
1018
|
-
"data-focus-visible": isFocusVisible$1() && isFocused()
|
|
1067
|
+
"data-selected": dataAttr(isSelected()),
|
|
1068
|
+
"data-focused": dataAttr(isFocused()),
|
|
1069
|
+
"data-focus-visible": dataAttr(isFocusVisible$1() && isFocused()),
|
|
1019
1070
|
"data-focus-visible-within": dataAttr(isFocusWithin() && isFocusVisible()),
|
|
1020
|
-
"data-pressed": isPressed()
|
|
1021
|
-
"data-hovered": isHovered()
|
|
1022
|
-
"data-disabled": isDisabled()
|
|
1071
|
+
"data-pressed": dataAttr(isPressed()),
|
|
1072
|
+
"data-hovered": dataAttr(isHovered()),
|
|
1073
|
+
"data-disabled": dataAttr(isDisabled()),
|
|
1023
1074
|
"data-href": linkProps().href,
|
|
1024
1075
|
"data-target": linkProps().target,
|
|
1025
1076
|
"data-rel": linkProps().rel,
|
|
1026
1077
|
"data-download": typeof linkProps().download === "string" ? linkProps().download : linkProps().download ? "" : void 0,
|
|
1027
1078
|
"data-ping": linkProps().ping,
|
|
1028
1079
|
"data-referrer-policy": linkProps().referrerPolicy,
|
|
1029
|
-
"data-dragging": draggableItem()?.isDragging
|
|
1030
|
-
"data-drop-target": droppableItem()?.isDropTarget
|
|
1031
|
-
"data-expanded": isTreeRow() && isExpanded()
|
|
1032
|
-
"data-has-child-items": isTreeRow() && hasChildItems()
|
|
1080
|
+
"data-dragging": dataAttr(!!draggableItem()?.isDragging),
|
|
1081
|
+
"data-drop-target": dataAttr(!!droppableItem()?.isDropTarget),
|
|
1082
|
+
"data-expanded": dataAttr(isTreeRow() && isExpanded()),
|
|
1083
|
+
"data-has-child-items": dataAttr(isTreeRow() && hasChildItems()),
|
|
1033
1084
|
"data-level": isTreeRow() ? rowLevel() : void 0,
|
|
1034
1085
|
children: rowChildrenContent
|
|
1035
1086
|
});
|
|
1036
|
-
return <Show when={local.render} fallback={<
|
|
1037
|
-
setRef(el);
|
|
1038
|
-
assignRef(local.ref, el);
|
|
1039
|
-
}} {...domProps} {...mergeProps$1(cleanRowProps(), cleanHoverProps(), cleanFocusProps(), focusWithinProps, draggableItem()?.dragProps ?? {}, droppableItem()?.dropProps ?? {})} class={renderProps.class()} style={rowStyle()} data-key={rowKey()} data-selected={isSelected() || void 0} data-focused={isFocused() || void 0} data-focus-visible={isFocusVisible$1() && isFocused() || void 0} data-focus-visible-within={dataAttr(isFocusWithin() && isFocusVisible())} data-pressed={isPressed() || void 0} data-hovered={isHovered() || void 0} data-disabled={isDisabled() || void 0} data-href={linkProps().href} data-target={linkProps().target} data-rel={linkProps().rel} data-download={typeof linkProps().download === "string" ? linkProps().download : linkProps().download ? "" : void 0} data-ping={linkProps().ping} data-referrer-policy={linkProps().referrerPolicy} data-dragging={draggableItem()?.isDragging || void 0} data-drop-target={droppableItem()?.isDropTarget || void 0} data-expanded={isTreeRow() && isExpanded() || void 0} data-has-child-items={isTreeRow() && hasChildItems() || void 0} data-level={isTreeRow() ? rowLevel() : void 0}>
|
|
1040
|
-
{rowChildrenContent}
|
|
1041
|
-
</tr>}>
|
|
1087
|
+
return <Show when={local.render} fallback={tableContext.isVirtualized ? <div {...tableRowProps()} /> : <tr {...tableRowProps()} />}>
|
|
1042
1088
|
{local.render(tableRowProps(), renderValues())}
|
|
1043
1089
|
</Show>;
|
|
1044
1090
|
})()}
|
|
1045
|
-
</ButtonContext
|
|
1046
|
-
</TableRowContext
|
|
1091
|
+
</ButtonContext>
|
|
1092
|
+
</TableRowContext>;
|
|
1047
1093
|
}
|
|
1048
1094
|
/**
|
|
1049
1095
|
* A cell in a table row.
|
|
@@ -1070,14 +1116,26 @@ function TableCell(props) {
|
|
|
1070
1116
|
const columnKey = createMemo(() => rowContext.getCellColumnKey(cellId, local.id));
|
|
1071
1117
|
const cellNode = createMemo(() => {
|
|
1072
1118
|
const key = columnKey();
|
|
1119
|
+
const collection = state.collection;
|
|
1073
1120
|
if (key != null) {
|
|
1074
1121
|
const cellKey = `${rowKey}-${key}`;
|
|
1075
|
-
const node =
|
|
1122
|
+
const node = collection.getItem(cellKey);
|
|
1076
1123
|
if (node) return node;
|
|
1124
|
+
return {
|
|
1125
|
+
type: collection.rowHeaderColumnKeys.has(key) ? "rowheader" : "cell",
|
|
1126
|
+
key: cellKey,
|
|
1127
|
+
value: rowNode.value,
|
|
1128
|
+
textValue: "",
|
|
1129
|
+
level: 1,
|
|
1130
|
+
index: 0,
|
|
1131
|
+
parentKey: rowKey,
|
|
1132
|
+
hasChildNodes: false,
|
|
1133
|
+
childNodes: []
|
|
1134
|
+
};
|
|
1077
1135
|
}
|
|
1078
1136
|
return {
|
|
1079
1137
|
type: "cell",
|
|
1080
|
-
key:
|
|
1138
|
+
key: `${rowKey}-cell`,
|
|
1081
1139
|
value: rowNode.value,
|
|
1082
1140
|
textValue: "",
|
|
1083
1141
|
level: 1,
|
|
@@ -1135,35 +1193,38 @@ function TableCell(props) {
|
|
|
1135
1193
|
const { ref: _ref3, ...rest } = focusProps;
|
|
1136
1194
|
return rest;
|
|
1137
1195
|
};
|
|
1138
|
-
const cellChildren = () =>
|
|
1139
|
-
|
|
1196
|
+
const cellChildren = () => {
|
|
1197
|
+
const rawChildren = local.children;
|
|
1198
|
+
return typeof rawChildren === "function" ? rawChildren(renderValues()) : rawChildren;
|
|
1199
|
+
};
|
|
1200
|
+
const cellAttrs = () => ({
|
|
1140
1201
|
ref: (el) => {
|
|
1141
1202
|
setRef(el);
|
|
1142
|
-
assignRef(local.ref, el);
|
|
1203
|
+
assignRef$1(local.ref, el);
|
|
1143
1204
|
},
|
|
1144
1205
|
...domProps,
|
|
1145
|
-
...mergeProps
|
|
1206
|
+
...mergeProps(cleanCellProps(), cleanHoverProps(), cleanFocusProps()),
|
|
1146
1207
|
colSpan: local.colSpan,
|
|
1147
1208
|
class: renderProps.class(),
|
|
1148
1209
|
style: renderProps.style(),
|
|
1149
1210
|
"data-key": cellNode().key,
|
|
1150
|
-
"data-focused": isFocused()
|
|
1151
|
-
"data-focus-visible": isFocusVisible() && isFocused()
|
|
1211
|
+
"data-focused": dataAttr(isFocused()),
|
|
1212
|
+
"data-focus-visible": dataAttr(isFocusVisible() && isFocused()),
|
|
1152
1213
|
"data-column-index": cellColumnIndex(),
|
|
1153
|
-
"data-pressed": isPressed()
|
|
1154
|
-
"data-hovered": isHovered()
|
|
1155
|
-
"data-tree-column": isTreeColumn()
|
|
1156
|
-
"data-expanded": isTreeGridCell() && cellIsExpanded()
|
|
1157
|
-
"data-has-child-items": isTreeGridCell() && cellHasChildItems()
|
|
1158
|
-
"data-level": isTreeGridCell() ? cellLevel() : void 0
|
|
1159
|
-
children: cellChildren()
|
|
1214
|
+
"data-pressed": dataAttr(isPressed()),
|
|
1215
|
+
"data-hovered": dataAttr(isHovered()),
|
|
1216
|
+
"data-tree-column": dataAttr(isTreeColumn()),
|
|
1217
|
+
"data-expanded": dataAttr(isTreeGridCell() && cellIsExpanded()),
|
|
1218
|
+
"data-has-child-items": dataAttr(isTreeGridCell() && cellHasChildItems()),
|
|
1219
|
+
"data-level": isTreeGridCell() ? cellLevel() : void 0
|
|
1160
1220
|
});
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
}
|
|
1221
|
+
if (local.render) return local.render({
|
|
1222
|
+
...cellAttrs(),
|
|
1223
|
+
children: cellChildren()
|
|
1224
|
+
}, renderValues());
|
|
1225
|
+
return <TableHost hostTag="td" virtualized={tableContext.isVirtualized} {...cellAttrs()}>
|
|
1165
1226
|
{cellChildren()}
|
|
1166
|
-
</
|
|
1227
|
+
</TableHost>;
|
|
1167
1228
|
}
|
|
1168
1229
|
/**
|
|
1169
1230
|
* A checkbox cell for row selection.
|
|
@@ -1177,7 +1238,7 @@ function TableSelectionCheckbox(props) {
|
|
|
1177
1238
|
key: props.rowKey,
|
|
1178
1239
|
isRowDisabled: rowContext?.isRowDisabled
|
|
1179
1240
|
}), () => state);
|
|
1180
|
-
return <input {...selectionCheckboxAria.checkboxProps} class={props.class} style={props.style}
|
|
1241
|
+
return <input {...selectionCheckboxAria.checkboxProps} class={props.class} style={props.style} tabindex={-1} aria-label={props["aria-label"] ?? selectionCheckboxAria.checkboxProps["aria-label"]} onClick={(event) => event.stopPropagation()} onKeyDown={(event) => event.stopPropagation()} onKeyUp={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()} onPointerUp={(event) => event.stopPropagation()} />;
|
|
1181
1242
|
}
|
|
1182
1243
|
/**
|
|
1183
1244
|
* A checkbox for select-all functionality.
|
|
@@ -1187,9 +1248,17 @@ function TableSelectAllCheckbox(props = {}) {
|
|
|
1187
1248
|
if (!context) throw new Error("TableSelectAllCheckbox must be used within a Table");
|
|
1188
1249
|
const { state } = context;
|
|
1189
1250
|
const selectAllCheckboxAria = createTableSelectAllCheckbox(() => state);
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1251
|
+
const [inputEl, setInputEl] = createSignal(null);
|
|
1252
|
+
const applyIndeterminate = (input) => {
|
|
1253
|
+
if (input) input.indeterminate = selectAllCheckboxAria.isIndeterminate;
|
|
1254
|
+
};
|
|
1255
|
+
createRenderEffect(() => [selectAllCheckboxAria.checkboxProps.checked, inputEl()], ([, input]) => {
|
|
1256
|
+
applyIndeterminate(input);
|
|
1257
|
+
});
|
|
1258
|
+
return <input ref={(el) => {
|
|
1259
|
+
setInputEl(el);
|
|
1260
|
+
applyIndeterminate(el);
|
|
1261
|
+
}} {...selectAllCheckboxAria.checkboxProps} class={props.class} style={props.style} aria-label={props["aria-label"] ?? selectAllCheckboxAria.checkboxProps["aria-label"]} />;
|
|
1193
1262
|
}
|
|
1194
1263
|
Table.Header = TableHeader;
|
|
1195
1264
|
Table.Column = TableColumn;
|
|
@@ -1212,8 +1281,15 @@ function ColumnResizer(props) {
|
|
|
1212
1281
|
"slot",
|
|
1213
1282
|
"children"
|
|
1214
1283
|
]);
|
|
1284
|
+
const stringFormatter = createStringFormatter(racIntlStrings, "react-aria-components");
|
|
1215
1285
|
const registerColumn = useContext(ResizableTableRegisterContext);
|
|
1216
|
-
|
|
1286
|
+
const columnDef = useContext(TableColumnDefinitionContext);
|
|
1287
|
+
if (registerColumn) registerColumn(local.column.key, {
|
|
1288
|
+
key: local.column.key,
|
|
1289
|
+
width: columnDef?.width,
|
|
1290
|
+
minWidth: columnDef?.minWidth,
|
|
1291
|
+
maxWidth: columnDef?.maxWidth
|
|
1292
|
+
});
|
|
1217
1293
|
const resizeCtx = useContext(TableColumnResizeStateContext);
|
|
1218
1294
|
const hasResizeContext = !!resizeCtx;
|
|
1219
1295
|
const noopResizeState = {
|
|
@@ -1238,7 +1314,7 @@ function ColumnResizer(props) {
|
|
|
1238
1314
|
const [isFocused, setIsFocused] = createSignal(false);
|
|
1239
1315
|
const columnResize = createTableColumnResize(() => ({
|
|
1240
1316
|
column: local.column,
|
|
1241
|
-
"aria-label": local["aria-label"] ?? "
|
|
1317
|
+
"aria-label": local["aria-label"] ?? stringFormatter().format("tableResizer"),
|
|
1242
1318
|
isDisabled: local.isDisabled,
|
|
1243
1319
|
onResizeStart: (widths) => {
|
|
1244
1320
|
resizeCtx?.getCallbacks?.().onResizeStart?.(widths);
|
|
@@ -1268,7 +1344,7 @@ function ColumnResizer(props) {
|
|
|
1268
1344
|
const { ref: _ref, ...rest } = hoverProps;
|
|
1269
1345
|
return rest;
|
|
1270
1346
|
};
|
|
1271
|
-
return <div {...domProps} {...columnResize.resizerProps} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={isHovered()
|
|
1347
|
+
return <div {...domProps} {...columnResize.resizerProps} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={dataAttr(isHovered())} data-resizing={dataAttr(columnResize.isResizing())}>
|
|
1272
1348
|
<Show when={hasResizeContext}>
|
|
1273
1349
|
<input {...columnResize.inputProps} onFocus={() => setIsFocused(true)} onBlur={() => setIsFocused(false)} />
|
|
1274
1350
|
</Show>
|
|
@@ -1288,7 +1364,8 @@ function ResizableTableContainer(props) {
|
|
|
1288
1364
|
]);
|
|
1289
1365
|
const [containerRef, setContainerRef] = createSignal(null);
|
|
1290
1366
|
const [tableWidth, setTableWidth] = createSignal(0);
|
|
1291
|
-
|
|
1367
|
+
createTrackedEffect(() => {
|
|
1368
|
+
const _s2Cleanups = [];
|
|
1292
1369
|
const el = containerRef();
|
|
1293
1370
|
if (!el) return;
|
|
1294
1371
|
setTableWidth(el.clientWidth);
|
|
@@ -1297,10 +1374,13 @@ function ResizableTableContainer(props) {
|
|
|
1297
1374
|
for (const entry of entries) setTableWidth(entry.contentRect.width);
|
|
1298
1375
|
});
|
|
1299
1376
|
observer.observe(el);
|
|
1300
|
-
|
|
1377
|
+
_s2Cleanups.push(() => observer.disconnect());
|
|
1301
1378
|
}
|
|
1379
|
+
return () => {
|
|
1380
|
+
for (const c of _s2Cleanups) c();
|
|
1381
|
+
};
|
|
1302
1382
|
});
|
|
1303
|
-
const [autoColumns, setAutoColumns] = createSignal(/* @__PURE__ */ new Map());
|
|
1383
|
+
const [autoColumns, setAutoColumns] = createSignal(/* @__PURE__ */ new Map(), { ownedWrite: true });
|
|
1304
1384
|
const registerColumn = (key, def) => {
|
|
1305
1385
|
setAutoColumns((prev) => {
|
|
1306
1386
|
const next = new Map(prev);
|
|
@@ -1332,8 +1412,8 @@ function ResizableTableContainer(props) {
|
|
|
1332
1412
|
onResizeEnd: local.onResizeEnd
|
|
1333
1413
|
})
|
|
1334
1414
|
};
|
|
1335
|
-
return <ResizableTableRegisterContext
|
|
1336
|
-
<TableColumnResizeStateContext
|
|
1415
|
+
return <ResizableTableRegisterContext value={registerColumn}>
|
|
1416
|
+
<TableColumnResizeStateContext value={contextValue}>
|
|
1337
1417
|
<div ref={setContainerRef} {...domProps} class={local.class ?? "solidaria-ResizableTableContainer"} style={{
|
|
1338
1418
|
position: "relative",
|
|
1339
1419
|
overflow: "auto",
|
|
@@ -1341,8 +1421,8 @@ function ResizableTableContainer(props) {
|
|
|
1341
1421
|
}}>
|
|
1342
1422
|
{local.children}
|
|
1343
1423
|
</div>
|
|
1344
|
-
</TableColumnResizeStateContext
|
|
1345
|
-
</ResizableTableRegisterContext
|
|
1424
|
+
</TableColumnResizeStateContext>
|
|
1425
|
+
</ResizableTableRegisterContext>;
|
|
1346
1426
|
}
|
|
1347
1427
|
/** Internal context for ColumnResizer to register itself with ResizableTableContainer */
|
|
1348
1428
|
const ResizableTableRegisterContext = createContext(null);
|