@tetrascience-npm/tetrascience-react-ui 0.7.0-beta.108.1 → 0.7.0-beta.128.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/components/ai/chain-of-thought.cjs +1 -1
- package/dist/components/ai/chain-of-thought.cjs.map +1 -1
- package/dist/components/ai/chain-of-thought.js +1 -1
- package/dist/components/ai/chain-of-thought.js.map +1 -1
- package/dist/components/ai/confirmation.cjs +1 -1
- package/dist/components/ai/confirmation.cjs.map +1 -1
- package/dist/components/ai/confirmation.js +1 -1
- package/dist/components/ai/confirmation.js.map +1 -1
- package/dist/components/ai/context.cjs +1 -1
- package/dist/components/ai/context.cjs.map +1 -1
- package/dist/components/ai/context.js +36 -35
- package/dist/components/ai/context.js.map +1 -1
- package/dist/components/ai/message.cjs +1 -1
- package/dist/components/ai/message.cjs.map +1 -1
- package/dist/components/ai/message.js +68 -68
- package/dist/components/ai/message.js.map +1 -1
- package/dist/components/ai/prompt-input.cjs +1 -1
- package/dist/components/ai/prompt-input.cjs.map +1 -1
- package/dist/components/ai/prompt-input.js +4 -2
- package/dist/components/ai/prompt-input.js.map +1 -1
- package/dist/components/ai/queue.cjs +1 -1
- package/dist/components/ai/queue.cjs.map +1 -1
- package/dist/components/ai/queue.js +9 -9
- package/dist/components/ai/queue.js.map +1 -1
- package/dist/components/ai/reasoning.cjs +1 -1
- package/dist/components/ai/reasoning.cjs.map +1 -1
- package/dist/components/ai/reasoning.js +67 -67
- package/dist/components/ai/reasoning.js.map +1 -1
- package/dist/components/ai/stream-status.cjs +1 -1
- package/dist/components/ai/stream-status.cjs.map +1 -1
- package/dist/components/ai/stream-status.js +41 -39
- package/dist/components/ai/stream-status.js.map +1 -1
- package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
- package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
- package/dist/components/ai/streamdown-code-plugin.js +42 -0
- package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
- package/dist/components/ai/streamdown-plugins.cjs +2 -0
- package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/streamdown-plugins.js +14 -0
- package/dist/components/ai/streamdown-plugins.js.map +1 -0
- package/dist/components/ai/task.cjs +1 -1
- package/dist/components/ai/task.cjs.map +1 -1
- package/dist/components/ai/task.js +18 -11
- package/dist/components/ai/task.js.map +1 -1
- package/dist/components/ai/tool.cjs +1 -1
- package/dist/components/ai/tool.cjs.map +1 -1
- package/dist/components/ai/tool.js +51 -55
- package/dist/components/ai/tool.js.map +1 -1
- package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
- package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/use-streamdown-plugins.js +25 -0
- package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
- package/dist/components/charts/BarChart/BarChart.cjs +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
- package/dist/components/charts/BarChart/BarChart.js +219 -0
- package/dist/components/charts/BarChart/BarChart.js.map +1 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
- package/dist/components/charts/{Boxplot/Boxplot.js → BoxPlot/BoxPlot.js} +78 -79
- package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
- package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
- package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
- package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/annotations.js +137 -0
- package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
- package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/constants.js.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
- package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
- package/dist/components/charts/Histogram/Histogram.cjs +1 -1
- package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
- package/dist/components/charts/Histogram/Histogram.js +107 -108
- package/dist/components/charts/Histogram/Histogram.js.map +1 -1
- package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
- package/dist/components/charts/LinePlot/LinePlot.js +224 -0
- package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
- package/dist/components/charts/PieChart/PieChart.cjs +1 -1
- package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
- package/dist/components/charts/PieChart/PieChart.js +62 -61
- package/dist/components/charts/PieChart/PieChart.js.map +1 -1
- package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
- package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
- package/dist/components/charts/PlateMap/PlateMap.js +246 -242
- package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
- package/dist/components/charts/plotly-loader.cjs +2 -0
- package/dist/components/charts/plotly-loader.cjs.map +1 -0
- package/dist/components/charts/plotly-loader.js +22 -0
- package/dist/components/charts/plotly-loader.js.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
- package/dist/components/composed/Chat/Chat.cjs +1 -1
- package/dist/components/composed/Chat/Chat.cjs.map +1 -1
- package/dist/components/composed/Chat/Chat.js +23 -23
- package/dist/components/composed/Chat/Chat.js.map +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
- package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.js +349 -313
- package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
- package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
- package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +17 -17
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +33 -33
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +7 -7
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js +3 -3
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
- package/dist/components/composed/TopBar/TopBar.cjs +2 -0
- package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
- package/dist/components/composed/TopBar/TopBar.js +56 -0
- package/dist/components/composed/TopBar/TopBar.js.map +1 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
- package/dist/components/composed/UserMenu/UserMenu.js +99 -0
- package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
- package/dist/components/composed/tdp-link.cjs +1 -1
- package/dist/components/composed/tdp-link.cjs.map +1 -1
- package/dist/components/composed/tdp-link.js +5 -5
- package/dist/components/composed/tdp-link.js.map +1 -1
- package/dist/components/ui/alert.cjs +1 -1
- package/dist/components/ui/alert.cjs.map +1 -1
- package/dist/components/ui/alert.js +12 -12
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/badge.cjs +1 -1
- package/dist/components/ui/badge.cjs.map +1 -1
- package/dist/components/ui/badge.js +14 -14
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/banner.cjs +1 -1
- package/dist/components/ui/banner.cjs.map +1 -1
- package/dist/components/ui/banner.js +17 -17
- package/dist/components/ui/banner.js.map +1 -1
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.js +16 -16
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.cjs +1 -1
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +3 -3
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/code-block.cjs +3 -3
- package/dist/components/ui/code-block.cjs.map +1 -1
- package/dist/components/ui/code-block.js +136 -118
- package/dist/components/ui/code-block.js.map +1 -1
- package/dist/components/ui/code-editor.cjs +1 -1
- package/dist/components/ui/code-editor.cjs.map +1 -1
- package/dist/components/ui/code-editor.js +14 -12
- package/dist/components/ui/code-editor.js.map +1 -1
- package/dist/components/ui/combobox.cjs +1 -1
- package/dist/components/ui/combobox.cjs.map +1 -1
- package/dist/components/ui/combobox.js +33 -29
- package/dist/components/ui/combobox.js.map +1 -1
- package/dist/components/ui/command.cjs +1 -1
- package/dist/components/ui/command.cjs.map +1 -1
- package/dist/components/ui/command.js +81 -77
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/context-menu.cjs +1 -1
- package/dist/components/ui/context-menu.cjs.map +1 -1
- package/dist/components/ui/context-menu.js +13 -13
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.js +70 -62
- package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.js +24 -23
- package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-group.js +17 -16
- package/dist/components/ui/data-table/data-table-group.js.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.js +15 -15
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.js +191 -190
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/dialog.cjs +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dropdown-menu.cjs +1 -1
- package/dist/components/ui/dropdown-menu.cjs.map +1 -1
- package/dist/components/ui/dropdown-menu.js +12 -4
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/hover-card.cjs +1 -1
- package/dist/components/ui/hover-card.cjs.map +1 -1
- package/dist/components/ui/hover-card.js +3 -3
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/item.cjs +1 -1
- package/dist/components/ui/item.cjs.map +1 -1
- package/dist/components/ui/item.js +44 -36
- package/dist/components/ui/item.js.map +1 -1
- package/dist/components/ui/menubar.cjs +1 -1
- package/dist/components/ui/menubar.cjs.map +1 -1
- package/dist/components/ui/menubar.js +2 -2
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/navigation-menu.cjs +1 -1
- package/dist/components/ui/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu.js +1 -1
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.cjs +1 -1
- package/dist/components/ui/popover.cjs.map +1 -1
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs +1 -1
- package/dist/components/ui/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area.js +1 -0
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.cjs +1 -1
- package/dist/components/ui/select.cjs.map +1 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/sheet.cjs +1 -1
- package/dist/components/ui/sheet.cjs.map +1 -1
- package/dist/components/ui/sheet.js +5 -5
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.cjs +1 -1
- package/dist/components/ui/sidebar.cjs.map +1 -1
- package/dist/components/ui/sidebar.js +2 -2
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/slider.cjs +1 -1
- package/dist/components/ui/slider.cjs.map +1 -1
- package/dist/components/ui/slider.js +10 -9
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/sonner.cjs +1 -1
- package/dist/components/ui/sonner.cjs.map +1 -1
- package/dist/components/ui/sonner.js +25 -10
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/table.cjs +1 -1
- package/dist/components/ui/table.cjs.map +1 -1
- package/dist/components/ui/table.js +1 -0
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.cjs +1 -1
- package/dist/components/ui/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs.js +18 -18
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/tetra-molecule-icon.cjs +2 -0
- package/dist/components/ui/tetra-molecule-icon.cjs.map +1 -0
- package/dist/components/ui/tetra-molecule-icon.js +49 -0
- package/dist/components/ui/tetra-molecule-icon.js.map +1 -0
- package/dist/components/ui/toggle-group.cjs +1 -1
- package/dist/components/ui/toggle-group.cjs.map +1 -1
- package/dist/components/ui/toggle-group.js +35 -31
- package/dist/components/ui/toggle-group.js.map +1 -1
- package/dist/hooks/use-plotly-theme.cjs +1 -1
- package/dist/hooks/use-plotly-theme.cjs.map +1 -1
- package/dist/hooks/use-plotly-theme.js +4 -3
- package/dist/hooks/use-plotly-theme.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1073 -136
- package/dist/index.js +698 -647
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/lib/shiki.cjs +2 -0
- package/dist/lib/shiki.cjs.map +1 -0
- package/dist/lib/shiki.js +72 -0
- package/dist/lib/shiki.js.map +1 -0
- package/package.json +23 -12
- package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
- package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
- package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
- package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.js +0 -220
- package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
- package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -241
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.js +0 -136
- package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/plotBuilder.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/plotBuilder.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/plotBuilder.js +0 -207
- package/dist/components/charts/ChromatogramChart/plotBuilder.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/regionOverlays.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/regionOverlays.js.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
- package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.js +0 -208
- package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
- package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.js +0 -67
- package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
- package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.js +0 -225
- package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
- package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
- package/dist/components/charts/StackedChromatogramChart/StackedChromatogramChart.cjs +0 -2
- package/dist/components/charts/StackedChromatogramChart/StackedChromatogramChart.cjs.map +0 -1
- package/dist/components/charts/StackedChromatogramChart/StackedChromatogramChart.js +0 -40
- package/dist/components/charts/StackedChromatogramChart/StackedChromatogramChart.js.map +0 -1
- package/dist/components/charts/StackedChromatogramChart/transforms.cjs.map +0 -1
- package/dist/components/charts/StackedChromatogramChart/transforms.js.map +0 -1
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/boundaryMarkers.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/boundaryMarkers.js +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/constants.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/constants.js +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/dataProcessing.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/dataProcessing.js +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/regionOverlays.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/regionOverlays.js +0 -0
- /package/dist/components/charts/{StackedChromatogramChart → StackedChromatogram}/transforms.cjs +0 -0
- /package/dist/components/charts/{StackedChromatogramChart → StackedChromatogram}/transforms.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as e, jsxs as s } from "react/jsx-runtime";
|
|
2
|
-
import { CheckIcon as
|
|
2
|
+
import { CheckIcon as d, ChevronRightIcon as c } from "lucide-react";
|
|
3
3
|
import { ContextMenu as o } from "radix-ui";
|
|
4
4
|
import { cn as a } from "../../lib/utils.js";
|
|
5
5
|
function f({
|
|
@@ -54,7 +54,7 @@ function M({
|
|
|
54
54
|
o.Content,
|
|
55
55
|
{
|
|
56
56
|
"data-slot": "context-menu-content",
|
|
57
|
-
className: a("z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-
|
|
57
|
+
className: a("z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-elevation-4 ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", t),
|
|
58
58
|
...n
|
|
59
59
|
}
|
|
60
60
|
) });
|
|
@@ -63,7 +63,7 @@ function z({
|
|
|
63
63
|
className: t,
|
|
64
64
|
inset: n,
|
|
65
65
|
variant: r = "default",
|
|
66
|
-
...
|
|
66
|
+
...i
|
|
67
67
|
}) {
|
|
68
68
|
return /* @__PURE__ */ e(
|
|
69
69
|
o.Item,
|
|
@@ -75,7 +75,7 @@ function z({
|
|
|
75
75
|
"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
|
|
76
76
|
t
|
|
77
77
|
),
|
|
78
|
-
...
|
|
78
|
+
...i
|
|
79
79
|
}
|
|
80
80
|
);
|
|
81
81
|
}
|
|
@@ -83,7 +83,7 @@ function N({
|
|
|
83
83
|
className: t,
|
|
84
84
|
inset: n,
|
|
85
85
|
children: r,
|
|
86
|
-
...
|
|
86
|
+
...i
|
|
87
87
|
}) {
|
|
88
88
|
return /* @__PURE__ */ s(
|
|
89
89
|
o.SubTrigger,
|
|
@@ -94,7 +94,7 @@ function N({
|
|
|
94
94
|
"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
95
95
|
t
|
|
96
96
|
),
|
|
97
|
-
...
|
|
97
|
+
...i,
|
|
98
98
|
children: [
|
|
99
99
|
r,
|
|
100
100
|
/* @__PURE__ */ e(c, { className: "ml-auto" })
|
|
@@ -110,7 +110,7 @@ function I({
|
|
|
110
110
|
o.SubContent,
|
|
111
111
|
{
|
|
112
112
|
"data-slot": "context-menu-sub-content",
|
|
113
|
-
className: a("z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-
|
|
113
|
+
className: a("z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-elevation-5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", t),
|
|
114
114
|
...n
|
|
115
115
|
}
|
|
116
116
|
);
|
|
@@ -119,14 +119,14 @@ function _({
|
|
|
119
119
|
className: t,
|
|
120
120
|
children: n,
|
|
121
121
|
checked: r,
|
|
122
|
-
inset:
|
|
122
|
+
inset: i,
|
|
123
123
|
...u
|
|
124
124
|
}) {
|
|
125
125
|
return /* @__PURE__ */ s(
|
|
126
126
|
o.CheckboxItem,
|
|
127
127
|
{
|
|
128
128
|
"data-slot": "context-menu-checkbox-item",
|
|
129
|
-
"data-inset":
|
|
129
|
+
"data-inset": i,
|
|
130
130
|
className: a(
|
|
131
131
|
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
132
132
|
t
|
|
@@ -135,7 +135,7 @@ function _({
|
|
|
135
135
|
...u,
|
|
136
136
|
children: [
|
|
137
137
|
/* @__PURE__ */ e("span", { className: "pointer-events-none absolute right-2", children: /* @__PURE__ */ e(o.ItemIndicator, { children: /* @__PURE__ */ e(
|
|
138
|
-
|
|
138
|
+
d,
|
|
139
139
|
{}
|
|
140
140
|
) }) }),
|
|
141
141
|
n
|
|
@@ -147,7 +147,7 @@ function k({
|
|
|
147
147
|
className: t,
|
|
148
148
|
children: n,
|
|
149
149
|
inset: r,
|
|
150
|
-
...
|
|
150
|
+
...i
|
|
151
151
|
}) {
|
|
152
152
|
return /* @__PURE__ */ s(
|
|
153
153
|
o.RadioItem,
|
|
@@ -158,10 +158,10 @@ function k({
|
|
|
158
158
|
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
159
159
|
t
|
|
160
160
|
),
|
|
161
|
-
...
|
|
161
|
+
...i,
|
|
162
162
|
children: [
|
|
163
163
|
/* @__PURE__ */ e("span", { className: "pointer-events-none absolute right-2", children: /* @__PURE__ */ e(o.ItemIndicator, { children: /* @__PURE__ */ e(
|
|
164
|
-
|
|
164
|
+
d,
|
|
165
165
|
{}
|
|
166
166
|
) }) }),
|
|
167
167
|
n
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.js","sources":["../../../src/components/ui/context-menu.tsx"],"sourcesContent":["import { ChevronRightIcon, CheckIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn(\"select-none\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\"z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\"z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","className","jsx","cn","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuContent","ContextMenuItem","inset","variant","ContextMenuSubTrigger","children","jsxs","ChevronRightIcon","ContextMenuSubContent","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-menu.js","sources":["../../../src/components/ui/context-menu.tsx"],"sourcesContent":["import { ChevronRightIcon, CheckIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn(\"select-none\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\"z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-elevation-4 ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\"z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-elevation-5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","className","jsx","cn","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuContent","ContextMenuItem","inset","variant","ContextMenuSubTrigger","children","jsxs","ChevronRightIcon","ContextMenuSubContent","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":";;;;AAOA,SAASA,EAAY;AAAA,EACnB,GAAGC;AACL,GAA2D;AACzD,2BAAQC,EAAqB,MAArB,EAA0B,aAAU,gBAAgB,GAAGD,GAAO;AACxE;AAEA,SAASE,EAAmB;AAAA,EAC1B,WAAAC;AAAA,EACA,GAAGH;AACL,GAA8D;AAC5D,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,eAAeF,CAAS;AAAA,MACrC,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAiB;AAAA,EACxB,GAAGN;AACL,GAA4D;AAC1D,2BACGC,EAAqB,OAArB,EAA2B,aAAU,sBAAsB,GAAGD,GAAO;AAE1E;AAEA,SAASO,EAAkB;AAAA,EACzB,GAAGP;AACL,GAA6D;AAC3D,2BACGC,EAAqB,QAArB,EAA4B,aAAU,uBAAuB,GAAGD,GAAO;AAE5E;AAEA,SAASQ,EAAe;AAAA,EACtB,GAAGR;AACL,GAA0D;AACxD,2BAAQC,EAAqB,KAArB,EAAyB,aAAU,oBAAoB,GAAGD,GAAO;AAC3E;AAEA,SAASS,EAAsB;AAAA,EAC7B,GAAGT;AACL,GAAiE;AAC/D,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASU,EAAmB;AAAA,EAC1B,WAAAP;AAAA,EACA,GAAGH;AACL,GAEG;AACD,SACE,gBAAAI,EAACH,EAAqB,QAArB,EACC,UAAA,gBAAAG;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,6iBAA6iBF,CAAU;AAAA,MACpkB,GAAGH;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;AAEA,SAASW,EAAgB;AAAA,EACvB,WAAAR;AAAA,EACA,OAAAS;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGb;AACL,GAGG;AACD,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAYW;AAAA,MACZ,gBAAcC;AAAA,MACd,WAAWR;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASc,EAAsB;AAAA,EAC7B,WAAAX;AAAA,EACA,OAAAS;AAAA,EACA,UAAAG;AAAA,EACA,GAAGf;AACL,GAEG;AACD,SACE,gBAAAgB;AAAA,IAACf,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAYW;AAAA,MACZ,WAAWP;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,MAEH,UAAA;AAAA,QAAAe;AAAA,QACD,gBAAAX,EAACa,GAAA,EAAiB,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG5C;AAEA,SAASC,EAAsB;AAAA,EAC7B,WAAAf;AAAA,EACA,GAAGH;AACL,GAAiE;AAC/D,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,kdAAkdF,CAAU;AAAA,MACze,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASmB,EAAwB;AAAA,EAC/B,WAAAhB;AAAA,EACA,UAAAY;AAAA,EACA,SAAAK;AAAA,EACA,OAAAR;AAAA,EACA,GAAGZ;AACL,GAEG;AACD,SACE,gBAAAgB;AAAA,IAACf,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAYW;AAAA,MACZ,WAAWP;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAEF,SAAAiB;AAAA,MACC,GAAGpB;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,UAAK,WAAU,wCACd,UAAA,gBAAAA,EAACH,EAAqB,eAArB,EACC,UAAA,gBAAAG;AAAA,UAACiB;AAAA,UAAA,CAAA;AAAA,QAAA,GAEH,EAAA,CACF;AAAA,QACCN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASO,EAAqB;AAAA,EAC5B,WAAAnB;AAAA,EACA,UAAAY;AAAA,EACA,OAAAH;AAAA,EACA,GAAGZ;AACL,GAEG;AACD,SACE,gBAAAgB;AAAA,IAACf,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAYW;AAAA,MACZ,WAAWP;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,UAAK,WAAU,wCACd,UAAA,gBAAAA,EAACH,EAAqB,eAArB,EACC,UAAA,gBAAAG;AAAA,UAACiB;AAAA,UAAA,CAAA;AAAA,QAAA,GAEH,EAAA,CACF;AAAA,QACCN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASQ,EAAiB;AAAA,EACxB,WAAApB;AAAA,EACA,OAAAS;AAAA,EACA,GAAGZ;AACL,GAEG;AACD,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAYW;AAAA,MACZ,WAAWP;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASwB,EAAqB;AAAA,EAC5B,WAAArB;AAAA,EACA,GAAGH;AACL,GAAgE;AAC9D,SACE,gBAAAI;AAAA,IAACH,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,6BAA6BF,CAAS;AAAA,MACnD,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASyB,EAAoB;AAAA,EAC3B,WAAAtB;AAAA,EACA,GAAGH;AACL,GAAiC;AAC/B,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("@dnd-kit/core"),D=require("@dnd-kit/modifiers"),b=require("@dnd-kit/sortable"),O=require("@dnd-kit/utilities"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("@dnd-kit/core"),D=require("@dnd-kit/modifiers"),b=require("@dnd-kit/sortable"),O=require("@dnd-kit/utilities"),C=require("lucide-react"),T=require("react"),k=require("./data-table.cjs"),q=require("../button.cjs"),y=require("../../../lib/utils.cjs");function N(i){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const a in i)if(a!=="default"){const s=Object.getOwnPropertyDescriptor(i,a);Object.defineProperty(o,a,s.get?s:{enumerable:!0,get:()=>i[a]})}}return o.default=i,Object.freeze(o)}const j=N(T);function w({id:i,label:o,visible:a,onToggle:s}){const{attributes:x,listeners:d,setNodeRef:h,transform:l,transition:g,isDragging:c}=b.useSortable({id:i}),v={transform:O.CSS.Transform.toString(l),transition:g};return n.jsxs("div",{ref:h,style:v,className:y.cn("group/col-item flex items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground",c&&"z-50 bg-accent text-accent-foreground shadow-elevation-3"),children:[n.jsx("button",{type:"button","aria-label":`Drag to reorder ${o}`,className:y.cn("cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing",!c&&"opacity-0 group-hover/col-item:opacity-100 transition-opacity"),...x,...d,children:n.jsx(C.GripVerticalIcon,{className:"size-3.5"})}),n.jsxs("div",{role:"checkbox","aria-checked":a,tabIndex:0,onClick:s,onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),s())},className:"flex flex-1 cursor-pointer items-center gap-2 select-none",children:[n.jsx("span",{className:"flex-1 truncate",children:o}),n.jsx(C.CheckIcon,{className:y.cn("size-4 shrink-0",a?"text-muted-foreground group-hover/col-item:text-accent-foreground":"text-transparent")})]})]})}function z({className:i}){const{table:o,columnLabels:a}=k.useDataTable(),[s,x]=j.useState(!1),d=j.useRef(null),h=u.useSensors(u.useSensor(u.PointerSensor),u.useSensor(u.KeyboardSensor,{coordinateGetter:b.sortableKeyboardCoordinates})),l=o.getAllColumns().filter(t=>t.getCanHide()),g=o.getState().columnOrder,c=g&&g.length>0?g.filter(t=>l.some(e=>e.id===t)):l.map(t=>t.id);if(j.useEffect(()=>{if(!s)return;function t(e){d.current&&!d.current.contains(e.target)&&x(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[s]),l.length===0)return null;function v(t){const e=l.find(r=>r.id===t);return e?a[e.id]??e.columnDef.meta?.label??(typeof e.columnDef.header=="string"?e.columnDef.header:e.id):t}const f=t=>{const{active:e,over:r}=t;if(!r||e.id===r.id)return;const m=c.indexOf(String(e.id)),p=c.indexOf(String(r.id));if(m===-1||p===-1)return;const S=b.arrayMove(c,m,p);o.setColumnOrder(S)};return n.jsxs("div",{className:"relative",ref:d,children:[n.jsxs(q.Button,{variant:"ghost",size:"sm",className:i,"data-slot":"data-table-column-toggle",onClick:()=>x(t=>!t),"aria-expanded":s,children:[n.jsx(C.SlidersHorizontalIcon,{"data-icon":"inline-start"}),"Columns"]}),s&&n.jsx("div",{className:"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-elevation-4",role:"group","aria-label":"Toggle and reorder columns",children:n.jsx(u.DndContext,{sensors:h,collisionDetection:u.closestCenter,modifiers:[D.restrictToVerticalAxis],onDragEnd:f,children:n.jsx(b.SortableContext,{items:c,strategy:b.verticalListSortingStrategy,children:(()=>{const t=c.filter(e=>l.find(r=>r.id===e)?.getIsVisible()).length;return c.map(e=>{const r=l.find(S=>S.id===e);if(!r)return null;const m=r.getIsVisible(),p=m&&t<=1;return n.jsx(w,{id:e,label:v(e),visible:m,onToggle:p?()=>{}:()=>r.toggleVisibility()},e)})})()})})})]})}exports.DataTableColumnToggle=z;
|
|
2
2
|
//# sourceMappingURL=data-table-column-toggle.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-column-toggle.cjs","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n onToggle();\n }\n }}\n className={cn(\n \"group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-sm\",\n )}\n >\n <button\n type=\"button\"\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n onClick={(e) => e.stopPropagation()}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","e","cn","jsx","GripVerticalIcon","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","handleDragEnd","event","active","over","oldIndex","newIndex","newOrder","arrayMove","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":"mpBAuCA,SAASA,EAAmB,CAAE,GAAAC,EAAI,MAAAC,EAAO,QAAAC,EAAS,SAAAC,GAAqC,CACrF,KAAM,CACJ,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,WAAAC,CAAA,EACEC,EAAAA,YAAY,CAAE,GAAAV,EAAI,EAEhBW,EAA6B,CACjC,UAAWC,EAAAA,IAAI,UAAU,SAASL,CAAS,EAC3C,WAAAC,CAAA,EAGF,OACEK,EAAAA,KAAC,MAAA,CACC,IAAKP,EACL,MAAAK,EACA,KAAK,WACL,eAAcT,EACd,SAAU,EACV,QAASC,EACT,UAAYW,GAAM,EACZA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCX,EAAA,CAEJ,EACA,UAAWY,EAAAA,GACT,gJACAN,GAAc,iDAAA,EAGhB,SAAA,CAAAO,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWD,EAAAA,GACT,kHACA,CAACN,GAAc,+DAAA,EAEjB,QAAUK,GAAMA,EAAE,gBAAA,EACjB,GAAGV,EACH,GAAGC,EAEJ,SAAAW,EAAAA,IAACC,EAAAA,iBAAA,CAAiB,UAAU,UAAA,CAAW,CAAA,CAAA,EAEzCD,EAAAA,IAAC,OAAA,CAAK,UAAU,kBAAmB,SAAAf,EAAM,EACzCe,MAACE,EAAAA,WAAU,UAAWH,EAAAA,GAAG,kBAAmBb,EAAU,oEAAsE,kBAAkB,CAAA,CAAG,CAAA,CAAA,CAAA,CAGvJ,CAEA,SAASiB,EAAsB,CAAE,UAAAC,GAAyC,CACxE,KAAM,CAAE,MAAAC,EAAO,aAAAC,CAAA,EAAiBC,eAAA,EAC1B,CAACC,EAAMC,CAAO,EAAIC,EAAM,SAAS,EAAK,EACtCC,EAAWD,EAAM,OAAuB,IAAI,EAE5CE,EAAUC,EAAAA,WACdC,EAAAA,UAAUC,EAAAA,aAAa,EACvBD,EAAAA,UAAUE,EAAAA,eAAgB,CACxB,iBAAkBC,EAAAA,2BAAA,CACnB,CAAA,EAGGC,EAAab,EAAM,cAAA,EAAgB,OAAQc,GAAQA,EAAI,YAAY,EACnEC,EAAaf,EAAM,SAAA,EAAW,YAC9BgB,EACJD,GAAcA,EAAW,OAAS,EAC9BA,EAAW,OAAQpC,GAAOkC,EAAW,KAAMI,GAAMA,EAAE,KAAOtC,CAAE,CAAC,EAC7DkC,EAAW,IAAKI,GAAMA,EAAE,EAAE,EAchC,GAXAZ,EAAM,UAAU,IAAM,CACpB,GAAI,CAACF,EAAM,OACX,SAASe,EAAY,EAAe,CAC9BZ,EAAS,SAAW,CAACA,EAAS,QAAQ,SAAS,EAAE,MAAc,GACjEF,EAAQ,EAAK,CAEjB,CACA,gBAAS,iBAAiB,YAAac,CAAW,EAC3C,IAAM,SAAS,oBAAoB,YAAaA,CAAW,CACpE,EAAG,CAACf,CAAI,CAAC,EAELU,EAAW,SAAW,EAAG,OAAO,KAEpC,SAASM,EAASC,EAAe,CAC/B,MAAMN,EAAMD,EAAW,KAAMI,GAAMA,EAAE,KAAOG,CAAK,EACjD,OAAKN,EAEHb,EAAaa,EAAI,EAAE,GAClBA,EAAI,UAAU,MAAyC,QACvD,OAAOA,EAAI,UAAU,QAAW,SAAWA,EAAI,UAAU,OAASA,EAAI,IAJxDM,CAMnB,CAEA,MAAMC,EAAiBC,GAAwB,CAC7C,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAA,EAASF,EACzB,GAAI,CAACE,GAAQD,EAAO,KAAOC,EAAK,GAAI,OAEpC,MAAMC,EAAWT,EAAW,QAAQ,OAAOO,EAAO,EAAE,CAAC,EAC/CG,EAAWV,EAAW,QAAQ,OAAOQ,EAAK,EAAE,CAAC,EACnD,GAAIC,IAAa,IAAMC,IAAa,GAAI,OAExC,MAAMC,EAAWC,EAAAA,UAAUZ,EAAYS,EAAUC,CAAQ,EACzD1B,EAAM,eAAe2B,CAAQ,CAC/B,EAEA,OACEnC,EAAAA,KAAC,MAAA,CAAI,UAAU,WAAW,IAAKc,EAC7B,SAAA,CAAAd,EAAAA,KAACqC,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,UAAA9B,EACA,YAAU,2BACV,QAAS,IAAMK,EAAS0B,GAAS,CAACA,CAAI,EACtC,gBAAe3B,EAEf,SAAA,CAAAR,EAAAA,IAACoC,EAAAA,sBAAA,CAAsB,YAAU,cAAA,CAAe,EAAE,SAAA,CAAA,CAAA,EAInD5B,GACCR,EAAAA,IAAC,MAAA,CACC,UAAU,sFACV,KAAK,QACL,aAAW,6BAEX,SAAAA,EAAAA,IAACqC,EAAAA,WAAA,CACC,QAAAzB,EACA,mBAAoB0B,EAAAA,cACpB,UAAW,CAACC,EAAAA,sBAAsB,EAClC,UAAWb,EAEX,eAACc,EAAAA,gBAAA,CAAgB,MAAOnB,EAAY,SAAUoB,EAAAA,4BAC1C,UAAA,IAAM,CACN,MAAMC,EAAerB,EAAW,OAAQI,GAAUP,EAAW,KAAMI,GAAMA,EAAE,KAAOG,CAAK,GAAG,aAAA,CAAc,EAAE,OAC1G,OAAOJ,EAAW,IAAKI,GAAU,CAC/B,MAAMN,EAAMD,EAAW,KAAMI,GAAMA,EAAE,KAAOG,CAAK,EACjD,GAAI,CAACN,EAAK,OAAO,KACjB,MAAMwB,EAAYxB,EAAI,aAAA,EAChByB,EAAgBD,GAAaD,GAAgB,EACnD,OACE1C,EAAAA,IAACjB,EAAA,CAEC,GAAI0C,EACJ,MAAOD,EAASC,CAAK,EACrB,QAASkB,EACT,SAAUC,EAAgB,IAAM,CAAE,EAAI,IAAMzB,EAAI,iBAAA,CAAiB,EAJ5DM,CAAA,CAOX,CAAC,CACH,IAAG,CACL,CAAA,CAAA,CACF,CAAA,CACF,EAEJ,CAEJ"}
|
|
1
|
+
{"version":3,"file":"data-table-column-toggle.cjs","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n \"group/col-item flex items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-elevation-3\",\n )}\n >\n <button\n type=\"button\"\n aria-label={`Drag to reorder ${label}`}\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <div\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle();\n }\n }}\n className=\"flex flex-1 cursor-pointer items-center gap-2 select-none\"\n >\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-elevation-4\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","cn","jsx","GripVerticalIcon","e","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","handleDragEnd","event","active","over","oldIndex","newIndex","newOrder","arrayMove","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":"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"}
|
|
@@ -1,128 +1,136 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useSensors as D, useSensor as y, PointerSensor as k, KeyboardSensor as
|
|
1
|
+
import { jsxs as p, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useSensors as D, useSensor as y, PointerSensor as k, KeyboardSensor as N, DndContext as w, closestCenter as E } from "@dnd-kit/core";
|
|
3
3
|
import { restrictToVerticalAxis as O } from "@dnd-kit/modifiers";
|
|
4
4
|
import { sortableKeyboardCoordinates as V, SortableContext as z, verticalListSortingStrategy as I, arrayMove as L, useSortable as T } from "@dnd-kit/sortable";
|
|
5
5
|
import { CSS as R } from "@dnd-kit/utilities";
|
|
6
6
|
import { SlidersHorizontalIcon as K, GripVerticalIcon as j, CheckIcon as A } from "lucide-react";
|
|
7
|
-
import * as
|
|
7
|
+
import * as C from "react";
|
|
8
8
|
import { useDataTable as G } from "./data-table.js";
|
|
9
9
|
import { Button as H } from "../button.js";
|
|
10
|
-
import { cn as
|
|
11
|
-
function
|
|
10
|
+
import { cn as S } from "../../../lib/utils.js";
|
|
11
|
+
function B({ id: b, label: a, visible: u, onToggle: s }) {
|
|
12
12
|
const {
|
|
13
|
-
attributes:
|
|
13
|
+
attributes: m,
|
|
14
14
|
listeners: l,
|
|
15
|
-
setNodeRef:
|
|
15
|
+
setNodeRef: h,
|
|
16
16
|
transform: i,
|
|
17
17
|
transition: c,
|
|
18
|
-
isDragging:
|
|
19
|
-
} = T({ id:
|
|
18
|
+
isDragging: n
|
|
19
|
+
} = T({ id: b }), x = {
|
|
20
20
|
transform: R.Transform.toString(i),
|
|
21
21
|
transition: c
|
|
22
22
|
};
|
|
23
|
-
return /* @__PURE__ */
|
|
23
|
+
return /* @__PURE__ */ p(
|
|
24
24
|
"div",
|
|
25
25
|
{
|
|
26
|
-
ref:
|
|
27
|
-
style:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
onClick: s,
|
|
32
|
-
onKeyDown: (d) => {
|
|
33
|
-
(d.key === "Enter" || d.key === " ") && s();
|
|
34
|
-
},
|
|
35
|
-
className: C(
|
|
36
|
-
"group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground",
|
|
37
|
-
o && "z-50 bg-accent text-accent-foreground shadow-sm"
|
|
26
|
+
ref: h,
|
|
27
|
+
style: x,
|
|
28
|
+
className: S(
|
|
29
|
+
"group/col-item flex items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground",
|
|
30
|
+
n && "z-50 bg-accent text-accent-foreground shadow-elevation-3"
|
|
38
31
|
),
|
|
39
32
|
children: [
|
|
40
|
-
/* @__PURE__ */
|
|
33
|
+
/* @__PURE__ */ o(
|
|
41
34
|
"button",
|
|
42
35
|
{
|
|
43
36
|
type: "button",
|
|
44
|
-
|
|
37
|
+
"aria-label": `Drag to reorder ${a}`,
|
|
38
|
+
className: S(
|
|
45
39
|
"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing",
|
|
46
|
-
!
|
|
40
|
+
!n && "opacity-0 group-hover/col-item:opacity-100 transition-opacity"
|
|
47
41
|
),
|
|
48
|
-
|
|
49
|
-
...f,
|
|
42
|
+
...m,
|
|
50
43
|
...l,
|
|
51
|
-
children: /* @__PURE__ */
|
|
44
|
+
children: /* @__PURE__ */ o(j, { className: "size-3.5" })
|
|
52
45
|
}
|
|
53
46
|
),
|
|
54
|
-
/* @__PURE__ */
|
|
55
|
-
|
|
47
|
+
/* @__PURE__ */ p(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
role: "checkbox",
|
|
51
|
+
"aria-checked": u,
|
|
52
|
+
tabIndex: 0,
|
|
53
|
+
onClick: s,
|
|
54
|
+
onKeyDown: (f) => {
|
|
55
|
+
(f.key === "Enter" || f.key === " ") && (f.preventDefault(), s());
|
|
56
|
+
},
|
|
57
|
+
className: "flex flex-1 cursor-pointer items-center gap-2 select-none",
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ o("span", { className: "flex-1 truncate", children: a }),
|
|
60
|
+
/* @__PURE__ */ o(A, { className: S("size-4 shrink-0", u ? "text-muted-foreground group-hover/col-item:text-accent-foreground" : "text-transparent") })
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
)
|
|
56
64
|
]
|
|
57
65
|
}
|
|
58
66
|
);
|
|
59
67
|
}
|
|
60
|
-
function
|
|
61
|
-
const { table: a, columnLabels:
|
|
68
|
+
function X({ className: b }) {
|
|
69
|
+
const { table: a, columnLabels: u } = G(), [s, m] = C.useState(!1), l = C.useRef(null), h = D(
|
|
62
70
|
y(k),
|
|
63
|
-
y(
|
|
71
|
+
y(N, {
|
|
64
72
|
coordinateGetter: V
|
|
65
73
|
})
|
|
66
|
-
), i = a.getAllColumns().filter((t) => t.getCanHide()), c = a.getState().columnOrder,
|
|
67
|
-
if (
|
|
74
|
+
), i = a.getAllColumns().filter((t) => t.getCanHide()), c = a.getState().columnOrder, n = c && c.length > 0 ? c.filter((t) => i.some((e) => e.id === t)) : i.map((t) => t.id);
|
|
75
|
+
if (C.useEffect(() => {
|
|
68
76
|
if (!s) return;
|
|
69
77
|
function t(e) {
|
|
70
|
-
l.current && !l.current.contains(e.target) &&
|
|
78
|
+
l.current && !l.current.contains(e.target) && m(!1);
|
|
71
79
|
}
|
|
72
80
|
return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
|
|
73
81
|
}, [s]), i.length === 0) return null;
|
|
74
|
-
function
|
|
82
|
+
function x(t) {
|
|
75
83
|
const e = i.find((r) => r.id === t);
|
|
76
|
-
return e ?
|
|
84
|
+
return e ? u[e.id] ?? e.columnDef.meta?.label ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id) : t;
|
|
77
85
|
}
|
|
78
|
-
return /* @__PURE__ */
|
|
79
|
-
/* @__PURE__ */
|
|
86
|
+
return /* @__PURE__ */ p("div", { className: "relative", ref: l, children: [
|
|
87
|
+
/* @__PURE__ */ p(
|
|
80
88
|
H,
|
|
81
89
|
{
|
|
82
90
|
variant: "ghost",
|
|
83
91
|
size: "sm",
|
|
84
|
-
className:
|
|
92
|
+
className: b,
|
|
85
93
|
"data-slot": "data-table-column-toggle",
|
|
86
|
-
onClick: () =>
|
|
94
|
+
onClick: () => m((t) => !t),
|
|
87
95
|
"aria-expanded": s,
|
|
88
96
|
children: [
|
|
89
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ o(K, { "data-icon": "inline-start" }),
|
|
90
98
|
"Columns"
|
|
91
99
|
]
|
|
92
100
|
}
|
|
93
101
|
),
|
|
94
|
-
s && /* @__PURE__ */
|
|
102
|
+
s && /* @__PURE__ */ o(
|
|
95
103
|
"div",
|
|
96
104
|
{
|
|
97
|
-
className: "absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-
|
|
105
|
+
className: "absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-elevation-4",
|
|
98
106
|
role: "group",
|
|
99
107
|
"aria-label": "Toggle and reorder columns",
|
|
100
|
-
children: /* @__PURE__ */
|
|
101
|
-
|
|
108
|
+
children: /* @__PURE__ */ o(
|
|
109
|
+
w,
|
|
102
110
|
{
|
|
103
|
-
sensors:
|
|
111
|
+
sensors: h,
|
|
104
112
|
collisionDetection: E,
|
|
105
113
|
modifiers: [O],
|
|
106
114
|
onDragEnd: (t) => {
|
|
107
115
|
const { active: e, over: r } = t;
|
|
108
116
|
if (!r || e.id === r.id) return;
|
|
109
|
-
const
|
|
110
|
-
if (
|
|
111
|
-
const
|
|
112
|
-
a.setColumnOrder(
|
|
117
|
+
const d = n.indexOf(String(e.id)), g = n.indexOf(String(r.id));
|
|
118
|
+
if (d === -1 || g === -1) return;
|
|
119
|
+
const v = L(n, d, g);
|
|
120
|
+
a.setColumnOrder(v);
|
|
113
121
|
},
|
|
114
|
-
children: /* @__PURE__ */
|
|
115
|
-
const t =
|
|
116
|
-
return
|
|
117
|
-
const r = i.find((
|
|
122
|
+
children: /* @__PURE__ */ o(z, { items: n, strategy: I, children: (() => {
|
|
123
|
+
const t = n.filter((e) => i.find((r) => r.id === e)?.getIsVisible()).length;
|
|
124
|
+
return n.map((e) => {
|
|
125
|
+
const r = i.find((v) => v.id === e);
|
|
118
126
|
if (!r) return null;
|
|
119
|
-
const
|
|
120
|
-
return /* @__PURE__ */
|
|
121
|
-
|
|
127
|
+
const d = r.getIsVisible(), g = d && t <= 1;
|
|
128
|
+
return /* @__PURE__ */ o(
|
|
129
|
+
B,
|
|
122
130
|
{
|
|
123
131
|
id: e,
|
|
124
|
-
label:
|
|
125
|
-
visible:
|
|
132
|
+
label: x(e),
|
|
133
|
+
visible: d,
|
|
126
134
|
onToggle: g ? () => {
|
|
127
135
|
} : () => r.toggleVisibility()
|
|
128
136
|
},
|
|
@@ -137,6 +145,6 @@ function Y({ className: p }) {
|
|
|
137
145
|
] });
|
|
138
146
|
}
|
|
139
147
|
export {
|
|
140
|
-
|
|
148
|
+
X as DataTableColumnToggle
|
|
141
149
|
};
|
|
142
150
|
//# sourceMappingURL=data-table-column-toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-column-toggle.js","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n onToggle();\n }\n }}\n className={cn(\n \"group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-sm\",\n )}\n >\n <button\n type=\"button\"\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n onClick={(e) => e.stopPropagation()}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","e","cn","jsx","GripVerticalIcon","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","event","active","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":";;;;;;;;;;AAuCA,SAASA,EAAmB,EAAE,IAAAC,GAAI,OAAAC,GAAO,SAAAC,GAAS,UAAAC,KAAqC;AACrF,QAAM;AAAA,IACJ,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,IACEC,EAAY,EAAE,IAAAV,GAAI,GAEhBW,IAA6B;AAAA,IACjC,WAAWC,EAAI,UAAU,SAASL,CAAS;AAAA,IAC3C,YAAAC;AAAA,EAAA;AAGF,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKP;AAAA,MACL,OAAAK;AAAA,MACA,MAAK;AAAA,MACL,gBAAcT;AAAA,MACd,UAAU;AAAA,MACV,SAASC;AAAA,MACT,WAAW,CAACW,MAAM;AAChB,SAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,QACjCX,EAAA;AAAA,MAEJ;AAAA,MACA,WAAWY;AAAA,QACT;AAAA,QACAN,KAAc;AAAA,MAAA;AAAA,MAGhB,UAAA;AAAA,QAAA,gBAAAO;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWD;AAAA,cACT;AAAA,cACA,CAACN,KAAc;AAAA,YAAA;AAAA,YAEjB,SAAS,CAACK,MAAMA,EAAE,gBAAA;AAAA,YACjB,GAAGV;AAAA,YACH,GAAGC;AAAA,YAEJ,UAAA,gBAAAW,EAACC,GAAA,EAAiB,WAAU,WAAA,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzC,gBAAAD,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAAf,GAAM;AAAA,QACzC,gBAAAe,EAACE,KAAU,WAAWH,EAAG,mBAAmBb,IAAU,sEAAsE,kBAAkB,EAAA,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvJ;AAEA,SAASiB,EAAsB,EAAE,WAAAC,KAAyC;AACxE,QAAM,EAAE,OAAAC,GAAO,cAAAC,EAAA,IAAiBC,EAAA,GAC1B,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS,EAAK,GACtCC,IAAWD,EAAM,OAAuB,IAAI,GAE5CE,IAAUC;AAAA,IACdC,EAAUC,CAAa;AAAA,IACvBD,EAAUE,GAAgB;AAAA,MACxB,kBAAkBC;AAAA,IAAA,CACnB;AAAA,EAAA,GAGGC,IAAab,EAAM,cAAA,EAAgB,OAAO,CAACc,MAAQA,EAAI,YAAY,GACnEC,IAAaf,EAAM,SAAA,EAAW,aAC9BgB,IACJD,KAAcA,EAAW,SAAS,IAC9BA,EAAW,OAAO,CAACpC,MAAOkC,EAAW,KAAK,CAACI,MAAMA,EAAE,OAAOtC,CAAE,CAAC,IAC7DkC,EAAW,IAAI,CAACI,MAAMA,EAAE,EAAE;AAchC,MAXAZ,EAAM,UAAU,MAAM;AACpB,QAAI,CAACF,EAAM;AACX,aAASe,EAAY,GAAe;AAClC,MAAIZ,EAAS,WAAW,CAACA,EAAS,QAAQ,SAAS,EAAE,MAAc,KACjEF,EAAQ,EAAK;AAAA,IAEjB;AACA,oBAAS,iBAAiB,aAAac,CAAW,GAC3C,MAAM,SAAS,oBAAoB,aAAaA,CAAW;AAAA,EACpE,GAAG,CAACf,CAAI,CAAC,GAELU,EAAW,WAAW,EAAG,QAAO;AAEpC,WAASM,EAASC,GAAe;AAC/B,UAAMN,IAAMD,EAAW,KAAK,CAACI,MAAMA,EAAE,OAAOG,CAAK;AACjD,WAAKN,IAEHb,EAAaa,EAAI,EAAE,KAClBA,EAAI,UAAU,MAAyC,UACvD,OAAOA,EAAI,UAAU,UAAW,WAAWA,EAAI,UAAU,SAASA,EAAI,MAJxDM;AAAA,EAMnB;AAcA,SACE,gBAAA5B,EAAC,OAAA,EAAI,WAAU,YAAW,KAAKc,GAC7B,UAAA;AAAA,IAAA,gBAAAd;AAAA,MAAC6B;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAAtB;AAAA,QACA,aAAU;AAAA,QACV,SAAS,MAAMK,EAAQ,CAACkB,MAAS,CAACA,CAAI;AAAA,QACtC,iBAAenB;AAAA,QAEf,UAAA;AAAA,UAAA,gBAAAR,EAAC4B,GAAA,EAAsB,aAAU,eAAA,CAAe;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAInDpB,KACC,gBAAAR;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,cAAW;AAAA,QAEX,UAAA,gBAAAA;AAAA,UAAC6B;AAAA,UAAA;AAAA,YACC,SAAAjB;AAAA,YACA,oBAAoBkB;AAAA,YACpB,WAAW,CAACC,CAAsB;AAAA,YAClC,WApCY,CAACC,MAAwB;AAC7C,oBAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASF;AACzB,kBAAI,CAACE,KAAQD,EAAO,OAAOC,EAAK,GAAI;AAEpC,oBAAMC,IAAWd,EAAW,QAAQ,OAAOY,EAAO,EAAE,CAAC,GAC/CG,IAAWf,EAAW,QAAQ,OAAOa,EAAK,EAAE,CAAC;AACnD,kBAAIC,MAAa,MAAMC,MAAa,GAAI;AAExC,oBAAMC,IAAWC,EAAUjB,GAAYc,GAAUC,CAAQ;AACzD,cAAA/B,EAAM,eAAegC,CAAQ;AAAA,YAC/B;AAAA,YA4BU,4BAACE,GAAA,EAAgB,OAAOlB,GAAY,UAAUmB,GAC1C,WAAA,MAAM;AACN,oBAAMC,IAAepB,EAAW,OAAO,CAACI,MAAUP,EAAW,KAAK,CAACI,MAAMA,EAAE,OAAOG,CAAK,GAAG,aAAA,CAAc,EAAE;AAC1G,qBAAOJ,EAAW,IAAI,CAACI,MAAU;AAC/B,sBAAMN,IAAMD,EAAW,KAAK,CAACI,MAAMA,EAAE,OAAOG,CAAK;AACjD,oBAAI,CAACN,EAAK,QAAO;AACjB,sBAAMuB,IAAYvB,EAAI,aAAA,GAChBwB,IAAgBD,KAAaD,KAAgB;AACnD,uBACE,gBAAAzC;AAAA,kBAACjB;AAAA,kBAAA;AAAA,oBAEC,IAAI0C;AAAA,oBACJ,OAAOD,EAASC,CAAK;AAAA,oBACrB,SAASiB;AAAA,oBACT,UAAUC,IAAgB,MAAM;AAAA,oBAAE,IAAI,MAAMxB,EAAI,iBAAA;AAAA,kBAAiB;AAAA,kBAJ5DM;AAAA,gBAAA;AAAA,cAOX,CAAC;AAAA,YACH,KAAG,CACL;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"data-table-column-toggle.js","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n \"group/col-item flex items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-elevation-3\",\n )}\n >\n <button\n type=\"button\"\n aria-label={`Drag to reorder ${label}`}\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <div\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle();\n }\n }}\n className=\"flex flex-1 cursor-pointer items-center gap-2 select-none\"\n >\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-elevation-4\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","cn","jsx","GripVerticalIcon","e","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","event","active","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("lucide-react"),f=require("radix-ui"),R=require("./data-table.cjs"),x=require("../button.cjs"),O=require("../input.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("lucide-react"),f=require("radix-ui"),R=require("./data-table.cjs"),x=require("../button.cjs"),O=require("../input.cjs"),l=require("../select.cjs"),y=require("../../../lib/utils.cjs"),P={contains:"contains",equals:"equals",not_equals:"not equals",starts_with:"starts with",ends_with:"ends with",is_empty:"is empty",is_not_empty:"is not empty"},A=["is_empty","is_not_empty"],F=["contains","equals","not_equals","starts_with","ends_with","is_empty","is_not_empty"];function L(n,r,s){return r[n]??s?.columnDef?.meta?.label??(typeof s?.columnDef?.header=="string"?s.columnDef.header:void 0)??n}function E(n,r){const s=r?.[0]??"contains";return{id:crypto.randomUUID(),columnId:n,operator:s,value:""}}function _({className:n}){const{table:r,columnLabels:s,filters:o,setFilters:u,filterConfig:v,enableFiltering:I}=R.useDataTable();if(!I)return null;const b=r.getAllLeafColumns(),i=v.length>0?v:b.filter(t=>"accessorKey"in t.columnDef||"accessorFn"in t.columnDef).map(t=>({columnId:t.id})),j=i[0],N=j?.columnId??"";function S(){u([...o,E(N,j?.operators)])}function q(t){u(o.filter(m=>m.id!==t))}function h(t,m){u(o.map(c=>c.id===t?{...c,...m}:c))}function z(){u([])}const d=o.length;return e.jsxs(f.Popover.Root,{children:[e.jsx(f.Popover.Trigger,{asChild:!0,children:e.jsxs(x.Button,{type:"button",variant:"outline",size:"sm","data-slot":"data-table-filter",className:y.cn(n),"aria-label":d>0?`Filter (${d} active)`:"Filter",children:[e.jsx(g.ListFilterIcon,{className:"size-3.5"}),"Filter",d>0&&e.jsx("span",{className:"flex size-4 items-center justify-center rounded-full bg-primary text-[10px] font-medium text-primary-foreground",children:d})]})}),e.jsx(f.Popover.Portal,{children:e.jsx(f.Popover.Content,{"data-slot":"data-table-filter-panel","aria-label":"Filter conditions",align:"end",sideOffset:4,className:y.cn("z-50 min-w-80 rounded-lg border bg-popover p-3 text-popover-foreground shadow-elevation-4 outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2"),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[o.map(t=>{const c=i.find(a=>a.columnId===t.columnId)?.operators??F,T=A.includes(t.operator);return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(l.Select,{value:t.columnId,onValueChange:a=>{const p=i.find(D=>D.columnId===a)?.operators??F,w=p.includes(t.operator)?t.operator:p[0]??"contains";h(t.id,{columnId:a,operator:w,value:""})},children:[e.jsx(l.SelectTrigger,{"aria-label":"Filter column",size:"sm",className:"w-36",children:e.jsx(l.SelectValue,{})}),e.jsx(l.SelectContent,{children:i.map(a=>{const C=b.find(p=>p.id===a.columnId);return e.jsx(l.SelectItem,{value:a.columnId,children:a.label??L(a.columnId,s,C)},a.columnId)})})]}),e.jsxs(l.Select,{value:t.operator,onValueChange:a=>h(t.id,{operator:a,value:""}),children:[e.jsx(l.SelectTrigger,{"aria-label":"Filter operator",size:"sm",className:"w-32",children:e.jsx(l.SelectValue,{})}),e.jsx(l.SelectContent,{children:c.map(a=>e.jsx(l.SelectItem,{value:a,children:P[a]},a))})]}),T?e.jsx("div",{className:"h-8 w-40","aria-hidden":!0}):e.jsx(O.Input,{className:"w-40",placeholder:"Value…",value:t.value,onChange:a=>h(t.id,{value:a.target.value})}),e.jsx(x.Button,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0 text-muted-foreground hover:text-foreground",onClick:()=>q(t.id),"aria-label":"Remove filter",children:e.jsx(g.XIcon,{className:"size-3.5"})})]},t.id)}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(x.Button,{type:"button",variant:"outline",size:"sm",onClick:S,disabled:i.length===0,children:[e.jsx(g.PlusIcon,{className:"size-3.5"}),"Add filter"]}),o.length>0&&e.jsx(x.Button,{type:"button",variant:"ghost",size:"sm",className:"text-muted-foreground",onClick:z,children:"Clear all"})]})]})})})]})}_.displayName="DataTableFilter";exports.DataTableFilter=_;
|
|
2
2
|
//# sourceMappingURL=data-table-filter.cjs.map
|