@plenustech/design-system 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/actions/Button/Button.cjs +2 -0
- package/dist/components/actions/Button/Button.cjs.map +1 -0
- package/dist/components/actions/Button/Button.js +47 -0
- package/dist/components/actions/Button/Button.js.map +1 -0
- package/dist/components/actions/Button/Button.module.css.cjs +2 -0
- package/dist/components/actions/Button/Button.module.css.cjs.map +1 -0
- package/dist/components/actions/Button/Button.module.css.js +24 -0
- package/dist/components/actions/Button/Button.module.css.js.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.cjs +2 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.cjs.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.js +21 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.js.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs +2 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js +14 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs +2 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.js +205 -0
- package/dist/components/charts/ChartArea/ChartArea.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +2 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.js +18 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.cjs +2 -0
- package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.js +216 -0
- package/dist/components/charts/ChartBar/ChartBar.js.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +2 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.js +14 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.cjs +2 -0
- package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.js +248 -0
- package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +2 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +20 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.cjs +2 -0
- package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.js +107 -0
- package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs +2 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.js +14 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs +2 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.js +166 -0
- package/dist/components/charts/ChartLine/ChartLine.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +2 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.js +18 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs +2 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.js +99 -0
- package/dist/components/charts/ChartPie/ChartPie.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.cjs +2 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.js +10 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.js.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.cjs +2 -0
- package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.js +121 -0
- package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs +2 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.js +16 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.js.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.cjs +2 -0
- package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.js +209 -0
- package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs +2 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.js +22 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.js.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.cjs +2 -0
- package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.js +137 -0
- package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +2 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +14 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +2 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.js +144 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs +2 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js +16 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +113 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js +32 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +2 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.js +122 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs +2 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js +14 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +2 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +168 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +2 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +12 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -0
- package/dist/components/charts/core/Axis.cjs +2 -0
- package/dist/components/charts/core/Axis.cjs.map +1 -0
- package/dist/components/charts/core/Axis.js +40 -0
- package/dist/components/charts/core/Axis.js.map +1 -0
- package/dist/components/charts/core/BandCursor.cjs +2 -0
- package/dist/components/charts/core/BandCursor.cjs.map +1 -0
- package/dist/components/charts/core/BandCursor.js +19 -0
- package/dist/components/charts/core/BandCursor.js.map +1 -0
- package/dist/components/charts/core/CartesianFrame.cjs +2 -0
- package/dist/components/charts/core/CartesianFrame.cjs.map +1 -0
- package/dist/components/charts/core/CartesianFrame.js +120 -0
- package/dist/components/charts/core/CartesianFrame.js.map +1 -0
- package/dist/components/charts/core/Chart.module.css.cjs +2 -0
- package/dist/components/charts/core/Chart.module.css.cjs.map +1 -0
- package/dist/components/charts/core/Chart.module.css.js +68 -0
- package/dist/components/charts/core/Chart.module.css.js.map +1 -0
- package/dist/components/charts/core/ChartFrame.cjs +2 -0
- package/dist/components/charts/core/ChartFrame.cjs.map +1 -0
- package/dist/components/charts/core/ChartFrame.js +65 -0
- package/dist/components/charts/core/ChartFrame.js.map +1 -0
- package/dist/components/charts/core/ChartLegend.cjs +2 -0
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -0
- package/dist/components/charts/core/ChartLegend.js +44 -0
- package/dist/components/charts/core/ChartLegend.js.map +1 -0
- package/dist/components/charts/core/Grid.cjs +2 -0
- package/dist/components/charts/core/Grid.cjs.map +1 -0
- package/dist/components/charts/core/Grid.js +20 -0
- package/dist/components/charts/core/Grid.js.map +1 -0
- package/dist/components/charts/core/arcs.cjs +2 -0
- package/dist/components/charts/core/arcs.cjs.map +1 -0
- package/dist/components/charts/core/arcs.js +26 -0
- package/dist/components/charts/core/arcs.js.map +1 -0
- package/dist/components/charts/core/cartesianLayout.cjs +2 -0
- package/dist/components/charts/core/cartesianLayout.cjs.map +1 -0
- package/dist/components/charts/core/cartesianLayout.js +59 -0
- package/dist/components/charts/core/cartesianLayout.js.map +1 -0
- package/dist/components/charts/core/centerText.cjs +2 -0
- package/dist/components/charts/core/centerText.cjs.map +1 -0
- package/dist/components/charts/core/centerText.js +31 -0
- package/dist/components/charts/core/centerText.js.map +1 -0
- package/dist/components/charts/core/measureText.cjs +2 -0
- package/dist/components/charts/core/measureText.cjs.map +1 -0
- package/dist/components/charts/core/measureText.js +55 -0
- package/dist/components/charts/core/measureText.js.map +1 -0
- package/dist/components/charts/core/shapes.cjs +2 -0
- package/dist/components/charts/core/shapes.cjs.map +1 -0
- package/dist/components/charts/core/shapes.js +31 -0
- package/dist/components/charts/core/shapes.js.map +1 -0
- package/dist/components/charts/core/slices.cjs +2 -0
- package/dist/components/charts/core/slices.cjs.map +1 -0
- package/dist/components/charts/core/slices.js +22 -0
- package/dist/components/charts/core/slices.js.map +1 -0
- package/dist/components/charts/core/spacing.cjs +2 -0
- package/dist/components/charts/core/spacing.cjs.map +1 -0
- package/dist/components/charts/core/spacing.js +26 -0
- package/dist/components/charts/core/spacing.js.map +1 -0
- package/dist/components/charts/core/useChartMetrics.cjs +2 -0
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -0
- package/dist/components/charts/core/useChartMetrics.js +39 -0
- package/dist/components/charts/core/useChartMetrics.js.map +1 -0
- package/dist/components/charts/core/useHoveredBand.cjs +2 -0
- package/dist/components/charts/core/useHoveredBand.cjs.map +1 -0
- package/dist/components/charts/core/useHoveredBand.js +14 -0
- package/dist/components/charts/core/useHoveredBand.js.map +1 -0
- package/dist/components/charts/core/useSeriesToggle.cjs +2 -0
- package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -0
- package/dist/components/charts/core/useSeriesToggle.js +22 -0
- package/dist/components/charts/core/useSeriesToggle.js.map +1 -0
- package/dist/components/charts/core/useSliceRing.cjs +2 -0
- package/dist/components/charts/core/useSliceRing.cjs.map +1 -0
- package/dist/components/charts/core/useSliceRing.js +55 -0
- package/dist/components/charts/core/useSliceRing.js.map +1 -0
- package/dist/components/charts/core/useTweenedNumbers.cjs +2 -0
- package/dist/components/charts/core/useTweenedNumbers.cjs.map +1 -0
- package/dist/components/charts/core/useTweenedNumbers.js +31 -0
- package/dist/components/charts/core/useTweenedNumbers.js.map +1 -0
- package/dist/components/charts/palette/palette.cjs +2 -0
- package/dist/components/charts/palette/palette.cjs.map +1 -0
- package/dist/components/charts/palette/palette.js +26 -0
- package/dist/components/charts/palette/palette.js.map +1 -0
- package/dist/components/charts/palette/seriesColor.cjs +2 -0
- package/dist/components/charts/palette/seriesColor.cjs.map +1 -0
- package/dist/components/charts/palette/seriesColor.js +43 -0
- package/dist/components/charts/palette/seriesColor.js.map +1 -0
- package/dist/components/charts/scales/scales.cjs +2 -0
- package/dist/components/charts/scales/scales.cjs.map +1 -0
- package/dist/components/charts/scales/scales.js +74 -0
- package/dist/components/charts/scales/scales.js.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.cjs +2 -0
- package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.js +91 -0
- package/dist/components/data-display/Accordion/Accordion.js.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs +2 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.js +26 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.js.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.cjs +2 -0
- package/dist/components/data-display/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.js +20 -0
- package/dist/components/data-display/Avatar/Avatar.js.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.cjs +2 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.js +14 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/data-display/Badge/Badge.cjs +2 -0
- package/dist/components/data-display/Badge/Badge.cjs.map +1 -0
- package/dist/components/data-display/Badge/Badge.js +13 -0
- package/dist/components/data-display/Badge/Badge.js.map +1 -0
- package/dist/components/data-display/Badge/Badge.module.css.cjs +2 -0
- package/dist/components/data-display/Badge/Badge.module.css.cjs.map +1 -0
- package/dist/components/data-display/Badge/Badge.module.css.js +22 -0
- package/dist/components/data-display/Badge/Badge.module.css.js.map +1 -0
- package/dist/components/data-display/Card/Card.cjs +2 -0
- package/dist/components/data-display/Card/Card.cjs.map +1 -0
- package/dist/components/data-display/Card/Card.js +51 -0
- package/dist/components/data-display/Card/Card.js.map +1 -0
- package/dist/components/data-display/Card/Card.module.css.cjs +2 -0
- package/dist/components/data-display/Card/Card.module.css.cjs.map +1 -0
- package/dist/components/data-display/Card/Card.module.css.js +26 -0
- package/dist/components/data-display/Card/Card.module.css.js.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.cjs +2 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.js +65 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs +2 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js +47 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js.map +1 -0
- package/dist/components/data-display/CodeBlock/syntax.cjs +24 -0
- package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/syntax.js +124 -0
- package/dist/components/data-display/CodeBlock/syntax.js.map +1 -0
- package/dist/components/data-display/List/List.cjs +2 -0
- package/dist/components/data-display/List/List.cjs.map +1 -0
- package/dist/components/data-display/List/List.js +99 -0
- package/dist/components/data-display/List/List.js.map +1 -0
- package/dist/components/data-display/List/List.module.css.cjs +2 -0
- package/dist/components/data-display/List/List.module.css.cjs.map +1 -0
- package/dist/components/data-display/List/List.module.css.js +32 -0
- package/dist/components/data-display/List/List.module.css.js.map +1 -0
- package/dist/components/data-display/List/ListingOptions.cjs +2 -0
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -0
- package/dist/components/data-display/List/ListingOptions.js +115 -0
- package/dist/components/data-display/List/ListingOptions.js.map +1 -0
- package/dist/components/data-display/List/useListing.cjs +2 -0
- package/dist/components/data-display/List/useListing.cjs.map +1 -0
- package/dist/components/data-display/List/useListing.js +85 -0
- package/dist/components/data-display/List/useListing.js.map +1 -0
- package/dist/components/data-display/List/useVirtualWindow.cjs +2 -0
- package/dist/components/data-display/List/useVirtualWindow.cjs.map +1 -0
- package/dist/components/data-display/List/useVirtualWindow.js +58 -0
- package/dist/components/data-display/List/useVirtualWindow.js.map +1 -0
- package/dist/components/data-display/Table/Table.cjs +2 -0
- package/dist/components/data-display/Table/Table.cjs.map +1 -0
- package/dist/components/data-display/Table/Table.js +238 -0
- package/dist/components/data-display/Table/Table.js.map +1 -0
- package/dist/components/data-display/Table/Table.module.css.cjs +2 -0
- package/dist/components/data-display/Table/Table.module.css.cjs.map +1 -0
- package/dist/components/data-display/Table/Table.module.css.js +69 -0
- package/dist/components/data-display/Table/Table.module.css.js.map +1 -0
- package/dist/components/feedback/Alert/Alert.cjs +2 -0
- package/dist/components/feedback/Alert/Alert.cjs.map +1 -0
- package/dist/components/feedback/Alert/Alert.js +13 -0
- package/dist/components/feedback/Alert/Alert.js.map +1 -0
- package/dist/components/feedback/Alert/Alert.module.css.cjs +2 -0
- package/dist/components/feedback/Alert/Alert.module.css.cjs.map +1 -0
- package/dist/components/feedback/Alert/Alert.module.css.js +20 -0
- package/dist/components/feedback/Alert/Alert.module.css.js.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.cjs +2 -0
- package/dist/components/feedback/EmptyState/EmptyState.cjs.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.js +49 -0
- package/dist/components/feedback/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs +2 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.js +36 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.js.map +1 -0
- package/dist/components/feedback/Progress/Progress.cjs +2 -0
- package/dist/components/feedback/Progress/Progress.cjs.map +1 -0
- package/dist/components/feedback/Progress/Progress.js +34 -0
- package/dist/components/feedback/Progress/Progress.js.map +1 -0
- package/dist/components/feedback/Progress/Progress.module.css.cjs +2 -0
- package/dist/components/feedback/Progress/Progress.module.css.cjs.map +1 -0
- package/dist/components/feedback/Progress/Progress.module.css.js +21 -0
- package/dist/components/feedback/Progress/Progress.module.css.js.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.cjs +2 -0
- package/dist/components/feedback/Spinner/Spinner.cjs.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.js +10 -0
- package/dist/components/feedback/Spinner/Spinner.js.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.cjs +2 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.cjs.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.js +15 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs +2 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.js +45 -0
- package/dist/components/forms/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +2 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +20 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs +3 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.js +223 -0
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +2 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.js +28 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.js.map +1 -0
- package/dist/components/forms/DatePicker/Calendar.cjs +2 -0
- package/dist/components/forms/DatePicker/Calendar.cjs.map +1 -0
- package/dist/components/forms/DatePicker/Calendar.js +86 -0
- package/dist/components/forms/DatePicker/Calendar.js.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.cjs +2 -0
- package/dist/components/forms/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.js +217 -0
- package/dist/components/forms/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.cjs +2 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.js +44 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.js.map +1 -0
- package/dist/components/forms/DatePicker/iso.cjs +2 -0
- package/dist/components/forms/DatePicker/iso.cjs.map +1 -0
- package/dist/components/forms/DatePicker/iso.js +18 -0
- package/dist/components/forms/DatePicker/iso.js.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.cjs +2 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.js +241 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.js.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs +2 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js +26 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js.map +1 -0
- package/dist/components/forms/Field/Field.cjs +2 -0
- package/dist/components/forms/Field/Field.cjs.map +1 -0
- package/dist/components/forms/Field/Field.js +34 -0
- package/dist/components/forms/Field/Field.js.map +1 -0
- package/dist/components/forms/Field/Field.module.css.cjs +2 -0
- package/dist/components/forms/Field/Field.module.css.cjs.map +1 -0
- package/dist/components/forms/Field/Field.module.css.js +16 -0
- package/dist/components/forms/Field/Field.module.css.js.map +1 -0
- package/dist/components/forms/Field/FormValue.cjs +2 -0
- package/dist/components/forms/Field/FormValue.cjs.map +1 -0
- package/dist/components/forms/Field/FormValue.js +24 -0
- package/dist/components/forms/Field/FormValue.js.map +1 -0
- package/dist/components/forms/InputCurrency/InputCurrency.cjs +2 -0
- package/dist/components/forms/InputCurrency/InputCurrency.cjs.map +1 -0
- package/dist/components/forms/InputCurrency/InputCurrency.js +41 -0
- package/dist/components/forms/InputCurrency/InputCurrency.js.map +1 -0
- package/dist/components/forms/InputNumber/InputNumber.cjs +2 -0
- package/dist/components/forms/InputNumber/InputNumber.cjs.map +1 -0
- package/dist/components/forms/InputNumber/InputNumber.js +39 -0
- package/dist/components/forms/InputNumber/InputNumber.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.cjs +2 -0
- package/dist/components/forms/InputPassword/InputPassword.cjs.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.js +110 -0
- package/dist/components/forms/InputPassword/InputPassword.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +2 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.js +18 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.js.map +1 -0
- package/dist/components/forms/InputText/InputText.cjs +2 -0
- package/dist/components/forms/InputText/InputText.cjs.map +1 -0
- package/dist/components/forms/InputText/InputText.js +62 -0
- package/dist/components/forms/InputText/InputText.js.map +1 -0
- package/dist/components/forms/InputText/InputText.module.css.cjs +2 -0
- package/dist/components/forms/InputText/InputText.module.css.cjs.map +1 -0
- package/dist/components/forms/InputText/InputText.module.css.js +14 -0
- package/dist/components/forms/InputText/InputText.module.css.js.map +1 -0
- package/dist/components/forms/Label/Label.cjs +2 -0
- package/dist/components/forms/Label/Label.cjs.map +1 -0
- package/dist/components/forms/Label/Label.js +13 -0
- package/dist/components/forms/Label/Label.js.map +1 -0
- package/dist/components/forms/Label/Label.module.css.cjs +2 -0
- package/dist/components/forms/Label/Label.module.css.cjs.map +1 -0
- package/dist/components/forms/Label/Label.module.css.js +10 -0
- package/dist/components/forms/Label/Label.module.css.js.map +1 -0
- package/dist/components/forms/RadioGroup/Radio.cjs +2 -0
- package/dist/components/forms/RadioGroup/Radio.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/Radio.js +43 -0
- package/dist/components/forms/RadioGroup/Radio.js.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.cjs +2 -0
- package/dist/components/forms/RadioGroup/RadioGroup.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.js +58 -0
- package/dist/components/forms/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +2 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +26 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js.map +1 -0
- package/dist/components/forms/Select/Select.cjs +2 -0
- package/dist/components/forms/Select/Select.cjs.map +1 -0
- package/dist/components/forms/Select/Select.js +191 -0
- package/dist/components/forms/Select/Select.js.map +1 -0
- package/dist/components/forms/Select/Select.module.css.cjs +2 -0
- package/dist/components/forms/Select/Select.module.css.cjs.map +1 -0
- package/dist/components/forms/Select/Select.module.css.js +22 -0
- package/dist/components/forms/Select/Select.module.css.js.map +1 -0
- package/dist/components/forms/Switch/Switch.cjs +2 -0
- package/dist/components/forms/Switch/Switch.cjs.map +1 -0
- package/dist/components/forms/Switch/Switch.js +39 -0
- package/dist/components/forms/Switch/Switch.js.map +1 -0
- package/dist/components/forms/Switch/Switch.module.css.cjs +2 -0
- package/dist/components/forms/Switch/Switch.module.css.cjs.map +1 -0
- package/dist/components/forms/Switch/Switch.module.css.js +20 -0
- package/dist/components/forms/Switch/Switch.module.css.js.map +1 -0
- package/dist/components/forms/Textarea/Textarea.cjs +2 -0
- package/dist/components/forms/Textarea/Textarea.cjs.map +1 -0
- package/dist/components/forms/Textarea/Textarea.js +64 -0
- package/dist/components/forms/Textarea/Textarea.js.map +1 -0
- package/dist/components/forms/Textarea/Textarea.module.css.cjs +2 -0
- package/dist/components/forms/Textarea/Textarea.module.css.cjs.map +1 -0
- package/dist/components/forms/Textarea/Textarea.module.css.js +14 -0
- package/dist/components/forms/Textarea/Textarea.module.css.js.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.cjs +2 -0
- package/dist/components/forms/TimePicker/TimePicker.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.js +176 -0
- package/dist/components/forms/TimePicker/TimePicker.js.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.cjs +2 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.js +26 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.js.map +1 -0
- package/dist/components/forms/TimePicker/TimeSlots.cjs +2 -0
- package/dist/components/forms/TimePicker/TimeSlots.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimeSlots.js +81 -0
- package/dist/components/forms/TimePicker/TimeSlots.js.map +1 -0
- package/dist/components/icons/Icon.cjs +2 -0
- package/dist/components/icons/Icon.cjs.map +1 -0
- package/dist/components/icons/Icon.js +24 -0
- package/dist/components/icons/Icon.js.map +1 -0
- package/dist/components/icons/icons.cjs +2 -0
- package/dist/components/icons/icons.cjs.map +1 -0
- package/dist/components/icons/icons.js +116 -0
- package/dist/components/icons/icons.js.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs +2 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.js +22 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs +2 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js +16 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.cjs +2 -0
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.js +70 -0
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs +2 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.cjs +2 -0
- package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.js +96 -0
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs +2 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.js +20 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs +2 -0
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.js +64 -0
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.cjs +2 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.cjs.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.js +36 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.cjs +2 -0
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -0
- package/dist/components/overlays/Menu/Menu.js +137 -0
- package/dist/components/overlays/Menu/Menu.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.module.css.cjs +2 -0
- package/dist/components/overlays/Menu/Menu.module.css.cjs.map +1 -0
- package/dist/components/overlays/Menu/Menu.module.css.js +10 -0
- package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -0
- package/dist/components/overlays/Popover/Popover.cjs +2 -0
- package/dist/components/overlays/Popover/Popover.cjs.map +1 -0
- package/dist/components/overlays/Popover/Popover.js +59 -0
- package/dist/components/overlays/Popover/Popover.js.map +1 -0
- package/dist/components/overlays/Popover/Popover.module.css.cjs +2 -0
- package/dist/components/overlays/Popover/Popover.module.css.cjs.map +1 -0
- package/dist/components/overlays/Popover/Popover.module.css.js +8 -0
- package/dist/components/overlays/Popover/Popover.module.css.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.js +84 -0
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.js +8 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.js.map +1 -0
- package/dist/design-system.css +1 -1
- package/dist/hooks/useCalendar/calendar.cjs +2 -0
- package/dist/hooks/useCalendar/calendar.cjs.map +1 -0
- package/dist/hooks/useCalendar/calendar.js +56 -0
- package/dist/hooks/useCalendar/calendar.js.map +1 -0
- package/dist/hooks/useCalendar/useCalendar.cjs +2 -0
- package/dist/hooks/useCalendar/useCalendar.cjs.map +1 -0
- package/dist/hooks/useCalendar/useCalendar.js +48 -0
- package/dist/hooks/useCalendar/useCalendar.js.map +1 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.cjs +2 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.cjs.map +1 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.js +27 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.js.map +1 -0
- package/dist/hooks/useDecimalInput.cjs +2 -0
- package/dist/hooks/useDecimalInput.cjs.map +1 -0
- package/dist/hooks/useDecimalInput.js +17 -0
- package/dist/hooks/useDecimalInput.js.map +1 -0
- package/dist/hooks/useFormReset.cjs +2 -0
- package/dist/hooks/useFormReset.cjs.map +1 -0
- package/dist/hooks/useFormReset.js +16 -0
- package/dist/hooks/useFormReset.js.map +1 -0
- package/dist/hooks/useMergedRefs.cjs +2 -0
- package/dist/hooks/useMergedRefs.cjs.map +1 -0
- package/dist/hooks/useMergedRefs.js +24 -0
- package/dist/hooks/useMergedRefs.js.map +1 -0
- package/dist/hooks/useSelection/selection.cjs +2 -0
- package/dist/hooks/useSelection/selection.cjs.map +1 -0
- package/dist/hooks/useSelection/selection.js +78 -0
- package/dist/hooks/useSelection/selection.js.map +1 -0
- package/dist/hooks/useSelection/useSelection.cjs +2 -0
- package/dist/hooks/useSelection/useSelection.cjs.map +1 -0
- package/dist/hooks/useSelection/useSelection.js +68 -0
- package/dist/hooks/useSelection/useSelection.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +131 -0
- package/dist/index.js.map +1 -0
- package/dist/types/components/actions/ButtonIcon/ButtonIcon.d.ts +12 -0
- package/dist/types/components/actions/ButtonIcon/index.d.ts +2 -0
- package/dist/types/components/data-display/CodeBlock/CodeBlock.d.ts +16 -0
- package/dist/types/components/data-display/CodeBlock/index.d.ts +3 -0
- package/dist/types/components/data-display/CodeBlock/syntax.d.ts +15 -0
- package/dist/types/components/data-display/Table/Table.d.ts +5 -3
- package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +14 -0
- package/dist/types/components/feedback/EmptyState/index.d.ts +2 -0
- package/dist/types/components/forms/Checkbox/Checkbox.d.ts +3 -2
- package/dist/types/components/forms/ComboBox/ComboBox.d.ts +15 -4
- package/dist/types/components/forms/ComboBox/index.d.ts +1 -1
- package/dist/types/components/icons/icons.d.ts +4 -0
- package/dist/types/components/icons/index.d.ts +1 -1
- package/dist/types/components/navigation/Pagination/Pagination.d.ts +3 -1
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +6 -1
- package/dist/types/components/overlays/Dialog/index.d.ts +1 -1
- package/dist/types/index.d.ts +9 -3
- package/dist/utils/formatters/formatarData.cjs +2 -0
- package/dist/utils/formatters/formatarData.cjs.map +1 -0
- package/dist/utils/formatters/formatarData.js +32 -0
- package/dist/utils/formatters/formatarData.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaData.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaData.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaData.js +22 -0
- package/dist/utils/formatters/formatarEntradaData.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaDecimal.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaDecimal.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaDecimal.js +35 -0
- package/dist/utils/formatters/formatarEntradaDecimal.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaHora.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaHora.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaHora.js +32 -0
- package/dist/utils/formatters/formatarEntradaHora.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.js +17 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.js.map +1 -0
- package/dist/utils/formatters/formatarNumero.cjs +2 -0
- package/dist/utils/formatters/formatarNumero.cjs.map +1 -0
- package/dist/utils/formatters/formatarNumero.js +28 -0
- package/dist/utils/formatters/formatarNumero.js.map +1 -0
- package/dist/utils/formatters/mascararPartes.cjs +2 -0
- package/dist/utils/formatters/mascararPartes.cjs.map +1 -0
- package/dist/utils/formatters/mascararPartes.js +17 -0
- package/dist/utils/formatters/mascararPartes.js.map +1 -0
- package/dist/utils/textSearch/textSearch.cjs +2 -0
- package/dist/utils/textSearch/textSearch.cjs.map +1 -0
- package/dist/utils/textSearch/textSearch.js +22 -0
- package/dist/utils/textSearch/textSearch.js.map +1 -0
- package/package.json +5 -5
- package/dist/plenus-design-system.cjs +0 -2
- package/dist/plenus-design-system.cjs.map +0 -1
- package/dist/plenus-design-system.es.js +0 -6297
- package/dist/plenus-design-system.es.js.map +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsxs as N, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback as J, useEffect as P } from "react";
|
|
3
|
+
import { useVirtualWindow as Q } from "./useVirtualWindow.js";
|
|
4
|
+
import i from "./List.module.css.js";
|
|
5
|
+
function x(l, n) {
|
|
6
|
+
return l + "-option-" + n;
|
|
7
|
+
}
|
|
8
|
+
function Z({
|
|
9
|
+
baseId: l,
|
|
10
|
+
className: n,
|
|
11
|
+
elementRef: f,
|
|
12
|
+
empty: y,
|
|
13
|
+
height: v,
|
|
14
|
+
holdsFocus: p = !0,
|
|
15
|
+
label: L,
|
|
16
|
+
listing: M,
|
|
17
|
+
loading: s = !1,
|
|
18
|
+
loadingMessage: g = "Carregando",
|
|
19
|
+
onKeyDown: T,
|
|
20
|
+
onSelect: h,
|
|
21
|
+
style: j,
|
|
22
|
+
tabIndex: W = 0
|
|
23
|
+
}) {
|
|
24
|
+
const { detached: B, focusedKey: o, isSelected: q, select: A, selectionMode: m, visible: t } = M, k = t.findIndex((e) => e.value === o);
|
|
25
|
+
function G(e, a) {
|
|
26
|
+
e.disabled || (A(e, a), h == null || h(e));
|
|
27
|
+
}
|
|
28
|
+
const { active: I, attachScroll: w, measureItem: C, onScroll: E, padding: d, scrollToIndex: D, start: K, end: H } = Q(
|
|
29
|
+
t.length,
|
|
30
|
+
v
|
|
31
|
+
), O = J(
|
|
32
|
+
(e) => {
|
|
33
|
+
w(e), f && (f.current = e);
|
|
34
|
+
},
|
|
35
|
+
[w, f]
|
|
36
|
+
);
|
|
37
|
+
P(() => {
|
|
38
|
+
var a, c;
|
|
39
|
+
const e = t.findIndex((u) => u.value === o);
|
|
40
|
+
o === void 0 || e < 0 || (I ? D(e) : (c = (a = document.getElementById(x(l, e))) == null ? void 0 : a.scrollIntoView) == null || c.call(a, { block: "nearest" }));
|
|
41
|
+
}, [I, l, o, D, t]);
|
|
42
|
+
const V = t.slice(K, H);
|
|
43
|
+
if (m === "none")
|
|
44
|
+
return /* @__PURE__ */ N(
|
|
45
|
+
"ul",
|
|
46
|
+
{
|
|
47
|
+
"aria-busy": s || void 0,
|
|
48
|
+
className: [i.options, n].filter(Boolean).join(" "),
|
|
49
|
+
id: l + "-options",
|
|
50
|
+
onScroll: E,
|
|
51
|
+
ref: O,
|
|
52
|
+
style: { height: v, ...j },
|
|
53
|
+
children: [
|
|
54
|
+
s && /* @__PURE__ */ r("li", { className: i.status, children: g }),
|
|
55
|
+
/* @__PURE__ */ r("li", { "aria-hidden": "true", className: i.spacer, style: { height: d.before } }),
|
|
56
|
+
V.map((e, a) => /* @__PURE__ */ r("li", { className: i.option, ref: a === 0 ? C : void 0, children: e.label }, e.value)),
|
|
57
|
+
/* @__PURE__ */ r("li", { "aria-hidden": "true", className: i.spacer, style: { height: d.after } }),
|
|
58
|
+
!s && t.length === 0 && y
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
function z(e, a, c) {
|
|
63
|
+
const u = q(e.value);
|
|
64
|
+
return /* @__PURE__ */ N(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
"aria-disabled": e.disabled || void 0,
|
|
68
|
+
"aria-posinset": a > 0 ? a : void 0,
|
|
69
|
+
"aria-selected": u,
|
|
70
|
+
"aria-setsize": a > 0 ? t.length : void 0,
|
|
71
|
+
className: [i.option, o === e.value && i.focused, e.disabled && i.disabled].filter(Boolean).join(" "),
|
|
72
|
+
id: a > 0 ? x(l, a - 1) : void 0,
|
|
73
|
+
onClick: (b) => G(e, b.shiftKey),
|
|
74
|
+
onMouseDown: p ? void 0 : (b) => b.preventDefault(),
|
|
75
|
+
ref: c ? C : void 0,
|
|
76
|
+
role: "option",
|
|
77
|
+
children: [
|
|
78
|
+
m === "multiple" && /* @__PURE__ */ r("span", { "aria-hidden": "true", className: [i.box, u && i.checked].filter(Boolean).join(" ") }),
|
|
79
|
+
e.label
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
e.value
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
return /* @__PURE__ */ N(
|
|
86
|
+
"div",
|
|
87
|
+
{
|
|
88
|
+
"aria-activedescendant": p && k >= 0 ? x(l, k) : void 0,
|
|
89
|
+
"aria-busy": s || void 0,
|
|
90
|
+
"aria-label": L,
|
|
91
|
+
"aria-multiselectable": m === "multiple" || void 0,
|
|
92
|
+
className: [i.options, n].filter(Boolean).join(" "),
|
|
93
|
+
id: l + "-options",
|
|
94
|
+
onKeyDown: T,
|
|
95
|
+
onScroll: E,
|
|
96
|
+
ref: O,
|
|
97
|
+
role: "listbox",
|
|
98
|
+
style: { height: v, ...j },
|
|
99
|
+
tabIndex: p ? W : void 0,
|
|
100
|
+
children: [
|
|
101
|
+
s && /* @__PURE__ */ r("p", { className: i.status, children: g }),
|
|
102
|
+
B.length > 0 && /* @__PURE__ */ r("div", { "aria-label": "Selecionados", className: i.group, role: "group", children: B.map((e) => z(e, 0, !1)) }),
|
|
103
|
+
/* @__PURE__ */ r("div", { "aria-hidden": "true", className: i.spacer, style: { height: d.before } }),
|
|
104
|
+
V.map((e, a) => z(e, K + a + 1, a === 0)),
|
|
105
|
+
/* @__PURE__ */ r("div", { "aria-hidden": "true", className: i.spacer, style: { height: d.after } }),
|
|
106
|
+
!s && t.length === 0 && y
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
Z as ListingOptions,
|
|
113
|
+
x as optionId
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=ListingOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListingOptions.js","sources":["../../../../src/components/data-display/List/ListingOptions.tsx"],"sourcesContent":["import { useCallback, useEffect, type CSSProperties, type KeyboardEvent, type ReactNode, type RefObject } from 'react';\nimport type { Listing, ListingItem } from './useListing';\nimport { useVirtualWindow } from './useVirtualWindow';\nimport styles from './List.module.css';\n\nexport interface ListingOptionsProps {\n baseId: string;\n className?: string;\n elementRef?: RefObject<HTMLElement | null>;\n empty?: ReactNode;\n height?: number;\n label?: string;\n listing: Listing;\n loading?: boolean;\n loadingMessage?: string;\n holdsFocus?: boolean;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onSelect?: (item: ListingItem) => void;\n style?: CSSProperties;\n tabIndex?: number;\n}\n\nexport function optionId(baseId: string, index: number) {\n return baseId + '-option-' + index;\n}\n\nexport function ListingOptions({\n baseId,\n className,\n elementRef,\n empty,\n height,\n holdsFocus = true,\n label,\n listing,\n loading = false,\n loadingMessage = 'Carregando',\n onKeyDown,\n onSelect,\n style,\n tabIndex = 0,\n}: ListingOptionsProps) {\n const { detached, focusedKey, isSelected, select, selectionMode, visible } = listing;\n const activeIndex = visible.findIndex((item) => item.value === focusedKey);\n\n function choose(item: ListingItem, extend: boolean) {\n if (item.disabled) {\n return;\n }\n\n select(item, extend);\n onSelect?.(item);\n }\n const { active, attachScroll, measureItem, onScroll, padding, scrollToIndex, start, end } = useVirtualWindow(\n visible.length,\n height,\n );\n\n const attachElement = useCallback(\n (node: HTMLElement | null) => {\n attachScroll(node);\n\n if (elementRef) {\n elementRef.current = node;\n }\n },\n [attachScroll, elementRef],\n );\n\n useEffect(() => {\n const index = visible.findIndex((item) => item.value === focusedKey);\n\n if (focusedKey === undefined || index < 0) {\n return;\n }\n\n if (active) {\n scrollToIndex(index);\n } else {\n document.getElementById(optionId(baseId, index))?.scrollIntoView?.({ block: 'nearest' });\n }\n }, [active, baseId, focusedKey, scrollToIndex, visible]);\n\n const rendered = visible.slice(start, end);\n\n if (selectionMode === 'none') {\n return (\n <ul\n aria-busy={loading || undefined}\n className={[styles.options, className].filter(Boolean).join(' ')}\n id={baseId + '-options'}\n onScroll={onScroll}\n ref={attachElement}\n style={{ height, ...style }}\n >\n {loading && <li className={styles.status}>{loadingMessage}</li>}\n <li aria-hidden=\"true\" className={styles.spacer} style={{ height: padding.before }} />\n {rendered.map((item, index) => (\n <li className={styles.option} key={item.value} ref={index === 0 ? measureItem : undefined}>\n {item.label}\n </li>\n ))}\n <li aria-hidden=\"true\" className={styles.spacer} style={{ height: padding.after }} />\n {!loading && visible.length === 0 && empty}\n </ul>\n );\n }\n\n function renderOption(item: ListingItem, position: number, measured: boolean) {\n const selected = isSelected(item.value);\n\n return (\n <div\n aria-disabled={item.disabled || undefined}\n aria-posinset={position > 0 ? position : undefined}\n aria-selected={selected}\n aria-setsize={position > 0 ? visible.length : undefined}\n className={[styles.option, focusedKey === item.value && styles.focused, item.disabled && styles.disabled]\n .filter(Boolean)\n .join(' ')}\n id={position > 0 ? optionId(baseId, position - 1) : undefined}\n key={item.value}\n onClick={(event) => choose(item, event.shiftKey)}\n // So segura o foco onde ele esta quando quem o tem e o campo de busca; a lista que detem o foco o recebe.\n onMouseDown={holdsFocus ? undefined : (event) => event.preventDefault()}\n ref={measured ? measureItem : undefined}\n role=\"option\"\n >\n {selectionMode === 'multiple' && (\n <span aria-hidden=\"true\" className={[styles.box, selected && styles.checked].filter(Boolean).join(' ')} />\n )}\n {item.label}\n </div>\n );\n }\n\n return (\n <div\n aria-activedescendant={holdsFocus && activeIndex >= 0 ? optionId(baseId, activeIndex) : undefined}\n aria-busy={loading || undefined}\n aria-label={label}\n aria-multiselectable={selectionMode === 'multiple' || undefined}\n className={[styles.options, className].filter(Boolean).join(' ')}\n id={baseId + '-options'}\n onKeyDown={onKeyDown}\n onScroll={onScroll}\n ref={attachElement}\n role=\"listbox\"\n style={{ height, ...style }}\n tabIndex={holdsFocus ? tabIndex : undefined}\n >\n {loading && <p className={styles.status}>{loadingMessage}</p>}\n {detached.length > 0 && (\n <div aria-label=\"Selecionados\" className={styles.group} role=\"group\">\n {detached.map((item) => renderOption(item, 0, false))}\n </div>\n )}\n <div aria-hidden=\"true\" className={styles.spacer} style={{ height: padding.before }} />\n {rendered.map((item, index) => renderOption(item, start + index + 1, index === 0))}\n <div aria-hidden=\"true\" className={styles.spacer} style={{ height: padding.after }} />\n {!loading && visible.length === 0 && empty}\n </div>\n );\n}\n"],"names":["optionId","baseId","index","ListingOptions","className","elementRef","empty","height","holdsFocus","label","listing","loading","loadingMessage","onKeyDown","onSelect","style","tabIndex","detached","focusedKey","isSelected","select","selectionMode","visible","activeIndex","item","choose","extend","active","attachScroll","measureItem","onScroll","padding","scrollToIndex","start","end","useVirtualWindow","attachElement","useCallback","node","useEffect","_b","_a","rendered","jsxs","styles","jsx","renderOption","position","measured","selected","event"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),v=require("../../../utils/textSearch/textSearch.cjs"),E=require("../../../hooks/useSelection/useSelection.cjs"),L=["Home","End"," "];function w({defaultValue:i,items:n,onSearch:l,onSelectionChange:y,selectionMode:u="none",value:o}){const[r,b]=f.useState(""),c=f.useMemo(()=>l||!r?n:n.filter(e=>v.containsTerm(e.label,r)),[n,l,r]),k=f.useMemo(()=>c.map(e=>({key:e.value,disabled:e.disabled,textValue:e.label})),[c]),a=f.useRef(new Map);for(const e of[...i??[],...o??[]])a.current.has(e.value)||a.current.set(e.value,e);for(const e of n)a.current.set(e.value,e);const m=e=>a.current.get(e)??{value:e,label:""},s=E.useSelection({items:k,mode:u,defaultSelectedKeys:i==null?void 0:i.map(e=>e.value),selectedKeys:o==null?void 0:o.map(e=>e.value),onSelectionChange:e=>y==null?void 0:y([...e].map(m))}),d=(o??s.selectedItems.map(e=>({value:e.key,label:""}))).map(e=>m(e.value)),D=f.useMemo(()=>{if(!r||u!=="multiple")return[];const e=new Set(c.map(t=>t.value));return d.filter(t=>!e.has(t.value))},[d,u,r,c]);function g(e){if(u==="none"||e.target instanceof HTMLInputElement&&L.includes(e.key))return;const t=e.shiftKey;if(e.key==="ArrowDown")e.preventDefault(),s.focusedKey===void 0?s.focusFirst(t):s.focusNext(t);else if(e.key==="ArrowUp")e.preventDefault(),s.focusPrevious(t);else if(e.key==="Home")e.preventDefault(),s.focusFirst(t);else if(e.key==="End")e.preventDefault(),s.focusLast(t);else if(e.key==="Enter"||e.key===" "){const p=c.find(K=>K.value===s.focusedKey);p&&!p.disabled&&(e.preventDefault(),s.select(p.value))}}return{detached:D,focus:s.focus,focusFirst:s.focusFirst,focusLast:s.focusLast,focusedKey:s.focusedKey,handleKeyDown:g,isSelected:e=>d.some(t=>t.value===e),filter:e=>{b(e),s.focus(void 0),l==null||l(e)},reset:s.reset,typeahead:s.search,select:(e,t)=>{if(!e.disabled){if(t&&u==="multiple"){s.selectRange(e.value);return}s.select(e.value)}},selected:d,selectionMode:u,status:s.status,toggleAll:s.toggleAll,term:r,visible:c}}exports.useListing=w;
|
|
2
|
+
//# sourceMappingURL=useListing.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListing.cjs","sources":["../../../../src/components/data-display/List/useListing.ts"],"sourcesContent":["import { useMemo, useRef, useState, type KeyboardEvent } from 'react';\nimport { useSelection, type SelectionItem, type SelectionStatus } from '../../../hooks/useSelection';\nimport { containsTerm } from '../../../utils/textSearch';\n\nexport type ListingSelectionMode = 'none' | 'single' | 'multiple';\n\nexport interface ListingItem {\n disabled?: boolean;\n label: string;\n value: string;\n}\n\nexport interface UseListingOptions {\n defaultValue?: readonly ListingItem[];\n items: readonly ListingItem[];\n onSearch?: (term: string) => void;\n onSelectionChange?: (items: readonly ListingItem[]) => void;\n selectionMode?: ListingSelectionMode;\n value?: readonly ListingItem[];\n}\n\nexport interface Listing {\n detached: readonly ListingItem[];\n focus: (value?: string) => void;\n focusFirst: () => void;\n focusLast: () => void;\n focusedKey?: string;\n handleKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n isSelected: (value: string) => boolean;\n filter: (term: string) => void;\n reset: () => void;\n typeahead: (character: string) => void;\n select: (item: ListingItem, extend?: boolean) => void;\n selected: readonly ListingItem[];\n selectionMode: ListingSelectionMode;\n status: SelectionStatus;\n toggleAll: () => void;\n term: string;\n visible: readonly ListingItem[];\n}\n\n/** Teclas que, num campo de texto, editam o texto; nele, a listagem nao as toma para si. */\nconst TECLAS_DE_EDICAO = ['Home', 'End', ' '];\n\nexport function useListing({\n defaultValue,\n items,\n onSearch,\n onSelectionChange,\n selectionMode = 'none',\n value,\n}: UseListingOptions): Listing {\n const [term, setTerm] = useState('');\n\n const visible = useMemo(() => {\n if (onSearch || !term) {\n return items;\n }\n\n return items.filter((item) => containsTerm(item.label, term));\n }, [items, onSearch, term]);\n\n const collection = useMemo<SelectionItem[]>(\n () => visible.map((item) => ({ key: item.value, disabled: item.disabled, textValue: item.label })),\n [visible],\n );\n\n // Toda opcao ja vista fica registrada, inclusive a que so chegou pelo valor. Com busca assincrona, `items`\n // e trocada a cada consulta, e resolver a escolha so contra ela descartava o que veio de outra consulta.\n const conhecidos = useRef(new Map<string, ListingItem>());\n\n for (const item of [...(defaultValue ?? []), ...(value ?? [])]) {\n if (!conhecidos.current.has(item.value)) {\n conhecidos.current.set(item.value, item);\n }\n }\n\n for (const item of items) {\n conhecidos.current.set(item.value, item);\n }\n\n const conhecido = (chave: string): ListingItem => conhecidos.current.get(chave) ?? { value: chave, label: '' };\n\n const selection = useSelection({\n items: collection,\n mode: selectionMode,\n defaultSelectedKeys: defaultValue?.map((item) => item.value),\n selectedKeys: value?.map((item) => item.value),\n onSelectionChange: (keys) => onSelectionChange?.([...keys].map(conhecido)),\n });\n\n const selected = (value ?? selection.selectedItems.map((item) => ({ value: item.key, label: '' }))).map((item) =>\n conhecido(item.value),\n );\n\n const detached = useMemo(() => {\n if (!term || selectionMode !== 'multiple') {\n return [];\n }\n\n const visibleValues = new Set(visible.map((item) => item.value));\n\n return selected.filter((item) => !visibleValues.has(item.value));\n }, [selected, selectionMode, term, visible]);\n\n function handleKeyDown(event: KeyboardEvent<HTMLElement>) {\n if (selectionMode === 'none' || (event.target instanceof HTMLInputElement && TECLAS_DE_EDICAO.includes(event.key))) {\n return;\n }\n\n const estender = event.shiftKey;\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (selection.focusedKey === undefined) {\n selection.focusFirst(estender);\n } else {\n selection.focusNext(estender);\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n selection.focusPrevious(estender);\n } else if (event.key === 'Home') {\n event.preventDefault();\n selection.focusFirst(estender);\n } else if (event.key === 'End') {\n event.preventDefault();\n selection.focusLast(estender);\n } else if (event.key === 'Enter' || event.key === ' ') {\n const focused = visible.find((item) => item.value === selection.focusedKey);\n\n if (focused && !focused.disabled) {\n event.preventDefault();\n selection.select(focused.value);\n }\n }\n }\n\n return {\n detached,\n focus: selection.focus,\n focusFirst: selection.focusFirst,\n focusLast: selection.focusLast,\n focusedKey: selection.focusedKey,\n handleKeyDown,\n isSelected: (itemValue) => selected.some((item) => item.value === itemValue),\n filter: (nextTerm) => {\n setTerm(nextTerm);\n selection.focus(undefined);\n onSearch?.(nextTerm);\n },\n reset: selection.reset,\n typeahead: selection.search,\n select: (item, extend) => {\n if (item.disabled) {\n return;\n }\n\n if (extend && selectionMode === 'multiple') {\n selection.selectRange(item.value);\n return;\n }\n\n selection.select(item.value);\n },\n selected,\n selectionMode,\n status: selection.status,\n toggleAll: selection.toggleAll,\n term,\n visible,\n };\n}\n"],"names":["TECLAS_DE_EDICAO","useListing","defaultValue","items","onSearch","onSelectionChange","selectionMode","value","term","setTerm","useState","visible","useMemo","item","containsTerm","collection","conhecidos","useRef","conhecido","chave","selection","useSelection","keys","selected","detached","visibleValues","handleKeyDown","event","estender","focused","itemValue","nextTerm","extend"],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { useState as v, useMemo as m, useRef as w } from "react";
|
|
2
|
+
import { containsTerm as A } from "../../../utils/textSearch/textSearch.js";
|
|
3
|
+
import { useSelection as L } from "../../../hooks/useSelection/useSelection.js";
|
|
4
|
+
const g = ["Home", "End", " "];
|
|
5
|
+
function T({
|
|
6
|
+
defaultValue: c,
|
|
7
|
+
items: i,
|
|
8
|
+
onSearch: o,
|
|
9
|
+
onSelectionChange: d,
|
|
10
|
+
selectionMode: r = "none",
|
|
11
|
+
value: f
|
|
12
|
+
}) {
|
|
13
|
+
const [u, b] = v(""), l = m(() => o || !u ? i : i.filter((e) => A(e.label, u)), [i, o, u]), k = m(
|
|
14
|
+
() => l.map((e) => ({ key: e.value, disabled: e.disabled, textValue: e.label })),
|
|
15
|
+
[l]
|
|
16
|
+
), a = w(/* @__PURE__ */ new Map());
|
|
17
|
+
for (const e of [...c ?? [], ...f ?? []])
|
|
18
|
+
a.current.has(e.value) || a.current.set(e.value, e);
|
|
19
|
+
for (const e of i)
|
|
20
|
+
a.current.set(e.value, e);
|
|
21
|
+
const y = (e) => a.current.get(e) ?? { value: e, label: "" }, s = L({
|
|
22
|
+
items: k,
|
|
23
|
+
mode: r,
|
|
24
|
+
defaultSelectedKeys: c == null ? void 0 : c.map((e) => e.value),
|
|
25
|
+
selectedKeys: f == null ? void 0 : f.map((e) => e.value),
|
|
26
|
+
onSelectionChange: (e) => d == null ? void 0 : d([...e].map(y))
|
|
27
|
+
}), n = (f ?? s.selectedItems.map((e) => ({ value: e.key, label: "" }))).map(
|
|
28
|
+
(e) => y(e.value)
|
|
29
|
+
), D = m(() => {
|
|
30
|
+
if (!u || r !== "multiple")
|
|
31
|
+
return [];
|
|
32
|
+
const e = new Set(l.map((t) => t.value));
|
|
33
|
+
return n.filter((t) => !e.has(t.value));
|
|
34
|
+
}, [n, r, u, l]);
|
|
35
|
+
function K(e) {
|
|
36
|
+
if (r === "none" || e.target instanceof HTMLInputElement && g.includes(e.key))
|
|
37
|
+
return;
|
|
38
|
+
const t = e.shiftKey;
|
|
39
|
+
if (e.key === "ArrowDown")
|
|
40
|
+
e.preventDefault(), s.focusedKey === void 0 ? s.focusFirst(t) : s.focusNext(t);
|
|
41
|
+
else if (e.key === "ArrowUp")
|
|
42
|
+
e.preventDefault(), s.focusPrevious(t);
|
|
43
|
+
else if (e.key === "Home")
|
|
44
|
+
e.preventDefault(), s.focusFirst(t);
|
|
45
|
+
else if (e.key === "End")
|
|
46
|
+
e.preventDefault(), s.focusLast(t);
|
|
47
|
+
else if (e.key === "Enter" || e.key === " ") {
|
|
48
|
+
const p = l.find((E) => E.value === s.focusedKey);
|
|
49
|
+
p && !p.disabled && (e.preventDefault(), s.select(p.value));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
detached: D,
|
|
54
|
+
focus: s.focus,
|
|
55
|
+
focusFirst: s.focusFirst,
|
|
56
|
+
focusLast: s.focusLast,
|
|
57
|
+
focusedKey: s.focusedKey,
|
|
58
|
+
handleKeyDown: K,
|
|
59
|
+
isSelected: (e) => n.some((t) => t.value === e),
|
|
60
|
+
filter: (e) => {
|
|
61
|
+
b(e), s.focus(void 0), o == null || o(e);
|
|
62
|
+
},
|
|
63
|
+
reset: s.reset,
|
|
64
|
+
typeahead: s.search,
|
|
65
|
+
select: (e, t) => {
|
|
66
|
+
if (!e.disabled) {
|
|
67
|
+
if (t && r === "multiple") {
|
|
68
|
+
s.selectRange(e.value);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
s.select(e.value);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
selected: n,
|
|
75
|
+
selectionMode: r,
|
|
76
|
+
status: s.status,
|
|
77
|
+
toggleAll: s.toggleAll,
|
|
78
|
+
term: u,
|
|
79
|
+
visible: l
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
T as useListing
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=useListing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListing.js","sources":["../../../../src/components/data-display/List/useListing.ts"],"sourcesContent":["import { useMemo, useRef, useState, type KeyboardEvent } from 'react';\nimport { useSelection, type SelectionItem, type SelectionStatus } from '../../../hooks/useSelection';\nimport { containsTerm } from '../../../utils/textSearch';\n\nexport type ListingSelectionMode = 'none' | 'single' | 'multiple';\n\nexport interface ListingItem {\n disabled?: boolean;\n label: string;\n value: string;\n}\n\nexport interface UseListingOptions {\n defaultValue?: readonly ListingItem[];\n items: readonly ListingItem[];\n onSearch?: (term: string) => void;\n onSelectionChange?: (items: readonly ListingItem[]) => void;\n selectionMode?: ListingSelectionMode;\n value?: readonly ListingItem[];\n}\n\nexport interface Listing {\n detached: readonly ListingItem[];\n focus: (value?: string) => void;\n focusFirst: () => void;\n focusLast: () => void;\n focusedKey?: string;\n handleKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n isSelected: (value: string) => boolean;\n filter: (term: string) => void;\n reset: () => void;\n typeahead: (character: string) => void;\n select: (item: ListingItem, extend?: boolean) => void;\n selected: readonly ListingItem[];\n selectionMode: ListingSelectionMode;\n status: SelectionStatus;\n toggleAll: () => void;\n term: string;\n visible: readonly ListingItem[];\n}\n\n/** Teclas que, num campo de texto, editam o texto; nele, a listagem nao as toma para si. */\nconst TECLAS_DE_EDICAO = ['Home', 'End', ' '];\n\nexport function useListing({\n defaultValue,\n items,\n onSearch,\n onSelectionChange,\n selectionMode = 'none',\n value,\n}: UseListingOptions): Listing {\n const [term, setTerm] = useState('');\n\n const visible = useMemo(() => {\n if (onSearch || !term) {\n return items;\n }\n\n return items.filter((item) => containsTerm(item.label, term));\n }, [items, onSearch, term]);\n\n const collection = useMemo<SelectionItem[]>(\n () => visible.map((item) => ({ key: item.value, disabled: item.disabled, textValue: item.label })),\n [visible],\n );\n\n // Toda opcao ja vista fica registrada, inclusive a que so chegou pelo valor. Com busca assincrona, `items`\n // e trocada a cada consulta, e resolver a escolha so contra ela descartava o que veio de outra consulta.\n const conhecidos = useRef(new Map<string, ListingItem>());\n\n for (const item of [...(defaultValue ?? []), ...(value ?? [])]) {\n if (!conhecidos.current.has(item.value)) {\n conhecidos.current.set(item.value, item);\n }\n }\n\n for (const item of items) {\n conhecidos.current.set(item.value, item);\n }\n\n const conhecido = (chave: string): ListingItem => conhecidos.current.get(chave) ?? { value: chave, label: '' };\n\n const selection = useSelection({\n items: collection,\n mode: selectionMode,\n defaultSelectedKeys: defaultValue?.map((item) => item.value),\n selectedKeys: value?.map((item) => item.value),\n onSelectionChange: (keys) => onSelectionChange?.([...keys].map(conhecido)),\n });\n\n const selected = (value ?? selection.selectedItems.map((item) => ({ value: item.key, label: '' }))).map((item) =>\n conhecido(item.value),\n );\n\n const detached = useMemo(() => {\n if (!term || selectionMode !== 'multiple') {\n return [];\n }\n\n const visibleValues = new Set(visible.map((item) => item.value));\n\n return selected.filter((item) => !visibleValues.has(item.value));\n }, [selected, selectionMode, term, visible]);\n\n function handleKeyDown(event: KeyboardEvent<HTMLElement>) {\n if (selectionMode === 'none' || (event.target instanceof HTMLInputElement && TECLAS_DE_EDICAO.includes(event.key))) {\n return;\n }\n\n const estender = event.shiftKey;\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (selection.focusedKey === undefined) {\n selection.focusFirst(estender);\n } else {\n selection.focusNext(estender);\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n selection.focusPrevious(estender);\n } else if (event.key === 'Home') {\n event.preventDefault();\n selection.focusFirst(estender);\n } else if (event.key === 'End') {\n event.preventDefault();\n selection.focusLast(estender);\n } else if (event.key === 'Enter' || event.key === ' ') {\n const focused = visible.find((item) => item.value === selection.focusedKey);\n\n if (focused && !focused.disabled) {\n event.preventDefault();\n selection.select(focused.value);\n }\n }\n }\n\n return {\n detached,\n focus: selection.focus,\n focusFirst: selection.focusFirst,\n focusLast: selection.focusLast,\n focusedKey: selection.focusedKey,\n handleKeyDown,\n isSelected: (itemValue) => selected.some((item) => item.value === itemValue),\n filter: (nextTerm) => {\n setTerm(nextTerm);\n selection.focus(undefined);\n onSearch?.(nextTerm);\n },\n reset: selection.reset,\n typeahead: selection.search,\n select: (item, extend) => {\n if (item.disabled) {\n return;\n }\n\n if (extend && selectionMode === 'multiple') {\n selection.selectRange(item.value);\n return;\n }\n\n selection.select(item.value);\n },\n selected,\n selectionMode,\n status: selection.status,\n toggleAll: selection.toggleAll,\n term,\n visible,\n };\n}\n"],"names":["TECLAS_DE_EDICAO","useListing","defaultValue","items","onSearch","onSelectionChange","selectionMode","value","term","setTerm","useState","visible","useMemo","item","containsTerm","collection","conhecidos","useRef","conhecido","chave","selection","useSelection","keys","selected","detached","visibleValues","handleKeyDown","event","estender","focused","itemValue","nextTerm","extend"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),I=6,k=24;function M(n){const s=n.nextElementSibling;return s?s.offsetTop-n.offsetTop:n.offsetHeight}function x(n,s){const a=o.useRef(null),l=o.useRef(null),f=o.useRef(0),i=o.useRef(null),[d,b]=o.useState(null),[h,E]=o.useState(0),T=o.useCallback(t=>{if(l.current=t,t){const e=M(t);b(c=>e>0?e:c??0)}},[]),g=o.useCallback(t=>{var e;a.current=t,(e=i.current)==null||e.disconnect(),i.current=null,!(!t||typeof ResizeObserver>"u")&&(i.current=new ResizeObserver(()=>{const c=l.current?M(l.current):0;c>0&&b(c)}),i.current.observe(t))},[]),R=o.useCallback(()=>{var t;E(((t=a.current)==null?void 0:t.scrollTop)??0)},[]),r=d??0,p=s!==void 0&&r>0&&n*r>s,H=s!==void 0&&d===null,S=o.useCallback(t=>{const e=a.current,c=l.current;if(!e||!c||t<0||r<=0)return;const m=c.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop+(t-f.current)*r,C=m+r;m<e.scrollTop?e.scrollTop=m:C>e.scrollTop+e.clientHeight&&(e.scrollTop=C-e.clientHeight)},[r]);if(!p)return f.current=0,{active:p,attachScroll:g,measureItem:T,onScroll:R,padding:{before:0,after:0},scrollToIndex:S,start:0,end:H?Math.min(n,k):n};const P=Math.ceil(s/r),u=Math.max(0,Math.floor(h/r)-I),v=Math.min(n,u+P+I*2);return f.current=u,{active:p,attachScroll:g,measureItem:T,onScroll:R,padding:{before:u*r,after:(n-v)*r},scrollToIndex:S,start:u,end:v}}exports.useVirtualWindow=x;
|
|
2
|
+
//# sourceMappingURL=useVirtualWindow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualWindow.cjs","sources":["../../../../src/components/data-display/List/useVirtualWindow.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nconst OVERSCAN = 6;\n\n/** Quantos itens entram antes da primeira medida: montar dez mil nos para medir um custava o primeiro render. */\nconst PRIMEIRA_JANELA = 24;\n\n/** O passo entre itens inclui o espaco que o container coloca entre eles; so a altura acumulava erro. */\nfunction medirPasso(node: HTMLElement) {\n const proximo = node.nextElementSibling as HTMLElement | null;\n\n return proximo ? proximo.offsetTop - node.offsetTop : node.offsetHeight;\n}\n\nexport function useVirtualWindow(total: number, height?: number) {\n const scrollElement = useRef<HTMLElement | null>(null);\n const firstItem = useRef<HTMLElement | null>(null);\n const firstIndex = useRef(0);\n const observer = useRef<ResizeObserver | null>(null);\n // `null` e \"ainda nao medido\"; zero e \"sem layout\", como no jsdom ou na lista montada escondida.\n const [itemHeight, setItemHeight] = useState<number | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n\n const measureItem = useCallback((node: HTMLElement | null) => {\n firstItem.current = node;\n\n if (node) {\n const passo = medirPasso(node);\n setItemHeight((current) => (passo > 0 ? passo : (current ?? 0)));\n }\n }, []);\n\n const attachScroll = useCallback((node: HTMLElement | null) => {\n scrollElement.current = node;\n observer.current?.disconnect();\n observer.current = null;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n // Montada escondida, a lista mede zero; quando aparece, o tamanho muda e ela mede de novo.\n observer.current = new ResizeObserver(() => {\n const passo = firstItem.current ? medirPasso(firstItem.current) : 0;\n\n if (passo > 0) {\n setItemHeight(passo);\n }\n });\n observer.current.observe(node);\n }, []);\n\n const onScroll = useCallback(() => {\n setScrollTop(scrollElement.current?.scrollTop ?? 0);\n }, []);\n\n const passo = itemHeight ?? 0;\n const active = height !== undefined && passo > 0 && total * passo > height;\n const medindo = height !== undefined && itemHeight === null;\n\n const scrollToIndex = useCallback(\n (index: number) => {\n const element = scrollElement.current;\n const primeiro = firstItem.current;\n\n if (!element || !primeiro || index < 0 || passo <= 0) {\n return;\n }\n\n // A conta parte do primeiro item montado, e nao do topo: antes dele pode haver o grupo de selecionados.\n const topoDoPrimeiro = primeiro.getBoundingClientRect().top - element.getBoundingClientRect().top + element.scrollTop;\n const top = topoDoPrimeiro + (index - firstIndex.current) * passo;\n const bottom = top + passo;\n\n if (top < element.scrollTop) {\n element.scrollTop = top;\n } else if (bottom > element.scrollTop + element.clientHeight) {\n element.scrollTop = bottom - element.clientHeight;\n }\n },\n [passo],\n );\n\n if (!active) {\n firstIndex.current = 0;\n\n return {\n active,\n attachScroll,\n measureItem,\n onScroll,\n padding: { before: 0, after: 0 },\n scrollToIndex,\n start: 0,\n end: medindo ? Math.min(total, PRIMEIRA_JANELA) : total,\n };\n }\n\n const perScreen = Math.ceil(height / passo);\n const start = Math.max(0, Math.floor(scrollTop / passo) - OVERSCAN);\n const end = Math.min(total, start + perScreen + OVERSCAN * 2);\n\n firstIndex.current = start;\n\n return {\n active,\n attachScroll,\n measureItem,\n onScroll,\n padding: { before: start * passo, after: (total - end) * passo },\n scrollToIndex,\n start,\n end,\n };\n}\n"],"names":["OVERSCAN","PRIMEIRA_JANELA","medirPasso","node","proximo","useVirtualWindow","total","height","scrollElement","useRef","firstItem","firstIndex","observer","itemHeight","setItemHeight","useState","scrollTop","setScrollTop","measureItem","useCallback","passo","current","attachScroll","_a","onScroll","active","medindo","scrollToIndex","index","element","primeiro","top","bottom","perScreen","start","end"],"mappings":"yGAEMA,EAAW,EAGXC,EAAkB,GAGxB,SAASC,EAAWC,EAAmB,CACrC,MAAMC,EAAUD,EAAK,mBAErB,OAAOC,EAAUA,EAAQ,UAAYD,EAAK,UAAYA,EAAK,YAC7D,CAEO,SAASE,EAAiBC,EAAeC,EAAiB,CAC/D,MAAMC,EAAgBC,EAAAA,OAA2B,IAAI,EAC/CC,EAAYD,EAAAA,OAA2B,IAAI,EAC3CE,EAAaF,EAAAA,OAAO,CAAC,EACrBG,EAAWH,EAAAA,OAA8B,IAAI,EAE7C,CAACI,EAAYC,CAAa,EAAIC,EAAAA,SAAwB,IAAI,EAC1D,CAACC,EAAWC,CAAY,EAAIF,EAAAA,SAAS,CAAC,EAEtCG,EAAcC,cAAahB,GAA6B,CAG5D,GAFAO,EAAU,QAAUP,EAEhBA,EAAM,CACR,MAAMiB,EAAQlB,EAAWC,CAAI,EAC7BW,EAAeO,GAAaD,EAAQ,EAAIA,EAASC,GAAW,CAAG,CACjE,CACF,EAAG,CAAA,CAAE,EAECC,EAAeH,cAAahB,GAA6B,OAC7DK,EAAc,QAAUL,GACxBoB,EAAAX,EAAS,UAAT,MAAAW,EAAkB,aAClBX,EAAS,QAAU,KAEf,GAACT,GAAQ,OAAO,eAAmB,OAKvCS,EAAS,QAAU,IAAI,eAAe,IAAM,CAC1C,MAAMQ,EAAQV,EAAU,QAAUR,EAAWQ,EAAU,OAAO,EAAI,EAE9DU,EAAQ,GACVN,EAAcM,CAAK,CAEvB,CAAC,EACDR,EAAS,QAAQ,QAAQT,CAAI,EAC/B,EAAG,CAAA,CAAE,EAECqB,EAAWL,EAAAA,YAAY,IAAM,OACjCF,IAAaM,EAAAf,EAAc,UAAd,YAAAe,EAAuB,YAAa,CAAC,CACpD,EAAG,CAAA,CAAE,EAECH,EAAQP,GAAc,EACtBY,EAASlB,IAAW,QAAaa,EAAQ,GAAKd,EAAQc,EAAQb,EAC9DmB,EAAUnB,IAAW,QAAaM,IAAe,KAEjDc,EAAgBR,EAAAA,YACnBS,GAAkB,CACjB,MAAMC,EAAUrB,EAAc,QACxBsB,EAAWpB,EAAU,QAE3B,GAAI,CAACmB,GAAW,CAACC,GAAYF,EAAQ,GAAKR,GAAS,EACjD,OAKF,MAAMW,EADiBD,EAAS,wBAAwB,IAAMD,EAAQ,sBAAA,EAAwB,IAAMA,EAAQ,WAC9ED,EAAQjB,EAAW,SAAWS,EACtDY,EAASD,EAAMX,EAEjBW,EAAMF,EAAQ,UAChBA,EAAQ,UAAYE,EACXC,EAASH,EAAQ,UAAYA,EAAQ,eAC9CA,EAAQ,UAAYG,EAASH,EAAQ,aAEzC,EACA,CAACT,CAAK,CAAA,EAGR,GAAI,CAACK,EACH,OAAAd,EAAW,QAAU,EAEd,CACL,OAAAc,EACA,aAAAH,EACA,YAAAJ,EACA,SAAAM,EACA,QAAS,CAAE,OAAQ,EAAG,MAAO,CAAA,EAC7B,cAAAG,EACA,MAAO,EACP,IAAKD,EAAU,KAAK,IAAIpB,EAAOL,CAAe,EAAIK,CAAA,EAItD,MAAM2B,EAAY,KAAK,KAAK1B,EAASa,CAAK,EACpCc,EAAQ,KAAK,IAAI,EAAG,KAAK,MAAMlB,EAAYI,CAAK,EAAIpB,CAAQ,EAC5DmC,EAAM,KAAK,IAAI7B,EAAO4B,EAAQD,EAAYjC,EAAW,CAAC,EAE5D,OAAAW,EAAW,QAAUuB,EAEd,CACL,OAAAT,EACA,aAAAH,EACA,YAAAJ,EACA,SAAAM,EACA,QAAS,CAAE,OAAQU,EAAQd,EAAO,OAAQd,EAAQ6B,GAAOf,CAAA,EACzD,cAAAO,EACA,MAAAO,EACA,IAAAC,CAAA,CAEJ"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useRef as u, useState as h, useCallback as f } from "react";
|
|
2
|
+
const x = 6, O = 24;
|
|
3
|
+
function E(r) {
|
|
4
|
+
const n = r.nextElementSibling;
|
|
5
|
+
return n ? n.offsetTop - r.offsetTop : r.offsetHeight;
|
|
6
|
+
}
|
|
7
|
+
function B(r, n) {
|
|
8
|
+
const p = u(null), s = u(null), a = u(0), l = u(null), [T, b] = h(null), [H, A] = h(0), g = f((e) => {
|
|
9
|
+
if (s.current = e, e) {
|
|
10
|
+
const t = E(e);
|
|
11
|
+
b((c) => t > 0 ? t : c ?? 0);
|
|
12
|
+
}
|
|
13
|
+
}, []), R = f((e) => {
|
|
14
|
+
var t;
|
|
15
|
+
p.current = e, (t = l.current) == null || t.disconnect(), l.current = null, !(!e || typeof ResizeObserver > "u") && (l.current = new ResizeObserver(() => {
|
|
16
|
+
const c = s.current ? E(s.current) : 0;
|
|
17
|
+
c > 0 && b(c);
|
|
18
|
+
}), l.current.observe(e));
|
|
19
|
+
}, []), v = f(() => {
|
|
20
|
+
var e;
|
|
21
|
+
A(((e = p.current) == null ? void 0 : e.scrollTop) ?? 0);
|
|
22
|
+
}, []), o = T ?? 0, m = n !== void 0 && o > 0 && r * o > n, C = n !== void 0 && T === null, I = f(
|
|
23
|
+
(e) => {
|
|
24
|
+
const t = p.current, c = s.current;
|
|
25
|
+
if (!t || !c || e < 0 || o <= 0)
|
|
26
|
+
return;
|
|
27
|
+
const d = c.getBoundingClientRect().top - t.getBoundingClientRect().top + t.scrollTop + (e - a.current) * o, M = d + o;
|
|
28
|
+
d < t.scrollTop ? t.scrollTop = d : M > t.scrollTop + t.clientHeight && (t.scrollTop = M - t.clientHeight);
|
|
29
|
+
},
|
|
30
|
+
[o]
|
|
31
|
+
);
|
|
32
|
+
if (!m)
|
|
33
|
+
return a.current = 0, {
|
|
34
|
+
active: m,
|
|
35
|
+
attachScroll: R,
|
|
36
|
+
measureItem: g,
|
|
37
|
+
onScroll: v,
|
|
38
|
+
padding: { before: 0, after: 0 },
|
|
39
|
+
scrollToIndex: I,
|
|
40
|
+
start: 0,
|
|
41
|
+
end: C ? Math.min(r, O) : r
|
|
42
|
+
};
|
|
43
|
+
const P = Math.ceil(n / o), i = Math.max(0, Math.floor(H / o) - x), S = Math.min(r, i + P + x * 2);
|
|
44
|
+
return a.current = i, {
|
|
45
|
+
active: m,
|
|
46
|
+
attachScroll: R,
|
|
47
|
+
measureItem: g,
|
|
48
|
+
onScroll: v,
|
|
49
|
+
padding: { before: i * o, after: (r - S) * o },
|
|
50
|
+
scrollToIndex: I,
|
|
51
|
+
start: i,
|
|
52
|
+
end: S
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
B as useVirtualWindow
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=useVirtualWindow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualWindow.js","sources":["../../../../src/components/data-display/List/useVirtualWindow.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nconst OVERSCAN = 6;\n\n/** Quantos itens entram antes da primeira medida: montar dez mil nos para medir um custava o primeiro render. */\nconst PRIMEIRA_JANELA = 24;\n\n/** O passo entre itens inclui o espaco que o container coloca entre eles; so a altura acumulava erro. */\nfunction medirPasso(node: HTMLElement) {\n const proximo = node.nextElementSibling as HTMLElement | null;\n\n return proximo ? proximo.offsetTop - node.offsetTop : node.offsetHeight;\n}\n\nexport function useVirtualWindow(total: number, height?: number) {\n const scrollElement = useRef<HTMLElement | null>(null);\n const firstItem = useRef<HTMLElement | null>(null);\n const firstIndex = useRef(0);\n const observer = useRef<ResizeObserver | null>(null);\n // `null` e \"ainda nao medido\"; zero e \"sem layout\", como no jsdom ou na lista montada escondida.\n const [itemHeight, setItemHeight] = useState<number | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n\n const measureItem = useCallback((node: HTMLElement | null) => {\n firstItem.current = node;\n\n if (node) {\n const passo = medirPasso(node);\n setItemHeight((current) => (passo > 0 ? passo : (current ?? 0)));\n }\n }, []);\n\n const attachScroll = useCallback((node: HTMLElement | null) => {\n scrollElement.current = node;\n observer.current?.disconnect();\n observer.current = null;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n // Montada escondida, a lista mede zero; quando aparece, o tamanho muda e ela mede de novo.\n observer.current = new ResizeObserver(() => {\n const passo = firstItem.current ? medirPasso(firstItem.current) : 0;\n\n if (passo > 0) {\n setItemHeight(passo);\n }\n });\n observer.current.observe(node);\n }, []);\n\n const onScroll = useCallback(() => {\n setScrollTop(scrollElement.current?.scrollTop ?? 0);\n }, []);\n\n const passo = itemHeight ?? 0;\n const active = height !== undefined && passo > 0 && total * passo > height;\n const medindo = height !== undefined && itemHeight === null;\n\n const scrollToIndex = useCallback(\n (index: number) => {\n const element = scrollElement.current;\n const primeiro = firstItem.current;\n\n if (!element || !primeiro || index < 0 || passo <= 0) {\n return;\n }\n\n // A conta parte do primeiro item montado, e nao do topo: antes dele pode haver o grupo de selecionados.\n const topoDoPrimeiro = primeiro.getBoundingClientRect().top - element.getBoundingClientRect().top + element.scrollTop;\n const top = topoDoPrimeiro + (index - firstIndex.current) * passo;\n const bottom = top + passo;\n\n if (top < element.scrollTop) {\n element.scrollTop = top;\n } else if (bottom > element.scrollTop + element.clientHeight) {\n element.scrollTop = bottom - element.clientHeight;\n }\n },\n [passo],\n );\n\n if (!active) {\n firstIndex.current = 0;\n\n return {\n active,\n attachScroll,\n measureItem,\n onScroll,\n padding: { before: 0, after: 0 },\n scrollToIndex,\n start: 0,\n end: medindo ? Math.min(total, PRIMEIRA_JANELA) : total,\n };\n }\n\n const perScreen = Math.ceil(height / passo);\n const start = Math.max(0, Math.floor(scrollTop / passo) - OVERSCAN);\n const end = Math.min(total, start + perScreen + OVERSCAN * 2);\n\n firstIndex.current = start;\n\n return {\n active,\n attachScroll,\n measureItem,\n onScroll,\n padding: { before: start * passo, after: (total - end) * passo },\n scrollToIndex,\n start,\n end,\n };\n}\n"],"names":["OVERSCAN","PRIMEIRA_JANELA","medirPasso","node","proximo","useVirtualWindow","total","height","scrollElement","useRef","firstItem","firstIndex","observer","itemHeight","setItemHeight","useState","scrollTop","setScrollTop","measureItem","useCallback","passo","current","attachScroll","_a","onScroll","active","medindo","scrollToIndex","index","element","primeiro","top","bottom","perScreen","start","end"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("react"),ee=require("../../../hooks/useMergedRefs.cjs"),e=require("./Table.module.css.cjs"),te=require("../../../hooks/useSelection/useSelection.cjs"),k=require("../../icons/icons.cjs"),se=require("../../feedback/EmptyState/EmptyState.cjs"),le=require("../../overlays/Tooltip/Tooltip.cjs"),_=r.createContext(void 0),R=r.createContext(void 0);function L(i){return r.Children.toArray(i).map((a,l)=>t.jsx(R.Provider,{value:l,children:a},r.isValidElement(a)&&a.key!==null?a.key:l))}function B(i,a,l){const c=[...i];return c[a]=l,c}function S(i){const a=r.useContext(_);if(!a)throw new Error(i+" deve ser usado dentro de Table.");return a}function C({children:i,className:a,defaultSelectedIds:l,defaultSort:c,divider:f=!0,highlightSelectedRow:n=!0,label:o,loading:m=!1,loadingMessage:x="Carregando",onSelectionChange:b,onSortChange:g,rows:h=[],selectedIds:d,selectionControl:p,selectionMode:j="none",size:v="md",sort:E,stickyHeader:w=!1,striped:z=!1,ref:K,...O}){const H=r.useId(),[P,W]=r.useState(c),[F,I]=r.useState(()=>new Set),N=E??P,A=p??(j==="single"?"radio":"checkbox"),[M,D]=r.useState(!0),Q=r.useCallback(s=>{if(!s||typeof ResizeObserver>"u")return;const u=new ResizeObserver(()=>D(s.scrollWidth>s.clientWidth||s.scrollHeight>s.clientHeight));return u.observe(s),s.firstElementChild&&u.observe(s.firstElementChild),()=>u.disconnect()},[]),U=ee.useMergedRefs(w?Q:void 0,K),V=r.useCallback(s=>(I(u=>new Set(u).add(s)),()=>I(u=>{const y=new Set(u);return y.delete(s),y})),[]),[$,q]=r.useState([]),G=r.useCallback((s,u)=>(q(y=>B(y,s,u)),()=>q(y=>B(y,s,void 0))),[]);function J(s){const u={column:s,direction:(N==null?void 0:N.column)===s&&N.direction==="ascending"?"descending":"ascending"};E===void 0&&W(u),g==null||g(u)}const X=r.useMemo(()=>h.map(s=>({key:s.id,disabled:s.disabled})),[h]),T=te.useSelection({allowEmpty:A!=="radio",defaultSelectedKeys:l,items:X,mode:j,selectedKeys:d,onSelectionChange:s=>b==null?void 0:b([...s])}),Y={baseId:H,columnAt:s=>$[s],countColumns:()=>Math.max(F.size,1),loading:m,registerColumn:V,registerLayout:G,requestSort:J,selection:{control:A,empty:h.length===0,highlight:n,isSelected:s=>T.selectedKeys.has(s),mode:j,status:T.status,toggle:(s,u)=>{if(u&&j==="multiple"){T.selectRange(s);return}T.select(s)},toggleAll:T.toggleAll},size:v,sort:N},Z=[e.default.table,e.default[v],f&&e.default.divider,z&&e.default.striped,w&&e.default.sticky].filter(Boolean).join(" ");return t.jsxs("div",{...O,className:[e.default.scroll,w&&!M&&e.default.noScroll,a].filter(Boolean).join(" "),ref:U,children:[t.jsx("table",{"aria-busy":m||void 0,"aria-label":o,className:Z,children:t.jsx(_.Provider,{value:Y,children:i})}),m&&t.jsx("p",{className:e.default.status,role:"status",children:x})]})}function ae({children:i}){const{registerColumn:a,selection:l}=S("Table.Header");return r.useEffect(()=>l.mode==="none"?void 0:a("__selecao__"),[a,l.mode]),t.jsx("thead",{className:e.default.head,children:t.jsxs("tr",{children:[l.mode==="multiple"&&t.jsx("th",{className:[e.default.column,e.default.lead].join(" "),scope:"col",children:t.jsx("input",{"aria-label":"Selecionar todas as linhas",checked:l.status==="all",className:e.default.checkbox,disabled:l.empty,onChange:l.toggleAll,ref:c=>{c&&(c.indeterminate=l.status==="partial")},type:"checkbox"})}),l.mode==="single"&&t.jsx("th",{className:[e.default.column,e.default.lead].join(" "),scope:"col"}),L(i)]})})}function ne({align:i,children:a,help:l,hideBelow:c,id:f,numeric:n=!1,sortable:o=!1,width:m}){const{registerColumn:x,registerLayout:b,requestSort:g,sort:h}=S("Table.Column"),d=r.useContext(R),p=i??(n?"end":"start");r.useEffect(()=>x(f),[f,x]),r.useLayoutEffect(()=>d===void 0?void 0:b(d,{align:p,hideBelow:c,numeric:n}),[p,c,d,n,b]);const j=(h==null?void 0:h.column)===f?h.direction:void 0,v=l&&t.jsx(le.Tooltip,{content:l,children:t.jsx("span",{"aria-label":l,className:e.default.help,role:"img",tabIndex:0,children:t.jsx(k.IconQuestionCircle,{size:14})})});return t.jsx("th",{"aria-sort":o?j??"none":void 0,className:[e.default.column,e.default[p],o&&e.default.sortable].filter(Boolean).join(" "),"data-hide-below":c,scope:"col",style:{width:m},children:o?t.jsxs("div",{className:e.default.sortHeader,children:[t.jsxs("button",{className:e.default.sortButton,onClick:()=>g(f),type:"button",children:[a,j?t.jsx(k.IconArrowUp,{className:[e.default.sortIcon,j==="descending"&&e.default.sortDescending].filter(Boolean).join(" "),size:12}):t.jsx(k.IconChevronExpand,{className:e.default.sortIcon,size:12})]}),v]}):t.jsxs(t.Fragment,{children:[a,v]})})}const oe=3;function re({children:i,emptyDescription:a="Não há registros para exibir. Se houver busca ou filtros aplicados, experimente ajustá-los.",emptyTitle:l="Nenhum registro encontrado",items:c}){const{columnAt:f,countColumns:n,loading:o,selection:m}=S("Table.Body");if(o){const x=Array.from({length:c.length||oe},(h,d)=>d),b=m.mode==="none"?0:1,g=Array.from({length:n()-b},(h,d)=>f(d));return t.jsx("tbody",{"aria-hidden":"true",children:x.map(h=>t.jsxs("tr",{className:[e.default.row,e.default.skeletonRow].join(" "),children:[b>0&&t.jsx("td",{className:[e.default.cell,e.default.lead].join(" "),children:t.jsx("span",{className:e.default.skeleton})}),g.map((d,p)=>t.jsx("td",{className:[e.default.cell,e.default[(d==null?void 0:d.align)??"start"]].join(" "),"data-hide-below":d==null?void 0:d.hideBelow,children:t.jsx("span",{className:e.default.skeleton})},p))]},h))})}return c.length===0?t.jsx("tbody",{children:t.jsx("tr",{children:t.jsx("td",{className:e.default.empty,colSpan:n(),children:t.jsx(se.EmptyState,{description:a,title:l})})})}):t.jsx("tbody",{children:c.map(x=>t.jsx(r.Fragment,{children:i(x)},x.id))})}function ce({children:i,disabled:a=!1,id:l,label:c}){const{baseId:f,selection:n}=S("Table.Row"),o=n.mode!=="none"&&n.isSelected(l);return t.jsxs("tr",{className:[e.default.row,o&&n.highlight&&e.default.selected].filter(Boolean).join(" "),children:[n.mode!=="none"&&t.jsx("td",{className:[e.default.cell,e.default.lead].join(" "),children:t.jsx("input",{"aria-label":c??"Selecionar linha",checked:o,className:e.default[n.control],disabled:a,name:n.control==="radio"?`${f}-selecao`:void 0,onChange:()=>{},onClick:m=>n.toggle(l,m.shiftKey),role:n.control==="toggle"?"switch":void 0,type:n.control==="radio"?"radio":"checkbox"})}),L(i)]})}function ie({align:i,children:a,hideBelow:l,numeric:c}){const{columnAt:f}=S("Table.Cell"),n=r.useContext(R),o=n===void 0?void 0:f(n),m=c??(o==null?void 0:o.numeric)??!1;return t.jsx("td",{className:[e.default.cell,e.default[i??(o==null?void 0:o.align)??(m?"end":"start")],m&&e.default.numeric].filter(Boolean).join(" "),"data-hide-below":l??(o==null?void 0:o.hideBelow),children:a})}C.Header=ae;C.Column=ne;C.Body=re;C.Row=ce;C.Cell=ie;exports.Table=C;
|
|
2
|
+
//# sourceMappingURL=Table.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.cjs","sources":["../../../../src/components/data-display/Table/Table.tsx"],"sourcesContent":["import {\n Children,\n createContext,\n Fragment,\n isValidElement,\n type ComponentPropsWithRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { Tooltip } from '../../overlays/Tooltip';\nimport styles from './Table.module.css';\nimport { EmptyState } from '../../feedback/EmptyState';\nimport { IconArrowUp, IconChevronExpand, IconQuestionCircle } from '../../icons';\n\nexport type TableSize = 'sm' | 'md';\nexport type TableAlign = 'start' | 'center' | 'end';\nexport type TableBreakpoint = 'sm' | 'md' | 'lg';\nexport type SortDirection = 'ascending' | 'descending';\nexport type TableSelectionMode = 'none' | 'single' | 'multiple';\nexport type TableSelectionControl = 'checkbox' | 'radio' | 'toggle';\n\nexport interface TableRowItem {\n disabled?: boolean;\n id: string;\n}\n\nexport interface TableSort {\n column: string;\n direction: SortDirection;\n}\n\nexport interface TableProps extends ComponentPropsWithRef<'div'> {\n children: ReactNode;\n /** Escolha inicial no modo nao controlado. */\n defaultSelectedIds?: readonly string[];\n defaultSort?: TableSort;\n divider?: boolean;\n label?: string;\n loading?: boolean;\n loadingMessage?: string;\n highlightSelectedRow?: boolean;\n onSelectionChange?: (ids: readonly string[]) => void;\n onSortChange?: (sort: TableSort) => void;\n rows?: readonly TableRowItem[];\n selectedIds?: readonly string[];\n selectionControl?: TableSelectionControl;\n selectionMode?: TableSelectionMode;\n size?: TableSize;\n sort?: TableSort;\n /** Cabecalho colado no topo da rolagem da pagina; com a tabela mais larga ou mais alta que o espaco, no dela. */\n stickyHeader?: boolean;\n striped?: boolean;\n}\n\n/** O que a celula herda da coluna na mesma posicao, quando nao declara o proprio. */\ninterface ColumnLayout {\n align: TableAlign;\n hideBelow?: TableBreakpoint;\n numeric: boolean;\n}\n\ninterface TableContextValue {\n baseId: string;\n columnAt: (index: number) => ColumnLayout | undefined;\n countColumns: () => number;\n loading: boolean;\n registerColumn: (id: string) => () => void;\n registerLayout: (index: number, layout: ColumnLayout) => () => void;\n requestSort: (column: string) => void;\n selection: TableSelection;\n size: TableSize;\n sort?: TableSort;\n}\n\ninterface TableSelection {\n control: TableSelectionControl;\n empty: boolean;\n highlight: boolean;\n isSelected: (id: string) => boolean;\n mode: TableSelectionMode;\n status: 'none' | 'partial' | 'all';\n toggle: (id: string, extend: boolean) => void;\n toggleAll: () => void;\n}\n\nconst TableContext = createContext<TableContextValue | undefined>(undefined);\n\n/** Posicao do filho no cabecalho ou na linha: e por ela que a celula acha a sua coluna. */\nconst ColumnIndexContext = createContext<number | undefined>(undefined);\n\nfunction withColumnIndex(children: ReactNode) {\n return Children.toArray(children).map((child, index) => (\n <ColumnIndexContext.Provider key={isValidElement(child) && child.key !== null ? child.key : index} value={index}>\n {child}\n </ColumnIndexContext.Provider>\n ));\n}\n\nfunction withLayout(\n layouts: readonly (ColumnLayout | undefined)[],\n index: number,\n layout: ColumnLayout | undefined,\n): (ColumnLayout | undefined)[] {\n const next = [...layouts];\n next[index] = layout;\n return next;\n}\n\nfunction useTableContext(part: string) {\n const context = useContext(TableContext);\n\n if (!context) {\n throw new Error(part + ' deve ser usado dentro de Table.');\n }\n\n return context;\n}\n\nexport function Table({\n children,\n className,\n defaultSelectedIds,\n defaultSort,\n divider = true,\n highlightSelectedRow = true,\n label,\n loading = false,\n loadingMessage = 'Carregando',\n onSelectionChange,\n onSortChange,\n rows = [],\n selectedIds,\n selectionControl,\n selectionMode = 'none',\n size = 'md',\n sort,\n stickyHeader = false,\n striped = false,\n ref,\n ...props\n}: TableProps) {\n const baseId = useId();\n const [internalSort, setInternalSort] = useState(defaultSort);\n const [columns, setColumns] = useState<ReadonlySet<string>>(() => new Set());\n const currentSort = sort ?? internalSort;\n const control = selectionControl ?? (selectionMode === 'single' ? 'radio' : 'checkbox');\n\n // Rolar dentro da tabela e colar o cabecalho na rolagem da pagina se excluem em CSS: o envoltorio so\n // continua conteiner de rolagem quando a tabela transborda dele.\n const [precisaRolar, setPrecisaRolar] = useState(true);\n const observarTransbordo = useCallback((envoltorio: HTMLDivElement | null) => {\n if (!envoltorio || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const observador = new ResizeObserver(() =>\n setPrecisaRolar(\n envoltorio.scrollWidth > envoltorio.clientWidth || envoltorio.scrollHeight > envoltorio.clientHeight,\n ),\n );\n\n observador.observe(envoltorio);\n\n if (envoltorio.firstElementChild) {\n observador.observe(envoltorio.firstElementChild);\n }\n\n return () => observador.disconnect();\n }, []);\n const envoltorioRef = useMergedRefs(stickyHeader ? observarTransbordo : undefined, ref);\n\n // A coluna se registra enquanto esta na tela e sai quando sai: registrada para sempre, o vazio ocupava colunas\n // que nao existiam mais.\n const registerColumn = useCallback((id: string) => {\n setColumns((atuais) => new Set(atuais).add(id));\n\n return () =>\n setColumns((atuais) => {\n const restantes = new Set(atuais);\n restantes.delete(id);\n return restantes;\n });\n }, []);\n\n const [layouts, setLayouts] = useState<readonly (ColumnLayout | undefined)[]>([]);\n const registerLayout = useCallback((index: number, layout: ColumnLayout) => {\n setLayouts((atuais) => withLayout(atuais, index, layout));\n\n return () => setLayouts((atuais) => withLayout(atuais, index, undefined));\n }, []);\n\n function requestSort(column: string) {\n const next: TableSort = {\n column,\n direction:\n currentSort?.column === column && currentSort.direction === 'ascending' ? 'descending' : 'ascending',\n };\n\n if (sort === undefined) {\n setInternalSort(next);\n }\n\n onSortChange?.(next);\n }\n\n const collection = useMemo<SelectionItem[]>(\n () => rows.map((row) => ({ key: row.id, disabled: row.disabled })),\n [rows],\n );\n\n const selection = useSelection({\n // Caixa e chave desmarcam ao clicar de novo; o radio, nao.\n allowEmpty: control !== 'radio',\n defaultSelectedKeys: defaultSelectedIds,\n items: collection,\n mode: selectionMode,\n selectedKeys: selectedIds,\n onSelectionChange: (keys) => onSelectionChange?.([...keys]),\n });\n\n const context: TableContextValue = {\n baseId,\n columnAt: (index) => layouts[index],\n countColumns: () => Math.max(columns.size, 1),\n loading,\n registerColumn,\n registerLayout,\n requestSort,\n selection: {\n control,\n empty: rows.length === 0,\n highlight: highlightSelectedRow,\n isSelected: (id) => selection.selectedKeys.has(id),\n mode: selectionMode,\n status: selection.status,\n toggle: (id, extend) => {\n if (extend && selectionMode === 'multiple') {\n selection.selectRange(id);\n return;\n }\n\n selection.select(id);\n },\n toggleAll: selection.toggleAll,\n },\n size,\n sort: currentSort,\n };\n\n const classes = [\n styles.table,\n styles[size],\n divider && styles.divider,\n striped && styles.striped,\n stickyHeader && styles.sticky,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n {...props}\n className={[styles.scroll, stickyHeader && !precisaRolar && styles.noScroll, className].filter(Boolean).join(' ')}\n ref={envoltorioRef}\n >\n <table aria-busy={loading || undefined} aria-label={label} className={classes}>\n <TableContext.Provider value={context}>{children}</TableContext.Provider>\n </table>\n {loading && (\n <p className={styles.status} role=\"status\">\n {loadingMessage}\n </p>\n )}\n </div>\n );\n}\n\nexport interface TableHeaderProps {\n children: ReactNode;\n}\n\nfunction TableHeader({ children }: TableHeaderProps) {\n const { registerColumn, selection } = useTableContext('Table.Header');\n\n useEffect(() => (selection.mode === 'none' ? undefined : registerColumn('__selecao__')), [registerColumn, selection.mode]);\n\n return (\n <thead className={styles.head}>\n <tr>\n {selection.mode === 'multiple' && (\n <th className={[styles.column, styles.lead].join(' ')} scope=\"col\">\n {/* Sem `rows` nao ha o que marcar, e o clique so apagava a escolha que ja havia. */}\n <input\n aria-label=\"Selecionar todas as linhas\"\n checked={selection.status === 'all'}\n className={styles.checkbox}\n disabled={selection.empty}\n onChange={selection.toggleAll}\n ref={(node) => {\n if (node) {\n node.indeterminate = selection.status === 'partial';\n }\n }}\n type=\"checkbox\"\n />\n </th>\n )}\n {selection.mode === 'single' && <th className={[styles.column, styles.lead].join(' ')} scope=\"col\" />}\n {withColumnIndex(children)}\n </tr>\n </thead>\n );\n}\n\nexport interface TableColumnProps {\n align?: TableAlign;\n children: ReactNode;\n help?: string;\n hideBelow?: TableBreakpoint;\n id: string;\n numeric?: boolean;\n sortable?: boolean;\n width?: string;\n}\n\nfunction TableColumn({ align, children, help, hideBelow, id, numeric = false, sortable = false, width }: TableColumnProps) {\n const { registerColumn, registerLayout, requestSort, sort } = useTableContext('Table.Column');\n const index = useContext(ColumnIndexContext);\n const columnAlign = align ?? (numeric ? 'end' : 'start');\n\n useEffect(() => registerColumn(id), [id, registerColumn]);\n\n // Antes da pintura: com efeito comum, a celula aparecia um quadro alinhada a esquerda e so depois ia para o lado\n // da coluna.\n useLayoutEffect(\n () => (index === undefined ? undefined : registerLayout(index, { align: columnAlign, hideBelow, numeric })),\n [columnAlign, hideBelow, index, numeric, registerLayout],\n );\n\n const sorted = sort?.column === id ? sort.direction : undefined;\n\n // A ajuda e focavel e fica fora do botao de ordenacao: controle dentro de controle nao e HTML valido.\n const ajuda = help && (\n <Tooltip content={help}>\n <span aria-label={help} className={styles.help} role=\"img\" tabIndex={0}>\n <IconQuestionCircle size={14} />\n </span>\n </Tooltip>\n );\n\n return (\n <th\n aria-sort={sortable ? sorted ?? 'none' : undefined}\n className={[styles.column, styles[columnAlign], sortable && styles.sortable]\n .filter(Boolean)\n .join(' ')}\n data-hide-below={hideBelow}\n scope=\"col\"\n style={{ width }}\n >\n {sortable ? (\n <div className={styles.sortHeader}>\n <button className={styles.sortButton} onClick={() => requestSort(id)} type=\"button\">\n {children}\n {sorted ? (\n <IconArrowUp\n className={[styles.sortIcon, sorted === 'descending' && styles.sortDescending].filter(Boolean).join(' ')}\n size={12}\n />\n ) : (\n <IconChevronExpand className={styles.sortIcon} size={12} />\n )}\n </button>\n {ajuda}\n </div>\n ) : (\n <>\n {children}\n {ajuda}\n </>\n )}\n </th>\n );\n}\n\nexport interface TableBodyProps<T extends TableRowItem> {\n children: (item: T) => ReactNode;\n emptyDescription?: string;\n emptyTitle?: string;\n items: readonly T[];\n}\n\nconst SKELETON_ROWS = 3;\n\nfunction TableBody<T extends TableRowItem>({\n children,\n emptyDescription = 'Não há registros para exibir. Se houver busca ou filtros aplicados, experimente ajustá-los.',\n emptyTitle = 'Nenhum registro encontrado',\n items,\n}: TableBodyProps<T>) {\n const { columnAt, countColumns, loading, selection } = useTableContext('Table.Body');\n\n if (loading) {\n // Mantem a altura das linhas que ja estavam na tela, para a pagina nao pular quando a nova chegar.\n const rows = Array.from({ length: items.length || SKELETON_ROWS }, (_, index) => index);\n const leadCells = selection.mode === 'none' ? 0 : 1;\n const columns = Array.from({ length: countColumns() - leadCells }, (_, index) => columnAt(index));\n\n return (\n <tbody aria-hidden=\"true\">\n {rows.map((row) => (\n <tr className={[styles.row, styles.skeletonRow].join(' ')} key={row}>\n {leadCells > 0 && (\n <td className={[styles.cell, styles.lead].join(' ')}>\n <span className={styles.skeleton} />\n </td>\n )}\n {columns.map((column, index) => (\n <td className={[styles.cell, styles[column?.align ?? 'start']].join(' ')} data-hide-below={column?.hideBelow} key={index}>\n <span className={styles.skeleton} />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n }\n\n if (items.length === 0) {\n return (\n <tbody>\n <tr>\n <td className={styles.empty} colSpan={countColumns()}>\n <EmptyState description={emptyDescription} title={emptyTitle} />\n </td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <tbody>\n {items.map((item) => (\n <Fragment key={item.id}>{children(item)}</Fragment>\n ))}\n </tbody>\n );\n}\n\nexport interface TableRowProps {\n children: ReactNode;\n disabled?: boolean;\n id: string;\n label?: string;\n}\n\nfunction TableRow({ children, disabled = false, id, label }: TableRowProps) {\n const { baseId, selection } = useTableContext('Table.Row');\n const selected = selection.mode !== 'none' && selection.isSelected(id);\n\n return (\n // Sem `aria-selected` na linha: ele so vale em grade, e numa tabela quem anuncia a marcacao e o controle.\n <tr className={[styles.row, selected && selection.highlight && styles.selected].filter(Boolean).join(' ')}>\n {selection.mode !== 'none' && (\n <td className={[styles.cell, styles.lead].join(' ')}>\n <input\n aria-label={label ?? 'Selecionar linha'}\n checked={selected}\n className={styles[selection.control]}\n disabled={disabled}\n name={selection.control === 'radio' ? `${baseId}-selecao` : undefined}\n onChange={() => undefined}\n onClick={(event) => selection.toggle(id, event.shiftKey)}\n role={selection.control === 'toggle' ? 'switch' : undefined}\n type={selection.control === 'radio' ? 'radio' : 'checkbox'}\n />\n </td>\n )}\n {withColumnIndex(children)}\n </tr>\n );\n}\n\n/** Sem valor proprio, `align`, `hideBelow` e `numeric` seguem a coluna da mesma posicao no cabecalho. */\nexport interface TableCellProps {\n align?: TableAlign;\n children?: ReactNode;\n hideBelow?: TableBreakpoint;\n numeric?: boolean;\n}\n\nfunction TableCell({ align, children, hideBelow, numeric }: TableCellProps) {\n const { columnAt } = useTableContext('Table.Cell');\n const index = useContext(ColumnIndexContext);\n const column = index === undefined ? undefined : columnAt(index);\n const isNumeric = numeric ?? column?.numeric ?? false;\n\n return (\n <td\n className={[styles.cell, styles[align ?? column?.align ?? (isNumeric ? 'end' : 'start')], isNumeric && styles.numeric]\n .filter(Boolean)\n .join(' ')}\n data-hide-below={hideBelow ?? column?.hideBelow}\n >\n {children}\n </td>\n );\n}\n\nTable.Header = TableHeader;\nTable.Column = TableColumn;\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\n"],"names":["TableContext","createContext","ColumnIndexContext","withColumnIndex","children","Children","child","index","jsx","isValidElement","withLayout","layouts","layout","next","useTableContext","part","context","useContext","Table","className","defaultSelectedIds","defaultSort","divider","highlightSelectedRow","label","loading","loadingMessage","onSelectionChange","onSortChange","rows","selectedIds","selectionControl","selectionMode","size","sort","stickyHeader","striped","ref","props","baseId","useId","internalSort","setInternalSort","useState","columns","setColumns","currentSort","control","precisaRolar","setPrecisaRolar","observarTransbordo","useCallback","envoltorio","observador","envoltorioRef","useMergedRefs","registerColumn","id","atuais","restantes","setLayouts","registerLayout","requestSort","column","collection","useMemo","row","selection","useSelection","keys","extend","classes","styles","jsxs","TableHeader","useEffect","node","TableColumn","align","help","hideBelow","numeric","sortable","width","columnAlign","useLayoutEffect","sorted","ajuda","Tooltip","IconQuestionCircle","IconArrowUp","IconChevronExpand","Fragment","SKELETON_ROWS","TableBody","emptyDescription","emptyTitle","items","columnAt","countColumns","_","leadCells","EmptyState","item","TableRow","disabled","selected","event","TableCell","isNumeric"],"mappings":"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"}
|