@gunkin/uiify 0.0.22-alpha → 0.0.25-alpha
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/agents/index.md +1 -1
- package/agents/reference/components/accordion.md +23 -3
- package/agents/reference/components/alert-modal.md +25 -7
- package/agents/reference/components/alert.md +13 -1
- package/agents/reference/components/aspect-ratio.md +12 -0
- package/agents/reference/components/avatar.md +14 -0
- package/agents/reference/components/badge.md +4 -0
- package/agents/reference/components/breadcrumb.md +25 -1
- package/agents/reference/components/button.md +4 -0
- package/agents/reference/components/candle-chart.md +54 -2
- package/agents/reference/components/card.md +4 -0
- package/agents/reference/components/carousel.md +34 -1
- package/agents/reference/components/checkbox.md +7 -1
- package/agents/reference/components/collapsible.md +21 -3
- package/agents/reference/components/color-picker.md +22 -2
- package/agents/reference/components/combobox.md +24 -9
- package/agents/reference/components/context-menu.md +41 -5
- package/agents/reference/components/date-picker.md +4 -0
- package/agents/reference/components/description-list.md +4 -0
- package/agents/reference/components/drawer.md +35 -5
- package/agents/reference/components/dropdown-menu.md +8 -3
- package/agents/reference/components/empty.md +4 -0
- package/agents/reference/components/field.md +8 -3
- package/agents/reference/components/fieldset.md +4 -0
- package/agents/reference/components/file-upload.md +4 -0
- package/agents/reference/components/form-error-summary.md +15 -1
- package/agents/reference/components/form.md +4 -0
- package/agents/reference/components/header.md +4 -0
- package/agents/reference/components/hover-card.md +4 -0
- package/agents/reference/components/input-group.md +4 -0
- package/agents/reference/components/input.md +4 -0
- package/agents/reference/components/item.md +4 -0
- package/agents/reference/components/line-chart.md +45 -2
- package/agents/reference/components/modal.md +27 -3
- package/agents/reference/components/number-field.md +4 -0
- package/agents/reference/components/otp-input.md +4 -0
- package/agents/reference/components/pagination.md +17 -1
- package/agents/reference/components/popup.md +5 -0
- package/agents/reference/components/progress.md +4 -0
- package/agents/reference/components/radio-group.md +13 -2
- package/agents/reference/components/rating.md +13 -2
- package/agents/reference/components/segmented-control.md +13 -3
- package/agents/reference/components/select.md +5 -0
- package/agents/reference/components/skeleton.md +4 -0
- package/agents/reference/components/slider.md +17 -1
- package/agents/reference/components/spinner.md +14 -1
- package/agents/reference/components/switch.md +4 -0
- package/agents/reference/components/table-of-contents.md +4 -0
- package/agents/reference/components/table.md +20 -0
- package/agents/reference/components/tabs.md +26 -3
- package/agents/reference/components/tags-input.md +26 -1
- package/agents/reference/components/textarea.md +4 -0
- package/agents/reference/components/toast.md +59 -10
- package/agents/reference/components/toggle-group.md +10 -3
- package/agents/reference/components/toggle.md +20 -3
- package/agents/reference/components/toolbar.md +8 -4
- package/agents/reference/components/tooltip.md +4 -0
- package/agents/reference/components/virtual-scroll.md +35 -2
- package/agents/reference/elements/choice.md +21 -8
- package/agents/reference/elements/details.md +1 -1
- package/agents/reference/elements/dialog.md +1 -1
- package/agents/reference/elements/invoker.md +1 -1
- package/agents/reference/elements/popover.md +1 -1
- package/dist/components/accordion/Accordion.d.ts +1 -1
- package/dist/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/accordion/Accordion.js +62 -15
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/index.d.ts +1 -1
- package/dist/components/accordion/index.d.ts.map +1 -1
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/accordion/types.d.ts +23 -2
- package/dist/components/accordion/types.d.ts.map +1 -1
- package/dist/components/alert/Alert.d.ts.map +1 -1
- package/dist/components/alert/Alert.js +11 -1
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/alert/index.d.ts +1 -1
- package/dist/components/alert/index.d.ts.map +1 -1
- package/dist/components/alert/index.js.map +1 -1
- package/dist/components/alert/types.d.ts +11 -1
- package/dist/components/alert/types.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModal.d.ts +1 -1
- package/dist/components/alert-modal/AlertModal.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModal.js +139 -20
- package/dist/components/alert-modal/AlertModal.js.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.js +37 -4
- package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
- package/dist/components/alert-modal/index.d.ts +1 -1
- package/dist/components/alert-modal/index.d.ts.map +1 -1
- package/dist/components/alert-modal/index.js.map +1 -1
- package/dist/components/alert-modal/types.d.ts +40 -6
- package/dist/components/alert-modal/types.d.ts.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.js +10 -2
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
- package/dist/components/aspect-ratio/types.d.ts +10 -1
- package/dist/components/aspect-ratio/types.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js +19 -2
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/types.d.ts +19 -1
- package/dist/components/avatar/types.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts +2 -2
- package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +118 -26
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js.map +1 -1
- package/dist/components/breadcrumb/types.d.ts +40 -1
- package/dist/components/breadcrumb/types.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.js +269 -119
- package/dist/components/candle-chart/CandleChart.js.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.js +21 -1
- package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
- package/dist/components/candle-chart/client/index.d.ts +1 -1
- package/dist/components/candle-chart/client/index.d.ts.map +1 -1
- package/dist/components/candle-chart/client/index.js.map +1 -1
- package/dist/components/candle-chart/index.d.ts +1 -1
- package/dist/components/candle-chart/index.d.ts.map +1 -1
- package/dist/components/candle-chart/index.js.map +1 -1
- package/dist/components/candle-chart/types.d.ts +129 -1
- package/dist/components/candle-chart/types.d.ts.map +1 -1
- package/dist/components/carousel/Carousel.d.ts +2 -2
- package/dist/components/carousel/Carousel.d.ts.map +1 -1
- package/dist/components/carousel/Carousel.js +2 -1
- package/dist/components/carousel/Carousel.js.map +1 -1
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +137 -22
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/carousel/client/CarouselClient.d.ts.map +1 -1
- package/dist/components/carousel/client/CarouselClient.js +3 -2
- package/dist/components/carousel/client/CarouselClient.js.map +1 -1
- package/dist/components/carousel/client/carousel-controls.d.ts.map +1 -1
- package/dist/components/carousel/client/carousel-controls.js +2 -2
- package/dist/components/carousel/client/carousel-controls.js.map +1 -1
- package/dist/components/carousel/fade/FadeCarouselClient.d.ts.map +1 -1
- package/dist/components/carousel/fade/FadeCarouselClient.js +3 -2
- package/dist/components/carousel/fade/FadeCarouselClient.js.map +1 -1
- package/dist/components/carousel/index.d.ts +1 -1
- package/dist/components/carousel/index.d.ts.map +1 -1
- package/dist/components/carousel/index.js.map +1 -1
- package/dist/components/carousel/types.d.ts +85 -2
- package/dist/components/carousel/types.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +6 -1
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.js +6 -1
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox/index.d.ts.map +1 -1
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/types.d.ts +3 -0
- package/dist/components/checkbox/types.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.d.ts +1 -1
- package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.js +35 -4
- package/dist/components/collapsible/Collapsible.js.map +1 -1
- package/dist/components/collapsible/index.d.ts +1 -1
- package/dist/components/collapsible/index.d.ts.map +1 -1
- package/dist/components/collapsible/index.js.map +1 -1
- package/dist/components/collapsible/types.d.ts +25 -3
- package/dist/components/collapsible/types.d.ts.map +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/components/color-picker/ColorPicker.js +165 -49
- package/dist/components/color-picker/ColorPicker.js.map +1 -1
- package/dist/components/color-picker/index.d.ts +1 -1
- package/dist/components/color-picker/index.d.ts.map +1 -1
- package/dist/components/color-picker/index.js.map +1 -1
- package/dist/components/color-picker/types.d.ts +37 -0
- package/dist/components/color-picker/types.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +44 -25
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/combobox/index.d.ts.map +1 -1
- package/dist/components/combobox/index.js.map +1 -1
- package/dist/components/combobox/types.d.ts +29 -4
- package/dist/components/combobox/types.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.js +48 -11
- package/dist/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/index.d.ts.map +1 -1
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/context-menu/types.d.ts +35 -9
- package/dist/components/context-menu/types.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +5 -1
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/DrawerNative.d.ts +1 -1
- package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
- package/dist/components/drawer/DrawerNative.js +254 -44
- package/dist/components/drawer/DrawerNative.js.map +1 -1
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/index.d.ts.map +1 -1
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/types.d.ts +31 -6
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +8 -2
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.js +47 -29
- package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +7 -5
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/field/types.d.ts +4 -4
- package/dist/components/field/types.d.ts.map +1 -1
- package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -1
- package/dist/components/form-error-summary/FormErrorSummary.js +35 -3
- package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -1
- package/dist/components/form-error-summary/index.d.ts +1 -1
- package/dist/components/form-error-summary/index.d.ts.map +1 -1
- package/dist/components/form-error-summary/index.js.map +1 -1
- package/dist/components/form-error-summary/types.d.ts +20 -1
- package/dist/components/form-error-summary/types.d.ts.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.js +61 -11
- package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
- package/dist/components/internal/choice-family/types.d.ts +51 -1
- package/dist/components/internal/choice-family/types.d.ts.map +1 -1
- package/dist/components/internal/menu/types.d.ts +1 -0
- package/dist/components/internal/menu/types.d.ts.map +1 -1
- package/dist/components/internal/menu/use-menu-surface.d.ts.map +1 -1
- package/dist/components/internal/menu/use-menu-surface.js +2 -1
- package/dist/components/internal/menu/use-menu-surface.js.map +1 -1
- package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
- package/dist/components/internal/native-check-control/NativeCheckControl.js +35 -3
- package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
- package/dist/components/internal/native-check-control/types.d.ts +21 -1
- package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.d.ts +1 -1
- package/dist/components/line-chart/LineChart.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.js +260 -79
- package/dist/components/line-chart/LineChart.js.map +1 -1
- package/dist/components/line-chart/client/LineChartClient.d.ts.map +1 -1
- package/dist/components/line-chart/client/LineChartClient.js +21 -1
- package/dist/components/line-chart/client/LineChartClient.js.map +1 -1
- package/dist/components/line-chart/client/index.d.ts +1 -1
- package/dist/components/line-chart/client/index.d.ts.map +1 -1
- package/dist/components/line-chart/client/index.js.map +1 -1
- package/dist/components/line-chart/index.d.ts +1 -1
- package/dist/components/line-chart/index.d.ts.map +1 -1
- package/dist/components/line-chart/index.js.map +1 -1
- package/dist/components/line-chart/types.d.ts +113 -1
- package/dist/components/line-chart/types.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +118 -43
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/modal/index.js.map +1 -1
- package/dist/components/modal/types.d.ts +24 -2
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.js +4 -2
- package/dist/components/otp-input/OtpInput.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +172 -55
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/types.d.ts +33 -1
- package/dist/components/pagination/types.d.ts.map +1 -1
- package/dist/components/radio-group/RadioGroup.d.ts +1 -1
- package/dist/components/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/radio-group/RadioGroup.js +5 -1
- package/dist/components/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/radio-group/index.d.ts +1 -1
- package/dist/components/radio-group/index.d.ts.map +1 -1
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/radio-group/types.d.ts +4 -2
- package/dist/components/radio-group/types.d.ts.map +1 -1
- package/dist/components/rating/Rating.d.ts +1 -1
- package/dist/components/rating/Rating.d.ts.map +1 -1
- package/dist/components/rating/Rating.js +5 -1
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/rating/client/RatingClient.d.ts +1 -1
- package/dist/components/rating/client/RatingClient.d.ts.map +1 -1
- package/dist/components/rating/client/RatingClient.js +5 -1
- package/dist/components/rating/client/RatingClient.js.map +1 -1
- package/dist/components/rating/index.d.ts +1 -1
- package/dist/components/rating/index.d.ts.map +1 -1
- package/dist/components/rating/index.js.map +1 -1
- package/dist/components/rating/types.d.ts +12 -1
- package/dist/components/rating/types.d.ts.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.js +5 -1
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.d.ts +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.d.ts.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.js +5 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.js.map +1 -1
- package/dist/components/segmented-control/index.d.ts +1 -1
- package/dist/components/segmented-control/index.d.ts.map +1 -1
- package/dist/components/segmented-control/index.js.map +1 -1
- package/dist/components/segmented-control/types.d.ts +4 -4
- package/dist/components/segmented-control/types.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.js +102 -20
- package/dist/components/slider/client/SliderClient.js.map +1 -1
- package/dist/components/slider/client/index.d.ts +1 -1
- package/dist/components/slider/client/index.d.ts.map +1 -1
- package/dist/components/slider/client/index.js.map +1 -1
- package/dist/components/slider/types.d.ts +46 -1
- package/dist/components/slider/types.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +19 -3
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/spinner/index.d.ts +1 -1
- package/dist/components/spinner/index.d.ts.map +1 -1
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/types.d.ts +11 -1
- package/dist/components/spinner/types.d.ts.map +1 -1
- package/dist/components/table/client/TableColumnHeader.d.ts +3 -3
- package/dist/components/table/client/TableColumnHeader.d.ts.map +1 -1
- package/dist/components/table/client/TableColumnHeader.js +24 -2
- package/dist/components/table/client/TableColumnHeader.js.map +1 -1
- package/dist/components/table/client/TableSelection.d.ts +3 -3
- package/dist/components/table/client/TableSelection.d.ts.map +1 -1
- package/dist/components/table/client/TableSelection.js +6 -4
- package/dist/components/table/client/TableSelection.js.map +1 -1
- package/dist/components/table/client.d.ts +1 -1
- package/dist/components/table/client.d.ts.map +1 -1
- package/dist/components/table/client.js.map +1 -1
- package/dist/components/table/types.d.ts +17 -0
- package/dist/components/table/types.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +45 -1
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/index.d.ts +1 -1
- package/dist/components/tabs/index.d.ts.map +1 -1
- package/dist/components/tabs/index.js.map +1 -1
- package/dist/components/tabs/types.d.ts +29 -3
- package/dist/components/tabs/types.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.js +54 -9
- package/dist/components/tags-input/TagsInput.js.map +1 -1
- package/dist/components/tags-input/index.d.ts +1 -1
- package/dist/components/tags-input/index.d.ts.map +1 -1
- package/dist/components/tags-input/index.js.map +1 -1
- package/dist/components/tags-input/types.d.ts +27 -4
- package/dist/components/tags-input/types.d.ts.map +1 -1
- package/dist/components/toast/Toast.d.ts +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +123 -35
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/ToastElements.d.ts.map +1 -1
- package/dist/components/toast/ToastElements.js +73 -12
- package/dist/components/toast/ToastElements.js.map +1 -1
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/index.d.ts.map +1 -1
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/types.d.ts +49 -16
- package/dist/components/toast/types.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +1 -1
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +63 -29
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/index.d.ts +1 -1
- package/dist/components/toggle/index.d.ts.map +1 -1
- package/dist/components/toggle/index.js.map +1 -1
- package/dist/components/toggle/types.d.ts +31 -3
- package/dist/components/toggle/types.d.ts.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.js +5 -1
- package/dist/components/toggle-group/ToggleGroup.js.map +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.d.ts +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.d.ts.map +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.js +15 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.js.map +1 -1
- package/dist/components/toggle-group/index.d.ts +1 -1
- package/dist/components/toggle-group/index.d.ts.map +1 -1
- package/dist/components/toggle-group/index.js.map +1 -1
- package/dist/components/toggle-group/types.d.ts +4 -4
- package/dist/components/toggle-group/types.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +3 -12
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +22 -2
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/components/toolbar/types.d.ts +5 -5
- package/dist/components/toolbar/types.d.ts.map +1 -1
- package/dist/components/virtual-scroll/VirtualScroll.d.ts.map +1 -1
- package/dist/components/virtual-scroll/VirtualScroll.js +53 -20
- package/dist/components/virtual-scroll/VirtualScroll.js.map +1 -1
- package/dist/components/virtual-scroll/VirtualScrollRowShell.d.ts +3 -14
- package/dist/components/virtual-scroll/VirtualScrollRowShell.d.ts.map +1 -1
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js +6 -3
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js.map +1 -1
- package/dist/components/virtual-scroll/index.d.ts +1 -1
- package/dist/components/virtual-scroll/index.d.ts.map +1 -1
- package/dist/components/virtual-scroll/index.js.map +1 -1
- package/dist/components/virtual-scroll/types.d.ts +35 -2
- package/dist/components/virtual-scroll/types.d.ts.map +1 -1
- package/dist/components/virtual-scroll/types.js.map +1 -1
- package/dist/core/slot-props.d.ts +19 -0
- package/dist/core/slot-props.d.ts.map +1 -0
- package/dist/core/slot-props.js +59 -0
- package/dist/core/slot-props.js.map +1 -0
- package/dist/core/use-popover.d.ts +2 -1
- package/dist/core/use-popover.d.ts.map +1 -1
- package/dist/core/use-popover.js +3 -1
- package/dist/core/use-popover.js.map +1 -1
- package/dist/elements/choice/Choice.d.ts.map +1 -1
- package/dist/elements/choice/Choice.js +47 -7
- package/dist/elements/choice/Choice.js.map +1 -1
- package/dist/elements/choice/index.d.ts +1 -1
- package/dist/elements/choice/index.d.ts.map +1 -1
- package/dist/elements/choice/index.js.map +1 -1
- package/dist/elements/choice/types.d.ts +25 -10
- package/dist/elements/choice/types.d.ts.map +1 -1
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/tailwind.css +17 -16
- package/package.json +1 -1
- package/skills/uiify/SKILL.md +1 -1
- package/skills/uiify/references/elements/accordion.md +1 -1
- package/skills/uiify/references/elements/breadcrumb.md +1 -0
- package/skills/uiify/references/elements/checkbox.md +1 -1
- package/skills/uiify/references/elements/color-picker.md +1 -1
- package/skills/uiify/references/elements/combobox.md +1 -1
- package/skills/uiify/references/elements/context-menu.md +1 -1
- package/skills/uiify/references/elements/dropdown-menu.md +1 -1
- package/skills/uiify/references/elements/form-error-summary.md +5 -0
- package/skills/uiify/references/elements/pagination.md +1 -1
- package/skills/uiify/references/elements/radio-group.md +1 -0
- package/skills/uiify/references/elements/rating.md +1 -1
- package/skills/uiify/references/elements/segmented-control.md +1 -0
- package/skills/uiify/references/elements/spinner.md +1 -1
- package/skills/uiify/references/elements/table.md +1 -1
- package/skills/uiify/references/elements/tabs.md +1 -1
- package/skills/uiify/references/elements/tags-input.md +1 -1
- package/skills/uiify/references/elements/toast.md +1 -0
- package/skills/uiify/references/elements/toggle-group.md +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/drawer/index.ts"],"sourcesContent":["export {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerHandle,\n DrawerRoot,\n DrawerTitle,\n DrawerTrigger,\n} from \"./Drawer.js\";\nexport {\n DrawerPanel,\n DrawerNativeTrigger,\n DrawerNativeClose,\n DrawerNativeContent,\n} from \"./DrawerNative.js\";\nexport type {\n DrawerCloseOwnProps,\n DrawerCloseProps,\n DrawerContentOwnProps,\n DrawerContentProps,\n DrawerDescriptionOwnProps,\n DrawerHandleOwnProps,\n DrawerRootOwnProps,\n DrawerRootProps,\n DrawerTitleOwnProps,\n DrawerTriggerOwnProps,\n DrawerTriggerProps,\n} from \"./types.js\";\nexport type {\n DrawerProps,\n DrawerLabels,\n DrawerSide,\n DrawerAppearanceProps,\n DrawerNativeContentProps,\n DrawerNativeInvokerProps,\n} from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/index.ts"],"sourcesContent":["export {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerHandle,\n DrawerRoot,\n DrawerTitle,\n DrawerTrigger,\n} from \"./Drawer.js\";\nexport {\n DrawerPanel,\n DrawerNativeTrigger,\n DrawerNativeClose,\n DrawerNativeContent,\n} from \"./DrawerNative.js\";\nexport type {\n DrawerCloseOwnProps,\n DrawerCloseProps,\n DrawerContentOwnProps,\n DrawerContentProps,\n DrawerDescriptionOwnProps,\n DrawerHandleOwnProps,\n DrawerRootOwnProps,\n DrawerRootProps,\n DrawerTitleOwnProps,\n DrawerTriggerOwnProps,\n DrawerTriggerProps,\n} from \"./types.js\";\nexport type {\n DrawerProps,\n DrawerLabels,\n DrawerSide,\n DrawerAppearanceProps,\n DrawerNativeContentProps,\n DrawerNativeInvokerProps,\n DrawerOwnProps,\n DrawerSlotProps,\n} from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type { ComponentPropsWithRef, CSSProperties, MouseEvent, PointerEvent, ReactNode, Ref, RefObject } from "react";
|
|
1
|
+
import type { ComponentPropsWithRef, CSSProperties, ElementType, MouseEvent, PointerEvent, ReactNode, Ref, RefObject } from "react";
|
|
2
2
|
import type { DialogChangeHandler, UseDialogReturn } from "@gunkin/uiify/core/dialog";
|
|
3
|
+
import type { ConsumerDataAttributes } from "../../core/slot-props.js";
|
|
3
4
|
export type DrawerSide = "top" | "right" | "bottom" | "left";
|
|
4
5
|
export interface DrawerAppearanceProps {
|
|
5
6
|
readonly size?: "sm" | "md" | "lg" | "full";
|
|
6
7
|
readonly dismiss?: "any" | "closerequest" | "none";
|
|
7
8
|
readonly backdrop?: "opaque" | "transparent";
|
|
8
9
|
}
|
|
9
|
-
export interface
|
|
10
|
+
export interface DrawerOwnProps extends DrawerAppearanceProps {
|
|
10
11
|
readonly id: string;
|
|
11
12
|
readonly trigger: ReactNode;
|
|
12
13
|
readonly title: ReactNode;
|
|
@@ -16,16 +17,39 @@ export interface DrawerProps extends DrawerAppearanceProps {
|
|
|
16
17
|
readonly labels?: Partial<DrawerLabels>;
|
|
17
18
|
readonly footer?: ReactNode;
|
|
18
19
|
readonly side?: DrawerSide;
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/** Native props for generated inner nodes; DrawerPanel's root takes props directly. */
|
|
21
|
+
readonly slotProps?: DrawerSlotProps;
|
|
22
|
+
}
|
|
23
|
+
type DrawerSlotElementProps<T extends ElementType, TProtected extends string = never> = Omit<ComponentPropsWithRef<T>, "children" | "dangerouslySetInnerHTML" | TProtected> & ConsumerDataAttributes & {
|
|
24
|
+
readonly [K in TProtected]?: never;
|
|
25
|
+
};
|
|
26
|
+
export interface DrawerSlotProps {
|
|
27
|
+
readonly trigger?: DrawerSlotElementProps<"button", "type" | "command" | "commandfor" | "commandFor" | "popoverTarget" | "popoverTargetAction" | "data-part" | "data-uiify-button" | "data-uiify-drawer">;
|
|
28
|
+
readonly content?: DrawerSlotElementProps<"dialog", "size" | "dismiss" | "side" | "backdrop" | "id" | "open" | "popover" | "closedby" | "aria-describedby" | "aria-labelledby" | "aria-modal" | "data-part" | "data-side" | "data-size" | "data-backdrop" | "data-state" | "data-snap-enabled" | "data-uiify-drawer">;
|
|
29
|
+
readonly grabber?: DrawerSlotElementProps<"div", "aria-hidden" | "data-part" | "data-uiify-drawer">;
|
|
30
|
+
readonly header?: DrawerSlotElementProps<"div", "data-part" | "data-uiify-drawer">;
|
|
31
|
+
readonly title?: DrawerSlotElementProps<"h2", "id" | "data-part" | "data-uiify-drawer">;
|
|
32
|
+
readonly description?: DrawerSlotElementProps<"p", "id" | "data-part" | "data-uiify-drawer">;
|
|
33
|
+
readonly close?: DrawerSlotElementProps<"button", "type" | "command" | "commandfor" | "commandFor" | "popoverTarget" | "popoverTargetAction" | "aria-label" | "data-part" | "data-variant" | "data-uiify-button" | "data-uiify-drawer">;
|
|
34
|
+
readonly closeIcon?: DrawerSlotElementProps<"svg", "aria-hidden" | "focusable">;
|
|
35
|
+
readonly closeIconPath?: DrawerSlotElementProps<"path">;
|
|
36
|
+
readonly body?: DrawerSlotElementProps<"div", "data-part" | "data-uiify-drawer">;
|
|
37
|
+
readonly footer?: DrawerSlotElementProps<"div", "data-part" | "data-uiify-drawer">;
|
|
38
|
+
}
|
|
39
|
+
export type DrawerProps = DrawerOwnProps & Omit<DrawerSlotElementProps<"div", "data-part" | "data-side" | "data-uiify-drawer">, keyof DrawerOwnProps>;
|
|
21
40
|
export interface DrawerLabels {
|
|
22
41
|
readonly close: string;
|
|
23
42
|
}
|
|
24
|
-
export interface DrawerNativeContentProps extends Omit<ComponentPropsWithRef<"dialog">, "open" | "popover" | "closedby">, DrawerAppearanceProps {
|
|
43
|
+
export interface DrawerNativeContentProps extends Omit<ComponentPropsWithRef<"dialog">, "open" | "popover" | "closedby" | "dangerouslySetInnerHTML" | "data-part" | "data-side" | "data-size" | "data-backdrop" | "data-uiify-drawer">, DrawerAppearanceProps {
|
|
25
44
|
readonly id: string;
|
|
26
45
|
readonly side?: DrawerSide;
|
|
46
|
+
readonly "data-part"?: never;
|
|
47
|
+
readonly "data-side"?: never;
|
|
48
|
+
readonly "data-size"?: never;
|
|
49
|
+
readonly "data-backdrop"?: never;
|
|
50
|
+
readonly "data-uiify-drawer"?: never;
|
|
27
51
|
}
|
|
28
|
-
export interface DrawerNativeInvokerProps extends Omit<ComponentPropsWithRef<"button">, "command" | "commandFor"> {
|
|
52
|
+
export interface DrawerNativeInvokerProps extends Omit<ComponentPropsWithRef<"button">, "type" | "command" | "commandfor" | "commandFor" | "popoverTarget" | "popoverTargetAction" | "data-part" | "data-variant" | "data-uiify-button" | "data-uiify-drawer" | "dangerouslySetInnerHTML"> {
|
|
29
53
|
readonly target: string;
|
|
30
54
|
}
|
|
31
55
|
export interface DrawerStoreOptions {
|
|
@@ -125,4 +149,5 @@ export interface DrawerHandleOwnProps extends ComponentPropsWithRef<"div"> {
|
|
|
125
149
|
readonly onPointerMove?: (event: PointerEvent<HTMLDivElement>) => void;
|
|
126
150
|
readonly onPointerUp?: (event: PointerEvent<HTMLDivElement>) => void;
|
|
127
151
|
}
|
|
152
|
+
export {};
|
|
128
153
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,GAAG,EACH,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/DropdownMenu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAIX,YAAY,EAGb,MAAM,OAAO,CAAC;AAiBf,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAEV,6BAA6B,EAC7B,wBAAwB,EAExB,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EAGtB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAYlD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -30,12 +30,18 @@ function DropdownMenuRoot(props) {
|
|
|
30
30
|
defaultOpen,
|
|
31
31
|
dir: localDir,
|
|
32
32
|
disabled = false,
|
|
33
|
+
id,
|
|
33
34
|
loop = true,
|
|
34
35
|
onOpenChange,
|
|
35
|
-
open
|
|
36
|
+
open,
|
|
37
|
+
...rootProps
|
|
36
38
|
} = props;
|
|
39
|
+
const nativeRootProps = Object.fromEntries(
|
|
40
|
+
Object.entries(rootProps).filter(([name]) => name !== "dangerouslySetInnerHTML")
|
|
41
|
+
);
|
|
37
42
|
const dir = useDirectionOverride(localDir);
|
|
38
43
|
const surface = useMenuSurface({
|
|
44
|
+
...id !== void 0 ? { id } : {},
|
|
39
45
|
mode: "auto",
|
|
40
46
|
...defaultOpen !== void 0 ? { defaultOpen } : {},
|
|
41
47
|
...open !== void 0 ? { open } : {},
|
|
@@ -67,7 +73,7 @@ function DropdownMenuRoot(props) {
|
|
|
67
73
|
}),
|
|
68
74
|
[cancelHoverClose, surface, dir, disabled, loop, scheduleHoverClose]
|
|
69
75
|
);
|
|
70
|
-
return /* @__PURE__ */ jsx("div", { className, "data-uiify-menu": "", children: /* @__PURE__ */ jsx(DropdownMenuProvider, { value, children }) });
|
|
76
|
+
return /* @__PURE__ */ jsx("div", { ...nativeRootProps, className, "data-uiify-menu": "", children: /* @__PURE__ */ jsx(DropdownMenuProvider, { value, children }) });
|
|
71
77
|
}
|
|
72
78
|
function DropdownMenuTrigger(props) {
|
|
73
79
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type {\n ElementType,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactElement,\n RefObject,\n SyntheticEvent,\n} from \"react\";\nimport { useControllableState, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport { createPartContext, splitRef } from \"@gunkin/uiify/core\";\nimport { useAnchorPosition } from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useDirectionOverride } from \"@gunkin/uiify/core/direction\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\nimport { createHoverIntentStore } from \"@gunkin/uiify/core/hover-intent-store\";\nimport type { HoverIntentStore } from \"@gunkin/uiify/core/hover-intent-store\";\nimport type { OpenChangeDetails } from \"@gunkin/uiify/core/open-change-details\";\nimport { usePopover } from \"@gunkin/uiify/core/popover\";\nimport { RovingFocusItem, RovingFocusRoot } from \"@gunkin/uiify/core/roving-focus\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { createMenuSelectEvent } from \"../internal/menu/menu-utils.js\";\nimport { focusMenuItem } from \"../internal/menu/focus-menu-item.js\";\nimport { MenuGroup, MenuLabel, MenuSeparator } from \"../internal/menu/menu-parts.js\";\nimport { useMenuSurface } from \"../internal/menu/use-menu-surface.js\";\nimport { DropdownMenuBar } from \"./DropdownMenuBar.js\";\nimport type {\n DropdownMenuCheckedState,\n DropdownMenuCheckboxItemProps,\n DropdownMenuContentProps,\n DropdownMenuContextValue,\n DropdownMenuGroupProps,\n DropdownMenuItemDescriptionProps,\n DropdownMenuItemIconProps,\n DropdownMenuItemIndicatorProps,\n DropdownMenuItemProps,\n DropdownMenuItemTextProps,\n DropdownMenuLabelProps,\n DropdownMenuOpenChangeReason,\n DropdownMenuPartProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuRootProps,\n DropdownMenuSeparatorProps,\n DropdownMenuShortcutProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n} from \"./types.js\";\n\nexport type { MenuSelectEvent } from \"./types.js\";\n\nfunction mapReason(reason: OpenChangeDetails[\"reason\"]): DropdownMenuOpenChangeReason {\n if (reason === \"escape-key\") return \"escape\";\n if (reason === \"focus-outside\") return \"focus-out\";\n if (reason === \"native-toggle\") return \"trigger-press\";\n return reason;\n}\n\nconst [DropdownMenuProvider, useDropdownMenuContext] =\n createPartContext<DropdownMenuContextValue>(\"DropdownMenu\");\n\nexport function DropdownMenuRoot(props: DropdownMenuRootProps): ReactElement | null {\n const {\n children,\n className,\n defaultOpen,\n dir: localDir,\n disabled = false,\n loop = true,\n onOpenChange,\n open,\n } = props;\n const dir = useDirectionOverride(localDir);\n const surface = useMenuSurface({\n mode: \"auto\",\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(open !== undefined ? { open } : {}),\n ...(onOpenChange\n ? {\n onOpenChange: (next, details) =>\n onOpenChange(next, { event: details.event, reason: mapReason(details.reason) }),\n }\n : {}),\n });\n const intentRef = useRef<HoverIntentStore | null>(null);\n intentRef.current ??= createHoverIntentStore({ closeDelay: 150, openDelay: 0 });\n const intent = intentRef.current;\n const hoverEnabledRef = useRef(false);\n // Read by the scheduled close so a timer from a menu that already closed\n // cannot emit onOpenChange(false) over a sibling that opened since.\n const openRef = useRef(surface.open);\n openRef.current = surface.open;\n\n const cancelHoverClose = useCallback(() => intent.clearCloseTimer(), [intent]);\n const scheduleHoverClose = useCallback(() => {\n intent.scheduleClose(() => {\n if (openRef.current) surface.close();\n });\n }, [intent, surface]);\n\n const value = useMemo(\n () => ({\n ...surface,\n cancelHoverClose,\n ...(dir ? { dir } : {}),\n disabled,\n hoverEnabledRef,\n loop,\n scheduleHoverClose,\n }),\n [cancelHoverClose, surface, dir, disabled, loop, scheduleHoverClose],\n );\n return (\n <div className={className} data-uiify-menu=\"\">\n <DropdownMenuProvider value={value}>{children}</DropdownMenuProvider>\n </div>\n );\n}\n\nexport function DropdownMenuTrigger<TAs extends ElementType = \"button\">(\n props: DropdownMenuTriggerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n className,\n openOnHover = false,\n ...consumerProps\n } = props as DropdownMenuTriggerProps<\"button\"> & { openOnHover?: boolean };\n const {\n anchorProps,\n cancelHoverClose,\n close,\n disabled,\n focusTrigger,\n hoverEnabledRef,\n open,\n openPopover,\n openToItem,\n scheduleHoverClose,\n setTriggerElement,\n triggerProps,\n } = useDropdownMenuContext(\"Trigger\");\n hoverEnabledRef.current = openOnHover;\n const [consumerRef, withoutRef] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const mergedRef = useMergedRefs(setTriggerElement, consumerRef);\n const nativeButton = !as || as === \"button\";\n const {\n onClick: consumerOnClick,\n onKeyDown: consumerOnKeyDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = withoutRef as {\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n const internalOnClick = triggerProps.onClick as (event: MouseEvent<HTMLButtonElement>) => void;\n const handlePointerEnter = () => {\n if (disabled) return;\n cancelHoverClose();\n if (!open) openPopover();\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (open) close();\n else openToItem(false);\n } else if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n openToItem(event.key === \"ArrowUp\");\n } else if (event.key === \"Escape\" && open) {\n event.preventDefault();\n close();\n focusTrigger();\n }\n };\n return useRenderElement({\n as,\n defaultTag: \"button\",\n render,\n props: {\n ...withoutRef,\n ...triggerProps,\n ...anchorProps,\n ref: mergedRef,\n ...(nativeButton ? { \"data-uiify-button\": \"\" } : {}),\n \"aria-haspopup\": \"menu\",\n \"data-part\": \"trigger\",\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : undefined,\n disabled: nativeButton && disabled ? true : undefined,\n ...(nativeButton && !triggerProps.type ? { type: \"button\" } : {}),\n ...(className ? { className } : {}),\n onClick: disabled ? consumerOnClick : composeEventHandlers(consumerOnClick, internalOnClick),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, handleKeyDown),\n ...(openOnHover && !disabled\n ? {\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, handlePointerEnter),\n onPointerLeave: composeEventHandlers(consumerOnPointerLeave, scheduleHoverClose),\n }\n : {}),\n },\n state: { open },\n });\n}\n\nexport function DropdownMenuContent<TAs extends ElementType = \"div\">(\n props: DropdownMenuContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"start\",\n as,\n className,\n side = \"bottom\",\n children,\n render,\n ...consumerProps\n } = props as DropdownMenuContentProps<\"div\">;\n const {\n cancelHoverClose,\n close,\n contentRef,\n dir,\n focusTrigger,\n hoverEnabledRef,\n loop,\n open,\n popupProps,\n popupRef,\n positionerProps,\n scheduleHoverClose,\n } = useDropdownMenuContext(\"Content\");\n const [consumerRef, withoutRef] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const mergedRef = useMergedRefs(popupRef, contentRef, consumerRef);\n const {\n onKeyDown: consumerOnKeyDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = withoutRef as {\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close();\n focusTrigger();\n }\n };\n const contentProps = {\n ...withoutRef,\n ...popupProps,\n ...positionerProps,\n ref: mergedRef,\n role: \"menu\",\n \"data-part\": \"content\",\n \"data-align\": align,\n \"data-side\": side,\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, handleKeyDown),\n ...(hoverEnabledRef.current\n ? {\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, cancelHoverClose),\n onPointerLeave: composeEventHandlers(consumerOnPointerLeave, scheduleHoverClose),\n }\n : {}),\n children,\n };\n if (render)\n return (\n <RovingFocusRoot\n {...(dir ? { direction: dir } : {})}\n loop={loop}\n orientation=\"vertical\"\n {...contentProps}\n render={(p) => render(p, { open })}\n />\n );\n return (\n <RovingFocusRoot\n as={as ?? \"div\"}\n {...(dir ? { direction: dir } : {})}\n loop={loop}\n orientation=\"vertical\"\n {...contentProps}\n />\n );\n}\n\ninterface ItemActivationOptions {\n closeOnSelect: boolean;\n disabled: boolean;\n onSelect?: DropdownMenuItemProps[\"onSelect\"];\n onStateChange?: () => void;\n}\nfunction useItemActivation({\n closeOnSelect,\n disabled,\n onSelect,\n onStateChange,\n}: ItemActivationOptions) {\n const { close, focusTrigger } = useDropdownMenuContext(\"Item\");\n const select = (event: SyntheticEvent<HTMLElement>) => {\n if (disabled) return;\n const selectEvent = createMenuSelectEvent();\n onSelect?.(selectEvent);\n if (!selectEvent.defaultPrevented) {\n onStateChange?.();\n if (closeOnSelect) {\n close();\n focusTrigger();\n }\n }\n event.preventDefault();\n };\n return {\n select,\n keyDown: (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") select(event);\n },\n };\n}\n\nfunction MenuItem<TAs extends ElementType>(\n props: DropdownMenuItemProps<TAs> & {\n roleName: string;\n checked?: boolean | \"mixed\";\n state?: string;\n onStateChange?: () => void;\n defaultClose: boolean;\n },\n): ReactElement | null {\n const {\n as,\n render,\n children,\n className,\n closeOnSelect,\n disabled = false,\n onSelect,\n textValue,\n roleName,\n checked,\n state,\n onStateChange,\n defaultClose,\n ...consumerProps\n } = props as DropdownMenuItemProps<\"div\"> & {\n roleName: string;\n checked?: boolean | \"mixed\";\n state?: string;\n onStateChange?: () => void;\n defaultClose: boolean;\n };\n const { onClick: consumerOnClick, onKeyDown: consumerOnKeyDown } = consumerProps as {\n onClick?: (event: SyntheticEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n };\n const activation = useItemActivation({\n closeOnSelect: closeOnSelect ?? defaultClose,\n disabled,\n onSelect,\n ...(onStateChange ? { onStateChange } : {}),\n });\n const itemProps = {\n ...consumerProps,\n role: roleName,\n \"aria-checked\": checked,\n \"data-part\": roleName === \"menuitem\" ? \"item\" : roleName.replace(\"menuitem\", \"\") + \"-item\",\n \"data-state\": state,\n ...(className ? { className } : {}),\n onClick: composeEventHandlers(consumerOnClick, activation.select),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, activation.keyDown),\n children,\n };\n if (render)\n return (\n <RovingFocusItem\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n {...(itemProps as object)}\n render={(p) => render(p, { disabled })}\n />\n );\n return (\n <RovingFocusItem\n as={as ?? \"div\"}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n {...(itemProps as object)}\n />\n );\n}\n\nexport function DropdownMenuItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuItemProps<TAs>,\n): ReactElement | null {\n return <MenuItem {...props} roleName=\"menuitem\" defaultClose />;\n}\n\ninterface SelectionContextValue {\n checked: DropdownMenuCheckedState;\n kind: \"checkbox\" | \"radio\";\n}\nconst [SelectionProvider, useSelectionContext] = createPartContext<SelectionContextValue>(\n \"DropdownMenu\",\n \"ItemIndicator\",\n);\n\nexport function DropdownMenuCheckboxItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuCheckboxItemProps<TAs>,\n): ReactElement | null {\n const { checked: controlled, defaultChecked = false, onCheckedChange, ...itemProps } = props;\n const [checked, setChecked] = useControllableState<DropdownMenuCheckedState>({\n value: controlled,\n defaultValue: defaultChecked,\n });\n const next = checked === \"indeterminate\" ? true : !checked;\n return (\n <SelectionProvider value={{ checked, kind: \"checkbox\" }}>\n <MenuItem\n {...(itemProps as DropdownMenuItemProps<ElementType>)}\n roleName=\"menuitemcheckbox\"\n checked={checked === \"indeterminate\" ? \"mixed\" : checked}\n state={checked === \"indeterminate\" ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\"}\n defaultClose={false}\n onStateChange={() => {\n setChecked(next);\n onCheckedChange?.(next);\n }}\n />\n </SelectionProvider>\n );\n}\n\ninterface RadioContextValue {\n setValue: (value: string) => void;\n value: string | undefined;\n}\nconst [RadioProvider, useRadioContext] = createPartContext<RadioContextValue>(\n \"DropdownMenu\",\n \"RadioGroup\",\n);\nexport function DropdownMenuRadioGroup<TAs extends ElementType = \"div\">(\n props: DropdownMenuRadioGroupProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n children,\n defaultValue,\n onValueChange,\n value: controlled,\n ...consumerProps\n } = props as DropdownMenuRadioGroupProps<\"div\">;\n const [value, setValue] = useControllableState<string | undefined>({\n value: controlled,\n defaultValue,\n ...(onValueChange\n ? {\n onChange: (next) => {\n if (next !== undefined) onValueChange(next);\n },\n }\n : {}),\n });\n return (\n <RadioProvider value={{ value, setValue }}>\n {useRenderElement({\n as,\n defaultTag: \"div\",\n render,\n props: { ...consumerProps, role: \"group\", \"data-part\": \"radio-group\", children },\n state: { value },\n })}\n </RadioProvider>\n );\n}\nexport function DropdownMenuRadioItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuRadioItemProps<TAs>,\n): ReactElement | null {\n const { value, ...itemProps } = props;\n const radio = useRadioContext(\"RadioItem\");\n const checked = radio.value === value;\n return (\n <SelectionProvider value={{ checked, kind: \"radio\" }}>\n <MenuItem\n {...(itemProps as DropdownMenuItemProps<ElementType>)}\n roleName=\"menuitemradio\"\n checked={checked}\n state={checked ? \"checked\" : \"unchecked\"}\n defaultClose={false}\n onStateChange={() => radio.setValue(value)}\n />\n </SelectionProvider>\n );\n}\n\nfunction Part<TAs extends ElementType = \"span\">({\n part,\n defaultTag,\n ...props\n}: DropdownMenuPartProps<TAs> & { part: string; defaultTag: ElementType }): ReactElement | null {\n const { as, render, children, className, ...consumerProps } =\n props as DropdownMenuPartProps<\"span\">;\n return useRenderElement({\n as,\n defaultTag,\n render,\n props: { ...consumerProps, \"data-part\": part, ...(className ? { className } : {}), children },\n state: {},\n });\n}\nexport const DropdownMenuItemIcon = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemIconProps<TAs>,\n) => <Part {...p} part=\"item-icon\" defaultTag=\"span\" />;\nexport const DropdownMenuItemText = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemTextProps<TAs>,\n) => <Part {...p} part=\"item-text\" defaultTag=\"span\" />;\nexport const DropdownMenuItemDescription = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemDescriptionProps<TAs>,\n) => <Part {...p} part=\"item-description\" defaultTag=\"span\" />;\nexport const DropdownMenuShortcut = <TAs extends ElementType = \"span\">(\n p: DropdownMenuShortcutProps<TAs>,\n) => <Part {...p} part=\"shortcut\" defaultTag=\"kbd\" />;\nexport function DropdownMenuItemIndicator<TAs extends ElementType = \"span\">(\n p: DropdownMenuItemIndicatorProps<TAs>,\n): ReactElement | null {\n const s = useSelectionContext(\"ItemIndicator\");\n return (\n <Part\n {...p}\n part=\"item-indicator\"\n defaultTag=\"span\"\n data-state={\n s.checked === \"indeterminate\" ? \"indeterminate\" : s.checked ? \"checked\" : \"unchecked\"\n }\n />\n );\n}\nexport function DropdownMenuGroup<TAs extends ElementType = \"div\">(\n p: DropdownMenuGroupProps<TAs>,\n): ReactElement | null {\n return <MenuGroup {...p} />;\n}\nexport function DropdownMenuLabel<TAs extends ElementType = \"div\">(\n p: DropdownMenuLabelProps<TAs>,\n): ReactElement | null {\n return <MenuLabel {...p} />;\n}\nexport function DropdownMenuSeparator<TAs extends ElementType = \"div\">(\n p: DropdownMenuSeparatorProps<TAs>,\n): ReactElement | null {\n return <MenuSeparator {...p} />;\n}\n\ninterface SubValue {\n clickedRef: RefObject<boolean>;\n contentRef: React.RefObject<HTMLElement | null>;\n open: boolean;\n popover: ReturnType<typeof usePopover>;\n anchor: ReturnType<typeof useAnchorPosition>;\n triggerRef: React.RefObject<HTMLElement | null>;\n resolvedSide: \"left\" | \"right\";\n setResolvedSide: (side: \"left\" | \"right\") => void;\n}\nconst [SubProvider, useSubContext] = createPartContext<SubValue>(\"DropdownMenu\", \"Sub\");\nexport function DropdownMenuSub(props: DropdownMenuSubProps): ReactElement | null {\n const { children, defaultOpen, onOpenChange, open } = props;\n const contentRef = useRef<HTMLElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const popover = usePopover({\n mode: \"auto\",\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(open !== undefined ? { open } : {}),\n ...(onOpenChange\n ? {\n onOpenChange: (next, details) =>\n onOpenChange(next, { event: details.event, reason: mapReason(details.reason) }),\n }\n : {}),\n });\n const anchor = useAnchorPosition();\n const clickedRef = useRef(false);\n const [resolvedSide, setResolvedSide] = useState<\"left\" | \"right\">(\"right\");\n const value = useMemo(\n () => ({\n anchor,\n clickedRef,\n contentRef,\n open: popover.open,\n popover,\n resolvedSide,\n setResolvedSide,\n triggerRef,\n }),\n [anchor, popover, clickedRef, resolvedSide],\n );\n return <SubProvider value={value}>{children}</SubProvider>;\n}\nexport function DropdownMenuSubTrigger<TAs extends ElementType = \"button\">(\n props: DropdownMenuSubTriggerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n children,\n disabled = false,\n textValue,\n ...consumerProps\n } = props as DropdownMenuSubTriggerProps<\"div\">;\n const sub = useSubContext(\"SubTrigger\");\n const root = useDropdownMenuContext(\"SubTrigger\");\n const { clickedRef } = sub;\n const { onClick, onKeyDown, onPointerEnter, ...withoutEvents } =\n consumerProps as typeof consumerProps & {\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const rtl = resolveDirection(event.currentTarget, root.dir) === \"rtl\";\n const openKey = rtl ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === openKey || event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n clickedRef.current = true;\n sub.setResolvedSide(rtl ? \"left\" : \"right\");\n sub.popover.openPopover();\n queueMicrotask(() => focusMenuItem(sub.contentRef.current));\n }\n };\n const handlePointerEnter = (event: PointerEvent<HTMLElement>) => {\n clickedRef.current = false;\n sub.setResolvedSide(\n resolveDirection(event.currentTarget, root.dir) === \"rtl\" ? \"left\" : \"right\",\n );\n sub.popover.openPopover();\n };\n const handlePointerLeave = (event: PointerEvent<HTMLElement>) => {\n if (clickedRef.current) return;\n const nextTarget = event.relatedTarget;\n if (nextTarget instanceof Node && sub.contentRef.current?.contains(nextTarget)) return;\n sub.popover.close();\n };\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n clickedRef.current = true;\n if (!sub.open) {\n (sub.popover.triggerProps.onClick as (event: MouseEvent<HTMLElement>) => void)(event);\n }\n };\n const triggerProps = {\n ...(withoutEvents as object),\n ...sub.popover.triggerProps,\n ...sub.anchor.anchorProps,\n command: \"show-popover\",\n ref: sub.triggerRef,\n role: \"menuitem\",\n \"aria-haspopup\": \"menu\" as const,\n \"aria-expanded\": sub.open,\n \"data-part\": \"sub-trigger\",\n \"data-state\": sub.open ? \"open\" : \"closed\",\n onClick: composeEventHandlers(onClick, handleClick),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),\n onPointerEnter: composeEventHandlers(onPointerEnter, handlePointerEnter),\n onPointerLeave: handlePointerLeave,\n children,\n };\n if (render)\n return (\n <RovingFocusItem\n {...(triggerProps as object)}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n render={(p) => render(p, { disabled, open: sub.open })}\n />\n );\n return (\n <RovingFocusItem\n as={as ?? \"button\"}\n {...(triggerProps as object)}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n />\n );\n}\nexport function DropdownMenuSubContent<TAs extends ElementType = \"div\">(\n props: DropdownMenuSubContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"start\",\n as,\n render,\n side,\n children,\n ...consumerProps\n } = props as DropdownMenuSubContentProps<\"div\">;\n const sub = useSubContext(\"SubContent\");\n const root = useDropdownMenuContext(\"SubContent\");\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const closeKey =\n resolveDirection(event.currentTarget, root.dir) === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\";\n if (event.key === closeKey || event.key === \"Escape\") {\n event.preventDefault();\n sub.popover.close();\n sub.triggerRef.current?.focus();\n }\n };\n const contentProps = {\n ...consumerProps,\n ...sub.popover.popupProps,\n ...sub.anchor.positionerProps,\n ref: useMergedRefs(sub.popover.popupRef, sub.contentRef),\n role: \"menu\",\n \"data-part\": \"sub-content\",\n \"data-state\": sub.open ? \"open\" : \"closed\",\n \"data-side\": side ?? sub.resolvedSide,\n \"data-align\": align,\n onKeyDown: handleKeyDown,\n onPointerLeave: (event: PointerEvent<HTMLElement>) => {\n if (sub.clickedRef.current) return;\n const nextTarget = event.relatedTarget;\n if (!(nextTarget instanceof Node) || !sub.triggerRef.current?.contains(nextTarget)) {\n sub.popover.close();\n }\n },\n children,\n };\n if (render)\n return (\n <RovingFocusRoot\n {...(root.dir ? { direction: root.dir } : {})}\n loop={root.loop}\n orientation=\"vertical\"\n {...contentProps}\n render={(p) => render(p, { open: sub.open })}\n />\n );\n return (\n <RovingFocusRoot\n as={as ?? \"div\"}\n {...(root.dir ? { direction: root.dir } : {})}\n loop={root.loop}\n orientation=\"vertical\"\n {...contentProps}\n />\n );\n}\n\nDropdownMenuRoot.displayName = \"DropdownMenuRoot\";\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\nMenuItem.displayName = \"DropdownMenuItemBase\";\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\nDropdownMenuRadioGroup.displayName = \"DropdownMenuRadioGroup\";\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\nPart.displayName = \"DropdownMenuPart\";\nDropdownMenuItemIcon.displayName = \"DropdownMenuItemIcon\";\nDropdownMenuItemText.displayName = \"DropdownMenuItemText\";\nDropdownMenuItemDescription.displayName = \"DropdownMenuItemDescription\";\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\nDropdownMenuItemIndicator.displayName = \"DropdownMenuItemIndicator\";\nDropdownMenuGroup.displayName = \"DropdownMenuGroup\";\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\nDropdownMenuSub.displayName = \"DropdownMenuSub\";\nDropdownMenuSubTrigger.displayName = \"DropdownMenuSubTrigger\";\nDropdownMenuSubContent.displayName = \"DropdownMenuSubContent\";\n\nexport const DropdownMenu = {\n Bar: DropdownMenuBar,\n Root: DropdownMenuRoot,\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Group: DropdownMenuGroup,\n Label: DropdownMenuLabel,\n Item: DropdownMenuItem,\n ItemIcon: DropdownMenuItemIcon,\n ItemText: DropdownMenuItemText,\n ItemDescription: DropdownMenuItemDescription,\n Shortcut: DropdownMenuShortcut,\n Separator: DropdownMenuSeparator,\n CheckboxItem: DropdownMenuCheckboxItem,\n ItemIndicator: DropdownMenuItemIndicator,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Sub: DropdownMenuSub,\n SubTrigger: DropdownMenuSubTrigger,\n SubContent: DropdownMenuSubContent,\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type {\n ElementType,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactElement,\n RefObject,\n SyntheticEvent,\n} from \"react\";\nimport { useControllableState, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport { createPartContext, splitRef } from \"@gunkin/uiify/core\";\nimport { useAnchorPosition } from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useDirectionOverride } from \"@gunkin/uiify/core/direction\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\nimport { createHoverIntentStore } from \"@gunkin/uiify/core/hover-intent-store\";\nimport type { HoverIntentStore } from \"@gunkin/uiify/core/hover-intent-store\";\nimport type { OpenChangeDetails } from \"@gunkin/uiify/core/open-change-details\";\nimport { usePopover } from \"@gunkin/uiify/core/popover\";\nimport { RovingFocusItem, RovingFocusRoot } from \"@gunkin/uiify/core/roving-focus\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { createMenuSelectEvent } from \"../internal/menu/menu-utils.js\";\nimport { focusMenuItem } from \"../internal/menu/focus-menu-item.js\";\nimport { MenuGroup, MenuLabel, MenuSeparator } from \"../internal/menu/menu-parts.js\";\nimport { useMenuSurface } from \"../internal/menu/use-menu-surface.js\";\nimport { DropdownMenuBar } from \"./DropdownMenuBar.js\";\nimport type {\n DropdownMenuCheckedState,\n DropdownMenuCheckboxItemProps,\n DropdownMenuContentProps,\n DropdownMenuContextValue,\n DropdownMenuGroupProps,\n DropdownMenuItemDescriptionProps,\n DropdownMenuItemIconProps,\n DropdownMenuItemIndicatorProps,\n DropdownMenuItemProps,\n DropdownMenuItemTextProps,\n DropdownMenuLabelProps,\n DropdownMenuOpenChangeReason,\n DropdownMenuPartProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuRootProps,\n DropdownMenuSeparatorProps,\n DropdownMenuShortcutProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n} from \"./types.js\";\n\nexport type { MenuSelectEvent } from \"./types.js\";\n\nfunction mapReason(reason: OpenChangeDetails[\"reason\"]): DropdownMenuOpenChangeReason {\n if (reason === \"escape-key\") return \"escape\";\n if (reason === \"focus-outside\") return \"focus-out\";\n if (reason === \"native-toggle\") return \"trigger-press\";\n return reason;\n}\n\nconst [DropdownMenuProvider, useDropdownMenuContext] =\n createPartContext<DropdownMenuContextValue>(\"DropdownMenu\");\n\nexport function DropdownMenuRoot(props: DropdownMenuRootProps): ReactElement | null {\n const {\n children,\n className,\n defaultOpen,\n dir: localDir,\n disabled = false,\n id,\n loop = true,\n onOpenChange,\n open,\n ...rootProps\n } = props;\n const nativeRootProps = Object.fromEntries(\n Object.entries(rootProps).filter(([name]) => name !== \"dangerouslySetInnerHTML\"),\n ) as typeof rootProps;\n const dir = useDirectionOverride(localDir);\n const surface = useMenuSurface({\n ...(id !== undefined ? { id } : {}),\n mode: \"auto\",\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(open !== undefined ? { open } : {}),\n ...(onOpenChange\n ? {\n onOpenChange: (next, details) =>\n onOpenChange(next, { event: details.event, reason: mapReason(details.reason) }),\n }\n : {}),\n });\n const intentRef = useRef<HoverIntentStore | null>(null);\n intentRef.current ??= createHoverIntentStore({ closeDelay: 150, openDelay: 0 });\n const intent = intentRef.current;\n const hoverEnabledRef = useRef(false);\n // Read by the scheduled close so a timer from a menu that already closed\n // cannot emit onOpenChange(false) over a sibling that opened since.\n const openRef = useRef(surface.open);\n openRef.current = surface.open;\n\n const cancelHoverClose = useCallback(() => intent.clearCloseTimer(), [intent]);\n const scheduleHoverClose = useCallback(() => {\n intent.scheduleClose(() => {\n if (openRef.current) surface.close();\n });\n }, [intent, surface]);\n\n const value = useMemo(\n () => ({\n ...surface,\n cancelHoverClose,\n ...(dir ? { dir } : {}),\n disabled,\n hoverEnabledRef,\n loop,\n scheduleHoverClose,\n }),\n [cancelHoverClose, surface, dir, disabled, loop, scheduleHoverClose],\n );\n return (\n <div {...nativeRootProps} className={className} data-uiify-menu=\"\">\n <DropdownMenuProvider value={value}>{children}</DropdownMenuProvider>\n </div>\n );\n}\n\nexport function DropdownMenuTrigger<TAs extends ElementType = \"button\">(\n props: DropdownMenuTriggerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n className,\n openOnHover = false,\n ...consumerProps\n } = props as DropdownMenuTriggerProps<\"button\"> & { openOnHover?: boolean };\n const {\n anchorProps,\n cancelHoverClose,\n close,\n disabled,\n focusTrigger,\n hoverEnabledRef,\n open,\n openPopover,\n openToItem,\n scheduleHoverClose,\n setTriggerElement,\n triggerProps,\n } = useDropdownMenuContext(\"Trigger\");\n hoverEnabledRef.current = openOnHover;\n const [consumerRef, withoutRef] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const mergedRef = useMergedRefs(setTriggerElement, consumerRef);\n const nativeButton = !as || as === \"button\";\n const {\n onClick: consumerOnClick,\n onKeyDown: consumerOnKeyDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = withoutRef as {\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n const internalOnClick = triggerProps.onClick as (event: MouseEvent<HTMLButtonElement>) => void;\n const handlePointerEnter = () => {\n if (disabled) return;\n cancelHoverClose();\n if (!open) openPopover();\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (open) close();\n else openToItem(false);\n } else if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n openToItem(event.key === \"ArrowUp\");\n } else if (event.key === \"Escape\" && open) {\n event.preventDefault();\n close();\n focusTrigger();\n }\n };\n return useRenderElement({\n as,\n defaultTag: \"button\",\n render,\n props: {\n ...withoutRef,\n ...triggerProps,\n ...anchorProps,\n ref: mergedRef,\n ...(nativeButton ? { \"data-uiify-button\": \"\" } : {}),\n \"aria-haspopup\": \"menu\",\n \"data-part\": \"trigger\",\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : undefined,\n disabled: nativeButton && disabled ? true : undefined,\n ...(nativeButton && !triggerProps.type ? { type: \"button\" } : {}),\n ...(className ? { className } : {}),\n onClick: disabled ? consumerOnClick : composeEventHandlers(consumerOnClick, internalOnClick),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, handleKeyDown),\n ...(openOnHover && !disabled\n ? {\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, handlePointerEnter),\n onPointerLeave: composeEventHandlers(consumerOnPointerLeave, scheduleHoverClose),\n }\n : {}),\n },\n state: { open },\n });\n}\n\nexport function DropdownMenuContent<TAs extends ElementType = \"div\">(\n props: DropdownMenuContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"start\",\n as,\n className,\n side = \"bottom\",\n children,\n render,\n ...consumerProps\n } = props as DropdownMenuContentProps<\"div\">;\n const {\n cancelHoverClose,\n close,\n contentRef,\n dir,\n focusTrigger,\n hoverEnabledRef,\n loop,\n open,\n popupProps,\n popupRef,\n positionerProps,\n scheduleHoverClose,\n } = useDropdownMenuContext(\"Content\");\n const [consumerRef, withoutRef] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const mergedRef = useMergedRefs(popupRef, contentRef, consumerRef);\n const {\n onKeyDown: consumerOnKeyDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = withoutRef as {\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close();\n focusTrigger();\n }\n };\n const contentProps = {\n ...withoutRef,\n ...popupProps,\n ...positionerProps,\n ref: mergedRef,\n role: \"menu\",\n \"data-part\": \"content\",\n \"data-align\": align,\n \"data-side\": side,\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, handleKeyDown),\n ...(hoverEnabledRef.current\n ? {\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, cancelHoverClose),\n onPointerLeave: composeEventHandlers(consumerOnPointerLeave, scheduleHoverClose),\n }\n : {}),\n children,\n };\n if (render)\n return (\n <RovingFocusRoot\n {...(dir ? { direction: dir } : {})}\n loop={loop}\n orientation=\"vertical\"\n {...contentProps}\n render={(p) => render(p, { open })}\n />\n );\n return (\n <RovingFocusRoot\n as={as ?? \"div\"}\n {...(dir ? { direction: dir } : {})}\n loop={loop}\n orientation=\"vertical\"\n {...contentProps}\n />\n );\n}\n\ninterface ItemActivationOptions {\n closeOnSelect: boolean;\n disabled: boolean;\n onSelect?: DropdownMenuItemProps[\"onSelect\"];\n onStateChange?: () => void;\n}\nfunction useItemActivation({\n closeOnSelect,\n disabled,\n onSelect,\n onStateChange,\n}: ItemActivationOptions) {\n const { close, focusTrigger } = useDropdownMenuContext(\"Item\");\n const select = (event: SyntheticEvent<HTMLElement>) => {\n if (disabled) return;\n const selectEvent = createMenuSelectEvent();\n onSelect?.(selectEvent);\n if (!selectEvent.defaultPrevented) {\n onStateChange?.();\n if (closeOnSelect) {\n close();\n focusTrigger();\n }\n }\n event.preventDefault();\n };\n return {\n select,\n keyDown: (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") select(event);\n },\n };\n}\n\nfunction MenuItem<TAs extends ElementType>(\n props: DropdownMenuItemProps<TAs> & {\n roleName: string;\n checked?: boolean | \"mixed\";\n state?: string;\n onStateChange?: () => void;\n defaultClose: boolean;\n },\n): ReactElement | null {\n const {\n as,\n render,\n children,\n className,\n closeOnSelect,\n disabled = false,\n onSelect,\n textValue,\n roleName,\n checked,\n state,\n onStateChange,\n defaultClose,\n ...consumerProps\n } = props as DropdownMenuItemProps<\"div\"> & {\n roleName: string;\n checked?: boolean | \"mixed\";\n state?: string;\n onStateChange?: () => void;\n defaultClose: boolean;\n };\n const { onClick: consumerOnClick, onKeyDown: consumerOnKeyDown } = consumerProps as {\n onClick?: (event: SyntheticEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n };\n const activation = useItemActivation({\n closeOnSelect: closeOnSelect ?? defaultClose,\n disabled,\n onSelect,\n ...(onStateChange ? { onStateChange } : {}),\n });\n const itemProps = {\n ...consumerProps,\n role: roleName,\n \"aria-checked\": checked,\n \"data-part\": roleName === \"menuitem\" ? \"item\" : roleName.replace(\"menuitem\", \"\") + \"-item\",\n \"data-state\": state,\n ...(className ? { className } : {}),\n onClick: composeEventHandlers(consumerOnClick, activation.select),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, activation.keyDown),\n children,\n };\n if (render)\n return (\n <RovingFocusItem\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n {...(itemProps as object)}\n render={(p) => render(p, { disabled })}\n />\n );\n return (\n <RovingFocusItem\n as={as ?? \"div\"}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n {...(itemProps as object)}\n />\n );\n}\n\nexport function DropdownMenuItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuItemProps<TAs>,\n): ReactElement | null {\n return <MenuItem {...props} roleName=\"menuitem\" defaultClose />;\n}\n\ninterface SelectionContextValue {\n checked: DropdownMenuCheckedState;\n kind: \"checkbox\" | \"radio\";\n}\nconst [SelectionProvider, useSelectionContext] = createPartContext<SelectionContextValue>(\n \"DropdownMenu\",\n \"ItemIndicator\",\n);\n\nexport function DropdownMenuCheckboxItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuCheckboxItemProps<TAs>,\n): ReactElement | null {\n const { checked: controlled, defaultChecked = false, onCheckedChange, ...itemProps } = props;\n const [checked, setChecked] = useControllableState<DropdownMenuCheckedState>({\n value: controlled,\n defaultValue: defaultChecked,\n });\n const next = checked === \"indeterminate\" ? true : !checked;\n return (\n <SelectionProvider value={{ checked, kind: \"checkbox\" }}>\n <MenuItem\n {...(itemProps as DropdownMenuItemProps<ElementType>)}\n roleName=\"menuitemcheckbox\"\n checked={checked === \"indeterminate\" ? \"mixed\" : checked}\n state={checked === \"indeterminate\" ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\"}\n defaultClose={false}\n onStateChange={() => {\n setChecked(next);\n onCheckedChange?.(next);\n }}\n />\n </SelectionProvider>\n );\n}\n\ninterface RadioContextValue {\n setValue: (value: string) => void;\n value: string | undefined;\n}\nconst [RadioProvider, useRadioContext] = createPartContext<RadioContextValue>(\n \"DropdownMenu\",\n \"RadioGroup\",\n);\nexport function DropdownMenuRadioGroup<TAs extends ElementType = \"div\">(\n props: DropdownMenuRadioGroupProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n children,\n defaultValue,\n onValueChange,\n value: controlled,\n ...consumerProps\n } = props as DropdownMenuRadioGroupProps<\"div\">;\n const [value, setValue] = useControllableState<string | undefined>({\n value: controlled,\n defaultValue,\n ...(onValueChange\n ? {\n onChange: (next) => {\n if (next !== undefined) onValueChange(next);\n },\n }\n : {}),\n });\n return (\n <RadioProvider value={{ value, setValue }}>\n {useRenderElement({\n as,\n defaultTag: \"div\",\n render,\n props: { ...consumerProps, role: \"group\", \"data-part\": \"radio-group\", children },\n state: { value },\n })}\n </RadioProvider>\n );\n}\nexport function DropdownMenuRadioItem<TAs extends ElementType = \"div\">(\n props: DropdownMenuRadioItemProps<TAs>,\n): ReactElement | null {\n const { value, ...itemProps } = props;\n const radio = useRadioContext(\"RadioItem\");\n const checked = radio.value === value;\n return (\n <SelectionProvider value={{ checked, kind: \"radio\" }}>\n <MenuItem\n {...(itemProps as DropdownMenuItemProps<ElementType>)}\n roleName=\"menuitemradio\"\n checked={checked}\n state={checked ? \"checked\" : \"unchecked\"}\n defaultClose={false}\n onStateChange={() => radio.setValue(value)}\n />\n </SelectionProvider>\n );\n}\n\nfunction Part<TAs extends ElementType = \"span\">({\n part,\n defaultTag,\n ...props\n}: DropdownMenuPartProps<TAs> & { part: string; defaultTag: ElementType }): ReactElement | null {\n const { as, render, children, className, ...consumerProps } =\n props as DropdownMenuPartProps<\"span\">;\n return useRenderElement({\n as,\n defaultTag,\n render,\n props: { ...consumerProps, \"data-part\": part, ...(className ? { className } : {}), children },\n state: {},\n });\n}\nexport const DropdownMenuItemIcon = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemIconProps<TAs>,\n) => <Part {...p} part=\"item-icon\" defaultTag=\"span\" />;\nexport const DropdownMenuItemText = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemTextProps<TAs>,\n) => <Part {...p} part=\"item-text\" defaultTag=\"span\" />;\nexport const DropdownMenuItemDescription = <TAs extends ElementType = \"span\">(\n p: DropdownMenuItemDescriptionProps<TAs>,\n) => <Part {...p} part=\"item-description\" defaultTag=\"span\" />;\nexport const DropdownMenuShortcut = <TAs extends ElementType = \"span\">(\n p: DropdownMenuShortcutProps<TAs>,\n) => <Part {...p} part=\"shortcut\" defaultTag=\"kbd\" />;\nexport function DropdownMenuItemIndicator<TAs extends ElementType = \"span\">(\n p: DropdownMenuItemIndicatorProps<TAs>,\n): ReactElement | null {\n const s = useSelectionContext(\"ItemIndicator\");\n return (\n <Part\n {...p}\n part=\"item-indicator\"\n defaultTag=\"span\"\n data-state={\n s.checked === \"indeterminate\" ? \"indeterminate\" : s.checked ? \"checked\" : \"unchecked\"\n }\n />\n );\n}\nexport function DropdownMenuGroup<TAs extends ElementType = \"div\">(\n p: DropdownMenuGroupProps<TAs>,\n): ReactElement | null {\n return <MenuGroup {...p} />;\n}\nexport function DropdownMenuLabel<TAs extends ElementType = \"div\">(\n p: DropdownMenuLabelProps<TAs>,\n): ReactElement | null {\n return <MenuLabel {...p} />;\n}\nexport function DropdownMenuSeparator<TAs extends ElementType = \"div\">(\n p: DropdownMenuSeparatorProps<TAs>,\n): ReactElement | null {\n return <MenuSeparator {...p} />;\n}\n\ninterface SubValue {\n clickedRef: RefObject<boolean>;\n contentRef: React.RefObject<HTMLElement | null>;\n open: boolean;\n popover: ReturnType<typeof usePopover>;\n anchor: ReturnType<typeof useAnchorPosition>;\n triggerRef: React.RefObject<HTMLElement | null>;\n resolvedSide: \"left\" | \"right\";\n setResolvedSide: (side: \"left\" | \"right\") => void;\n}\nconst [SubProvider, useSubContext] = createPartContext<SubValue>(\"DropdownMenu\", \"Sub\");\nexport function DropdownMenuSub(props: DropdownMenuSubProps): ReactElement | null {\n const { children, defaultOpen, onOpenChange, open } = props;\n const contentRef = useRef<HTMLElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const popover = usePopover({\n mode: \"auto\",\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(open !== undefined ? { open } : {}),\n ...(onOpenChange\n ? {\n onOpenChange: (next, details) =>\n onOpenChange(next, { event: details.event, reason: mapReason(details.reason) }),\n }\n : {}),\n });\n const anchor = useAnchorPosition();\n const clickedRef = useRef(false);\n const [resolvedSide, setResolvedSide] = useState<\"left\" | \"right\">(\"right\");\n const value = useMemo(\n () => ({\n anchor,\n clickedRef,\n contentRef,\n open: popover.open,\n popover,\n resolvedSide,\n setResolvedSide,\n triggerRef,\n }),\n [anchor, popover, clickedRef, resolvedSide],\n );\n return <SubProvider value={value}>{children}</SubProvider>;\n}\nexport function DropdownMenuSubTrigger<TAs extends ElementType = \"button\">(\n props: DropdownMenuSubTriggerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n children,\n disabled = false,\n textValue,\n ...consumerProps\n } = props as DropdownMenuSubTriggerProps<\"div\">;\n const sub = useSubContext(\"SubTrigger\");\n const root = useDropdownMenuContext(\"SubTrigger\");\n const { clickedRef } = sub;\n const { onClick, onKeyDown, onPointerEnter, ...withoutEvents } =\n consumerProps as typeof consumerProps & {\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const rtl = resolveDirection(event.currentTarget, root.dir) === \"rtl\";\n const openKey = rtl ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === openKey || event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n clickedRef.current = true;\n sub.setResolvedSide(rtl ? \"left\" : \"right\");\n sub.popover.openPopover();\n queueMicrotask(() => focusMenuItem(sub.contentRef.current));\n }\n };\n const handlePointerEnter = (event: PointerEvent<HTMLElement>) => {\n clickedRef.current = false;\n sub.setResolvedSide(\n resolveDirection(event.currentTarget, root.dir) === \"rtl\" ? \"left\" : \"right\",\n );\n sub.popover.openPopover();\n };\n const handlePointerLeave = (event: PointerEvent<HTMLElement>) => {\n if (clickedRef.current) return;\n const nextTarget = event.relatedTarget;\n if (nextTarget instanceof Node && sub.contentRef.current?.contains(nextTarget)) return;\n sub.popover.close();\n };\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n clickedRef.current = true;\n if (!sub.open) {\n (sub.popover.triggerProps.onClick as (event: MouseEvent<HTMLElement>) => void)(event);\n }\n };\n const triggerProps = {\n ...(withoutEvents as object),\n ...sub.popover.triggerProps,\n ...sub.anchor.anchorProps,\n command: \"show-popover\",\n ref: sub.triggerRef,\n role: \"menuitem\",\n \"aria-haspopup\": \"menu\" as const,\n \"aria-expanded\": sub.open,\n \"data-part\": \"sub-trigger\",\n \"data-state\": sub.open ? \"open\" : \"closed\",\n onClick: composeEventHandlers(onClick, handleClick),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),\n onPointerEnter: composeEventHandlers(onPointerEnter, handlePointerEnter),\n onPointerLeave: handlePointerLeave,\n children,\n };\n if (render)\n return (\n <RovingFocusItem\n {...(triggerProps as object)}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n render={(p) => render(p, { disabled, open: sub.open })}\n />\n );\n return (\n <RovingFocusItem\n as={as ?? \"button\"}\n {...(triggerProps as object)}\n disabled={disabled}\n {...(textValue !== undefined ? { textValue } : {})}\n />\n );\n}\nexport function DropdownMenuSubContent<TAs extends ElementType = \"div\">(\n props: DropdownMenuSubContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"start\",\n as,\n render,\n side,\n children,\n ...consumerProps\n } = props as DropdownMenuSubContentProps<\"div\">;\n const sub = useSubContext(\"SubContent\");\n const root = useDropdownMenuContext(\"SubContent\");\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const closeKey =\n resolveDirection(event.currentTarget, root.dir) === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\";\n if (event.key === closeKey || event.key === \"Escape\") {\n event.preventDefault();\n sub.popover.close();\n sub.triggerRef.current?.focus();\n }\n };\n const contentProps = {\n ...consumerProps,\n ...sub.popover.popupProps,\n ...sub.anchor.positionerProps,\n ref: useMergedRefs(sub.popover.popupRef, sub.contentRef),\n role: \"menu\",\n \"data-part\": \"sub-content\",\n \"data-state\": sub.open ? \"open\" : \"closed\",\n \"data-side\": side ?? sub.resolvedSide,\n \"data-align\": align,\n onKeyDown: handleKeyDown,\n onPointerLeave: (event: PointerEvent<HTMLElement>) => {\n if (sub.clickedRef.current) return;\n const nextTarget = event.relatedTarget;\n if (!(nextTarget instanceof Node) || !sub.triggerRef.current?.contains(nextTarget)) {\n sub.popover.close();\n }\n },\n children,\n };\n if (render)\n return (\n <RovingFocusRoot\n {...(root.dir ? { direction: root.dir } : {})}\n loop={root.loop}\n orientation=\"vertical\"\n {...contentProps}\n render={(p) => render(p, { open: sub.open })}\n />\n );\n return (\n <RovingFocusRoot\n as={as ?? \"div\"}\n {...(root.dir ? { direction: root.dir } : {})}\n loop={root.loop}\n orientation=\"vertical\"\n {...contentProps}\n />\n );\n}\n\nDropdownMenuRoot.displayName = \"DropdownMenuRoot\";\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\nMenuItem.displayName = \"DropdownMenuItemBase\";\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\nDropdownMenuRadioGroup.displayName = \"DropdownMenuRadioGroup\";\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\nPart.displayName = \"DropdownMenuPart\";\nDropdownMenuItemIcon.displayName = \"DropdownMenuItemIcon\";\nDropdownMenuItemText.displayName = \"DropdownMenuItemText\";\nDropdownMenuItemDescription.displayName = \"DropdownMenuItemDescription\";\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\nDropdownMenuItemIndicator.displayName = \"DropdownMenuItemIndicator\";\nDropdownMenuGroup.displayName = \"DropdownMenuGroup\";\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\nDropdownMenuSub.displayName = \"DropdownMenuSub\";\nDropdownMenuSubTrigger.displayName = \"DropdownMenuSubTrigger\";\nDropdownMenuSubContent.displayName = \"DropdownMenuSubContent\";\n\nexport const DropdownMenu = {\n Bar: DropdownMenuBar,\n Root: DropdownMenuRoot,\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Group: DropdownMenuGroup,\n Label: DropdownMenuLabel,\n Item: DropdownMenuItem,\n ItemIcon: DropdownMenuItemIcon,\n ItemText: DropdownMenuItemText,\n ItemDescription: DropdownMenuItemDescription,\n Shortcut: DropdownMenuShortcut,\n Separator: DropdownMenuSeparator,\n CheckboxItem: DropdownMenuCheckboxItem,\n ItemIndicator: DropdownMenuItemIndicator,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Sub: DropdownMenuSub,\n SubTrigger: DropdownMenuSubTrigger,\n SubContent: DropdownMenuSubContent,\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuBar.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/DropdownMenuBar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DropdownMenuBar.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/DropdownMenuBar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuC,YAAY,EAAE,MAAM,OAAO,CAAC;AAK/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgCvD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAwFzE;yBAxFe,eAAe"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
|
+
import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
|
|
4
5
|
import { useDirectionOverride } from "@gunkin/uiify/core/direction";
|
|
6
|
+
import { useMergedRefs } from "@gunkin/uiify/hooks";
|
|
5
7
|
import { resolveDirection } from "@gunkin/uiify/core/text-direction";
|
|
6
8
|
const ITEM_SELECTOR = '[data-uiify-menu] [data-part="trigger"]';
|
|
7
9
|
function getItems(root) {
|
|
@@ -24,10 +26,50 @@ function moveIndex(currentIndex, offset, length, loop) {
|
|
|
24
26
|
return nextIndex < 0 || nextIndex >= length ? null : nextIndex;
|
|
25
27
|
}
|
|
26
28
|
function DropdownMenuBar(props) {
|
|
27
|
-
const {
|
|
29
|
+
const {
|
|
30
|
+
children,
|
|
31
|
+
className,
|
|
32
|
+
dir: localDir,
|
|
33
|
+
loop = true,
|
|
34
|
+
onKeyDown: consumerOnKeyDown,
|
|
35
|
+
ref: consumerRef,
|
|
36
|
+
tabIndex,
|
|
37
|
+
...consumerProps
|
|
38
|
+
} = props;
|
|
28
39
|
const dir = useDirectionOverride(localDir);
|
|
29
40
|
const rootRef = useRef(null);
|
|
41
|
+
const mergedRootRef = useMergedRefs(rootRef, consumerRef);
|
|
30
42
|
const currentRef = useRef(null);
|
|
43
|
+
const safeConsumerProps = Object.fromEntries(
|
|
44
|
+
Object.entries(consumerProps).filter(([name]) => name !== "dangerouslySetInnerHTML")
|
|
45
|
+
);
|
|
46
|
+
const handleKeyDown = (event) => {
|
|
47
|
+
const root = rootRef.current;
|
|
48
|
+
if (!root || event.defaultPrevented) return;
|
|
49
|
+
const target = event.target;
|
|
50
|
+
if (!(target instanceof HTMLElement)) return;
|
|
51
|
+
const item = target.closest(ITEM_SELECTOR);
|
|
52
|
+
if (!item || !root.contains(item)) return;
|
|
53
|
+
const enabled = getItems(root).filter((entry) => !isDisabledItem(entry));
|
|
54
|
+
const currentIndex = enabled.indexOf(item);
|
|
55
|
+
if (currentIndex === -1) return;
|
|
56
|
+
let nextIndex = null;
|
|
57
|
+
if (event.key === "Home") nextIndex = 0;
|
|
58
|
+
if (event.key === "End") nextIndex = enabled.length - 1;
|
|
59
|
+
const rtl = resolveDirection(item, dir) === "rtl";
|
|
60
|
+
if (event.key === "ArrowRight") {
|
|
61
|
+
nextIndex = moveIndex(currentIndex, rtl ? -1 : 1, enabled.length, loop);
|
|
62
|
+
}
|
|
63
|
+
if (event.key === "ArrowLeft") {
|
|
64
|
+
nextIndex = moveIndex(currentIndex, rtl ? 1 : -1, enabled.length, loop);
|
|
65
|
+
}
|
|
66
|
+
if (nextIndex === null) return;
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
const nextItem = enabled[nextIndex];
|
|
69
|
+
if (!nextItem) return;
|
|
70
|
+
currentRef.current = syncTabStops(root, nextItem);
|
|
71
|
+
nextItem.focus();
|
|
72
|
+
};
|
|
31
73
|
useEffect(() => {
|
|
32
74
|
const root = rootRef.current;
|
|
33
75
|
if (!root) return;
|
|
@@ -43,46 +85,22 @@ function DropdownMenuBar(props) {
|
|
|
43
85
|
if (!item || !root.contains(item) || isDisabledItem(item)) return;
|
|
44
86
|
currentRef.current = syncTabStops(root, item);
|
|
45
87
|
};
|
|
46
|
-
const handleKeyDown = (event) => {
|
|
47
|
-
const target = event.target;
|
|
48
|
-
if (!(target instanceof HTMLElement)) return;
|
|
49
|
-
const item = target.closest(ITEM_SELECTOR);
|
|
50
|
-
if (!item || !root.contains(item)) return;
|
|
51
|
-
const enabled = getItems(root).filter((entry) => !isDisabledItem(entry));
|
|
52
|
-
const currentIndex = enabled.indexOf(item);
|
|
53
|
-
if (currentIndex === -1) return;
|
|
54
|
-
let nextIndex = null;
|
|
55
|
-
if (event.key === "Home") nextIndex = 0;
|
|
56
|
-
if (event.key === "End") nextIndex = enabled.length - 1;
|
|
57
|
-
const rtl = resolveDirection(item, dir) === "rtl";
|
|
58
|
-
if (event.key === "ArrowRight") {
|
|
59
|
-
nextIndex = moveIndex(currentIndex, rtl ? -1 : 1, enabled.length, loop);
|
|
60
|
-
}
|
|
61
|
-
if (event.key === "ArrowLeft") {
|
|
62
|
-
nextIndex = moveIndex(currentIndex, rtl ? 1 : -1, enabled.length, loop);
|
|
63
|
-
}
|
|
64
|
-
if (nextIndex === null) return;
|
|
65
|
-
event.preventDefault();
|
|
66
|
-
const nextItem = enabled[nextIndex];
|
|
67
|
-
if (!nextItem) return;
|
|
68
|
-
currentRef.current = syncTabStops(root, nextItem);
|
|
69
|
-
nextItem.focus();
|
|
70
|
-
};
|
|
71
88
|
root.addEventListener("focusin", handleFocusIn);
|
|
72
|
-
root.addEventListener("keydown", handleKeyDown);
|
|
73
89
|
return () => {
|
|
74
90
|
root.removeEventListener("focusin", handleFocusIn);
|
|
75
|
-
root.removeEventListener("keydown", handleKeyDown);
|
|
76
91
|
};
|
|
77
92
|
}, [dir, loop]);
|
|
78
93
|
return /* @__PURE__ */ jsx(
|
|
79
94
|
"div",
|
|
80
95
|
{
|
|
96
|
+
...safeConsumerProps,
|
|
81
97
|
...className ? { className } : {},
|
|
82
98
|
"data-uiify-menu-bar": "",
|
|
83
99
|
...dir ? { dir } : {},
|
|
84
|
-
ref:
|
|
100
|
+
ref: mergedRootRef,
|
|
85
101
|
role: "menubar",
|
|
102
|
+
tabIndex: tabIndex ?? -1,
|
|
103
|
+
onKeyDown: composeEventHandlers(consumerOnKeyDown, handleKeyDown),
|
|
86
104
|
children
|
|
87
105
|
}
|
|
88
106
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenuBar.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport type { ReactElement } from \"react\";\nimport { useDirectionOverride } from \"@gunkin/uiify/core/direction\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\nimport type { DropdownMenuBarProps } from \"./types.js\";\n\nconst ITEM_SELECTOR = '[data-uiify-menu] [data-part=\"trigger\"]';\n\nfunction getItems(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(ITEM_SELECTOR));\n}\n\nfunction isDisabledItem(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\" || item.hasAttribute(\"disabled\");\n}\n\nfunction syncTabStops(root: HTMLElement, current: HTMLElement | null): HTMLElement | null {\n const items = getItems(root);\n const enabled = items.filter((item) => !isDisabledItem(item));\n const next = current && enabled.includes(current) ? current : (enabled[0] ?? null);\n for (const item of items) item.tabIndex = next === item ? 0 : -1;\n return next;\n}\n\nfunction moveIndex(\n currentIndex: number,\n offset: number,\n length: number,\n loop: boolean,\n): number | null {\n if (length === 0) return null;\n if (loop) return (currentIndex + offset + length) % length;\n const nextIndex = currentIndex + offset;\n return nextIndex < 0 || nextIndex >= length ? null : nextIndex;\n}\n\n/**\n * Roving focus and ArrowLeft/ArrowRight/Home/End across menu trigger descendants.\n * Modeled on Toolbar's own delegated-listener pattern but scoped to one axis and addressed by its\n * own marker: DropdownMenu.Trigger does not participate in @gunkin/uiify/core/roving-focus, and\n * Toolbar.Button drops any prop it does not itself destructure, so neither can host this directly.\n */\nexport function DropdownMenuBar(props: DropdownMenuBarProps): ReactElement {\n const {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenuBar.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useDirectionOverride } from \"@gunkin/uiify/core/direction\";\nimport { useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\nimport type { DropdownMenuBarProps } from \"./types.js\";\n\nconst ITEM_SELECTOR = '[data-uiify-menu] [data-part=\"trigger\"]';\n\nfunction getItems(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(ITEM_SELECTOR));\n}\n\nfunction isDisabledItem(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\" || item.hasAttribute(\"disabled\");\n}\n\nfunction syncTabStops(root: HTMLElement, current: HTMLElement | null): HTMLElement | null {\n const items = getItems(root);\n const enabled = items.filter((item) => !isDisabledItem(item));\n const next = current && enabled.includes(current) ? current : (enabled[0] ?? null);\n for (const item of items) item.tabIndex = next === item ? 0 : -1;\n return next;\n}\n\nfunction moveIndex(\n currentIndex: number,\n offset: number,\n length: number,\n loop: boolean,\n): number | null {\n if (length === 0) return null;\n if (loop) return (currentIndex + offset + length) % length;\n const nextIndex = currentIndex + offset;\n return nextIndex < 0 || nextIndex >= length ? null : nextIndex;\n}\n\n/**\n * Roving focus and ArrowLeft/ArrowRight/Home/End across menu trigger descendants.\n * Modeled on Toolbar's own delegated-listener pattern but scoped to one axis and addressed by its\n * own marker: DropdownMenu.Trigger does not participate in @gunkin/uiify/core/roving-focus, and\n * Toolbar.Button drops any prop it does not itself destructure, so neither can host this directly.\n */\nexport function DropdownMenuBar(props: DropdownMenuBarProps): ReactElement {\n const {\n children,\n className,\n dir: localDir,\n loop = true,\n onKeyDown: consumerOnKeyDown,\n ref: consumerRef,\n tabIndex,\n ...consumerProps\n } = props;\n const dir = useDirectionOverride(localDir);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const mergedRootRef = useMergedRefs(rootRef, consumerRef);\n const currentRef = useRef<HTMLElement | null>(null);\n const safeConsumerProps = Object.fromEntries(\n Object.entries(consumerProps).filter(([name]) => name !== \"dangerouslySetInnerHTML\"),\n ) as typeof consumerProps;\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const root = rootRef.current;\n if (!root || event.defaultPrevented) return;\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>(ITEM_SELECTOR);\n if (!item || !root.contains(item)) return;\n\n const enabled = getItems(root).filter((entry) => !isDisabledItem(entry));\n const currentIndex = enabled.indexOf(item);\n if (currentIndex === -1) return;\n\n let nextIndex: number | null = null;\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = enabled.length - 1;\n const rtl = resolveDirection(item, dir) === \"rtl\";\n if (event.key === \"ArrowRight\") {\n nextIndex = moveIndex(currentIndex, rtl ? -1 : 1, enabled.length, loop);\n }\n if (event.key === \"ArrowLeft\") {\n nextIndex = moveIndex(currentIndex, rtl ? 1 : -1, enabled.length, loop);\n }\n\n if (nextIndex === null) return;\n event.preventDefault();\n const nextItem = enabled[nextIndex];\n if (!nextItem) return;\n currentRef.current = syncTabStops(root, nextItem);\n nextItem.focus();\n };\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n currentRef.current = syncTabStops(root, currentRef.current);\n });\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>(ITEM_SELECTOR);\n if (!item || !root.contains(item) || isDisabledItem(item)) return;\n currentRef.current = syncTabStops(root, item);\n };\n\n root.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n root.removeEventListener(\"focusin\", handleFocusIn);\n };\n }, [dir, loop]);\n\n return (\n <div\n {...safeConsumerProps}\n {...(className ? { className } : {})}\n data-uiify-menu-bar=\"\"\n {...(dir ? { dir } : {})}\n ref={mergedRootRef}\n role=\"menubar\"\n tabIndex={tabIndex ?? -1}\n onKeyDown={composeEventHandlers(consumerOnKeyDown, handleKeyDown)}\n >\n {children}\n </div>\n );\n}\nDropdownMenuBar.displayName = \"DropdownMenuBar\";\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { ElementType, ReactNode, RefObject } from "react";
|
|
1
|
+
import type { ComponentPropsWithRef, ElementType, ReactNode, RefObject } from "react";
|
|
2
2
|
import type { AnchorAlign, AnchorSide } from "@gunkin/uiify/core/anchor-position";
|
|
3
3
|
import type { Direction } from "@gunkin/uiify/core/direction";
|
|
4
4
|
import type { RenderableProps } from "@gunkin/uiify/core/render";
|
|
5
|
+
import type { ConsumerDataAttributes } from "@gunkin/uiify/core/slot-props";
|
|
5
6
|
import type { MenuGroupProps, MenuLabelProps, MenuSelectEvent, MenuSeparatorProps, UseMenuSurfaceReturn } from "../internal/menu/types.js";
|
|
6
7
|
export type { MenuSelectEvent };
|
|
7
8
|
export type DropdownMenuCheckedState = boolean | "indeterminate";
|
|
@@ -20,13 +21,14 @@ export interface DropdownMenuContextValue extends UseMenuSurfaceReturn {
|
|
|
20
21
|
}
|
|
21
22
|
export interface DropdownMenuBarOwnProps {
|
|
22
23
|
readonly children?: ReactNode;
|
|
23
|
-
readonly className?: string;
|
|
24
24
|
readonly dir?: Direction;
|
|
25
25
|
readonly loop?: boolean;
|
|
26
26
|
}
|
|
27
|
-
export type DropdownMenuBarProps = DropdownMenuBarOwnProps
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
export type DropdownMenuBarProps = Omit<ComponentPropsWithRef<"div">, keyof DropdownMenuBarOwnProps | "dangerouslySetInnerHTML" | "role" | "data-uiify-menu-bar"> & ConsumerDataAttributes & DropdownMenuBarOwnProps & {
|
|
28
|
+
readonly "data-uiify-menu-bar"?: never;
|
|
29
|
+
};
|
|
30
|
+
export interface DropdownMenuRootOwnProps extends Omit<ComponentPropsWithRef<"div">, "children" | "dangerouslySetInnerHTML" | "dir" | "data-uiify-menu">, ConsumerDataAttributes {
|
|
31
|
+
readonly "data-uiify-menu"?: never;
|
|
30
32
|
readonly children?: ReactNode;
|
|
31
33
|
readonly defaultOpen?: boolean;
|
|
32
34
|
readonly dir?: Direction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/types.ts"],"names":[],"mappings":"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"}
|