@cognite/aura 0.3.4 → 1.46104.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/CHANGELOG.md +264 -0
- package/DESIGN.md +638 -281
- package/LICENSE +21 -0
- package/README.md +48 -13
- package/dist/colors-deprecated.css +587 -0
- package/dist/colors.css +803 -830
- package/dist/components/index.d.ts +63 -57
- package/dist/components/index.js +62 -59
- package/dist/components/index.js.map +1 -0
- package/dist/components/ui/core/accordion/accordion.d.ts +19 -18
- package/dist/components/ui/core/accordion/accordion.js +99 -78
- package/dist/components/ui/core/accordion/accordion.js.map +1 -0
- package/dist/components/ui/core/action-toolbar/action-toolbar-motion.d.ts +8 -0
- package/dist/components/ui/core/action-toolbar/action-toolbar-motion.js +125 -0
- package/dist/components/ui/core/action-toolbar/action-toolbar-motion.js.map +1 -0
- package/dist/components/ui/core/action-toolbar/action-toolbar.d.ts +31 -31
- package/dist/components/ui/core/action-toolbar/action-toolbar.js +156 -106
- package/dist/components/ui/core/action-toolbar/action-toolbar.js.map +1 -0
- package/dist/components/ui/core/alert/alert.d.ts +25 -25
- package/dist/components/ui/core/alert/alert.js +181 -152
- package/dist/components/ui/core/alert/alert.js.map +1 -0
- package/dist/components/ui/core/avatar/avatar.d.ts +10 -9
- package/dist/components/ui/core/avatar/avatar.js +75 -65
- package/dist/components/ui/core/avatar/avatar.js.map +1 -0
- package/dist/components/ui/core/badge/badge.d.ts +13 -12
- package/dist/components/ui/core/badge/badge.js +88 -72
- package/dist/components/ui/core/badge/badge.js.map +1 -0
- package/dist/components/ui/core/banner/banner.d.ts +18 -18
- package/dist/components/ui/core/banner/banner.js +179 -142
- package/dist/components/ui/core/banner/banner.js.map +1 -0
- package/dist/components/ui/core/breadcrumb/breadcrumb.d.ts +12 -12
- package/dist/components/ui/core/breadcrumb/breadcrumb.js +139 -104
- package/dist/components/ui/core/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/ui/core/button/button.d.ts +7 -7
- package/dist/components/ui/core/button/button.gallery.d.ts +2 -0
- package/dist/components/ui/core/button/button.gallery.js +76 -0
- package/dist/components/ui/core/button/button.gallery.js.map +1 -0
- package/dist/components/ui/core/button/button.js +57 -47
- package/dist/components/ui/core/button/button.js.map +1 -0
- package/dist/components/ui/core/button-group/button-group.d.ts +9 -9
- package/dist/components/ui/core/button-group/button-group.js +50 -40
- package/dist/components/ui/core/button-group/button-group.js.map +1 -0
- package/dist/components/ui/core/calendar/calendar-header.d.ts +7 -7
- package/dist/components/ui/core/calendar/calendar-header.js +102 -63
- package/dist/components/ui/core/calendar/calendar-header.js.map +1 -0
- package/dist/components/ui/core/calendar/calendar-utils.d.ts +30 -30
- package/dist/components/ui/core/calendar/calendar-utils.js +116 -39
- package/dist/components/ui/core/calendar/calendar-utils.js.map +1 -0
- package/dist/components/ui/core/calendar/calendar.d.ts +10 -10
- package/dist/components/ui/core/calendar/calendar.js +95 -66
- package/dist/components/ui/core/calendar/calendar.js.map +1 -0
- package/dist/components/ui/core/calendar/constants.js +3 -0
- package/dist/components/ui/core/calendar/constants.js.map +1 -0
- package/dist/components/ui/core/card/card.d.ts +20 -20
- package/dist/components/ui/core/card/card.js +133 -104
- package/dist/components/ui/core/card/card.js.map +1 -0
- package/dist/components/ui/core/chart/chart.d.ts +55 -53
- package/dist/components/ui/core/chart/chart.js +196 -116
- package/dist/components/ui/core/chart/chart.js.map +1 -0
- package/dist/components/ui/core/chart/index.d.ts +2 -2
- package/dist/components/ui/core/chart/index.js +3 -2
- package/dist/components/ui/core/chart/index.js.map +1 -0
- package/dist/components/ui/core/checkbox/checkbox.d.ts +9 -9
- package/dist/components/ui/core/checkbox/checkbox.js +88 -68
- package/dist/components/ui/core/checkbox/checkbox.js.map +1 -0
- package/dist/components/ui/core/checkbox/checkbox.metadata.d.ts +1 -1
- package/dist/components/ui/core/checkbox/checkbox.metadata.js +6 -7
- package/dist/components/ui/core/checkbox/checkbox.metadata.js.map +1 -0
- package/dist/components/ui/core/code-block/code-block.d.ts +19 -19
- package/dist/components/ui/core/code-block/code-block.js +259 -175
- package/dist/components/ui/core/code-block/code-block.js.map +1 -0
- package/dist/components/ui/core/collapsible/collapsible.d.ts +5 -5
- package/dist/components/ui/core/collapsible/collapsible.js +36 -30
- package/dist/components/ui/core/collapsible/collapsible.js.map +1 -0
- package/dist/components/ui/core/combobox/combobox.d.ts +13 -13
- package/dist/components/ui/core/combobox/combobox.js +89 -40
- package/dist/components/ui/core/combobox/combobox.js.map +1 -0
- package/dist/components/ui/core/command/command.d.ts +20 -18
- package/dist/components/ui/core/command/command.js +137 -85
- package/dist/components/ui/core/command/command.js.map +1 -0
- package/dist/components/ui/core/conversation/conversation.d.ts +14 -0
- package/dist/components/ui/core/conversation/conversation.js +51 -0
- package/dist/components/ui/core/conversation/conversation.js.map +1 -0
- package/dist/components/ui/core/count/count.d.ts +8 -6
- package/dist/components/ui/core/count/count.js +51 -21
- package/dist/components/ui/core/count/count.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-cell.d.ts +7 -7
- package/dist/components/ui/core/data-grid/data-grid-cell.js +23 -0
- package/dist/components/ui/core/data-grid/data-grid-cell.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-clauses.d.ts +14 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-clauses.js +36 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-clauses.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-panel.d.ts +41 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-panel.js +273 -0
- package/dist/components/ui/core/data-grid/data-grid-filter-panel.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-footer.d.ts +6 -0
- package/dist/components/ui/core/data-grid/data-grid-footer.js +34 -0
- package/dist/components/ui/core/data-grid/data-grid-footer.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-header-row.d.ts +10 -10
- package/dist/components/ui/core/data-grid/data-grid-header-row.js +70 -0
- package/dist/components/ui/core/data-grid/data-grid-header-row.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-header.d.ts +11 -0
- package/dist/components/ui/core/data-grid/data-grid-header.js +67 -0
- package/dist/components/ui/core/data-grid/data-grid-header.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid-row.d.ts +15 -15
- package/dist/components/ui/core/data-grid/data-grid-row.js +105 -0
- package/dist/components/ui/core/data-grid/data-grid-row.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid.d.ts +85 -35
- package/dist/components/ui/core/data-grid/data-grid.fixtures.d.ts +7 -7
- package/dist/components/ui/core/data-grid/data-grid.fixtures.js +139 -0
- package/dist/components/ui/core/data-grid/data-grid.fixtures.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid.js +404 -0
- package/dist/components/ui/core/data-grid/data-grid.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid.utils.d.ts +3 -3
- package/dist/components/ui/core/data-grid/data-grid.utils.js +51 -0
- package/dist/components/ui/core/data-grid/data-grid.utils.js.map +1 -0
- package/dist/components/ui/core/data-grid/index.d.ts +4 -0
- package/dist/components/ui/core/data-grid/index.js +5 -0
- package/dist/components/ui/core/data-grid/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/date-picker.d.ts +11 -13
- package/dist/components/ui/core/date-time-pickers/date-picker/date-picker.js +85 -61
- package/dist/components/ui/core/date-time-pickers/date-picker/date-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/index.d.ts +3 -3
- package/dist/components/ui/core/date-time-pickers/date-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/types.d.ts +14 -14
- package/dist/components/ui/core/date-time-pickers/date-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-picker/use-date-picker.d.ts +2 -2
- package/dist/components/ui/core/date-time-pickers/date-picker/use-date-picker.js +51 -36
- package/dist/components/ui/core/date-time-pickers/date-picker/use-date-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/date-range-picker.d.ts +11 -13
- package/dist/components/ui/core/date-time-pickers/date-range-picker/date-range-picker.js +89 -64
- package/dist/components/ui/core/date-time-pickers/date-range-picker/date-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/index.d.ts +3 -3
- package/dist/components/ui/core/date-time-pickers/date-range-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/types.d.ts +20 -20
- package/dist/components/ui/core/date-time-pickers/date-range-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-range-picker/use-date-range-picker.d.ts +4 -4
- package/dist/components/ui/core/date-time-pickers/date-range-picker/use-date-range-picker.js +95 -60
- package/dist/components/ui/core/date-time-pickers/date-range-picker/use-date-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/date-time-picker.d.ts +15 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/date-time-picker.js +120 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/date-time-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/index.d.ts +3 -1
- package/dist/components/ui/core/date-time-pickers/date-time-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/types.d.ts +25 -32
- package/dist/components/ui/core/date-time-pickers/date-time-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/use-date-time-picker.d.ts +2 -2
- package/dist/components/ui/core/date-time-pickers/date-time-picker/use-date-time-picker.js +78 -0
- package/dist/components/ui/core/date-time-pickers/date-time-picker/use-date-time-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/date-time-range-picker.d.ts +13 -15
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/date-time-range-picker.js +165 -119
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/date-time-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/index.d.ts +3 -3
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/types.d.ts +37 -37
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/use-date-time-range-picker.d.ts +3 -3
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/use-date-time-range-picker.js +163 -104
- package/dist/components/ui/core/date-time-pickers/date-time-range-picker/use-date-time-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/index.d.ts +17 -12
- package/dist/components/ui/core/date-time-pickers/index.js +10 -6
- package/dist/components/ui/core/date-time-pickers/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/am-pm-scroll/am-pm-scroll.d.ts +5 -5
- package/dist/components/ui/core/date-time-pickers/shared/am-pm-scroll/am-pm-scroll.js +52 -42
- package/dist/components/ui/core/date-time-pickers/shared/am-pm-scroll/am-pm-scroll.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/constants.d.ts +6 -1
- package/dist/components/ui/core/date-time-pickers/shared/constants.js +23 -0
- package/dist/components/ui/core/date-time-pickers/shared/constants.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/date-time-input.d.ts +16 -15
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/date-time-input.js +87 -64
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/date-time-input.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/range-input-display.d.ts +10 -9
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/range-input-display.js +89 -38
- package/dist/components/ui/core/date-time-pickers/shared/date-time-input/range-input-display.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-popover-state.d.ts +5 -5
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-popover-state.js +34 -23
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-popover-state.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-date-state.d.ts +23 -23
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-date-state.js +95 -52
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-date-state.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-step-manager.d.ts +5 -5
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-step-manager.js +22 -18
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-step-manager.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-single-date-state.d.ts +19 -19
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-single-date-state.js +41 -24
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-single-date-state.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-time-state.d.ts +13 -13
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-time-state.js +33 -24
- package/dist/components/ui/core/date-time-pickers/shared/hooks/use-time-state.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/scroll-cell-classes.d.ts +5 -5
- package/dist/components/ui/core/date-time-pickers/shared/scroll-cell-classes.js +9 -4
- package/dist/components/ui/core/date-time-pickers/shared/scroll-cell-classes.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/shortcuts-panel/shortcuts-panel.d.ts +13 -9
- package/dist/components/ui/core/date-time-pickers/shared/shortcuts-panel/shortcuts-panel.js +22 -17
- package/dist/components/ui/core/date-time-pickers/shared/shortcuts-panel/shortcuts-panel.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/index.d.ts +2 -2
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/time-picker-panel.d.ts +13 -13
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/time-picker-panel.js +49 -40
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-panel/time-picker-panel.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-scroll/time-picker-scroll.d.ts +7 -7
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-scroll/time-picker-scroll.js +41 -34
- package/dist/components/ui/core/date-time-pickers/shared/time-picker-scroll/time-picker-scroll.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/index.d.ts +3 -3
- package/dist/components/ui/core/date-time-pickers/time-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/time-picker.d.ts +12 -14
- package/dist/components/ui/core/date-time-pickers/time-picker/time-picker.js +99 -79
- package/dist/components/ui/core/date-time-pickers/time-picker/time-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/types.d.ts +20 -20
- package/dist/components/ui/core/date-time-pickers/time-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-picker/use-time-picker.d.ts +2 -2
- package/dist/components/ui/core/date-time-pickers/time-picker/use-time-picker.js +63 -41
- package/dist/components/ui/core/date-time-pickers/time-picker/use-time-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/index.d.ts +3 -1
- package/dist/components/ui/core/date-time-pickers/time-range-picker/index.js +3 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/index.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/time-range-picker.d.ts +14 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/time-range-picker.js +115 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/time-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/types.d.ts +30 -36
- package/dist/components/ui/core/date-time-pickers/time-range-picker/types.js +3 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/types.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/use-time-range-picker.d.ts +2 -2
- package/dist/components/ui/core/date-time-pickers/time-range-picker/use-time-range-picker.js +145 -0
- package/dist/components/ui/core/date-time-pickers/time-range-picker/use-time-range-picker.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/date-input.d.ts +56 -0
- package/dist/components/ui/core/date-time-pickers/utils/date-input.js +67 -0
- package/dist/components/ui/core/date-time-pickers/utils/date-input.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/date-range-utils.d.ts +18 -18
- package/dist/components/ui/core/date-time-pickers/utils/date-range-utils.js +42 -0
- package/dist/components/ui/core/date-time-pickers/utils/date-range-utils.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/format-utils.d.ts +31 -29
- package/dist/components/ui/core/date-time-pickers/utils/format-utils.js +56 -0
- package/dist/components/ui/core/date-time-pickers/utils/format-utils.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/segment-utils.d.ts +21 -21
- package/dist/components/ui/core/date-time-pickers/utils/segment-utils.js +170 -0
- package/dist/components/ui/core/date-time-pickers/utils/segment-utils.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/time-utils.d.ts +28 -28
- package/dist/components/ui/core/date-time-pickers/utils/time-utils.js +88 -7
- package/dist/components/ui/core/date-time-pickers/utils/time-utils.js.map +1 -0
- package/dist/components/ui/core/date-time-pickers/utils/time-validation.d.ts +17 -17
- package/dist/components/ui/core/date-time-pickers/utils/time-validation.js +43 -0
- package/dist/components/ui/core/date-time-pickers/utils/time-validation.js.map +1 -0
- package/dist/components/ui/core/dialog/dialog.d.ts +12 -9
- package/dist/components/ui/core/dialog/dialog.js +90 -82
- package/dist/components/ui/core/dialog/dialog.js.map +1 -0
- package/dist/components/ui/core/dropdown-menu/dropdown-menu.d.ts +22 -19
- package/dist/components/ui/core/dropdown-menu/dropdown-menu.js +204 -149
- package/dist/components/ui/core/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/ui/core/empty-state/empty-state.context.d.ts +4 -4
- package/dist/components/ui/core/empty-state/empty-state.context.js +8 -5
- package/dist/components/ui/core/empty-state/empty-state.context.js.map +1 -0
- package/dist/components/ui/core/empty-state/empty-state.d.ts +14 -14
- package/dist/components/ui/core/empty-state/empty-state.js +96 -82
- package/dist/components/ui/core/empty-state/empty-state.js.map +1 -0
- package/dist/components/ui/core/helper-text/helper-text.d.ts +7 -7
- package/dist/components/ui/core/helper-text/helper-text.js +55 -36
- package/dist/components/ui/core/helper-text/helper-text.js.map +1 -0
- package/dist/components/ui/core/hover-card/hover-card.d.ts +7 -6
- package/dist/components/ui/core/hover-card/hover-card.js +56 -52
- package/dist/components/ui/core/hover-card/hover-card.js.map +1 -0
- package/dist/components/ui/core/inline-citation/inline-citation.d.ts +26 -25
- package/dist/components/ui/core/inline-citation/inline-citation.js +121 -97
- package/dist/components/ui/core/inline-citation/inline-citation.js.map +1 -0
- package/dist/components/ui/core/input/input.d.ts +2 -2
- package/dist/components/ui/core/input/input.js +15 -13
- package/dist/components/ui/core/input/input.js.map +1 -0
- package/dist/components/ui/core/input-group/input-group.d.ts +25 -14
- package/dist/components/ui/core/input-group/input-group.js +149 -76
- package/dist/components/ui/core/input-group/input-group.js.map +1 -0
- package/dist/components/ui/core/item/item.d.ts +20 -0
- package/dist/components/ui/core/item/item.js +93 -0
- package/dist/components/ui/core/item/item.js.map +1 -0
- package/dist/components/ui/core/kbd/kbd.d.ts +3 -3
- package/dist/components/ui/core/kbd/kbd.js +24 -20
- package/dist/components/ui/core/kbd/kbd.js.map +1 -0
- package/dist/components/ui/core/label/label.d.ts +3 -3
- package/dist/components/ui/core/label/label.js +33 -26
- package/dist/components/ui/core/label/label.js.map +1 -0
- package/dist/components/ui/core/loader/loader.d.ts +6 -6
- package/dist/components/ui/core/loader/loader.js +97 -80
- package/dist/components/ui/core/loader/loader.js.map +1 -0
- package/dist/components/ui/core/message/message-response-default-streamdown-controls.d.ts +9 -9
- package/dist/components/ui/core/message/message-response-default-streamdown-controls.js +19 -12
- package/dist/components/ui/core/message/message-response-default-streamdown-controls.js.map +1 -0
- package/dist/components/ui/core/message/message-response-math-plugin.d.ts +3 -0
- package/dist/components/ui/core/message/message-response-math-plugin.js +6 -0
- package/dist/components/ui/core/message/message-response-math-plugin.js.map +1 -0
- package/dist/components/ui/core/message/message.d.ts +27 -23
- package/dist/components/ui/core/message/message.js +453 -316
- package/dist/components/ui/core/message/message.js.map +1 -0
- package/dist/components/ui/core/overflow-list/overflow-list.d.ts +21 -0
- package/dist/components/ui/core/overflow-list/overflow-list.js +197 -0
- package/dist/components/ui/core/overflow-list/overflow-list.js.map +1 -0
- package/dist/components/ui/core/overflow-list/overflow-list.utils.d.ts +37 -35
- package/dist/components/ui/core/overflow-list/overflow-list.utils.js +206 -0
- package/dist/components/ui/core/overflow-list/overflow-list.utils.js.map +1 -0
- package/dist/components/ui/core/pagination/pagination-size-context.d.ts +2 -2
- package/dist/components/ui/core/pagination/pagination-size-context.js +6 -5
- package/dist/components/ui/core/pagination/pagination-size-context.js.map +1 -0
- package/dist/components/ui/core/pagination/pagination-teleport.d.ts +9 -9
- package/dist/components/ui/core/pagination/pagination-teleport.js +127 -84
- package/dist/components/ui/core/pagination/pagination-teleport.js.map +1 -0
- package/dist/components/ui/core/pagination/pagination-teleport.utils.js +6 -6
- package/dist/components/ui/core/pagination/pagination-teleport.utils.js.map +1 -0
- package/dist/components/ui/core/pagination/pagination.d.ts +39 -39
- package/dist/components/ui/core/pagination/pagination.js +294 -234
- package/dist/components/ui/core/pagination/pagination.js.map +1 -0
- package/dist/components/ui/core/popover/popover.d.ts +12 -11
- package/dist/components/ui/core/popover/popover.js +104 -89
- package/dist/components/ui/core/popover/popover.js.map +1 -0
- package/dist/components/ui/core/progress/progress.d.ts +9 -8
- package/dist/components/ui/core/progress/progress.js +50 -35
- package/dist/components/ui/core/progress/progress.js.map +1 -0
- package/dist/components/ui/core/prompt-input/prompt-input.d.ts +27 -27
- package/dist/components/ui/core/prompt-input/prompt-input.js +342 -271
- package/dist/components/ui/core/prompt-input/prompt-input.js.map +1 -0
- package/dist/components/ui/core/radio-group/radio-group.d.ts +12 -12
- package/dist/components/ui/core/radio-group/radio-group.js +88 -58
- package/dist/components/ui/core/radio-group/radio-group.js.map +1 -0
- package/dist/components/ui/core/reasoning/reasoning.d.ts +7 -7
- package/dist/components/ui/core/reasoning/reasoning.js +68 -56
- package/dist/components/ui/core/reasoning/reasoning.js.map +1 -0
- package/dist/components/ui/core/scroll-area/scroll-area.d.ts +4 -4
- package/dist/components/ui/core/scroll-area/scroll-area.js +50 -40
- package/dist/components/ui/core/scroll-area/scroll-area.js.map +1 -0
- package/dist/components/ui/core/search/search.d.ts +8 -8
- package/dist/components/ui/core/search/search.js +122 -76
- package/dist/components/ui/core/search/search.js.map +1 -0
- package/dist/components/ui/core/segmented-control/segmented-control.d.ts +17 -11
- package/dist/components/ui/core/segmented-control/segmented-control.js +204 -108
- package/dist/components/ui/core/segmented-control/segmented-control.js.map +1 -0
- package/dist/components/ui/core/select/select.d.ts +27 -26
- package/dist/components/ui/core/select/select.js +213 -168
- package/dist/components/ui/core/select/select.js.map +1 -0
- package/dist/components/ui/core/separator/separator.d.ts +2 -2
- package/dist/components/ui/core/separator/separator.js +13 -13
- package/dist/components/ui/core/separator/separator.js.map +1 -0
- package/dist/components/ui/core/shimmer/shimmer.d.ts +8 -8
- package/dist/components/ui/core/shimmer/shimmer.js +64 -40
- package/dist/components/ui/core/shimmer/shimmer.js.map +1 -0
- package/dist/components/ui/core/skeleton/skeleton.d.ts +2 -2
- package/dist/components/ui/core/skeleton/skeleton.js +13 -13
- package/dist/components/ui/core/skeleton/skeleton.js.map +1 -0
- package/dist/components/ui/core/slider/slider.d.ts +7 -7
- package/dist/components/ui/core/slider/slider.js +51 -39
- package/dist/components/ui/core/slider/slider.js.map +1 -0
- package/dist/components/ui/core/sonner-toast/sonner-toast.d.ts +2 -2
- package/dist/components/ui/core/sonner-toast/sonner-toast.js +67 -54
- package/dist/components/ui/core/sonner-toast/sonner-toast.js.map +1 -0
- package/dist/components/ui/core/sources/sources.d.ts +12 -12
- package/dist/components/ui/core/sources/sources.js +87 -58
- package/dist/components/ui/core/sources/sources.js.map +1 -0
- package/dist/components/ui/core/switch/switch.d.ts +9 -9
- package/dist/components/ui/core/switch/switch.js +83 -61
- package/dist/components/ui/core/switch/switch.js.map +1 -0
- package/dist/components/ui/core/switch/switch.metadata.d.ts +1 -1
- package/dist/components/ui/core/switch/switch.metadata.js +8 -0
- package/dist/components/ui/core/switch/switch.metadata.js.map +1 -0
- package/dist/components/ui/core/tabs/tabs.d.ts +20 -18
- package/dist/components/ui/core/tabs/tabs.js +176 -147
- package/dist/components/ui/core/tabs/tabs.js.map +1 -0
- package/dist/components/ui/core/tabs/tabs.utils.d.ts +1 -1
- package/dist/components/ui/core/tabs/tabs.utils.js +10 -6
- package/dist/components/ui/core/tabs/tabs.utils.js.map +1 -0
- package/dist/components/ui/core/textarea/textarea.d.ts +2 -2
- package/dist/components/ui/core/textarea/textarea.js +13 -13
- package/dist/components/ui/core/textarea/textarea.js.map +1 -0
- package/dist/components/ui/core/toggle/toggle.d.ts +9 -9
- package/dist/components/ui/core/toggle/toggle.js +60 -54
- package/dist/components/ui/core/toggle/toggle.js.map +1 -0
- package/dist/components/ui/core/tool/tool.d.ts +18 -18
- package/dist/components/ui/core/tool/tool.js +167 -126
- package/dist/components/ui/core/tool/tool.js.map +1 -0
- package/dist/components/ui/core/toolbar/toolbar.d.ts +37 -0
- package/dist/components/ui/core/toolbar/toolbar.js +171 -0
- package/dist/components/ui/core/toolbar/toolbar.js.map +1 -0
- package/dist/components/ui/core/tooltip/tooltip.d.ts +8 -7
- package/dist/components/ui/core/tooltip/tooltip.js +53 -46
- package/dist/components/ui/core/tooltip/tooltip.js.map +1 -0
- package/dist/components/ui/core/topbar/topbar.d.ts +26 -26
- package/dist/components/ui/core/topbar/topbar.js +160 -105
- package/dist/components/ui/core/topbar/topbar.js.map +1 -0
- package/dist/components/ui/core/tree/tree.d.ts +20 -0
- package/dist/components/ui/core/tree/tree.js +100 -0
- package/dist/components/ui/core/tree/tree.js.map +1 -0
- package/dist/eslint/index.d.ts +5 -5
- package/dist/eslint/index.js +9 -5
- package/dist/eslint/index.js.map +1 -0
- package/dist/eslint/no-overriding-styles.d.ts +1 -1
- package/dist/eslint/no-overriding-styles.js +341 -201
- package/dist/eslint/no-overriding-styles.js.map +1 -0
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +2 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ai/types.d.ts +43 -43
- package/dist/lib/ai/types.js +3 -0
- package/dist/lib/ai/types.js.map +1 -0
- package/dist/lib/decorative-variant-classes.d.ts +53 -0
- package/dist/lib/decorative-variant-classes.js +58 -0
- package/dist/lib/decorative-variant-classes.js.map +1 -0
- package/dist/lib/highlight-code.d.ts +11 -8
- package/dist/lib/highlight-code.js +58 -40
- package/dist/lib/highlight-code.js.map +1 -0
- package/dist/lib/portal-container-context.d.ts +1 -1
- package/dist/lib/portal-container-context.js +8 -8
- package/dist/lib/portal-container-context.js.map +1 -0
- package/dist/lib/shared-theme-from-url.d.ts +13 -0
- package/dist/lib/shared-theme-from-url.js +61 -0
- package/dist/lib/shared-theme-from-url.js.map +1 -0
- package/dist/lib/style-scope.d.ts +2 -2
- package/dist/lib/style-scope.js +6 -6
- package/dist/lib/style-scope.js.map +1 -0
- package/dist/lib/theme-share-url.d.ts +31 -0
- package/dist/lib/theme-share-url.js +116 -0
- package/dist/lib/theme-share-url.js.map +1 -0
- package/dist/lib/types.d.ts +39 -39
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/use-controllable-state.d.ts +4 -7
- package/dist/lib/use-controllable-state.js +34 -21
- package/dist/lib/use-controllable-state.js.map +1 -0
- package/dist/lib/utils.d.ts +63 -34
- package/dist/lib/utils.js +134 -32
- package/dist/lib/utils.js.map +1 -0
- package/dist/styles.css +2 -1
- package/dist/styles.source.css +24 -12
- package/dist/utils/assign-ref.d.ts +3 -0
- package/dist/utils/assign-ref.js +13 -0
- package/dist/utils/assign-ref.js.map +1 -0
- package/package.json +50 -11
- package/src/components/ui/core/button/button.md +93 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Badge } from "../badge/badge.js";
|
|
3
|
+
const assetRows = [
|
|
4
|
+
{
|
|
5
|
+
id: '1',
|
|
6
|
+
name: 'Pump health UT-654/111',
|
|
7
|
+
type: 'Pump',
|
|
8
|
+
status: 'Running',
|
|
9
|
+
area: 'North platform',
|
|
10
|
+
updated: '2026-04-11'
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: '2',
|
|
14
|
+
name: 'Compressor train A-14',
|
|
15
|
+
type: 'Compressor',
|
|
16
|
+
status: 'Needs attention',
|
|
17
|
+
area: 'East module',
|
|
18
|
+
updated: '2026-04-14'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: '3',
|
|
22
|
+
name: 'Valve V-09',
|
|
23
|
+
type: 'Valve',
|
|
24
|
+
status: 'Stopped',
|
|
25
|
+
area: 'South riser',
|
|
26
|
+
updated: '2026-04-18'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: '4',
|
|
30
|
+
name: 'Flow sensor SK-91',
|
|
31
|
+
type: 'Sensor',
|
|
32
|
+
status: 'Running',
|
|
33
|
+
area: 'West deck',
|
|
34
|
+
updated: '2026-04-22'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: '5',
|
|
38
|
+
name: 'Pump A-10',
|
|
39
|
+
type: 'Pump',
|
|
40
|
+
status: 'Running',
|
|
41
|
+
area: 'North platform',
|
|
42
|
+
updated: '2026-04-25'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: '6',
|
|
46
|
+
name: 'Valve V-42',
|
|
47
|
+
type: 'Valve',
|
|
48
|
+
status: 'Needs attention',
|
|
49
|
+
area: 'East module',
|
|
50
|
+
updated: '2026-04-28'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: '7',
|
|
54
|
+
name: 'Compressor train B-07',
|
|
55
|
+
type: 'Compressor',
|
|
56
|
+
status: 'Running',
|
|
57
|
+
area: 'North platform',
|
|
58
|
+
updated: '2026-05-01'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: '8',
|
|
62
|
+
name: 'Heat exchanger HX-22',
|
|
63
|
+
type: 'Heat exchanger',
|
|
64
|
+
status: 'Running',
|
|
65
|
+
area: 'South riser',
|
|
66
|
+
updated: '2026-05-03'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: '9',
|
|
70
|
+
name: 'Pump P-33',
|
|
71
|
+
type: 'Pump',
|
|
72
|
+
status: 'Stopped',
|
|
73
|
+
area: 'East module',
|
|
74
|
+
updated: '2026-05-05'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: '10',
|
|
78
|
+
name: 'Separator SEP-01',
|
|
79
|
+
type: 'Separator',
|
|
80
|
+
status: 'Running',
|
|
81
|
+
area: 'West deck',
|
|
82
|
+
updated: '2026-05-07'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: '11',
|
|
86
|
+
name: 'Valve V-17',
|
|
87
|
+
type: 'Valve',
|
|
88
|
+
status: 'Running',
|
|
89
|
+
area: 'North platform',
|
|
90
|
+
updated: '2026-05-09'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: '12',
|
|
94
|
+
name: 'Flow sensor SK-44',
|
|
95
|
+
type: 'Sensor',
|
|
96
|
+
status: 'Needs attention',
|
|
97
|
+
area: 'South riser',
|
|
98
|
+
updated: '2026-05-10'
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
const statusVariant = {
|
|
102
|
+
Running: 'success',
|
|
103
|
+
Stopped: 'error',
|
|
104
|
+
'Needs attention': 'warning'
|
|
105
|
+
};
|
|
106
|
+
const assetColumns = [
|
|
107
|
+
{
|
|
108
|
+
accessorKey: 'name',
|
|
109
|
+
header: 'Name',
|
|
110
|
+
size: 220
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
accessorKey: 'type',
|
|
114
|
+
header: 'Type',
|
|
115
|
+
size: 140
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
accessorKey: 'status',
|
|
119
|
+
header: 'Status',
|
|
120
|
+
size: 160,
|
|
121
|
+
cell: ({ row })=>/*#__PURE__*/ _jsx(Badge, {
|
|
122
|
+
variant: statusVariant[row.original.status],
|
|
123
|
+
children: row.original.status
|
|
124
|
+
})
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
accessorKey: 'area',
|
|
128
|
+
header: 'Area',
|
|
129
|
+
size: 180
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
accessorKey: 'updated',
|
|
133
|
+
header: 'Updated',
|
|
134
|
+
size: 140
|
|
135
|
+
}
|
|
136
|
+
];
|
|
137
|
+
export { assetColumns, assetRows };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=data-grid.fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ui/core/data-grid/data-grid.fixtures.tsx"],"sourcesContent":["import type { ColumnDef } from '@tanstack/react-table';\n\nimport { Badge } from '../badge/badge';\n\ntype AssetRow = {\n id: string;\n name: string;\n type: string;\n status: 'Running' | 'Stopped' | 'Needs attention';\n area: string;\n updated: string;\n};\n\nconst assetRows: AssetRow[] = [\n {\n id: '1',\n name: 'Pump health UT-654/111',\n type: 'Pump',\n status: 'Running',\n area: 'North platform',\n updated: '2026-04-11',\n },\n {\n id: '2',\n name: 'Compressor train A-14',\n type: 'Compressor',\n status: 'Needs attention',\n area: 'East module',\n updated: '2026-04-14',\n },\n {\n id: '3',\n name: 'Valve V-09',\n type: 'Valve',\n status: 'Stopped',\n area: 'South riser',\n updated: '2026-04-18',\n },\n {\n id: '4',\n name: 'Flow sensor SK-91',\n type: 'Sensor',\n status: 'Running',\n area: 'West deck',\n updated: '2026-04-22',\n },\n {\n id: '5',\n name: 'Pump A-10',\n type: 'Pump',\n status: 'Running',\n area: 'North platform',\n updated: '2026-04-25',\n },\n {\n id: '6',\n name: 'Valve V-42',\n type: 'Valve',\n status: 'Needs attention',\n area: 'East module',\n updated: '2026-04-28',\n },\n {\n id: '7',\n name: 'Compressor train B-07',\n type: 'Compressor',\n status: 'Running',\n area: 'North platform',\n updated: '2026-05-01',\n },\n {\n id: '8',\n name: 'Heat exchanger HX-22',\n type: 'Heat exchanger',\n status: 'Running',\n area: 'South riser',\n updated: '2026-05-03',\n },\n {\n id: '9',\n name: 'Pump P-33',\n type: 'Pump',\n status: 'Stopped',\n area: 'East module',\n updated: '2026-05-05',\n },\n {\n id: '10',\n name: 'Separator SEP-01',\n type: 'Separator',\n status: 'Running',\n area: 'West deck',\n updated: '2026-05-07',\n },\n {\n id: '11',\n name: 'Valve V-17',\n type: 'Valve',\n status: 'Running',\n area: 'North platform',\n updated: '2026-05-09',\n },\n {\n id: '12',\n name: 'Flow sensor SK-44',\n type: 'Sensor',\n status: 'Needs attention',\n area: 'South riser',\n updated: '2026-05-10',\n },\n];\n\nconst statusVariant = {\n Running: 'success',\n Stopped: 'error',\n 'Needs attention': 'warning',\n} as const;\n\nconst assetColumns: ColumnDef<AssetRow>[] = [\n { accessorKey: 'name', header: 'Name', size: 220 },\n { accessorKey: 'type', header: 'Type', size: 140 },\n {\n accessorKey: 'status',\n header: 'Status',\n size: 160,\n cell: ({ row }) => (\n <Badge variant={statusVariant[row.original.status]}>\n {row.original.status}\n </Badge>\n ),\n },\n { accessorKey: 'area', header: 'Area', size: 180 },\n { accessorKey: 'updated', header: 'Updated', size: 140 },\n];\n\nexport { type AssetRow, assetColumns, assetRows };\n"],"names":["Badge","assetRows","id","name","type","status","area","updated","statusVariant","Running","Stopped","assetColumns","accessorKey","header","size","cell","row","variant","original"],"mappings":";AAEA,SAASA,KAAK,QAAQ,oBAAiB;AAWvC,MAAMC,YAAwB;IAC5B;QACEC,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;IACA;QACEL,IAAI;QACJC,MAAM;QACNC,MAAM;QACNC,QAAQ;QACRC,MAAM;QACNC,SAAS;IACX;CACD;AAED,MAAMC,gBAAgB;IACpBC,SAAS;IACTC,SAAS;IACT,mBAAmB;AACrB;AAEA,MAAMC,eAAsC;IAC1C;QAAEC,aAAa;QAAQC,QAAQ;QAAQC,MAAM;IAAI;IACjD;QAAEF,aAAa;QAAQC,QAAQ;QAAQC,MAAM;IAAI;IACjD;QACEF,aAAa;QACbC,QAAQ;QACRC,MAAM;QACNC,MAAM,CAAC,EAAEC,GAAG,EAAE,iBACZ,KAAChB;gBAAMiB,SAAST,aAAa,CAACQ,IAAIE,QAAQ,CAACb,MAAM,CAAC;0BAC/CW,IAAIE,QAAQ,CAACb,MAAM;;IAG1B;IACA;QAAEO,aAAa;QAAQC,QAAQ;QAAQC,MAAM;IAAI;IACjD;QAAEF,aAAa;QAAWC,QAAQ;QAAWC,MAAM;IAAI;CACxD;AAED,SAAwBH,YAAY,EAAEV,SAAS,GAAG"}
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef } from "react";
|
|
3
|
+
import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
|
|
4
|
+
import { IconCheck, IconFilter, IconMinus } from "@tabler/icons-react";
|
|
5
|
+
import { getCoreRowModel, getExpandedRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
|
|
6
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
7
|
+
import { useControllableState } from "../../../../lib/use-controllable-state.js";
|
|
8
|
+
import { cn, focusState } from "../../../../lib/utils.js";
|
|
9
|
+
import { Button } from "../button/button.js";
|
|
10
|
+
import { Search } from "../search/search.js";
|
|
11
|
+
import { DataGridHeaderRow } from "./data-grid-header-row.js";
|
|
12
|
+
import { DataGridRow } from "./data-grid-row.js";
|
|
13
|
+
import { collectCustomCellColumnIds } from "./data-grid.utils.js";
|
|
14
|
+
const EMPTY_PINNED_COLUMNS = [];
|
|
15
|
+
const DEFAULT_FLEXIBLE_COLUMN_WIDTH = 120;
|
|
16
|
+
const DataGridContext = /*#__PURE__*/ createContext(undefined);
|
|
17
|
+
const ROW_HEIGHT_MAP = {
|
|
18
|
+
default: 36,
|
|
19
|
+
compact: 32
|
|
20
|
+
};
|
|
21
|
+
const HEADER_HEIGHT_MAP = {
|
|
22
|
+
default: 36,
|
|
23
|
+
compact: 32
|
|
24
|
+
};
|
|
25
|
+
function DataGrid({ data, columns, getRowId, rowCount, globalFilterFn = 'auto', enableRowSelection = false, enableSorting = false, manualPagination = false, manualSorting = false, rowSelection, defaultRowSelection, onRowSelectionChange, sorting, defaultSorting, onSortingChange, pagination, defaultPagination, onPaginationChange, getSubRows, expanded, defaultExpanded, onExpandedChange, getRowCanExpand, maxDepth = 5, pinnedColumns = EMPTY_PINNED_COLUMNS, gridRef, size = 'default', children, className, onRowClick, searchValue, defaultSearchValue, onSearchValueChange, queryMode = 'client', filteredResultCount, totalResultCount, rowHeight, headerHeight, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }) {
|
|
26
|
+
const scrollContainerRef = useRef(null);
|
|
27
|
+
const [resolvedSearchValue, setResolvedSearchValue] = useControllableState({
|
|
28
|
+
prop: searchValue,
|
|
29
|
+
defaultProp: defaultSearchValue ?? '',
|
|
30
|
+
onChange: onSearchValueChange
|
|
31
|
+
});
|
|
32
|
+
const [resolvedSorting, setResolvedSorting] = useControllableState({
|
|
33
|
+
prop: sorting,
|
|
34
|
+
defaultProp: defaultSorting ?? [],
|
|
35
|
+
onChange: onSortingChange
|
|
36
|
+
});
|
|
37
|
+
const [resolvedRowSelection, setResolvedRowSelection] = useControllableState({
|
|
38
|
+
prop: rowSelection,
|
|
39
|
+
defaultProp: defaultRowSelection ?? {},
|
|
40
|
+
onChange: onRowSelectionChange
|
|
41
|
+
});
|
|
42
|
+
const hasPagination = pagination !== undefined || defaultPagination !== undefined;
|
|
43
|
+
const [resolvedPagination, setResolvedPagination] = useControllableState({
|
|
44
|
+
prop: pagination,
|
|
45
|
+
defaultProp: defaultPagination ?? {
|
|
46
|
+
pageIndex: 0,
|
|
47
|
+
pageSize: 10
|
|
48
|
+
},
|
|
49
|
+
onChange: onPaginationChange
|
|
50
|
+
});
|
|
51
|
+
const hasExpanding = getSubRows !== undefined;
|
|
52
|
+
const [resolvedExpanded, setResolvedExpanded] = useControllableState({
|
|
53
|
+
prop: expanded,
|
|
54
|
+
defaultProp: defaultExpanded ?? {},
|
|
55
|
+
onChange: onExpandedChange
|
|
56
|
+
});
|
|
57
|
+
const isClientSorting = enableSorting && !manualSorting;
|
|
58
|
+
const isClientPagination = hasPagination && !manualPagination;
|
|
59
|
+
useSearchPaginationReset(resolvedSearchValue, hasPagination, setResolvedPagination);
|
|
60
|
+
const columnPinning = useMemo(()=>({
|
|
61
|
+
left: pinnedColumns,
|
|
62
|
+
right: []
|
|
63
|
+
}), [
|
|
64
|
+
pinnedColumns
|
|
65
|
+
]);
|
|
66
|
+
const pinnedColumnIds = useMemo(()=>new Set(pinnedColumns), [
|
|
67
|
+
pinnedColumns
|
|
68
|
+
]);
|
|
69
|
+
const lastPinnedColumnId = pinnedColumns[pinnedColumns.length - 1];
|
|
70
|
+
const customCellColumnIds = useMemo(()=>collectCustomCellColumnIds(columns), [
|
|
71
|
+
columns
|
|
72
|
+
]);
|
|
73
|
+
// eslint-disable-next-line react-hooks/incompatible-library -- useReactTable in the DataGrid component is intentional and stable.
|
|
74
|
+
const table = useReactTable({
|
|
75
|
+
data,
|
|
76
|
+
columns,
|
|
77
|
+
state: {
|
|
78
|
+
columnPinning,
|
|
79
|
+
globalFilter: resolvedSearchValue,
|
|
80
|
+
sorting: resolvedSorting,
|
|
81
|
+
rowSelection: resolvedRowSelection,
|
|
82
|
+
...hasPagination ? {
|
|
83
|
+
pagination: resolvedPagination
|
|
84
|
+
} : {},
|
|
85
|
+
...hasExpanding ? {
|
|
86
|
+
expanded: resolvedExpanded
|
|
87
|
+
} : {}
|
|
88
|
+
},
|
|
89
|
+
onSortingChange: setResolvedSorting,
|
|
90
|
+
onRowSelectionChange: setResolvedRowSelection,
|
|
91
|
+
...hasPagination ? {
|
|
92
|
+
onPaginationChange: setResolvedPagination
|
|
93
|
+
} : {},
|
|
94
|
+
...hasExpanding ? {
|
|
95
|
+
onExpandedChange: setResolvedExpanded
|
|
96
|
+
} : {},
|
|
97
|
+
// Preserve expanded rows across `data` changes (e.g. refetches) so the user
|
|
98
|
+
// doesn't lose their place. Consumers fetching server-paged data should
|
|
99
|
+
// ensure stable `getRowId` values; otherwise expanded keys can stick to
|
|
100
|
+
// rows that no longer logically exist.
|
|
101
|
+
autoResetPageIndex: false,
|
|
102
|
+
autoResetExpanded: false,
|
|
103
|
+
enableRowSelection,
|
|
104
|
+
enableSubRowSelection: false,
|
|
105
|
+
enableSorting,
|
|
106
|
+
manualPagination,
|
|
107
|
+
manualSorting,
|
|
108
|
+
getCoreRowModel: getCoreRowModel(),
|
|
109
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
110
|
+
globalFilterFn,
|
|
111
|
+
...isClientSorting ? {
|
|
112
|
+
getSortedRowModel: getSortedRowModel()
|
|
113
|
+
} : {},
|
|
114
|
+
...isClientPagination ? {
|
|
115
|
+
getPaginationRowModel: getPaginationRowModel()
|
|
116
|
+
} : {},
|
|
117
|
+
...hasExpanding ? {
|
|
118
|
+
getExpandedRowModel: getExpandedRowModel()
|
|
119
|
+
} : {},
|
|
120
|
+
getRowId,
|
|
121
|
+
getSubRows,
|
|
122
|
+
getRowCanExpand
|
|
123
|
+
});
|
|
124
|
+
const { rows } = table.getRowModel();
|
|
125
|
+
const headerGroups = table.getHeaderGroups();
|
|
126
|
+
const allColumns = table.getAllColumns();
|
|
127
|
+
const visibleColumns = table.getVisibleFlatColumns();
|
|
128
|
+
const resolvedRowHeight = rowHeight ?? ROW_HEIGHT_MAP[size];
|
|
129
|
+
const resolvedHeaderHeight = headerHeight ?? HEADER_HEIGHT_MAP[size];
|
|
130
|
+
const hasNoRows = data.length === 0;
|
|
131
|
+
const virtualizer = useVirtualizer({
|
|
132
|
+
count: rows.length,
|
|
133
|
+
getScrollElement: ()=>scrollContainerRef.current,
|
|
134
|
+
estimateSize: ()=>resolvedRowHeight,
|
|
135
|
+
overscan: 10
|
|
136
|
+
});
|
|
137
|
+
const bodyHeight = virtualizer.getTotalSize();
|
|
138
|
+
const bodyStyle = {
|
|
139
|
+
'--data-grid-body-height': `${bodyHeight}px`,
|
|
140
|
+
'--data-grid-body-min-height': `${resolvedRowHeight * 4}px`
|
|
141
|
+
};
|
|
142
|
+
useImperativeHandle(gridRef, ()=>({
|
|
143
|
+
scrollToRow: (index)=>virtualizer.scrollToIndex(index),
|
|
144
|
+
resetSorting: ()=>setResolvedSorting([]),
|
|
145
|
+
resetSelection: ()=>setResolvedRowSelection({}),
|
|
146
|
+
resetSearch: ()=>setResolvedSearchValue('')
|
|
147
|
+
}));
|
|
148
|
+
useEffect(()=>{
|
|
149
|
+
for (const pinnedId of pinnedColumns){
|
|
150
|
+
const pinnedColumn = allColumns.find((column)=>column.id === pinnedId);
|
|
151
|
+
if (pinnedColumn && pinnedColumn.columnDef.size === undefined) {
|
|
152
|
+
console.warn(`[Aura DataGrid] Pinned column "${pinnedId}" has no \`size\` set. ` + 'Pinned columns must declare an explicit `size` to keep the sticky ' + 'offset aligned with the rendered column width.');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}, [
|
|
156
|
+
pinnedColumns,
|
|
157
|
+
allColumns
|
|
158
|
+
]);
|
|
159
|
+
const gridTemplateColumns = useMemo(()=>{
|
|
160
|
+
const hasFlexibleColumn = visibleColumns.some((col)=>col.columnDef.size === undefined && !pinnedColumnIds.has(col.id));
|
|
161
|
+
return visibleColumns.map((col, index)=>{
|
|
162
|
+
const colSize = col.columnDef.size;
|
|
163
|
+
const isLastColumn = index === visibleColumns.length - 1;
|
|
164
|
+
const isPinned = pinnedColumnIds.has(col.id);
|
|
165
|
+
// Pinned columns must render at a fixed pixel width so the cumulative
|
|
166
|
+
// sticky `left` offset agrees with the actually-rendered column width.
|
|
167
|
+
// `minmax(..., 1fr)` would let the column flex and break alignment.
|
|
168
|
+
if (isPinned) {
|
|
169
|
+
return `${colSize ?? DEFAULT_FLEXIBLE_COLUMN_WIDTH}px`;
|
|
170
|
+
}
|
|
171
|
+
if (colSize !== undefined) {
|
|
172
|
+
if (!hasFlexibleColumn && isLastColumn) {
|
|
173
|
+
return `minmax(${colSize}px, 1fr)`;
|
|
174
|
+
}
|
|
175
|
+
return `${colSize}px`;
|
|
176
|
+
}
|
|
177
|
+
return `minmax(${DEFAULT_FLEXIBLE_COLUMN_WIDTH}px, 1fr)`;
|
|
178
|
+
}).join(' ');
|
|
179
|
+
}, [
|
|
180
|
+
visibleColumns,
|
|
181
|
+
pinnedColumnIds
|
|
182
|
+
]);
|
|
183
|
+
const pinnedLeftByColumnId = useMemo(()=>{
|
|
184
|
+
const leftById = new Map();
|
|
185
|
+
let cumulativeLeft = 0;
|
|
186
|
+
for (const pinnedId of pinnedColumns){
|
|
187
|
+
const pinnedColumn = visibleColumns.find((column)=>column.id === pinnedId);
|
|
188
|
+
// Skip pinned columns that are currently hidden — they don't render
|
|
189
|
+
// and shouldn't contribute to the cumulative sticky `left` offset for
|
|
190
|
+
// subsequent visible pinned columns.
|
|
191
|
+
if (!pinnedColumn) continue;
|
|
192
|
+
leftById.set(pinnedId, cumulativeLeft);
|
|
193
|
+
// Read `columnDef.size` (not `getSize()`) so the fallback matches the
|
|
194
|
+
// gridTemplateColumns track size; `getSize()` falls back to TanStack's
|
|
195
|
+
// 150px default which would desync from `DEFAULT_FLEXIBLE_COLUMN_WIDTH`.
|
|
196
|
+
cumulativeLeft += pinnedColumn.columnDef.size ?? DEFAULT_FLEXIBLE_COLUMN_WIDTH;
|
|
197
|
+
}
|
|
198
|
+
return leftById;
|
|
199
|
+
}, [
|
|
200
|
+
visibleColumns,
|
|
201
|
+
pinnedColumns
|
|
202
|
+
]);
|
|
203
|
+
const clientFilteredCount = table.getFilteredRowModel().rows.length;
|
|
204
|
+
const clientTotalCount = table.getCoreRowModel().rows.length;
|
|
205
|
+
const contextValue = useMemo(()=>({
|
|
206
|
+
searchValue: resolvedSearchValue,
|
|
207
|
+
setSearchValue: setResolvedSearchValue,
|
|
208
|
+
filteredCount: queryMode === 'client' ? clientFilteredCount : filteredResultCount,
|
|
209
|
+
totalCount: queryMode === 'client' ? clientTotalCount : totalResultCount
|
|
210
|
+
}), [
|
|
211
|
+
resolvedSearchValue,
|
|
212
|
+
setResolvedSearchValue,
|
|
213
|
+
queryMode,
|
|
214
|
+
clientFilteredCount,
|
|
215
|
+
filteredResultCount,
|
|
216
|
+
clientTotalCount,
|
|
217
|
+
totalResultCount
|
|
218
|
+
]);
|
|
219
|
+
return /*#__PURE__*/ _jsx(DataGridContext.Provider, {
|
|
220
|
+
value: contextValue,
|
|
221
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
222
|
+
"data-slot": "data-grid",
|
|
223
|
+
"data-query-mode": queryMode,
|
|
224
|
+
"data-filtered-result-count": filteredResultCount,
|
|
225
|
+
"data-total-result-count": totalResultCount,
|
|
226
|
+
className: cn('relative flex min-h-0 w-full flex-col overflow-clip rounded-xl text-sm', className),
|
|
227
|
+
children: [
|
|
228
|
+
children,
|
|
229
|
+
/*#__PURE__*/ _jsx("div", {
|
|
230
|
+
ref: scrollContainerRef,
|
|
231
|
+
"data-slot": "data-grid-scroll-container",
|
|
232
|
+
className: "relative order-2 min-h-0 w-full flex-1 overflow-auto",
|
|
233
|
+
role: "table",
|
|
234
|
+
"aria-rowcount": (rowCount ?? rows.length) + headerGroups.length,
|
|
235
|
+
"aria-colcount": visibleColumns.length,
|
|
236
|
+
"aria-label": ariaLabel,
|
|
237
|
+
"aria-labelledby": ariaLabelledBy,
|
|
238
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
239
|
+
className: "min-w-fit w-full",
|
|
240
|
+
children: [
|
|
241
|
+
/*#__PURE__*/ _jsx("div", {
|
|
242
|
+
role: "rowgroup",
|
|
243
|
+
"data-slot": "data-grid-header-group",
|
|
244
|
+
className: "contents",
|
|
245
|
+
children: headerGroups.map((headerGroup, headerRowIndex)=>/*#__PURE__*/ _jsx(DataGridHeaderRow, {
|
|
246
|
+
headerGroup: headerGroup,
|
|
247
|
+
headerRowIndex: headerRowIndex,
|
|
248
|
+
resolvedHeaderHeight: resolvedHeaderHeight,
|
|
249
|
+
gridTemplateColumns: gridTemplateColumns,
|
|
250
|
+
pinnedColumnIds: pinnedColumnIds,
|
|
251
|
+
lastPinnedColumnId: lastPinnedColumnId,
|
|
252
|
+
pinnedLeftByColumnId: pinnedLeftByColumnId
|
|
253
|
+
}, headerGroup.id))
|
|
254
|
+
}),
|
|
255
|
+
/*#__PURE__*/ _jsx("div", {
|
|
256
|
+
role: "rowgroup",
|
|
257
|
+
"data-slot": "data-grid-body",
|
|
258
|
+
className: cn('relative min-h-(--data-grid-body-min-height)', !hasNoRows && 'h-(--data-grid-body-height)'),
|
|
259
|
+
style: bodyStyle,
|
|
260
|
+
children: !hasNoRows && virtualizer.getVirtualItems().map((virtualRow)=>/*#__PURE__*/ _jsx(DataGridRow, {
|
|
261
|
+
row: rows[virtualRow.index],
|
|
262
|
+
virtualRow: virtualRow,
|
|
263
|
+
headerGroupCount: headerGroups.length,
|
|
264
|
+
gridTemplateColumns: gridTemplateColumns,
|
|
265
|
+
pinnedColumnIds: pinnedColumnIds,
|
|
266
|
+
lastPinnedColumnId: lastPinnedColumnId,
|
|
267
|
+
pinnedLeftByColumnId: pinnedLeftByColumnId,
|
|
268
|
+
customCellColumnIds: customCellColumnIds,
|
|
269
|
+
maxDepth: maxDepth,
|
|
270
|
+
hasExpanding: hasExpanding,
|
|
271
|
+
onRowClick: onRowClick
|
|
272
|
+
}, rows[virtualRow.index].id))
|
|
273
|
+
})
|
|
274
|
+
]
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
]
|
|
278
|
+
})
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
function DataGridCheckbox({ checked, onCheckedChange, disabled, 'aria-label': checkboxAriaLabel }) {
|
|
282
|
+
const isIndeterminate = checked === 'indeterminate';
|
|
283
|
+
const isChecked = checked === true;
|
|
284
|
+
return /*#__PURE__*/ _jsx(CheckboxPrimitive.Root, {
|
|
285
|
+
"data-slot": "checkbox",
|
|
286
|
+
checked: isIndeterminate ? false : isChecked,
|
|
287
|
+
indeterminate: isIndeterminate,
|
|
288
|
+
disabled: disabled,
|
|
289
|
+
onCheckedChange: (next)=>onCheckedChange(next),
|
|
290
|
+
"aria-label": checkboxAriaLabel,
|
|
291
|
+
className: cn('peer relative size-4 shrink-0 rounded-sm border-[1.5px] border-muted-foreground bg-transparent text-foreground-on-primary outline-none transition-colors', '[&:is([data-checked],[data-indeterminate]):not([data-disabled])]:border-transparent [&:is([data-checked],[data-indeterminate]):not([data-disabled])]:bg-primary-background', 'hover:data-unchecked:not-data-disabled:border-muted-foreground-hover', 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:border-transparent data-disabled:bg-disabled-background data-disabled:text-disabled-foreground data-disabled:data-unchecked:border-border', '[&[data-checked]_[data-slot=checkbox-check]]:block [&[data-indeterminate]_[data-slot=checkbox-dash]]:block', focusState),
|
|
292
|
+
children: /*#__PURE__*/ _jsxs(CheckboxPrimitive.Indicator, {
|
|
293
|
+
className: "grid size-full place-content-center text-current transition-none",
|
|
294
|
+
children: [
|
|
295
|
+
/*#__PURE__*/ _jsx(IconCheck, {
|
|
296
|
+
"aria-hidden": "true",
|
|
297
|
+
"data-slot": "checkbox-check",
|
|
298
|
+
className: "hidden size-3",
|
|
299
|
+
stroke: 3
|
|
300
|
+
}),
|
|
301
|
+
/*#__PURE__*/ _jsx(IconMinus, {
|
|
302
|
+
"aria-hidden": "true",
|
|
303
|
+
"data-slot": "checkbox-dash",
|
|
304
|
+
className: "hidden size-3",
|
|
305
|
+
stroke: 3.5
|
|
306
|
+
})
|
|
307
|
+
]
|
|
308
|
+
})
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
function DataGridCheckboxHeader({ table }) {
|
|
312
|
+
const allSelected = table.getIsAllPageRowsSelected();
|
|
313
|
+
const someSelected = table.getIsSomePageRowsSelected();
|
|
314
|
+
const checked = allSelected ? true : someSelected ? 'indeterminate' : false;
|
|
315
|
+
return /*#__PURE__*/ _jsx(DataGridCheckbox, {
|
|
316
|
+
checked: checked,
|
|
317
|
+
onCheckedChange: ()=>table.toggleAllPageRowsSelected(!allSelected),
|
|
318
|
+
"aria-label": "Select all rows"
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
function DataGridCheckboxCell({ row }) {
|
|
322
|
+
return /*#__PURE__*/ _jsx(DataGridCheckbox, {
|
|
323
|
+
checked: row.getIsSelected(),
|
|
324
|
+
disabled: !row.getCanSelect(),
|
|
325
|
+
onCheckedChange: (next)=>{
|
|
326
|
+
row.toggleSelected(next === true);
|
|
327
|
+
},
|
|
328
|
+
"aria-label": "Select row"
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
const DataGridSearch = /*#__PURE__*/ forwardRef(function DataGridSearch({ className, placeholder = 'Search', ...props }, ref) {
|
|
332
|
+
const { searchValue, setSearchValue } = useDataGridContext();
|
|
333
|
+
return /*#__PURE__*/ _jsx(Search, {
|
|
334
|
+
ref: ref,
|
|
335
|
+
value: searchValue,
|
|
336
|
+
onChange: (event)=>setSearchValue(event.target.value),
|
|
337
|
+
onClear: ()=>setSearchValue(''),
|
|
338
|
+
placeholder: placeholder,
|
|
339
|
+
className: cn('py-4', className),
|
|
340
|
+
...props
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
DataGridSearch.displayName = 'DataGridSearch';
|
|
344
|
+
const DataGridResultCountBadge = /*#__PURE__*/ forwardRef(function DataGridResultCountBadge({ label, className, ...props }, ref) {
|
|
345
|
+
const { filteredCount, totalCount } = useDataGridContext();
|
|
346
|
+
const content = label ?? (filteredCount === undefined ? null : totalCount !== undefined ? `${filteredCount} of ${totalCount} results` : `${filteredCount} results`);
|
|
347
|
+
if (content == null) return null;
|
|
348
|
+
return /*#__PURE__*/ _jsx("span", {
|
|
349
|
+
ref: ref,
|
|
350
|
+
"data-slot": "data-grid-result-count-badge",
|
|
351
|
+
className: cn('inline-flex h-5 shrink-0 items-center rounded-sm border border-border bg-muted-background px-1.5 text-xs font-medium text-muted-foreground', className),
|
|
352
|
+
...props,
|
|
353
|
+
children: content
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
DataGridResultCountBadge.displayName = 'DataGridResultCountBadge';
|
|
357
|
+
function useSearchPaginationReset(searchValue, hasPagination, setPagination) {
|
|
358
|
+
const previousSearchValueRef = useRef(searchValue);
|
|
359
|
+
useEffect(()=>{
|
|
360
|
+
if (previousSearchValueRef.current === searchValue) return;
|
|
361
|
+
previousSearchValueRef.current = searchValue;
|
|
362
|
+
if (!hasPagination) return;
|
|
363
|
+
setPagination((current)=>current.pageIndex === 0 ? current : {
|
|
364
|
+
...current,
|
|
365
|
+
pageIndex: 0
|
|
366
|
+
});
|
|
367
|
+
}, [
|
|
368
|
+
searchValue,
|
|
369
|
+
hasPagination,
|
|
370
|
+
setPagination
|
|
371
|
+
]);
|
|
372
|
+
}
|
|
373
|
+
const DataGridFilterTrigger = /*#__PURE__*/ forwardRef(function DataGridFilterTrigger({ activeCount = 0, label = 'Filters', activeLabel, placement = 'toolbar', className, children, ...props }, ref) {
|
|
374
|
+
const hasActiveFilters = activeCount > 0;
|
|
375
|
+
return /*#__PURE__*/ _jsx(Button, {
|
|
376
|
+
ref: ref,
|
|
377
|
+
"data-slot": "data-grid-filter-trigger",
|
|
378
|
+
"data-placement": placement,
|
|
379
|
+
"data-active-count": activeCount,
|
|
380
|
+
size: placement === 'column-header' ? 'icon-sm' : 'icon',
|
|
381
|
+
variant: hasActiveFilters ? 'secondary' : 'ghost',
|
|
382
|
+
className: cn('min-w-0', className),
|
|
383
|
+
"aria-label": hasActiveFilters ? activeLabel?.(activeCount) ?? `${label}, ${activeCount} active` : label,
|
|
384
|
+
...props,
|
|
385
|
+
children: children ?? /*#__PURE__*/ _jsx(IconFilter, {
|
|
386
|
+
className: "size-4 shrink-0",
|
|
387
|
+
"aria-hidden": "true"
|
|
388
|
+
})
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
DataGridFilterTrigger.displayName = 'DataGridFilterTrigger';
|
|
392
|
+
function useDataGridContext() {
|
|
393
|
+
const context = useContext(DataGridContext);
|
|
394
|
+
if (!context) {
|
|
395
|
+
throw new Error('useDataGridContext must be used within a DataGrid');
|
|
396
|
+
}
|
|
397
|
+
return context;
|
|
398
|
+
}
|
|
399
|
+
export { DataGrid, DataGridCheckboxCell, DataGridCheckboxHeader, DataGridResultCountBadge, DataGridFilterTrigger, DataGridSearch, useDataGridContext };
|
|
400
|
+
export { DataGridFilterPanel } from "./data-grid-filter-panel.js";
|
|
401
|
+
export { DataGridFooter, DataGridFooterEnd, DataGridFooterStart } from "./data-grid-footer.js";
|
|
402
|
+
export { DataGridHeader, DataGridHeaderActions, DataGridHeaderEnd, DataGridHeaderStart, DataGridSubtitle, DataGridTitle } from "./data-grid-header.js";
|
|
403
|
+
|
|
404
|
+
//# sourceMappingURL=data-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ui/core/data-grid/data-grid.tsx"],"sourcesContent":["import {\n type ComponentProps,\n type ComponentRef,\n type CSSProperties,\n type ForwardRefExoticComponent,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n type RefObject,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { IconCheck, IconFilter, IconMinus } from '@tabler/icons-react';\nimport {\n type ColumnDef,\n type ColumnPinningState,\n type ExpandedState,\n type FilterFnOption,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type Table,\n type SortingState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nimport { useControllableState } from '../../../../lib/use-controllable-state';\nimport { cn, focusState } from '../../../../lib/utils';\nimport { Button } from '../button/button';\nimport { Search } from '../search/search';\n\nimport { DataGridHeaderRow } from './data-grid-header-row';\nimport { DataGridRow } from './data-grid-row';\nimport { collectCustomCellColumnIds } from './data-grid.utils';\n\nconst EMPTY_PINNED_COLUMNS: string[] = [];\nconst DEFAULT_FLEXIBLE_COLUMN_WIDTH = 120;\n\ntype DataGridContextValue = {\n searchValue: string;\n setSearchValue: (value: string) => void;\n filteredCount?: number;\n totalCount?: number;\n};\n\nconst DataGridContext = createContext<DataGridContextValue | undefined>(\n undefined\n);\n\ntype DataGridSize = 'default' | 'compact';\ntype DataGridQueryMode = 'client' | 'server';\n\nconst ROW_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\nconst HEADER_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\ntype DataGridHandle = {\n scrollToRow: (index: number) => void;\n resetSorting: () => void;\n resetSelection: () => void;\n resetSearch: () => void;\n};\n\ntype DataGridBaseProps<TData> = {\n data: TData[];\n columns: ColumnDef<TData>[];\n getRowId?: (originalRow: TData, index: number) => string;\n rowCount?: number;\n globalFilterFn?: FilterFnOption<TData>;\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean);\n enableSorting?: boolean;\n manualPagination?: boolean;\n manualSorting?: boolean;\n rowSelection?: RowSelectionState;\n defaultRowSelection?: RowSelectionState;\n onRowSelectionChange?: (value: RowSelectionState) => void;\n sorting?: SortingState;\n defaultSorting?: SortingState;\n onSortingChange?: (value: SortingState) => void;\n pagination?: PaginationState;\n defaultPagination?: PaginationState;\n onPaginationChange?: (value: PaginationState) => void;\n getSubRows?: (row: TData, index: number) => TData[] | undefined;\n expanded?: ExpandedState;\n defaultExpanded?: ExpandedState;\n onExpandedChange?: (value: ExpandedState) => void;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n maxDepth?: number;\n pinnedColumns?: string[];\n // forwardRef cannot preserve the `TData` generic, so the imperative handle\n // is exposed via a ref-object prop instead of `forwardRef` + `useImperativeHandle`.\n // See https://github.com/facebook/react/issues/22018.\n gridRef?: RefObject<DataGridHandle | null>;\n size?: DataGridSize;\n children?: ReactNode;\n className?: string;\n onRowClick?: (row: Row<TData>) => void;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n queryMode?: DataGridQueryMode;\n filteredResultCount?: number;\n totalResultCount?: number;\n onClearSearch?: () => void;\n onClearFilters?: () => void;\n rowHeight?: number;\n headerHeight?: number;\n};\n\n// The grid renders with `role=\"table\"`, which requires an accessible name for\n// screen readers. It is bad practice to omit one, so the type requires at least\n// one of `aria-label` / `aria-labelledby` rather than leaving both optional.\ntype DataGridAccessibleNameProps =\n | { 'aria-label': string; 'aria-labelledby'?: string }\n | { 'aria-labelledby': string; 'aria-label'?: string };\n\ntype DataGridProps<TData> = DataGridBaseProps<TData> &\n DataGridAccessibleNameProps;\n\nfunction DataGrid<TData>({\n data,\n columns,\n getRowId,\n rowCount,\n globalFilterFn = 'auto',\n enableRowSelection = false,\n enableSorting = false,\n manualPagination = false,\n manualSorting = false,\n rowSelection,\n defaultRowSelection,\n onRowSelectionChange,\n sorting,\n defaultSorting,\n onSortingChange,\n pagination,\n defaultPagination,\n onPaginationChange,\n getSubRows,\n expanded,\n defaultExpanded,\n onExpandedChange,\n getRowCanExpand,\n maxDepth = 5,\n pinnedColumns = EMPTY_PINNED_COLUMNS,\n gridRef,\n size = 'default',\n children,\n className,\n onRowClick,\n searchValue,\n defaultSearchValue,\n onSearchValueChange,\n queryMode = 'client',\n filteredResultCount,\n totalResultCount,\n rowHeight,\n headerHeight,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}: DataGridProps<TData>): ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const [resolvedSearchValue, setResolvedSearchValue] = useControllableState({\n prop: searchValue,\n defaultProp: defaultSearchValue ?? '',\n onChange: onSearchValueChange,\n });\n\n const [resolvedSorting, setResolvedSorting] =\n useControllableState<SortingState>({\n prop: sorting,\n defaultProp: defaultSorting ?? [],\n onChange: onSortingChange,\n });\n\n const [resolvedRowSelection, setResolvedRowSelection] =\n useControllableState<RowSelectionState>({\n prop: rowSelection,\n defaultProp: defaultRowSelection ?? {},\n onChange: onRowSelectionChange,\n });\n\n const hasPagination =\n pagination !== undefined || defaultPagination !== undefined;\n\n const [resolvedPagination, setResolvedPagination] =\n useControllableState<PaginationState>({\n prop: pagination,\n defaultProp: defaultPagination ?? { pageIndex: 0, pageSize: 10 },\n onChange: onPaginationChange,\n });\n\n const hasExpanding = getSubRows !== undefined;\n\n const [resolvedExpanded, setResolvedExpanded] =\n useControllableState<ExpandedState>({\n prop: expanded,\n defaultProp: defaultExpanded ?? {},\n onChange: onExpandedChange,\n });\n\n const isClientSorting = enableSorting && !manualSorting;\n const isClientPagination = hasPagination && !manualPagination;\n\n useSearchPaginationReset(\n resolvedSearchValue,\n hasPagination,\n setResolvedPagination\n );\n\n const columnPinning: ColumnPinningState = useMemo(\n () => ({ left: pinnedColumns, right: [] }),\n [pinnedColumns]\n );\n\n const pinnedColumnIds = useMemo(\n () => new Set(pinnedColumns),\n [pinnedColumns]\n );\n const lastPinnedColumnId = pinnedColumns[pinnedColumns.length - 1];\n const customCellColumnIds = useMemo(\n () => collectCustomCellColumnIds(columns),\n [columns]\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- useReactTable in the DataGrid component is intentional and stable.\n const table = useReactTable({\n data,\n columns,\n state: {\n columnPinning,\n globalFilter: resolvedSearchValue,\n sorting: resolvedSorting,\n rowSelection: resolvedRowSelection,\n ...(hasPagination ? { pagination: resolvedPagination } : {}),\n ...(hasExpanding ? { expanded: resolvedExpanded } : {}),\n },\n onSortingChange: setResolvedSorting,\n onRowSelectionChange: setResolvedRowSelection,\n ...(hasPagination ? { onPaginationChange: setResolvedPagination } : {}),\n ...(hasExpanding ? { onExpandedChange: setResolvedExpanded } : {}),\n // Preserve expanded rows across `data` changes (e.g. refetches) so the user\n // doesn't lose their place. Consumers fetching server-paged data should\n // ensure stable `getRowId` values; otherwise expanded keys can stick to\n // rows that no longer logically exist.\n autoResetPageIndex: false,\n autoResetExpanded: false,\n enableRowSelection,\n enableSubRowSelection: false,\n enableSorting,\n manualPagination,\n manualSorting,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n globalFilterFn,\n ...(isClientSorting ? { getSortedRowModel: getSortedRowModel() } : {}),\n ...(isClientPagination\n ? { getPaginationRowModel: getPaginationRowModel() }\n : {}),\n ...(hasExpanding ? { getExpandedRowModel: getExpandedRowModel() } : {}),\n getRowId,\n getSubRows,\n getRowCanExpand,\n });\n\n const { rows } = table.getRowModel();\n const headerGroups = table.getHeaderGroups();\n const allColumns = table.getAllColumns();\n const visibleColumns = table.getVisibleFlatColumns();\n\n const resolvedRowHeight = rowHeight ?? ROW_HEIGHT_MAP[size];\n const resolvedHeaderHeight = headerHeight ?? HEADER_HEIGHT_MAP[size];\n const hasNoRows = data.length === 0;\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => resolvedRowHeight,\n overscan: 10,\n });\n const bodyHeight = virtualizer.getTotalSize();\n const bodyStyle: CSSProperties & {\n '--data-grid-body-height': string;\n '--data-grid-body-min-height': string;\n } = {\n '--data-grid-body-height': `${bodyHeight}px`,\n '--data-grid-body-min-height': `${resolvedRowHeight * 4}px`,\n };\n\n useImperativeHandle(gridRef, () => ({\n scrollToRow: (index: number) => virtualizer.scrollToIndex(index),\n resetSorting: () => setResolvedSorting([]),\n resetSelection: () => setResolvedRowSelection({}),\n resetSearch: () => setResolvedSearchValue(''),\n }));\n\n useEffect(() => {\n for (const pinnedId of pinnedColumns) {\n const pinnedColumn = allColumns.find((column) => column.id === pinnedId);\n if (pinnedColumn && pinnedColumn.columnDef.size === undefined) {\n console.warn(\n `[Aura DataGrid] Pinned column \"${pinnedId}\" has no \\`size\\` set. ` +\n 'Pinned columns must declare an explicit `size` to keep the sticky ' +\n 'offset aligned with the rendered column width.'\n );\n }\n }\n }, [pinnedColumns, allColumns]);\n\n const gridTemplateColumns = useMemo(() => {\n const hasFlexibleColumn = visibleColumns.some(\n (col) => col.columnDef.size === undefined && !pinnedColumnIds.has(col.id)\n );\n\n return visibleColumns\n .map((col, index) => {\n const colSize = col.columnDef.size;\n const isLastColumn = index === visibleColumns.length - 1;\n const isPinned = pinnedColumnIds.has(col.id);\n\n // Pinned columns must render at a fixed pixel width so the cumulative\n // sticky `left` offset agrees with the actually-rendered column width.\n // `minmax(..., 1fr)` would let the column flex and break alignment.\n if (isPinned) {\n return `${colSize ?? DEFAULT_FLEXIBLE_COLUMN_WIDTH}px`;\n }\n\n if (colSize !== undefined) {\n if (!hasFlexibleColumn && isLastColumn) {\n return `minmax(${colSize}px, 1fr)`;\n }\n return `${colSize}px`;\n }\n\n return `minmax(${DEFAULT_FLEXIBLE_COLUMN_WIDTH}px, 1fr)`;\n })\n .join(' ');\n }, [visibleColumns, pinnedColumnIds]);\n\n const pinnedLeftByColumnId = useMemo(() => {\n const leftById = new Map<string, number>();\n let cumulativeLeft = 0;\n\n for (const pinnedId of pinnedColumns) {\n const pinnedColumn = visibleColumns.find(\n (column) => column.id === pinnedId\n );\n // Skip pinned columns that are currently hidden — they don't render\n // and shouldn't contribute to the cumulative sticky `left` offset for\n // subsequent visible pinned columns.\n if (!pinnedColumn) continue;\n\n leftById.set(pinnedId, cumulativeLeft);\n // Read `columnDef.size` (not `getSize()`) so the fallback matches the\n // gridTemplateColumns track size; `getSize()` falls back to TanStack's\n // 150px default which would desync from `DEFAULT_FLEXIBLE_COLUMN_WIDTH`.\n cumulativeLeft +=\n pinnedColumn.columnDef.size ?? DEFAULT_FLEXIBLE_COLUMN_WIDTH;\n }\n\n return leftById;\n }, [visibleColumns, pinnedColumns]);\n\n const clientFilteredCount = table.getFilteredRowModel().rows.length;\n const clientTotalCount = table.getCoreRowModel().rows.length;\n\n const contextValue = useMemo<DataGridContextValue>(\n () => ({\n searchValue: resolvedSearchValue,\n setSearchValue: setResolvedSearchValue,\n filteredCount:\n queryMode === 'client' ? clientFilteredCount : filteredResultCount,\n totalCount: queryMode === 'client' ? clientTotalCount : totalResultCount,\n }),\n [\n resolvedSearchValue,\n setResolvedSearchValue,\n queryMode,\n clientFilteredCount,\n filteredResultCount,\n clientTotalCount,\n totalResultCount,\n ]\n );\n\n return (\n <DataGridContext.Provider value={contextValue}>\n <div\n data-slot=\"data-grid\"\n data-query-mode={queryMode}\n data-filtered-result-count={filteredResultCount}\n data-total-result-count={totalResultCount}\n className={cn(\n 'relative flex min-h-0 w-full flex-col overflow-clip rounded-xl text-sm',\n className\n )}\n >\n {children}\n <div\n ref={scrollContainerRef}\n data-slot=\"data-grid-scroll-container\"\n className=\"relative order-2 min-h-0 w-full flex-1 overflow-auto\"\n role=\"table\"\n aria-rowcount={(rowCount ?? rows.length) + headerGroups.length}\n aria-colcount={visibleColumns.length}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className=\"min-w-fit w-full\">\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-header-group\"\n className=\"contents\"\n >\n {headerGroups.map((headerGroup, headerRowIndex) => (\n <DataGridHeaderRow\n key={headerGroup.id}\n headerGroup={headerGroup}\n headerRowIndex={headerRowIndex}\n resolvedHeaderHeight={resolvedHeaderHeight}\n gridTemplateColumns={gridTemplateColumns}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n pinnedLeftByColumnId={pinnedLeftByColumnId}\n />\n ))}\n </div>\n\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-body\"\n className={cn(\n 'relative min-h-(--data-grid-body-min-height)',\n !hasNoRows && 'h-(--data-grid-body-height)'\n )}\n style={bodyStyle}\n >\n {!hasNoRows &&\n virtualizer\n .getVirtualItems()\n .map((virtualRow) => (\n <DataGridRow\n key={rows[virtualRow.index].id}\n row={rows[virtualRow.index]}\n virtualRow={virtualRow}\n headerGroupCount={headerGroups.length}\n gridTemplateColumns={gridTemplateColumns}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n pinnedLeftByColumnId={pinnedLeftByColumnId}\n customCellColumnIds={customCellColumnIds}\n maxDepth={maxDepth}\n hasExpanding={hasExpanding}\n onRowClick={onRowClick}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n </DataGridContext.Provider>\n );\n}\n\ntype DataGridCheckboxProps = {\n checked: boolean | 'indeterminate';\n onCheckedChange: (checked: boolean | 'indeterminate') => void;\n disabled?: boolean;\n 'aria-label'?: string;\n};\n\nfunction DataGridCheckbox({\n checked,\n onCheckedChange,\n disabled,\n 'aria-label': checkboxAriaLabel,\n}: DataGridCheckboxProps): ReactElement {\n const isIndeterminate = checked === 'indeterminate';\n const isChecked = checked === true;\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n checked={isIndeterminate ? false : isChecked}\n indeterminate={isIndeterminate}\n disabled={disabled}\n onCheckedChange={(next) => onCheckedChange(next)}\n aria-label={checkboxAriaLabel}\n className={cn(\n 'peer relative size-4 shrink-0 rounded-sm border-[1.5px] border-muted-foreground bg-transparent text-foreground-on-primary outline-none transition-colors',\n '[&:is([data-checked],[data-indeterminate]):not([data-disabled])]:border-transparent [&:is([data-checked],[data-indeterminate]):not([data-disabled])]:bg-primary-background',\n 'hover:data-unchecked:not-data-disabled:border-muted-foreground-hover',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:border-transparent data-disabled:bg-disabled-background data-disabled:text-disabled-foreground data-disabled:data-unchecked:border-border',\n '[&[data-checked]_[data-slot=checkbox-check]]:block [&[data-indeterminate]_[data-slot=checkbox-dash]]:block',\n focusState\n )}\n >\n <CheckboxPrimitive.Indicator className=\"grid size-full place-content-center text-current transition-none\">\n <IconCheck\n aria-hidden=\"true\"\n data-slot=\"checkbox-check\"\n className=\"hidden size-3\"\n stroke={3}\n />\n <IconMinus\n aria-hidden=\"true\"\n data-slot=\"checkbox-dash\"\n className=\"hidden size-3\"\n stroke={3.5}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nfunction DataGridCheckboxHeader<TData>({\n table,\n}: {\n table: Table<TData>;\n}): ReactElement {\n const allSelected = table.getIsAllPageRowsSelected();\n const someSelected = table.getIsSomePageRowsSelected();\n const checked = allSelected ? true : someSelected ? 'indeterminate' : false;\n\n return (\n <DataGridCheckbox\n checked={checked}\n onCheckedChange={() => table.toggleAllPageRowsSelected(!allSelected)}\n aria-label=\"Select all rows\"\n />\n );\n}\n\nfunction DataGridCheckboxCell<TData>({\n row,\n}: {\n row: Row<TData>;\n}): ReactElement {\n return (\n <DataGridCheckbox\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onCheckedChange={(next) => {\n row.toggleSelected(next === true);\n }}\n aria-label=\"Select row\"\n />\n );\n}\n\ntype DataGridSearchProps = Omit<\n ComponentProps<typeof Search>,\n 'value' | 'onChange' | 'onClear'\n>;\n\nconst DataGridSearch: ForwardRefExoticComponent<\n DataGridSearchProps & RefAttributes<ComponentRef<typeof Search>>\n> = forwardRef<ComponentRef<typeof Search>, DataGridSearchProps>(\n function DataGridSearch(\n { className, placeholder = 'Search', ...props },\n ref\n ) {\n const { searchValue, setSearchValue } = useDataGridContext();\n\n return (\n <Search\n ref={ref}\n value={searchValue}\n onChange={(event) => setSearchValue(event.target.value)}\n onClear={() => setSearchValue('')}\n placeholder={placeholder}\n className={cn('py-4', className)}\n {...props}\n />\n );\n }\n);\nDataGridSearch.displayName = 'DataGridSearch';\n\ntype DataGridResultCountBadgeProps = ComponentProps<'span'> & {\n label?: ReactNode;\n};\n\nconst DataGridResultCountBadge: ForwardRefExoticComponent<\n DataGridResultCountBadgeProps & RefAttributes<HTMLSpanElement>\n> = forwardRef<ComponentRef<'span'>, DataGridResultCountBadgeProps>(\n function DataGridResultCountBadge({ label, className, ...props }, ref) {\n const { filteredCount, totalCount } = useDataGridContext();\n\n const content =\n label ??\n (filteredCount === undefined\n ? null\n : totalCount !== undefined\n ? `${filteredCount} of ${totalCount} results`\n : `${filteredCount} results`);\n\n if (content == null) return null;\n\n return (\n <span\n ref={ref}\n data-slot=\"data-grid-result-count-badge\"\n className={cn(\n 'inline-flex h-5 shrink-0 items-center rounded-sm border border-border bg-muted-background px-1.5 text-xs font-medium text-muted-foreground',\n className\n )}\n {...props}\n >\n {content}\n </span>\n );\n }\n);\nDataGridResultCountBadge.displayName = 'DataGridResultCountBadge';\n\nfunction useSearchPaginationReset(\n searchValue: string,\n hasPagination: boolean,\n setPagination: (\n next: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => void\n): void {\n const previousSearchValueRef = useRef(searchValue);\n\n useEffect(() => {\n if (previousSearchValueRef.current === searchValue) return;\n previousSearchValueRef.current = searchValue;\n if (!hasPagination) return;\n setPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 }\n );\n }, [searchValue, hasPagination, setPagination]);\n}\n\ntype DataGridFilterTriggerProps = ComponentProps<typeof Button> & {\n activeCount?: number;\n label?: string;\n activeLabel?: (activeCount: number) => string;\n placement?: 'toolbar' | 'column-header';\n};\n\nconst DataGridFilterTrigger: ForwardRefExoticComponent<\n DataGridFilterTriggerProps & RefAttributes<ComponentRef<typeof Button>>\n> = forwardRef<ComponentRef<typeof Button>, DataGridFilterTriggerProps>(\n function DataGridFilterTrigger(\n {\n activeCount = 0,\n label = 'Filters',\n activeLabel,\n placement = 'toolbar',\n className,\n children,\n ...props\n }: DataGridFilterTriggerProps,\n ref: Ref<ComponentRef<typeof Button>>\n ) {\n const hasActiveFilters = activeCount > 0;\n\n return (\n <Button\n ref={ref}\n data-slot=\"data-grid-filter-trigger\"\n data-placement={placement}\n data-active-count={activeCount}\n size={placement === 'column-header' ? 'icon-sm' : 'icon'}\n variant={hasActiveFilters ? 'secondary' : 'ghost'}\n className={cn('min-w-0', className)}\n aria-label={\n hasActiveFilters\n ? (activeLabel?.(activeCount) ?? `${label}, ${activeCount} active`)\n : label\n }\n {...props}\n >\n {children ?? (\n <IconFilter className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n )}\n </Button>\n );\n }\n);\nDataGridFilterTrigger.displayName = 'DataGridFilterTrigger';\n\nfunction useDataGridContext(): DataGridContextValue {\n const context = useContext(DataGridContext);\n if (!context) {\n throw new Error('useDataGridContext must be used within a DataGrid');\n }\n return context;\n}\nexport {\n DataGrid,\n DataGridCheckboxCell,\n DataGridCheckboxHeader,\n DataGridResultCountBadge,\n DataGridFilterTrigger,\n DataGridSearch,\n useDataGridContext,\n type DataGridContextValue,\n type DataGridHandle,\n};\nexport {\n DataGridFilterPanel,\n type DataGridFilterColumn,\n type DataGridFilterPanelLabels,\n} from './data-grid-filter-panel';\nexport {\n DataGridFooter,\n DataGridFooterEnd,\n DataGridFooterStart,\n} from './data-grid-footer';\nexport {\n DataGridHeader,\n DataGridHeaderActions,\n DataGridHeaderEnd,\n DataGridHeaderStart,\n DataGridSubtitle,\n DataGridTitle,\n} from './data-grid-header';\n"],"names":["createContext","forwardRef","useContext","useEffect","useImperativeHandle","useMemo","useRef","Checkbox","CheckboxPrimitive","IconCheck","IconFilter","IconMinus","getCoreRowModel","getExpandedRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","useReactTable","useVirtualizer","useControllableState","cn","focusState","Button","Search","DataGridHeaderRow","DataGridRow","collectCustomCellColumnIds","EMPTY_PINNED_COLUMNS","DEFAULT_FLEXIBLE_COLUMN_WIDTH","DataGridContext","undefined","ROW_HEIGHT_MAP","default","compact","HEADER_HEIGHT_MAP","DataGrid","data","columns","getRowId","rowCount","globalFilterFn","enableRowSelection","enableSorting","manualPagination","manualSorting","rowSelection","defaultRowSelection","onRowSelectionChange","sorting","defaultSorting","onSortingChange","pagination","defaultPagination","onPaginationChange","getSubRows","expanded","defaultExpanded","onExpandedChange","getRowCanExpand","maxDepth","pinnedColumns","gridRef","size","children","className","onRowClick","searchValue","defaultSearchValue","onSearchValueChange","queryMode","filteredResultCount","totalResultCount","rowHeight","headerHeight","ariaLabel","ariaLabelledBy","scrollContainerRef","resolvedSearchValue","setResolvedSearchValue","prop","defaultProp","onChange","resolvedSorting","setResolvedSorting","resolvedRowSelection","setResolvedRowSelection","hasPagination","resolvedPagination","setResolvedPagination","pageIndex","pageSize","hasExpanding","resolvedExpanded","setResolvedExpanded","isClientSorting","isClientPagination","useSearchPaginationReset","columnPinning","left","right","pinnedColumnIds","Set","lastPinnedColumnId","length","customCellColumnIds","table","state","globalFilter","autoResetPageIndex","autoResetExpanded","enableSubRowSelection","rows","getRowModel","headerGroups","getHeaderGroups","allColumns","getAllColumns","visibleColumns","getVisibleFlatColumns","resolvedRowHeight","resolvedHeaderHeight","hasNoRows","virtualizer","count","getScrollElement","current","estimateSize","overscan","bodyHeight","getTotalSize","bodyStyle","scrollToRow","index","scrollToIndex","resetSorting","resetSelection","resetSearch","pinnedId","pinnedColumn","find","column","id","columnDef","console","warn","gridTemplateColumns","hasFlexibleColumn","some","col","has","map","colSize","isLastColumn","isPinned","join","pinnedLeftByColumnId","leftById","Map","cumulativeLeft","set","clientFilteredCount","clientTotalCount","contextValue","setSearchValue","filteredCount","totalCount","Provider","value","div","data-slot","data-query-mode","data-filtered-result-count","data-total-result-count","ref","role","aria-rowcount","aria-colcount","aria-label","aria-labelledby","headerGroup","headerRowIndex","style","getVirtualItems","virtualRow","row","headerGroupCount","DataGridCheckbox","checked","onCheckedChange","disabled","checkboxAriaLabel","isIndeterminate","isChecked","Root","indeterminate","next","Indicator","aria-hidden","stroke","DataGridCheckboxHeader","allSelected","getIsAllPageRowsSelected","someSelected","getIsSomePageRowsSelected","toggleAllPageRowsSelected","DataGridCheckboxCell","getIsSelected","getCanSelect","toggleSelected","DataGridSearch","placeholder","props","useDataGridContext","event","target","onClear","displayName","DataGridResultCountBadge","label","content","span","setPagination","previousSearchValueRef","DataGridFilterTrigger","activeCount","activeLabel","placement","hasActiveFilters","data-placement","data-active-count","variant","context","Error","DataGridFilterPanel","DataGridFooter","DataGridFooterEnd","DataGridFooterStart","DataGridHeader","DataGridHeaderActions","DataGridHeaderEnd","DataGridHeaderStart","DataGridSubtitle","DataGridTitle"],"mappings":"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"}
|