@plenustech/design-system 0.2.2 → 0.2.4
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/ButtonTile/ButtonTile.cjs +2 -0
- package/dist/components/actions/ButtonTile/ButtonTile.cjs.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.js +23 -0
- package/dist/components/actions/ButtonTile/ButtonTile.js.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +2 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +16 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.cjs +2 -0
- package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.js +118 -0
- package/dist/components/actions/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.cjs +2 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.cjs.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.js +20 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs +1 -1
- package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -1
- package/dist/components/charts/ChartArea/ChartArea.js +196 -148
- package/dist/components/charts/ChartArea/ChartArea.js.map +1 -1
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +1 -1
- package/dist/components/charts/ChartArea/ChartArea.module.css.js +12 -10
- package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.cjs +1 -1
- package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.js +168 -145
- package/dist/components/charts/ChartBar/ChartBar.js.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +1 -1
- package/dist/components/charts/ChartBar/ChartBar.module.css.js +12 -10
- package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.cjs +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.js +179 -154
- package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +16 -14
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.cjs +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.js +72 -61
- package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -1
- package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
- package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
- package/dist/components/charts/ChartLine/ChartLine.js +196 -143
- package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
- package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
- package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
- package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.js +523 -0
- package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
- package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.js +80 -0
- package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
- package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.js +131 -0
- package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
- package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.js +50 -0
- package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
- package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
- package/dist/components/charts/ChartPie/ChartPie.js +71 -60
- package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
- package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
- package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
- package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
- package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
- package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
- package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
- package/dist/components/charts/core/CartesianFrame.cjs +1 -1
- package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
- package/dist/components/charts/core/CartesianFrame.js +61 -96
- package/dist/components/charts/core/CartesianFrame.js.map +1 -1
- package/dist/components/charts/core/Chart.module.css.cjs +1 -1
- package/dist/components/charts/core/Chart.module.css.js +52 -54
- package/dist/components/charts/core/Chart.module.css.js.map +1 -1
- package/dist/components/charts/core/ChartFrame.cjs +1 -1
- package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
- package/dist/components/charts/core/ChartFrame.js +53 -47
- package/dist/components/charts/core/ChartFrame.js.map +1 -1
- package/dist/components/charts/core/ChartLegend.cjs +1 -1
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
- package/dist/components/charts/core/ChartLegend.js +37 -25
- package/dist/components/charts/core/ChartLegend.js.map +1 -1
- package/dist/components/charts/core/PointBands.cjs +2 -0
- package/dist/components/charts/core/PointBands.cjs.map +1 -0
- package/dist/components/charts/core/PointBands.js +41 -0
- package/dist/components/charts/core/PointBands.js.map +1 -0
- package/dist/components/charts/core/cartesianLayout.cjs +1 -1
- package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
- package/dist/components/charts/core/cartesianLayout.js +49 -41
- package/dist/components/charts/core/cartesianLayout.js.map +1 -1
- package/dist/components/charts/core/hoverPath.cjs +2 -0
- package/dist/components/charts/core/hoverPath.cjs.map +1 -0
- package/dist/components/charts/core/hoverPath.js +7 -0
- package/dist/components/charts/core/hoverPath.js.map +1 -0
- package/dist/components/charts/core/pointLabels.cjs +2 -0
- package/dist/components/charts/core/pointLabels.cjs.map +1 -0
- package/dist/components/charts/core/pointLabels.js +12 -0
- package/dist/components/charts/core/pointLabels.js.map +1 -0
- package/dist/components/charts/core/tooltips.cjs +2 -0
- package/dist/components/charts/core/tooltips.cjs.map +1 -0
- package/dist/components/charts/core/tooltips.js +48 -0
- package/dist/components/charts/core/tooltips.js.map +1 -0
- package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
- package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
- package/dist/components/charts/core/useCartesianLayout.js +38 -0
- package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
- package/dist/components/charts/core/useChartMetrics.cjs +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
- package/dist/components/charts/core/useChartMetrics.js +20 -25
- package/dist/components/charts/core/useChartMetrics.js.map +1 -1
- package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
- package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
- package/dist/components/charts/core/useSeriesToggle.js +19 -12
- package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
- package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.js +56 -46
- package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
- package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
- package/dist/components/data-display/List/List.cjs.map +1 -1
- package/dist/components/data-display/List/List.js.map +1 -1
- package/dist/components/data-display/List/List.module.css.cjs +1 -1
- package/dist/components/data-display/List/List.module.css.js +34 -24
- package/dist/components/data-display/List/List.module.css.js.map +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
- package/dist/components/data-display/List/ListingOptions.js +98 -74
- package/dist/components/data-display/List/ListingOptions.js.map +1 -1
- package/dist/components/data-display/List/useListing.cjs.map +1 -1
- package/dist/components/data-display/List/useListing.js.map +1 -1
- package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
- package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.js +168 -0
- package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
- package/dist/components/data-display/Table/Table.cjs +1 -1
- package/dist/components/data-display/Table/Table.cjs.map +1 -1
- package/dist/components/data-display/Table/Table.js +86 -85
- package/dist/components/data-display/Table/Table.js.map +1 -1
- package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
- package/dist/components/data-display/Table/Table.module.css.js +50 -51
- package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
- package/dist/components/data-display/Tag/Tag.cjs +2 -0
- package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
- package/dist/components/data-display/Tag/Tag.js +50 -0
- package/dist/components/data-display/Tag/Tag.js.map +1 -0
- package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
- package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
- package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
- package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
- package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.js +31 -0
- package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
- package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
- package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
- package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
- package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
- package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
- package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
- package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
- package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
- package/dist/components/feedback/Toast/ToastRegion.js +62 -0
- package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
- package/dist/components/feedback/Toast/toastStore.cjs +2 -0
- package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
- package/dist/components/feedback/Toast/toastStore.js +33 -0
- package/dist/components/feedback/Toast/toastStore.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.js +43 -31
- package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
- package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
- package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
- package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
- package/dist/components/forms/Field/Field.cjs +1 -1
- package/dist/components/forms/Field/Field.cjs.map +1 -1
- package/dist/components/forms/Field/Field.js +21 -20
- package/dist/components/forms/Field/Field.js.map +1 -1
- package/dist/components/forms/Field/Field.module.css.cjs +1 -1
- package/dist/components/forms/Field/Field.module.css.js +18 -12
- package/dist/components/forms/Field/Field.module.css.js.map +1 -1
- package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
- package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.js +142 -0
- package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
- package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
- package/dist/components/forms/InputText/InputText.cjs +1 -1
- package/dist/components/forms/InputText/InputText.cjs.map +1 -1
- package/dist/components/forms/InputText/InputText.js +55 -47
- package/dist/components/forms/InputText/InputText.js.map +1 -1
- package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
- package/dist/components/forms/InputText/InputText.module.css.js +10 -10
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
- package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
- package/dist/components/forms/Select/Select.module.css.cjs +1 -1
- package/dist/components/forms/Select/Select.module.css.js +13 -13
- package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
- package/dist/components/forms/Switch/Switch.module.css.js +2 -2
- package/dist/components/icons/icons.cjs +1 -1
- package/dist/components/icons/icons.cjs.map +1 -1
- package/dist/components/icons/icons.js +198 -40
- package/dist/components/icons/icons.js.map +1 -1
- package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
- package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
- package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
- package/dist/components/navigation/Steps/Steps.cjs +2 -0
- package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
- package/dist/components/navigation/Steps/Steps.js +30 -0
- package/dist/components/navigation/Steps/Steps.js.map +1 -0
- package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
- package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
- package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
- package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
- package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +88 -79
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
- package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
- package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
- package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
- package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +11 -58
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
- package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
- package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
- package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
- package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.js +17 -0
- package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
- package/dist/components/overlays/Menu/Menu.js +105 -86
- package/dist/components/overlays/Menu/Menu.js.map +1 -1
- package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
- package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +190 -118
- package/dist/index.js.map +1 -1
- package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
- package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
- package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
- package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
- package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
- package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
- package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
- package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
- package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
- package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
- package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
- package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
- package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
- package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
- package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
- package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
- package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
- package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
- package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
- package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
- package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
- package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
- package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
- package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
- package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
- package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
- package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
- package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
- package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
- package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
- package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
- package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
- package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
- package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
- package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
- package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
- package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
- package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
- package/dist/types/components/charts/core/PointBands.d.ts +22 -0
- package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
- package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
- package/dist/types/components/charts/core/index.d.ts +13 -3
- package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
- package/dist/types/components/charts/core/tooltips.d.ts +49 -0
- package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
- package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
- package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
- package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
- package/dist/types/components/data-display/List/List.d.ts +1 -1
- package/dist/types/components/data-display/List/useListing.d.ts +7 -1
- package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
- package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
- package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
- package/dist/types/components/data-display/Tag/index.d.ts +2 -0
- package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
- package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
- package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
- package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
- package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
- package/dist/types/components/feedback/Toast/index.d.ts +3 -0
- package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
- package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
- package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
- package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
- package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
- package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
- package/dist/types/components/forms/Field/Field.d.ts +6 -2
- package/dist/types/components/forms/Field/index.d.ts +1 -1
- package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
- package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
- package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
- package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
- package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
- package/dist/types/components/icons/icons.d.ts +29 -0
- package/dist/types/components/icons/index.d.ts +1 -1
- package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
- package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
- package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
- package/dist/types/components/navigation/Steps/index.d.ts +2 -0
- package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
- package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
- package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +21 -9
- package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +13 -0
- package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
- package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
- package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
- package/dist/types/components/overlays/Menu/index.d.ts +1 -1
- package/dist/types/index.d.ts +43 -7
- package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
- package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
- package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
- package/dist/types/utils/formatters/index.d.ts +4 -1
- package/dist/utils/formatters/formatarDuracao.cjs +2 -0
- package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
- package/dist/utils/formatters/formatarDuracao.js +10 -0
- package/dist/utils/formatters/formatarDuracao.js.map +1 -0
- package/dist/utils/formatters/formatarNumero.cjs +1 -1
- package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
- package/dist/utils/formatters/formatarNumero.js +42 -17
- package/dist/utils/formatters/formatarNumero.js.map +1 -1
- package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as I, useId as j, useEffect as P } from "react";
|
|
3
|
+
import { createPortal as x } from "react-dom";
|
|
4
|
+
import { FocusScope as O } from "@react-aria/focus";
|
|
5
|
+
import { useOverlay as R, usePreventScroll as B, ariaHideOutside as C } from "@react-aria/overlays";
|
|
6
|
+
import { useMergedRefs as S } from "../../../hooks/useMergedRefs.js";
|
|
7
|
+
import r from "./Dialog.module.css.js";
|
|
8
|
+
import { IconClose as $ } from "../../icons/icons.js";
|
|
9
|
+
function G({ open: o, ...a }) {
|
|
10
|
+
return !o || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...a }), document.body);
|
|
11
|
+
}
|
|
12
|
+
function k({
|
|
13
|
+
children: o,
|
|
14
|
+
className: a,
|
|
15
|
+
description: s,
|
|
16
|
+
dismissable: t = !0,
|
|
17
|
+
footer: l,
|
|
18
|
+
icon: c,
|
|
19
|
+
onClose: u,
|
|
20
|
+
ref: h,
|
|
21
|
+
role: v = "dialog",
|
|
22
|
+
surfaceClassName: y,
|
|
23
|
+
title: d,
|
|
24
|
+
underlayClassName: b,
|
|
25
|
+
...N
|
|
26
|
+
}) {
|
|
27
|
+
const i = I(null), g = S(i, h), m = j(), f = `${m}-title`, p = `${m}-description`, { overlayProps: D, underlayProps: F } = R(
|
|
28
|
+
{
|
|
29
|
+
isOpen: !0,
|
|
30
|
+
onClose: u,
|
|
31
|
+
isDismissable: t,
|
|
32
|
+
isKeyboardDismissDisabled: !t
|
|
33
|
+
},
|
|
34
|
+
i
|
|
35
|
+
);
|
|
36
|
+
return B(), P(() => i.current ? C([i.current]) : void 0, []), /* @__PURE__ */ e("div", { ...F, className: b, children: /* @__PURE__ */ e(O, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ n(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
...N,
|
|
40
|
+
...D,
|
|
41
|
+
ref: g,
|
|
42
|
+
className: [y, a].filter(Boolean).join(" "),
|
|
43
|
+
role: v,
|
|
44
|
+
"aria-modal": "true",
|
|
45
|
+
"aria-labelledby": d ? f : void 0,
|
|
46
|
+
"aria-describedby": s ? p : void 0,
|
|
47
|
+
children: [
|
|
48
|
+
d && /* @__PURE__ */ n("header", { className: [r.header, o && r.headerDivided].filter(Boolean).join(" "), children: [
|
|
49
|
+
c && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r.icon, children: c }),
|
|
50
|
+
/* @__PURE__ */ n("div", { className: r.heading, children: [
|
|
51
|
+
/* @__PURE__ */ e("h2", { className: r.title, id: f, children: d }),
|
|
52
|
+
s && /* @__PURE__ */ e("p", { className: r.description, id: p, children: s })
|
|
53
|
+
] }),
|
|
54
|
+
t && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: u, children: /* @__PURE__ */ e($, { size: 20 }) })
|
|
55
|
+
] }),
|
|
56
|
+
o && /* @__PURE__ */ e("div", { className: r.body, children: o }),
|
|
57
|
+
l && /* @__PURE__ */ e("div", { className: r.footer, children: l })
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
) }) });
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
G as DialogFrame
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=DialogFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogFrame.js","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogBaseProps, DialogRole } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends DialogBaseProps {\n 'aria-label'?: string;\n description?: string;\n icon?: ReactNode;\n role?: DialogRole;\n surfaceClassName: string;\n title?: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title && (\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n )}\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":";;;;;;;;AAoBO,SAASA,EAAY,EAAE,MAAAC,GAAM,GAAGC,KAA2B;AAEhE,SAAI,CAACD,KAAQ,OAAO,WAAa,MACxB,OAGFE,EAAa,gBAAAC,EAACC,GAAA,EAAoB,GAAGH,GAAO,GAAI,SAAS,IAAI;AACtE;AAEA,SAASG,EAAmB;AAAA,EAC1B,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,kBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,GAAGf;AACL,GAAmC;AACjC,QAAMgB,IAAMC,EAAuB,IAAI,GACjCC,IAAYC,EAAcH,GAAKL,CAAe,GAC9CS,IAAcC,EAAA,GACdC,IAAU,GAAGF,CAAW,UACxBG,IAAgB,GAAGH,CAAW,gBAE9B,EAAE,cAAAI,GAAc,eAAAC,EAAA,IAAkBC;AAAA,IACtC;AAAA,MACE,QAAQ;AAAA,MACR,SAAAhB;AAAA,MACA,eAAeH;AAAA,MACf,2BAA2B,CAACA;AAAA,IAAA;AAAA,IAE9BS;AAAA,EAAA;AAGF,SAAAW,EAAA,GAEAC,EAAU,MAAOZ,EAAI,UAAUa,EAAgB,CAACb,EAAI,OAAO,CAAC,IAAI,QAAY,EAAE,GAG5E,gBAAAd,EAAC,OAAA,EAAK,GAAGuB,GAAe,WAAWV,GACjC,UAAA,gBAAAb,EAAC4B,GAAA,EAAW,SAAO,IAAC,cAAY,IAAC,WAAS,IACxC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG/B;AAAA,MACH,GAAGwB;AAAA,MACJ,KAAKN;AAAA,MACL,WAAW,CAACL,GAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACjE,MAAAO;AAAA,MACA,cAAW;AAAA,MACX,mBAAiBE,IAAQQ,IAAU;AAAA,MACnC,oBAAkBhB,IAAciB,IAAgB;AAAA,MAE/C,UAAA;AAAA,QAAAT,KACC,gBAAAiB,EAAC,UAAA,EAAO,WAAW,CAACC,EAAO,QAAQ5B,KAAY4B,EAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC1F,UAAA;AAAA,UAAAvB,uBACE,QAAA,EAAK,eAAY,QAAO,WAAWuB,EAAO,MACxC,UAAAvB,EAAA,CACH;AAAA,UAEF,gBAAAsB,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,YAAA,gBAAA9B,EAAC,QAAG,WAAW8B,EAAO,OAAO,IAAIV,GAAU,UAAAR,GAAM;AAAA,YAChDR,uBAAgB,KAAA,EAAE,WAAW0B,EAAO,aAAa,IAAIT,GAAgB,UAAAjB,EAAA,CAAY;AAAA,UAAA,GACpF;AAAA,UACCC,KACC,gBAAAL,EAAC,UAAA,EAAO,WAAW8B,EAAO,OAAO,MAAK,UAAS,cAAW,UAAS,SAAStB,GAC1E,UAAA,gBAAAR,EAAC+B,GAAA,EAAU,MAAM,IAAI,EAAA,CACvB;AAAA,QAAA,GAEJ;AAAA,QAED7B,KAAY,gBAAAF,EAAC,OAAA,EAAI,WAAW8B,EAAO,MAAO,UAAA5B,GAAS;AAAA,QACnDI,KAAU,gBAAAN,EAAC,OAAA,EAAI,WAAW8B,EAAO,QAAS,UAAAxB,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtD,EAAA,CACF;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),l=require("../Dialog/DialogFrame.cjs"),e=require("./Drawer.module.css.cjs");function i({side:r="right",size:a="md",...t}){return u.jsx(l.DialogFrame,{...t,surfaceClassName:[e.default.drawer,e.default[a]].join(" "),underlayClassName:[e.default.underlay,e.default[r]].join(" ")})}exports.Drawer=i;
|
|
2
|
+
//# sourceMappingURL=Drawer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogBaseProps, DialogTitledProps } from '../Dialog/Dialog';\nimport { DialogFrame } from '../Dialog/DialogFrame';\nimport styles from './Drawer.module.css';\n\nexport type DrawerSide = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg';\n\nexport interface DrawerProps extends DialogBaseProps, Omit<DialogTitledProps, 'icon'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":"iMAaO,SAASA,EAAO,CAAE,KAAAC,EAAO,QAAS,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7E,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmB,CAACI,EAAAA,QAAO,SAAUA,EAAAA,QAAOL,CAAI,CAAC,EAAE,KAAK,GAAG,CAAA,CAAA,CAGjE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { DialogFrame as i } from "../Dialog/DialogFrame.js";
|
|
3
|
+
import r from "./Drawer.module.css.js";
|
|
4
|
+
function l({ side: a = "right", size: e = "md", ...o }) {
|
|
5
|
+
return /* @__PURE__ */ m(
|
|
6
|
+
i,
|
|
7
|
+
{
|
|
8
|
+
...o,
|
|
9
|
+
surfaceClassName: [r.drawer, r[e]].join(" "),
|
|
10
|
+
underlayClassName: [r.underlay, r[a]].join(" ")
|
|
11
|
+
}
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
l as Drawer
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=Drawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.js","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogBaseProps, DialogTitledProps } from '../Dialog/Dialog';\nimport { DialogFrame } from '../Dialog/DialogFrame';\nimport styles from './Drawer.module.css';\n\nexport type DrawerSide = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg';\n\nexport interface DrawerProps extends DialogBaseProps, Omit<DialogTitledProps, 'icon'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAaO,SAASA,EAAO,EAAE,MAAAC,IAAO,SAAS,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7E,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmB,CAACI,EAAO,UAAUA,EAAOL,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,IAAA;AAAA,EAAA;AAGjE;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r="_underlay_wnki2_1",e="_right_wnki2_12",_="_left_wnki2_16",t="_drawer_wnki2_21",d="_sm_wnki2_43",n="_md_wnki2_47",l="_lg_wnki2_51",a={underlay:r,"drawer-fade":"_drawer-fade_wnki2_1",right:e,left:_,drawer:t,"drawer-from-right":"_drawer-from-right_wnki2_1","drawer-from-left":"_drawer-from-left_wnki2_1",sm:d,md:n,lg:l};exports.default=a;exports.drawer=t;exports.left=_;exports.lg=l;exports.md=n;exports.right=e;exports.sm=d;exports.underlay=r;
|
|
2
|
+
//# sourceMappingURL=Drawer.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const r = "_underlay_wnki2_1", _ = "_right_wnki2_12", e = "_left_wnki2_16", n = "_drawer_wnki2_21", t = "_sm_wnki2_43", w = "_md_wnki2_47", d = "_lg_wnki2_51", a = {
|
|
2
|
+
underlay: r,
|
|
3
|
+
"drawer-fade": "_drawer-fade_wnki2_1",
|
|
4
|
+
right: _,
|
|
5
|
+
left: e,
|
|
6
|
+
drawer: n,
|
|
7
|
+
"drawer-from-right": "_drawer-from-right_wnki2_1",
|
|
8
|
+
"drawer-from-left": "_drawer-from-left_wnki2_1",
|
|
9
|
+
sm: t,
|
|
10
|
+
md: w,
|
|
11
|
+
lg: d
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
a as default,
|
|
15
|
+
n as drawer,
|
|
16
|
+
e as left,
|
|
17
|
+
d as lg,
|
|
18
|
+
w as md,
|
|
19
|
+
_ as right,
|
|
20
|
+
t as sm,
|
|
21
|
+
r as underlay
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=Drawer.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),c=require("react"),A=require("react-dom"),E=require("@react-aria/focus"),R=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),o=require("./Menu.module.css.cjs"),T=require("../../../hooks/useSelection/useSelection.cjs"),B=require("../../icons/icons.cjs");function S(n,y){return u=>{n==null||n(u),y(u)}}function F({children:n,defaultOpen:y=!1,items:u,label:D,onOpenChange:a,open:h}){const l=c.useRef(null),[p,w]=c.useState(y),[M,i]=c.useState("first"),f=h??p;function k(t){w(t),a==null||a(t)}function b(t){i(t),k(!0)}function x(t){var g;k(!1),t&&((g=l.current)==null||g.focus())}const m=n.props,d=I.useMergedRefs(l,m.ref),j=c.cloneElement(n,{ref:d,"aria-haspopup":"menu","aria-expanded":f,onClick:S(m.onClick,()=>f?x(!0):b("first")),onKeyDown:S(m.onKeyDown,t=>{(t.key==="ArrowDown"||t.key==="ArrowUp")&&(t.preventDefault(),b(t.key==="ArrowDown"?"first":"last"))})});return r.jsxs(r.Fragment,{children:[j,f&&typeof document<"u"&&A.createPortal(r.jsx(E.FocusScope,{children:r.jsx(H,{items:u,label:D,openedWith:M,onClose:x,triggerRef:l})}),document.body)]})}function K(n){return"items"in n}function H({items:n,label:y,onClose:u,openedWith:D,triggerRef:a}){var q;const h=c.useRef(null),l=c.useRef(new Map),p=c.useMemo(()=>n.flatMap(e=>K(e)?e.items:[e]),[n]),w=c.useMemo(()=>p.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[p]),M=T.useSelection({items:w,mode:"none"}),{focusedKey:i,focusFirst:f,focusLast:k,focusNext:b,focusPrevious:x,search:m}=M,{overlayProps:d}=R.useOverlay({isOpen:!0,onClose:()=>u(!1),isDismissable:!0,shouldCloseOnBlur:!1,shouldCloseOnInteractOutside:e=>{var s;return!((s=a.current)!=null&&s.contains(e))}},h),{overlayProps:j}=R.useOverlayPosition({targetRef:a,overlayRef:h,placement:"bottom start",offset:6,containerPadding:8,isOpen:!0}),t=Math.min(Number((q=j.style)==null?void 0:q.maxHeight)||360,360);c.useEffect(()=>{D==="last"?k():f()},[]),c.useEffect(()=>{var e;i&&((e=l.current.get(i))==null||e.focus())},[i]);function g(e){var s;e.disabled||(u(!0),(s=e.onSelect)==null||s.call(e))}function N(e){const s=e.checked!==void 0;return r.jsxs("button",{"aria-checked":s?e.checked:void 0,"aria-keyshortcuts":e.shortcut,className:[o.default.item,e.tone==="danger"&&o.default.danger].filter(Boolean).join(" "),disabled:e.disabled,onClick:()=>g(e),ref:O=>{O?l.current.set(e.key,O):l.current.delete(e.key)},role:s?"menuitemcheckbox":"menuitem",tabIndex:i===e.key?0:-1,type:"button",children:[e.icon&&r.jsx("span",{"aria-hidden":"true",className:o.default.icon,children:e.icon}),r.jsx("span",{className:o.default.label,children:e.label}),e.shortcut&&r.jsx("kbd",{"aria-hidden":"true",className:o.default.shortcut,children:e.shortcut}),s&&r.jsx(B.IconCheck,{className:[o.default.check,e.checked&&o.default.checkOn].filter(Boolean).join(" ")})]},e.key)}function P(e){e.key==="ArrowDown"?(e.preventDefault(),b()):e.key==="ArrowUp"?(e.preventDefault(),x()):e.key==="Home"?(e.preventDefault(),f()):e.key==="End"?(e.preventDefault(),k()):e.key==="Escape"||e.key==="Tab"?u(!0):e.key.length===1&&!e.metaKey&&!e.ctrlKey&&m(e.key)}return r.jsx("div",{...d,"data-react-aria-top-layer":"true",ref:h,className:o.default.menu,style:{...j.style,maxHeight:t},role:"menu","aria-label":y,onKeyDown:e=>{var s;P(e),(s=d.onKeyDown)==null||s.call(d,e)},children:n.map((e,s)=>K(e)?r.jsxs("div",{"aria-label":e.title,className:o.default.section,role:"group",children:[s>0&&r.jsx("div",{"aria-hidden":"true",className:o.default.divider}),e.title&&r.jsx("div",{"aria-hidden":"true",className:o.default.sectionTitle,children:e.title}),e.items.map(N)]},e.key):N(e))})}exports.Menu=F;
|
|
2
2
|
//# sourceMappingURL=Menu.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
|
|
@@ -1,74 +1,78 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { createPortal as
|
|
4
|
-
import { FocusScope as
|
|
5
|
-
import { useOverlay as
|
|
6
|
-
import { useMergedRefs as
|
|
7
|
-
import
|
|
8
|
-
import { useSelection as
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { jsxs as K, Fragment as F, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as M, useState as P, cloneElement as H, useMemo as R, useEffect as S } from "react";
|
|
3
|
+
import { createPortal as T } from "react-dom";
|
|
4
|
+
import { FocusScope as C } from "@react-aria/focus";
|
|
5
|
+
import { useOverlay as L, useOverlayPosition as U } from "@react-aria/overlays";
|
|
6
|
+
import { useMergedRefs as W } from "../../../hooks/useMergedRefs.js";
|
|
7
|
+
import t from "./Menu.module.css.js";
|
|
8
|
+
import { useSelection as z } from "../../../hooks/useSelection/useSelection.js";
|
|
9
|
+
import { IconCheck as V } from "../../icons/icons.js";
|
|
10
|
+
function j(s, d) {
|
|
11
|
+
return (c) => {
|
|
12
|
+
s == null || s(c), d(c);
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
-
const
|
|
16
|
-
function y(
|
|
17
|
-
|
|
15
|
+
function ee({ children: s, defaultOpen: d = !1, items: c, label: g, onOpenChange: l, open: m }) {
|
|
16
|
+
const i = M(null), [h, N] = P(d), [x, a] = P("first"), u = m ?? h;
|
|
17
|
+
function y(o) {
|
|
18
|
+
N(o), l == null || l(o);
|
|
18
19
|
}
|
|
19
|
-
function
|
|
20
|
-
|
|
20
|
+
function k(o) {
|
|
21
|
+
a(o), y(!0);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
var
|
|
24
|
-
y(!1),
|
|
23
|
+
function b(o) {
|
|
24
|
+
var D;
|
|
25
|
+
y(!1), o && ((D = i.current) == null || D.focus());
|
|
25
26
|
}
|
|
26
|
-
const
|
|
27
|
-
ref:
|
|
27
|
+
const p = s.props, f = W(i, p.ref), w = H(s, {
|
|
28
|
+
ref: f,
|
|
28
29
|
"aria-haspopup": "menu",
|
|
29
|
-
"aria-expanded":
|
|
30
|
-
onClick:
|
|
31
|
-
|
|
32
|
-
() =>
|
|
30
|
+
"aria-expanded": u,
|
|
31
|
+
onClick: j(
|
|
32
|
+
p.onClick,
|
|
33
|
+
() => u ? b(!0) : k("first")
|
|
33
34
|
),
|
|
34
|
-
onKeyDown:
|
|
35
|
-
(
|
|
35
|
+
onKeyDown: j(p.onKeyDown, (o) => {
|
|
36
|
+
(o.key === "ArrowDown" || o.key === "ArrowUp") && (o.preventDefault(), k(o.key === "ArrowDown" ? "first" : "last"));
|
|
36
37
|
})
|
|
37
38
|
});
|
|
38
|
-
return /* @__PURE__ */
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
return /* @__PURE__ */ K(F, { children: [
|
|
40
|
+
w,
|
|
41
|
+
u && typeof document < "u" && T(
|
|
41
42
|
// O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.
|
|
42
43
|
// Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.
|
|
43
|
-
/* @__PURE__ */
|
|
44
|
-
|
|
44
|
+
/* @__PURE__ */ n(C, { children: /* @__PURE__ */ n(
|
|
45
|
+
q,
|
|
45
46
|
{
|
|
46
|
-
items:
|
|
47
|
-
label:
|
|
48
|
-
openedWith:
|
|
49
|
-
onClose:
|
|
50
|
-
triggerRef:
|
|
47
|
+
items: c,
|
|
48
|
+
label: g,
|
|
49
|
+
openedWith: x,
|
|
50
|
+
onClose: b,
|
|
51
|
+
triggerRef: i
|
|
51
52
|
}
|
|
52
53
|
) }),
|
|
53
54
|
document.body
|
|
54
55
|
)
|
|
55
56
|
] });
|
|
56
57
|
}
|
|
57
|
-
function
|
|
58
|
-
items
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
function E(s) {
|
|
59
|
+
return "items" in s;
|
|
60
|
+
}
|
|
61
|
+
function q({
|
|
62
|
+
items: s,
|
|
63
|
+
label: d,
|
|
64
|
+
onClose: c,
|
|
65
|
+
openedWith: g,
|
|
62
66
|
triggerRef: l
|
|
63
67
|
}) {
|
|
64
|
-
var
|
|
65
|
-
const
|
|
66
|
-
() =>
|
|
67
|
-
[
|
|
68
|
-
),
|
|
68
|
+
var A;
|
|
69
|
+
const m = M(null), i = M(/* @__PURE__ */ new Map()), h = R(() => s.flatMap((e) => E(e) ? e.items : [e]), [s]), N = R(
|
|
70
|
+
() => h.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
|
|
71
|
+
[h]
|
|
72
|
+
), x = z({ items: N, mode: "none" }), { focusedKey: a, focusFirst: u, focusLast: y, focusNext: k, focusPrevious: b, search: p } = x, { overlayProps: f } = L(
|
|
69
73
|
{
|
|
70
74
|
isOpen: !0,
|
|
71
|
-
onClose: () =>
|
|
75
|
+
onClose: () => c(!1),
|
|
72
76
|
isDismissable: !0,
|
|
73
77
|
shouldCloseOnBlur: !1,
|
|
74
78
|
shouldCloseOnInteractOutside: (e) => {
|
|
@@ -76,62 +80,77 @@ function W({
|
|
|
76
80
|
return !((r = l.current) != null && r.contains(e));
|
|
77
81
|
}
|
|
78
82
|
},
|
|
79
|
-
|
|
80
|
-
), { overlayProps:
|
|
83
|
+
m
|
|
84
|
+
), { overlayProps: w } = U({
|
|
81
85
|
targetRef: l,
|
|
82
|
-
overlayRef:
|
|
86
|
+
overlayRef: m,
|
|
83
87
|
placement: "bottom start",
|
|
84
88
|
offset: 6,
|
|
85
89
|
containerPadding: 8,
|
|
86
90
|
isOpen: !0
|
|
87
|
-
}),
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, []),
|
|
91
|
+
}), o = Math.min(Number((A = w.style) == null ? void 0 : A.maxHeight) || 360, 360);
|
|
92
|
+
S(() => {
|
|
93
|
+
g === "last" ? y() : u();
|
|
94
|
+
}, []), S(() => {
|
|
91
95
|
var e;
|
|
92
|
-
|
|
93
|
-
}, [
|
|
94
|
-
function
|
|
96
|
+
a && ((e = i.current.get(a)) == null || e.focus());
|
|
97
|
+
}, [a]);
|
|
98
|
+
function D(e) {
|
|
95
99
|
var r;
|
|
96
|
-
e.disabled || (
|
|
100
|
+
e.disabled || (c(!0), (r = e.onSelect) == null || r.call(e));
|
|
101
|
+
}
|
|
102
|
+
function O(e) {
|
|
103
|
+
const r = e.checked !== void 0;
|
|
104
|
+
return /* @__PURE__ */ K(
|
|
105
|
+
"button",
|
|
106
|
+
{
|
|
107
|
+
"aria-checked": r ? e.checked : void 0,
|
|
108
|
+
"aria-keyshortcuts": e.shortcut,
|
|
109
|
+
className: [t.item, e.tone === "danger" && t.danger].filter(Boolean).join(" "),
|
|
110
|
+
disabled: e.disabled,
|
|
111
|
+
onClick: () => D(e),
|
|
112
|
+
ref: (I) => {
|
|
113
|
+
I ? i.current.set(e.key, I) : i.current.delete(e.key);
|
|
114
|
+
},
|
|
115
|
+
role: r ? "menuitemcheckbox" : "menuitem",
|
|
116
|
+
tabIndex: a === e.key ? 0 : -1,
|
|
117
|
+
type: "button",
|
|
118
|
+
children: [
|
|
119
|
+
e.icon && /* @__PURE__ */ n("span", { "aria-hidden": "true", className: t.icon, children: e.icon }),
|
|
120
|
+
/* @__PURE__ */ n("span", { className: t.label, children: e.label }),
|
|
121
|
+
e.shortcut && /* @__PURE__ */ n("kbd", { "aria-hidden": "true", className: t.shortcut, children: e.shortcut }),
|
|
122
|
+
r && /* @__PURE__ */ n(V, { className: [t.check, e.checked && t.checkOn].filter(Boolean).join(" ") })
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
e.key
|
|
126
|
+
);
|
|
97
127
|
}
|
|
98
|
-
function
|
|
99
|
-
e.key === "ArrowDown" ? (e.preventDefault(),
|
|
128
|
+
function B(e) {
|
|
129
|
+
e.key === "ArrowDown" ? (e.preventDefault(), k()) : e.key === "ArrowUp" ? (e.preventDefault(), b()) : e.key === "Home" ? (e.preventDefault(), u()) : e.key === "End" ? (e.preventDefault(), y()) : e.key === "Escape" || e.key === "Tab" ? c(!0) : e.key.length === 1 && !e.metaKey && !e.ctrlKey && p(e.key);
|
|
100
130
|
}
|
|
101
|
-
return /* @__PURE__ */
|
|
131
|
+
return /* @__PURE__ */ n(
|
|
102
132
|
"div",
|
|
103
133
|
{
|
|
104
|
-
...
|
|
134
|
+
...f,
|
|
105
135
|
"data-react-aria-top-layer": "true",
|
|
106
|
-
ref:
|
|
107
|
-
className:
|
|
108
|
-
style: { ...
|
|
136
|
+
ref: m,
|
|
137
|
+
className: t.menu,
|
|
138
|
+
style: { ...w.style, maxHeight: o },
|
|
109
139
|
role: "menu",
|
|
110
|
-
"aria-label":
|
|
140
|
+
"aria-label": d,
|
|
111
141
|
onKeyDown: (e) => {
|
|
112
142
|
var r;
|
|
113
|
-
|
|
143
|
+
B(e), (r = f.onKeyDown) == null || r.call(f, e);
|
|
114
144
|
},
|
|
115
|
-
children:
|
|
116
|
-
"
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
},
|
|
121
|
-
className: P.item,
|
|
122
|
-
type: "button",
|
|
123
|
-
role: "menuitem",
|
|
124
|
-
disabled: e.disabled,
|
|
125
|
-
tabIndex: u === e.key ? 0 : -1,
|
|
126
|
-
onClick: () => t(e),
|
|
127
|
-
children: e.label
|
|
128
|
-
},
|
|
129
|
-
e.key
|
|
130
|
-
))
|
|
145
|
+
children: s.map((e, r) => E(e) ? /* @__PURE__ */ K("div", { "aria-label": e.title, className: t.section, role: "group", children: [
|
|
146
|
+
r > 0 && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.divider }),
|
|
147
|
+
e.title && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.sectionTitle, children: e.title }),
|
|
148
|
+
e.items.map(O)
|
|
149
|
+
] }, e.key) : O(e))
|
|
131
150
|
}
|
|
132
151
|
);
|
|
133
152
|
}
|
|
134
153
|
export {
|
|
135
|
-
|
|
154
|
+
ee as Menu
|
|
136
155
|
};
|
|
137
156
|
//# sourceMappingURL=Menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_menu_ssmgq_1",s="_item_ssmgq_20",c="_icon_ssmgq_53",t="_label_ssmgq_60",n="_shortcut_ssmgq_66",_="_check_ssmgq_75",o="_checkOn_ssmgq_81",i="_danger_ssmgq_85",m="_section_ssmgq_101",l="_divider_ssmgq_107",g="_sectionTitle_ssmgq_113",r={menu:e,item:s,icon:c,label:t,shortcut:n,check:_,checkOn:o,danger:i,section:m,divider:l,sectionTitle:g};exports.check=_;exports.checkOn=o;exports.danger=i;exports.default=r;exports.divider=l;exports.icon=c;exports.item=s;exports.label=t;exports.menu=e;exports.section=m;exports.sectionTitle=g;exports.shortcut=n;
|
|
2
2
|
//# sourceMappingURL=Menu.module.css.cjs.map
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
const e = "
|
|
2
|
-
menu:
|
|
3
|
-
item:
|
|
1
|
+
const s = "_menu_ssmgq_1", c = "_item_ssmgq_20", e = "_icon_ssmgq_53", t = "_label_ssmgq_60", _ = "_shortcut_ssmgq_66", n = "_check_ssmgq_75", o = "_checkOn_ssmgq_81", i = "_danger_ssmgq_85", m = "_section_ssmgq_101", g = "_divider_ssmgq_107", l = "_sectionTitle_ssmgq_113", q = {
|
|
2
|
+
menu: s,
|
|
3
|
+
item: c,
|
|
4
|
+
icon: e,
|
|
5
|
+
label: t,
|
|
6
|
+
shortcut: _,
|
|
7
|
+
check: n,
|
|
8
|
+
checkOn: o,
|
|
9
|
+
danger: i,
|
|
10
|
+
section: m,
|
|
11
|
+
divider: g,
|
|
12
|
+
sectionTitle: l
|
|
4
13
|
};
|
|
5
14
|
export {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
15
|
+
n as check,
|
|
16
|
+
o as checkOn,
|
|
17
|
+
i as danger,
|
|
18
|
+
q as default,
|
|
19
|
+
g as divider,
|
|
20
|
+
e as icon,
|
|
21
|
+
c as item,
|
|
22
|
+
t as label,
|
|
23
|
+
s as menu,
|
|
24
|
+
m as section,
|
|
25
|
+
l as sectionTitle,
|
|
26
|
+
_ as shortcut
|
|
9
27
|
};
|
|
10
28
|
//# sourceMappingURL=Menu.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|