@raystack/apsara 0.56.6 → 1.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/components/accordion/accordion-content.cjs +3 -3
- package/dist/components/accordion/accordion-content.cjs.map +1 -1
- package/dist/components/accordion/accordion-content.d.ts +1 -7
- package/dist/components/accordion/accordion-content.d.ts.map +1 -1
- package/dist/components/accordion/accordion-content.js +3 -3
- package/dist/components/accordion/accordion-content.js.map +1 -1
- package/dist/components/accordion/accordion-item.cjs +3 -3
- package/dist/components/accordion/accordion-item.cjs.map +1 -1
- package/dist/components/accordion/accordion-item.d.ts +1 -7
- package/dist/components/accordion/accordion-item.d.ts.map +1 -1
- package/dist/components/accordion/accordion-item.js +2 -2
- package/dist/components/accordion/accordion-item.js.map +1 -1
- package/dist/components/accordion/accordion-root.cjs +24 -13
- package/dist/components/accordion/accordion-root.cjs.map +1 -1
- package/dist/components/accordion/accordion-root.d.ts +12 -6
- package/dist/components/accordion/accordion-root.d.ts.map +1 -1
- package/dist/components/accordion/accordion-root.js +24 -13
- package/dist/components/accordion/accordion-root.js.map +1 -1
- package/dist/components/accordion/accordion-trigger.cjs +3 -3
- package/dist/components/accordion/accordion-trigger.cjs.map +1 -1
- package/dist/components/accordion/accordion-trigger.d.ts +1 -7
- package/dist/components/accordion/accordion-trigger.d.ts.map +1 -1
- package/dist/components/accordion/accordion-trigger.js +2 -2
- package/dist/components/accordion/accordion-trigger.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts +14 -4
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.module.css.cjs +1 -1
- package/dist/components/accordion/accordion.module.css.js +1 -1
- package/dist/components/avatar/avatar.cjs +4 -5
- package/dist/components/avatar/avatar.cjs.map +1 -1
- package/dist/components/avatar/avatar.d.ts +4 -5
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/avatar.js +4 -5
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/avatar/index.d.ts +2 -2
- package/dist/components/breadcrumb/breadcrumb-item.cjs +2 -2
- package/dist/components/breadcrumb/breadcrumb-item.cjs.map +1 -1
- package/dist/components/breadcrumb/breadcrumb-item.d.ts +3 -3
- package/dist/components/breadcrumb/breadcrumb-item.d.ts.map +1 -1
- package/dist/components/breadcrumb/breadcrumb-item.js +2 -2
- package/dist/components/breadcrumb/breadcrumb-item.js.map +1 -1
- package/dist/components/button/button.cjs +3 -4
- package/dist/components/button/button.cjs.map +1 -1
- package/dist/components/button/button.d.ts +12 -11
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button/button.js +3 -4
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/calendar/calendar.cjs +1 -2
- package/dist/components/calendar/calendar.cjs.map +1 -1
- package/dist/components/calendar/calendar.d.ts.map +1 -1
- package/dist/components/calendar/calendar.js +2 -3
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/checkbox/__tests__/checkbox-group.test.d.ts +2 -0
- package/dist/components/checkbox/__tests__/checkbox-group.test.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.cjs +10 -21
- package/dist/components/checkbox/checkbox.cjs.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +3 -13
- package/dist/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/checkbox.js +11 -22
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox/checkbox.module.css.cjs +1 -1
- package/dist/components/checkbox/checkbox.module.css.js +1 -1
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/chip/chip.d.ts +1 -1
- package/dist/components/code-block/code-block-misc.d.ts +15 -15
- package/dist/components/code-block/code-block-misc.d.ts.map +1 -1
- package/dist/components/code-block/code-block.d.ts +100 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/collapsible/__tests__/collapsible.test.d.ts +2 -0
- package/dist/components/collapsible/__tests__/collapsible.test.d.ts.map +1 -0
- package/dist/components/collapsible/collapsible.cjs +22 -0
- package/dist/components/collapsible/collapsible.cjs.map +1 -0
- package/dist/components/collapsible/collapsible.d.ts +5 -0
- package/dist/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible/collapsible.js +20 -0
- package/dist/components/collapsible/collapsible.js.map +1 -0
- package/dist/components/collapsible/collapsible.module.css.cjs +8 -0
- package/dist/components/collapsible/collapsible.module.css.cjs.map +1 -0
- package/dist/components/collapsible/collapsible.module.css.js +4 -0
- package/dist/components/collapsible/collapsible.module.css.js.map +1 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/collapsible/index.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker-alpha.cjs +3 -3
- package/dist/components/color-picker/color-picker-alpha.cjs.map +1 -1
- package/dist/components/color-picker/color-picker-alpha.d.ts +2 -3
- package/dist/components/color-picker/color-picker-alpha.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker-alpha.js +4 -4
- package/dist/components/color-picker/color-picker-alpha.js.map +1 -1
- package/dist/components/color-picker/color-picker-hue.cjs +3 -3
- package/dist/components/color-picker/color-picker-hue.cjs.map +1 -1
- package/dist/components/color-picker/color-picker-hue.d.ts +2 -3
- package/dist/components/color-picker/color-picker-hue.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker-hue.js +4 -4
- package/dist/components/color-picker/color-picker-hue.js.map +1 -1
- package/dist/components/color-picker/color-picker.d.ts +8 -0
- package/dist/components/color-picker/color-picker.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker.module.css.cjs +1 -1
- package/dist/components/color-picker/color-picker.module.css.js +1 -1
- package/dist/components/combobox/combobox-content.cjs +5 -26
- package/dist/components/combobox/combobox-content.cjs.map +1 -1
- package/dist/components/combobox/combobox-content.d.ts +3 -4
- package/dist/components/combobox/combobox-content.d.ts.map +1 -1
- package/dist/components/combobox/combobox-content.js +6 -27
- package/dist/components/combobox/combobox-content.js.map +1 -1
- package/dist/components/combobox/combobox-input.cjs +10 -33
- package/dist/components/combobox/combobox-input.cjs.map +1 -1
- package/dist/components/combobox/combobox-input.d.ts.map +1 -1
- package/dist/components/combobox/combobox-input.js +11 -34
- package/dist/components/combobox/combobox-input.js.map +1 -1
- package/dist/components/combobox/combobox-item.cjs +15 -15
- package/dist/components/combobox/combobox-item.cjs.map +1 -1
- package/dist/components/combobox/combobox-item.d.ts +5 -5
- package/dist/components/combobox/combobox-item.d.ts.map +1 -1
- package/dist/components/combobox/combobox-item.js +15 -15
- package/dist/components/combobox/combobox-item.js.map +1 -1
- package/dist/components/combobox/combobox-misc.cjs +13 -13
- package/dist/components/combobox/combobox-misc.cjs.map +1 -1
- package/dist/components/combobox/combobox-misc.d.ts +3 -9
- package/dist/components/combobox/combobox-misc.d.ts.map +1 -1
- package/dist/components/combobox/combobox-misc.js +13 -13
- package/dist/components/combobox/combobox-misc.js.map +1 -1
- package/dist/components/combobox/combobox-root.cjs +23 -42
- package/dist/components/combobox/combobox-root.cjs.map +1 -1
- package/dist/components/combobox/combobox-root.d.ts +19 -26
- package/dist/components/combobox/combobox-root.d.ts.map +1 -1
- package/dist/components/combobox/combobox-root.js +24 -43
- package/dist/components/combobox/combobox-root.js.map +1 -1
- package/dist/components/combobox/combobox.d.ts +6 -12
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.module.css.cjs +1 -1
- package/dist/components/combobox/combobox.module.css.js +1 -1
- package/dist/components/data-table/components/content.cjs +26 -18
- package/dist/components/data-table/components/content.cjs.map +1 -1
- package/dist/components/data-table/components/content.d.ts.map +1 -1
- package/dist/components/data-table/components/content.js +26 -18
- package/dist/components/data-table/components/content.js.map +1 -1
- package/dist/components/data-table/components/filters.cjs +3 -3
- package/dist/components/data-table/components/filters.cjs.map +1 -1
- package/dist/components/data-table/components/filters.d.ts.map +1 -1
- package/dist/components/data-table/components/filters.js +4 -4
- package/dist/components/data-table/components/filters.js.map +1 -1
- package/dist/components/data-table/components/virtualized-content.cjs +52 -5
- package/dist/components/data-table/components/virtualized-content.cjs.map +1 -1
- package/dist/components/data-table/components/virtualized-content.d.ts.map +1 -1
- package/dist/components/data-table/components/virtualized-content.js +53 -6
- package/dist/components/data-table/components/virtualized-content.js.map +1 -1
- package/dist/components/data-table/data-table.cjs +6 -3
- package/dist/components/data-table/data-table.cjs.map +1 -1
- package/dist/components/data-table/data-table.d.ts +1 -1
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/data-table.js +6 -3
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/data-table/data-table.module.css.cjs +1 -1
- package/dist/components/data-table/data-table.module.css.js +1 -1
- package/dist/components/data-table/data-table.types.cjs.map +1 -1
- package/dist/components/data-table/data-table.types.d.ts +5 -0
- package/dist/components/data-table/data-table.types.d.ts.map +1 -1
- package/dist/components/data-table/data-table.types.js.map +1 -1
- package/dist/components/data-table/utils/filter-operations.cjs +6 -6
- package/dist/components/data-table/utils/filter-operations.cjs.map +1 -1
- package/dist/components/data-table/utils/filter-operations.d.ts +1 -1
- package/dist/components/data-table/utils/filter-operations.js +6 -6
- package/dist/components/data-table/utils/filter-operations.js.map +1 -1
- package/dist/components/dialog/dialog-content.cjs +17 -0
- package/dist/components/dialog/dialog-content.cjs.map +1 -0
- package/dist/components/dialog/dialog-content.d.ts +15 -0
- package/dist/components/dialog/dialog-content.d.ts.map +1 -0
- package/dist/components/dialog/dialog-content.js +15 -0
- package/dist/components/dialog/dialog-content.js.map +1 -0
- package/dist/components/dialog/dialog-misc.cjs +37 -0
- package/dist/components/dialog/dialog-misc.cjs.map +1 -0
- package/dist/components/dialog/dialog-misc.d.ts +34 -0
- package/dist/components/dialog/dialog-misc.d.ts.map +1 -0
- package/dist/components/dialog/dialog-misc.js +30 -0
- package/dist/components/dialog/dialog-misc.js.map +1 -0
- package/dist/components/dialog/dialog.cjs +13 -44
- package/dist/components/dialog/dialog.cjs.map +1 -1
- package/dist/components/dialog/dialog.d.ts +38 -44
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/dialog.js +6 -34
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/dialog.module.css.cjs +1 -1
- package/dist/components/dialog/dialog.module.css.js +1 -1
- package/dist/components/drawer/__tests__/drawer.test.d.ts +2 -0
- package/dist/components/drawer/__tests__/drawer.test.d.ts.map +1 -0
- package/dist/components/drawer/drawer-content.cjs +30 -0
- package/dist/components/drawer/drawer-content.cjs.map +1 -0
- package/dist/components/drawer/drawer-content.d.ts +13 -0
- package/dist/components/drawer/drawer-content.d.ts.map +1 -0
- package/dist/components/drawer/drawer-content.js +28 -0
- package/dist/components/drawer/drawer-content.js.map +1 -0
- package/dist/components/drawer/drawer-misc.cjs +26 -0
- package/dist/components/drawer/drawer-misc.cjs.map +1 -0
- package/dist/components/drawer/drawer-misc.d.ts +13 -0
- package/dist/components/drawer/drawer-misc.d.ts.map +1 -0
- package/dist/components/drawer/drawer-misc.js +20 -0
- package/dist/components/drawer/drawer-misc.js.map +1 -0
- package/dist/components/drawer/drawer-root.cjs +19 -0
- package/dist/components/drawer/drawer-root.cjs.map +1 -0
- package/dist/components/drawer/drawer-root.d.ts +12 -0
- package/dist/components/drawer/drawer-root.d.ts.map +1 -0
- package/dist/components/drawer/drawer-root.js +17 -0
- package/dist/components/drawer/drawer-root.js.map +1 -0
- package/dist/components/drawer/drawer.cjs +20 -0
- package/dist/components/drawer/drawer.cjs.map +1 -0
- package/dist/components/drawer/drawer.d.ts +21 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/drawer.js +18 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/drawer.module.css.cjs +8 -0
- package/dist/components/drawer/drawer.module.css.cjs.map +1 -0
- package/dist/components/drawer/drawer.module.css.js +4 -0
- package/dist/components/drawer/drawer.module.css.js.map +1 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/flex/flex.cjs +13 -4
- package/dist/components/flex/flex.cjs.map +1 -1
- package/dist/components/flex/flex.d.ts +7 -6
- package/dist/components/flex/flex.d.ts.map +1 -1
- package/dist/components/flex/flex.js +13 -4
- package/dist/components/flex/flex.js.map +1 -1
- package/dist/components/grid/grid-item.cjs +21 -16
- package/dist/components/grid/grid-item.cjs.map +1 -1
- package/dist/components/grid/grid-item.d.ts +14 -13
- package/dist/components/grid/grid-item.d.ts.map +1 -1
- package/dist/components/grid/grid-item.js +21 -16
- package/dist/components/grid/grid-item.js.map +1 -1
- package/dist/components/grid/grid.cjs +26 -21
- package/dist/components/grid/grid.cjs.map +1 -1
- package/dist/components/grid/grid.d.ts +27 -18
- package/dist/components/grid/grid.d.ts.map +1 -1
- package/dist/components/grid/grid.js +26 -21
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid/index.d.ts +8 -6
- package/dist/components/grid/index.d.ts.map +1 -1
- package/dist/components/headline/headline.d.ts +1 -1
- package/dist/components/input-field/input-field.cjs +2 -2
- package/dist/components/input-field/input-field.cjs.map +1 -1
- package/dist/components/input-field/input-field.d.ts +2 -1
- package/dist/components/input-field/input-field.d.ts.map +1 -1
- package/dist/components/input-field/input-field.js +2 -2
- package/dist/components/input-field/input-field.js.map +1 -1
- package/dist/components/menu/__tests__/menu.test.d.ts +2 -0
- package/dist/components/menu/__tests__/menu.test.d.ts.map +1 -0
- package/dist/components/menu/cell.cjs +12 -0
- package/dist/components/menu/cell.cjs.map +1 -0
- package/dist/components/{dropdown-menu → menu}/cell.d.ts +2 -2
- package/dist/components/menu/cell.d.ts.map +1 -0
- package/dist/components/menu/cell.js +10 -0
- package/dist/components/menu/cell.js.map +1 -0
- package/dist/components/{dropdown-menu → menu}/cell.module.css.cjs +1 -1
- package/dist/components/menu/cell.module.css.js +4 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/menu-content.cjs +95 -0
- package/dist/components/menu/menu-content.cjs.map +1 -0
- package/dist/components/menu/menu-content.d.ts +7 -0
- package/dist/components/menu/menu-content.d.ts.map +1 -0
- package/dist/components/menu/menu-content.js +92 -0
- package/dist/components/menu/menu-content.js.map +1 -0
- package/dist/components/menu/menu-item.cjs +30 -0
- package/dist/components/menu/menu-item.cjs.map +1 -0
- package/dist/components/menu/menu-item.d.ts +7 -0
- package/dist/components/menu/menu-item.d.ts.map +1 -0
- package/dist/components/menu/menu-item.js +28 -0
- package/dist/components/menu/menu-item.js.map +1 -0
- package/dist/components/menu/menu-misc.cjs +42 -0
- package/dist/components/menu/menu-misc.cjs.map +1 -0
- package/dist/components/menu/menu-misc.d.ts +8 -0
- package/dist/components/menu/menu-misc.d.ts.map +1 -0
- package/dist/components/menu/menu-misc.js +37 -0
- package/dist/components/menu/menu-misc.js.map +1 -0
- package/dist/components/menu/menu-root.cjs +103 -0
- package/dist/components/menu/menu-root.cjs.map +1 -0
- package/dist/components/menu/menu-root.d.ts +71 -0
- package/dist/components/menu/menu-root.d.ts.map +1 -0
- package/dist/components/menu/menu-root.js +98 -0
- package/dist/components/menu/menu-root.js.map +1 -0
- package/dist/components/menu/menu-trigger.cjs +43 -0
- package/dist/components/menu/menu-trigger.cjs.map +1 -0
- package/dist/components/menu/menu-trigger.d.ts +11 -0
- package/dist/components/menu/menu-trigger.d.ts.map +1 -0
- package/dist/components/menu/menu-trigger.js +40 -0
- package/dist/components/menu/menu-trigger.js.map +1 -0
- package/dist/components/menu/menu.cjs +23 -0
- package/dist/components/menu/menu.cjs.map +1 -0
- package/dist/components/menu/menu.d.ts +21 -0
- package/dist/components/menu/menu.d.ts.map +1 -0
- package/dist/components/menu/menu.js +21 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/menu/menu.module.css.cjs +8 -0
- package/dist/components/menu/menu.module.css.cjs.map +1 -0
- package/dist/components/menu/menu.module.css.js +4 -0
- package/dist/components/menu/menu.module.css.js.map +1 -0
- package/dist/components/menu/utils.cjs +53 -0
- package/dist/components/menu/utils.cjs.map +1 -0
- package/dist/components/menu/utils.d.ts +8 -0
- package/dist/components/menu/utils.d.ts.map +1 -0
- package/dist/components/menu/utils.js +46 -0
- package/dist/components/menu/utils.js.map +1 -0
- package/dist/components/popover/popover.cjs +8 -7
- package/dist/components/popover/popover.cjs.map +1 -1
- package/dist/components/popover/popover.d.ts +6 -8
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/popover/popover.js +7 -6
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/popover/popover.module.css.cjs +1 -1
- package/dist/components/popover/popover.module.css.js +1 -1
- package/dist/components/preview-card/__tests__/preview-card.test.d.ts +2 -0
- package/dist/components/preview-card/__tests__/preview-card.test.d.ts.map +1 -0
- package/dist/components/preview-card/index.d.ts +2 -0
- package/dist/components/preview-card/index.d.ts.map +1 -0
- package/dist/components/preview-card/preview-card.cjs +24 -0
- package/dist/components/preview-card/preview-card.cjs.map +1 -0
- package/dist/components/preview-card/preview-card.d.ts +15 -0
- package/dist/components/preview-card/preview-card.d.ts.map +1 -0
- package/dist/components/preview-card/preview-card.js +22 -0
- package/dist/components/preview-card/preview-card.js.map +1 -0
- package/dist/components/preview-card/preview-card.module.css.cjs +8 -0
- package/dist/components/preview-card/preview-card.module.css.cjs.map +1 -0
- package/dist/components/preview-card/preview-card.module.css.js +4 -0
- package/dist/components/preview-card/preview-card.module.css.js.map +1 -0
- package/dist/components/radio/index.d.ts +1 -1
- package/dist/components/radio/radio.cjs +8 -11
- package/dist/components/radio/radio.cjs.map +1 -1
- package/dist/components/radio/radio.d.ts +4 -13
- package/dist/components/radio/radio.d.ts.map +1 -1
- package/dist/components/radio/radio.js +10 -12
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-area/index.d.ts +2 -1
- package/dist/components/scroll-area/index.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area-scrollbar.cjs +4 -4
- package/dist/components/scroll-area/scroll-area-scrollbar.cjs.map +1 -1
- package/dist/components/scroll-area/scroll-area-scrollbar.d.ts +5 -6
- package/dist/components/scroll-area/scroll-area-scrollbar.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area-scrollbar.js +4 -4
- package/dist/components/scroll-area/scroll-area-scrollbar.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.cjs +11 -2
- package/dist/components/scroll-area/scroll-area.cjs.map +1 -1
- package/dist/components/scroll-area/scroll-area.d.ts +6 -1
- package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +11 -2
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.module.css.cjs +1 -1
- package/dist/components/scroll-area/scroll-area.module.css.js +1 -1
- package/dist/components/select/select-content.cjs +9 -18
- package/dist/components/select/select-content.cjs.map +1 -1
- package/dist/components/select/select-content.d.ts +6 -2
- package/dist/components/select/select-content.d.ts.map +1 -1
- package/dist/components/select/select-content.js +11 -20
- package/dist/components/select/select-content.js.map +1 -1
- package/dist/components/select/select-item.cjs +10 -11
- package/dist/components/select/select-item.cjs.map +1 -1
- package/dist/components/select/select-item.d.ts +9 -4
- package/dist/components/select/select-item.d.ts.map +1 -1
- package/dist/components/select/select-item.js +10 -11
- package/dist/components/select/select-item.js.map +1 -1
- package/dist/components/select/select-misc.cjs +19 -10
- package/dist/components/select/select-misc.cjs.map +1 -1
- package/dist/components/select/select-misc.d.ts +15 -4
- package/dist/components/select/select-misc.d.ts.map +1 -1
- package/dist/components/select/select-misc.js +19 -10
- package/dist/components/select/select-misc.js.map +1 -1
- package/dist/components/select/select-multiple-value.cjs +3 -7
- package/dist/components/select/select-multiple-value.cjs.map +1 -1
- package/dist/components/select/select-multiple-value.d.ts +2 -3
- package/dist/components/select/select-multiple-value.d.ts.map +1 -1
- package/dist/components/select/select-multiple-value.js +5 -9
- package/dist/components/select/select-multiple-value.js.map +1 -1
- package/dist/components/select/select-root.cjs +51 -66
- package/dist/components/select/select-root.cjs.map +1 -1
- package/dist/components/select/select-root.d.ts +11 -15
- package/dist/components/select/select-root.d.ts.map +1 -1
- package/dist/components/select/select-root.js +52 -67
- package/dist/components/select/select-root.js.map +1 -1
- package/dist/components/select/select-trigger.cjs +7 -4
- package/dist/components/select/select-trigger.cjs.map +1 -1
- package/dist/components/select/select-trigger.d.ts +2 -3
- package/dist/components/select/select-trigger.d.ts.map +1 -1
- package/dist/components/select/select-trigger.js +7 -4
- package/dist/components/select/select-trigger.js.map +1 -1
- package/dist/components/select/select-value.cjs +17 -8
- package/dist/components/select/select-value.cjs.map +1 -1
- package/dist/components/select/select-value.d.ts +6 -4
- package/dist/components/select/select-value.d.ts.map +1 -1
- package/dist/components/select/select-value.js +17 -8
- package/dist/components/select/select-value.js.map +1 -1
- package/dist/components/select/select.cjs +4 -4
- package/dist/components/select/select.cjs.map +1 -1
- package/dist/components/select/select.d.ts +10 -11
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +4 -4
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/select.module.css.cjs +1 -1
- package/dist/components/select/select.module.css.js +1 -1
- package/dist/components/separator/separator.cjs +3 -3
- package/dist/components/separator/separator.cjs.map +1 -1
- package/dist/components/separator/separator.d.ts +3 -5
- package/dist/components/separator/separator.d.ts.map +1 -1
- package/dist/components/separator/separator.js +3 -3
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/sidebar/sidebar-item.cjs +7 -4
- package/dist/components/sidebar/sidebar-item.cjs.map +1 -1
- package/dist/components/sidebar/sidebar-item.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar-item.js +7 -4
- package/dist/components/sidebar/sidebar-item.js.map +1 -1
- package/dist/components/sidebar/sidebar-misc.cjs +1 -1
- package/dist/components/sidebar/sidebar-misc.cjs.map +1 -1
- package/dist/components/sidebar/sidebar-misc.js +1 -1
- package/dist/components/sidebar/sidebar-misc.js.map +1 -1
- package/dist/components/sidebar/sidebar-root.cjs +4 -5
- package/dist/components/sidebar/sidebar-root.cjs.map +1 -1
- package/dist/components/sidebar/sidebar-root.d.ts +5 -3
- package/dist/components/sidebar/sidebar-root.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar-root.js +4 -5
- package/dist/components/sidebar/sidebar-root.js.map +1 -1
- package/dist/components/sidebar/sidebar.d.ts +1 -1
- package/dist/components/sidebar/sidebar.module.css.cjs +1 -1
- package/dist/components/sidebar/sidebar.module.css.js +1 -1
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/slider/slider.cjs +10 -22
- package/dist/components/slider/slider.cjs.map +1 -1
- package/dist/components/slider/slider.d.ts +6 -13
- package/dist/components/slider/slider.d.ts.map +1 -1
- package/dist/components/slider/slider.js +12 -24
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/slider/slider.module.css.cjs +1 -1
- package/dist/components/slider/slider.module.css.js +1 -1
- package/dist/components/switch/switch.cjs +2 -3
- package/dist/components/switch/switch.cjs.map +1 -1
- package/dist/components/switch/switch.d.ts +4 -5
- package/dist/components/switch/switch.d.ts.map +1 -1
- package/dist/components/switch/switch.js +4 -5
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/tabs/index.d.ts +1 -1
- package/dist/components/tabs/tabs.cjs +10 -14
- package/dist/components/tabs/tabs.cjs.map +1 -1
- package/dist/components/tabs/tabs.d.ts +7 -14
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +11 -15
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.module.css.cjs +1 -1
- package/dist/components/tabs/tabs.module.css.js +1 -1
- package/dist/components/text/text.d.ts +1 -1
- package/dist/components/toast/index.d.ts +3 -1
- package/dist/components/toast/index.d.ts.map +1 -1
- package/dist/components/toast/toast-manager.cjs +9 -0
- package/dist/components/toast/toast-manager.cjs.map +1 -0
- package/dist/components/toast/toast-manager.d.ts +2 -0
- package/dist/components/toast/toast-manager.d.ts.map +1 -0
- package/dist/components/toast/toast-manager.js +7 -0
- package/dist/components/toast/toast-manager.js.map +1 -0
- package/dist/components/toast/toast-provider.cjs +22 -0
- package/dist/components/toast/toast-provider.cjs.map +1 -0
- package/dist/components/toast/toast-provider.d.ts +11 -0
- package/dist/components/toast/toast-provider.d.ts.map +1 -0
- package/dist/components/toast/toast-provider.js +20 -0
- package/dist/components/toast/toast-provider.js.map +1 -0
- package/dist/components/toast/toast-root.cjs +34 -0
- package/dist/components/toast/toast-root.cjs.map +1 -0
- package/dist/components/toast/toast-root.d.ts +8 -0
- package/dist/components/toast/toast-root.d.ts.map +1 -0
- package/dist/components/toast/toast-root.js +32 -0
- package/dist/components/toast/toast-root.js.map +1 -0
- package/dist/components/toast/toast.cjs +11 -25
- package/dist/components/toast/toast.cjs.map +1 -1
- package/dist/components/toast/toast.d.ts +6 -8
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/toast/toast.js +10 -24
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/toast.module.css.cjs +1 -1
- package/dist/components/toast/toast.module.css.js +1 -1
- package/dist/components/tooltip/tooltip-content.cjs +17 -0
- package/dist/components/tooltip/tooltip-content.cjs.map +1 -0
- package/dist/components/tooltip/tooltip-content.d.ts +10 -0
- package/dist/components/tooltip/tooltip-content.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip-content.js +15 -0
- package/dist/components/tooltip/tooltip-content.js.map +1 -0
- package/dist/components/tooltip/tooltip-misc.cjs +19 -0
- package/dist/components/tooltip/tooltip-misc.cjs.map +1 -0
- package/dist/components/tooltip/tooltip-misc.d.ts +9 -0
- package/dist/components/tooltip/tooltip-misc.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip-misc.js +16 -0
- package/dist/components/tooltip/tooltip-misc.js.map +1 -0
- package/dist/components/tooltip/tooltip.cjs +7 -4
- package/dist/components/tooltip/tooltip.cjs.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts +8 -5
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +7 -4
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/tooltip.module.css.cjs +1 -1
- package/dist/components/tooltip/tooltip.module.css.js +1 -1
- package/dist/index.cjs +14 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +5 -7
- package/dist/components/dropdown-menu/__tests__/dropdown-menu.test.d.ts +0 -2
- package/dist/components/dropdown-menu/__tests__/dropdown-menu.test.d.ts.map +0 -1
- package/dist/components/dropdown-menu/cell.cjs +0 -12
- package/dist/components/dropdown-menu/cell.cjs.map +0 -1
- package/dist/components/dropdown-menu/cell.d.ts.map +0 -1
- package/dist/components/dropdown-menu/cell.js +0 -10
- package/dist/components/dropdown-menu/cell.js.map +0 -1
- package/dist/components/dropdown-menu/cell.module.css.js +0 -4
- package/dist/components/dropdown-menu/dropdown-menu-content.cjs +0 -36
- package/dist/components/dropdown-menu/dropdown-menu-content.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +0 -7
- package/dist/components/dropdown-menu/dropdown-menu-content.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-content.js +0 -34
- package/dist/components/dropdown-menu/dropdown-menu-content.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-item.cjs +0 -45
- package/dist/components/dropdown-menu/dropdown-menu-item.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-item.d.ts +0 -9
- package/dist/components/dropdown-menu/dropdown-menu-item.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-item.js +0 -43
- package/dist/components/dropdown-menu/dropdown-menu-item.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-misc.cjs +0 -36
- package/dist/components/dropdown-menu/dropdown-menu-misc.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-misc.d.ts +0 -10
- package/dist/components/dropdown-menu/dropdown-menu-misc.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-misc.js +0 -31
- package/dist/components/dropdown-menu/dropdown-menu-misc.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-root.cjs +0 -52
- package/dist/components/dropdown-menu/dropdown-menu-root.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +0 -40
- package/dist/components/dropdown-menu/dropdown-menu-root.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-root.js +0 -48
- package/dist/components/dropdown-menu/dropdown-menu-root.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-trigger.cjs +0 -34
- package/dist/components/dropdown-menu/dropdown-menu-trigger.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-trigger.d.ts +0 -14
- package/dist/components/dropdown-menu/dropdown-menu-trigger.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu-trigger.js +0 -31
- package/dist/components/dropdown-menu/dropdown-menu-trigger.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.cjs +0 -24
- package/dist/components/dropdown-menu/dropdown-menu.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +0 -16
- package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +0 -22
- package/dist/components/dropdown-menu/dropdown-menu.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.module.css.cjs +0 -8
- package/dist/components/dropdown-menu/dropdown-menu.module.css.cjs.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.module.css.js +0 -4
- package/dist/components/dropdown-menu/dropdown-menu.module.css.js.map +0 -1
- package/dist/components/dropdown-menu/index.d.ts +0 -2
- package/dist/components/dropdown-menu/index.d.ts.map +0 -1
- package/dist/components/dropdown-menu/types.d.ts +0 -4
- package/dist/components/dropdown-menu/types.d.ts.map +0 -1
- package/dist/components/dropdown-menu/utils.cjs +0 -21
- package/dist/components/dropdown-menu/utils.cjs.map +0 -1
- package/dist/components/dropdown-menu/utils.d.ts +0 -4
- package/dist/components/dropdown-menu/utils.d.ts.map +0 -1
- package/dist/components/dropdown-menu/utils.js +0 -18
- package/dist/components/dropdown-menu/utils.js.map +0 -1
- package/dist/components/scroll-area/scroll-area-root.cjs +0 -17
- package/dist/components/scroll-area/scroll-area-root.cjs.map +0 -1
- package/dist/components/scroll-area/scroll-area-root.d.ts +0 -9
- package/dist/components/scroll-area/scroll-area-root.d.ts.map +0 -1
- package/dist/components/scroll-area/scroll-area-root.js +0 -15
- package/dist/components/scroll-area/scroll-area-root.js.map +0 -1
- package/dist/components/sheet/__tests__/sheet.test.d.ts +0 -2
- package/dist/components/sheet/__tests__/sheet.test.d.ts.map +0 -1
- package/dist/components/sheet/index.d.ts +0 -2
- package/dist/components/sheet/index.d.ts.map +0 -1
- package/dist/components/sheet/sheet.cjs +0 -50
- package/dist/components/sheet/sheet.cjs.map +0 -1
- package/dist/components/sheet/sheet.d.ts +0 -36
- package/dist/components/sheet/sheet.d.ts.map +0 -1
- package/dist/components/sheet/sheet.js +0 -45
- package/dist/components/sheet/sheet.js.map +0 -1
- package/dist/components/sheet/sheet.module.css.cjs +0 -8
- package/dist/components/sheet/sheet.module.css.cjs.map +0 -1
- package/dist/components/sheet/sheet.module.css.js +0 -4
- package/dist/components/sheet/sheet.module.css.js.map +0 -1
- package/dist/components/slider/thumb.cjs +0 -8
- package/dist/components/slider/thumb.cjs.map +0 -1
- package/dist/components/slider/thumb.d.ts +0 -2
- package/dist/components/slider/thumb.d.ts.map +0 -1
- package/dist/components/slider/thumb.js +0 -6
- package/dist/components/slider/thumb.js.map +0 -1
- package/dist/components/tooltip/tooltip-provider.cjs +0 -18
- package/dist/components/tooltip/tooltip-provider.cjs.map +0 -1
- package/dist/components/tooltip/tooltip-provider.d.ts +0 -9
- package/dist/components/tooltip/tooltip-provider.d.ts.map +0 -1
- package/dist/components/tooltip/tooltip-provider.js +0 -15
- package/dist/components/tooltip/tooltip-provider.js.map +0 -1
- package/dist/components/tooltip/tooltip-root.cjs +0 -66
- package/dist/components/tooltip/tooltip-root.cjs.map +0 -1
- package/dist/components/tooltip/tooltip-root.d.ts +0 -29
- package/dist/components/tooltip/tooltip-root.d.ts.map +0 -1
- package/dist/components/tooltip/tooltip-root.js +0 -63
- package/dist/components/tooltip/tooltip-root.js.map +0 -1
- package/dist/components/tooltip/utils.cjs +0 -30
- package/dist/components/tooltip/utils.cjs.map +0 -1
- package/dist/components/tooltip/utils.d.ts +0 -10
- package/dist/components/tooltip/utils.d.ts.map +0 -1
- package/dist/components/tooltip/utils.js +0 -28
- package/dist/components/tooltip/utils.js.map +0 -1
- /package/dist/components/{dropdown-menu → menu}/cell.module.css.cjs.map +0 -0
- /package/dist/components/{dropdown-menu → menu}/cell.module.css.js.map +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { HTMLAttributes, ReactNode } from
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export type CellBaseProps = {
|
|
3
3
|
leadingIcon?: ReactNode;
|
|
4
4
|
trailingIcon?: ReactNode;
|
|
5
5
|
};
|
|
6
6
|
export type CellProps = HTMLAttributes<HTMLDivElement> & CellBaseProps & {
|
|
7
|
-
type?:
|
|
7
|
+
type?: 'select' | 'item';
|
|
8
8
|
};
|
|
9
9
|
export declare const Cell: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & CellBaseProps & {
|
|
10
10
|
type?: "select" | "item" | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../components/menu/cell.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9D,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,GACpD,aAAa,GAAG;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1B,CAAC;AAEJ,eAAO,MAAM,IAAI;;kDAahB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { cx } from 'class-variance-authority';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import styles from './cell.module.css.js';
|
|
5
|
+
|
|
6
|
+
const Cell = forwardRef(({ className, children, leadingIcon, trailingIcon, type = 'item', ...props }, ref) => (jsxs("div", { ref: ref, ...props, className: cx(styles.cell, className), children: [leadingIcon && jsx("span", { className: styles.leadingIcon, children: leadingIcon }), children, trailingIcon && (jsx("span", { className: styles.trailingIcon, children: trailingIcon }))] })));
|
|
7
|
+
Cell.displayName = 'Menu.Cell';
|
|
8
|
+
|
|
9
|
+
export { Cell };
|
|
10
|
+
//# sourceMappingURL=cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.js","sources":["../../../components/menu/cell.tsx"],"sourcesContent":["import { cx } from 'class-variance-authority';\nimport { forwardRef, HTMLAttributes, ReactNode } from 'react';\nimport styles from './cell.module.css';\n\nexport type CellBaseProps = {\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n};\nexport type CellProps = HTMLAttributes<HTMLDivElement> &\n CellBaseProps & {\n type?: 'select' | 'item';\n };\n\nexport const Cell = forwardRef<HTMLDivElement, CellProps>(\n (\n { className, children, leadingIcon, trailingIcon, type = 'item', ...props },\n ref\n ) => (\n <div ref={ref} {...props} className={cx(styles.cell, className)}>\n {leadingIcon && <span className={styles.leadingIcon}>{leadingIcon}</span>}\n {children}\n {trailingIcon && (\n <span className={styles.trailingIcon}>{trailingIcon}</span>\n )}\n </div>\n )\n);\nCell.displayName = 'Menu.Cell';\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAaa,MAAA,IAAI,GAAG,UAAU,CAC5B,CACE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,EAC3E,GAAG,MAEHA,IAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAM,GAAA,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,EAC5D,QAAA,EAAA,CAAA,WAAW,IAAIC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,WAAW,YAAG,WAAW,EAAA,CAAQ,EACxE,QAAQ,EACR,YAAY,KACXA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,YAAY,YAAG,YAAY,EAAA,CAAQ,CAC5D,CACG,EAAA,CAAA,CACP,EACD;AACF,IAAI,CAAC,WAAW,GAAG,WAAW;;;;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var styles = {"cell":"cell-
|
|
5
|
+
var styles = {"cell":"cell-module_cell__CFvDx","leadingIcon":"cell-module_leadingIcon__-xf2e","trailingIcon":"cell-module_trailingIcon__IJxNx"};
|
|
6
6
|
|
|
7
7
|
exports.default = styles;
|
|
8
8
|
//# sourceMappingURL=cell.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@base-ui/react');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var menu_module = require('./menu.module.css.cjs');
|
|
9
|
+
var menuRoot = require('./menu-root.cjs');
|
|
10
|
+
var utils = require('./utils.cjs');
|
|
11
|
+
|
|
12
|
+
const MenuContent = React.forwardRef(({ className, children, searchPlaceholder = 'Search...', render, finalFocus, style, sideOffset = 4, align = 'start', onFocus, ...positionerProps }, ref) => {
|
|
13
|
+
const { autocomplete, inputValue, onInputValueChange, inputRef, isInitialRender, parent } = menuRoot.useMenuContext();
|
|
14
|
+
const focusInput = React.useCallback(() => {
|
|
15
|
+
if (document?.activeElement !== inputRef?.current)
|
|
16
|
+
inputRef?.current?.focus();
|
|
17
|
+
}, [inputRef]);
|
|
18
|
+
const highlightedItem = React.useRef([-1, 'none']);
|
|
19
|
+
const containerRef = React.useRef(null);
|
|
20
|
+
const highlightFirstItem = React.useCallback(() => {
|
|
21
|
+
if (!isInitialRender?.current)
|
|
22
|
+
return;
|
|
23
|
+
isInitialRender.current = false;
|
|
24
|
+
const item = containerRef.current?.querySelector('[role="option"]');
|
|
25
|
+
if (!item)
|
|
26
|
+
return;
|
|
27
|
+
item.dispatchEvent(new PointerEvent('mousemove', { bubbles: true }));
|
|
28
|
+
}, [isInitialRender]);
|
|
29
|
+
const checkAndOpenSubMenu = React.useCallback(() => {
|
|
30
|
+
if (highlightedItem.current[0] === -1)
|
|
31
|
+
return;
|
|
32
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
33
|
+
const item = items?.[highlightedItem.current[0]];
|
|
34
|
+
if (!item || !utils.isElementSubMenuTrigger(item))
|
|
35
|
+
return;
|
|
36
|
+
utils.dispatchKeyboardEvent(item, utils.KEYCODES.ARROW_RIGHT);
|
|
37
|
+
}, []);
|
|
38
|
+
const checkAndCloseSubMenu = React.useCallback((e) => {
|
|
39
|
+
if (highlightedItem.current[0] === -1)
|
|
40
|
+
return;
|
|
41
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
42
|
+
const item = items?.[highlightedItem.current[0]];
|
|
43
|
+
if (!item ||
|
|
44
|
+
!utils.isElementSubMenuTrigger(item) ||
|
|
45
|
+
!utils.isElementSubMenuOpen(item))
|
|
46
|
+
return;
|
|
47
|
+
utils.dispatchKeyboardEvent(item, utils.KEYCODES.ESCAPE);
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
}, []);
|
|
50
|
+
const blurStaleMenuItem = React.useCallback((index) => {
|
|
51
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
52
|
+
const item = items?.[index];
|
|
53
|
+
if (!item ||
|
|
54
|
+
!utils.isElementSubMenuTrigger(item) ||
|
|
55
|
+
!utils.isElementSubMenuOpen(item))
|
|
56
|
+
return;
|
|
57
|
+
utils.dispatchKeyboardEvent(item, utils.KEYCODES.ESCAPE);
|
|
58
|
+
item.dispatchEvent(new PointerEvent('pointerout', { bubbles: true }));
|
|
59
|
+
}, []);
|
|
60
|
+
return (jsxRuntime.jsx(react.Menu.Portal, { children: jsxRuntime.jsx(react.Menu.Positioner, { className: menu_module.default.positioner, sideOffset: sideOffset, align: align, ...positionerProps, children: jsxRuntime.jsx(react.Menu.Popup, { ref: ref, className: classVarianceAuthority.cx(menu_module.default.content, autocomplete && menu_module.default.comboboxContainer, className), style: style, render: render, finalFocus: finalFocus, role: autocomplete ? 'dialog' : 'menu', onFocus: autocomplete || parent?.autocomplete
|
|
61
|
+
? e => {
|
|
62
|
+
focusInput();
|
|
63
|
+
e.stopPropagation();
|
|
64
|
+
highlightFirstItem();
|
|
65
|
+
onFocus?.(e);
|
|
66
|
+
}
|
|
67
|
+
: undefined, children: autocomplete ? (jsxRuntime.jsxs(react.Autocomplete.Root, { inline: true, open: true, value: inputValue, onValueChange: (value) => onInputValueChange?.(value), autoHighlight: !!inputValue?.length, mode: 'none', loopFocus: false, onItemHighlighted: (value, eventDetails) => {
|
|
68
|
+
if (highlightedItem.current[1] === 'pointer' &&
|
|
69
|
+
eventDetails.reason === 'keyboard') {
|
|
70
|
+
// focus moved using keyboard after using pointer
|
|
71
|
+
blurStaleMenuItem(highlightedItem.current[0]);
|
|
72
|
+
}
|
|
73
|
+
highlightedItem.current = [
|
|
74
|
+
eventDetails.index,
|
|
75
|
+
eventDetails.reason
|
|
76
|
+
];
|
|
77
|
+
}, children: [jsxRuntime.jsx(react.Autocomplete.Input, { placeholder: searchPlaceholder, className: menu_module.default.comboboxInput, ref: inputRef, onPointerEnter: e => {
|
|
78
|
+
focusInput();
|
|
79
|
+
}, onKeyDown: e => {
|
|
80
|
+
if (e.key === 'ArrowLeft')
|
|
81
|
+
return;
|
|
82
|
+
if (e.key === 'Escape')
|
|
83
|
+
return checkAndCloseSubMenu(e);
|
|
84
|
+
if (e.key === 'ArrowRight' || e.key === 'Enter')
|
|
85
|
+
checkAndOpenSubMenu();
|
|
86
|
+
e.stopPropagation();
|
|
87
|
+
}, tabIndex: -1 }), jsxRuntime.jsx(react.Autocomplete.List, { className: menu_module.default.comboboxContent, ref: containerRef, children: children })] })) : (children) }) }) }));
|
|
88
|
+
});
|
|
89
|
+
MenuContent.displayName = 'Menu.Content';
|
|
90
|
+
const MenuSubContent = React.forwardRef(({ ...props }, ref) => jsxRuntime.jsx(MenuContent, { ref: ref, sideOffset: 2, ...props }));
|
|
91
|
+
MenuSubContent.displayName = 'Menu.SubContent';
|
|
92
|
+
|
|
93
|
+
exports.MenuContent = MenuContent;
|
|
94
|
+
exports.MenuSubContent = MenuSubContent;
|
|
95
|
+
//# sourceMappingURL=menu-content.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-content.cjs","sources":["../../../components/menu/menu-content.tsx"],"sourcesContent":["'use client';\n\nimport {\n Autocomplete as AutocompletePrimitive,\n Menu as MenuPrimitive\n} from '@base-ui/react';\nimport { cx } from 'class-variance-authority';\nimport { forwardRef, KeyboardEvent, useCallback, useRef } from 'react';\nimport styles from './menu.module.css';\nimport { useMenuContext } from './menu-root';\nimport {\n dispatchKeyboardEvent,\n isElementSubMenuOpen,\n isElementSubMenuTrigger,\n KEYCODES\n} from './utils';\n\nexport interface MenuContentProps\n extends Omit<\n MenuPrimitive.Positioner.Props,\n 'render' | 'className' | 'style'\n >,\n MenuPrimitive.Popup.Props {\n searchPlaceholder?: string;\n}\n\nexport const MenuContent = forwardRef<HTMLDivElement, MenuContentProps>(\n (\n {\n className,\n children,\n searchPlaceholder = 'Search...',\n render,\n finalFocus,\n style,\n sideOffset = 4,\n align = 'start',\n onFocus,\n ...positionerProps\n },\n ref\n ) => {\n const {\n autocomplete,\n inputValue,\n onInputValueChange,\n inputRef,\n isInitialRender,\n parent\n } = useMenuContext();\n\n const focusInput = useCallback(() => {\n if (document?.activeElement !== inputRef?.current)\n inputRef?.current?.focus();\n }, [inputRef]);\n const highlightedItem = useRef<\n [index: number, reason: 'keyboard' | 'pointer' | 'none']\n >([-1, 'none']);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const highlightFirstItem = useCallback(() => {\n if (!isInitialRender?.current) return;\n isInitialRender.current = false;\n const item = containerRef.current?.querySelector('[role=\"option\"]');\n if (!item) return;\n item.dispatchEvent(new PointerEvent('mousemove', { bubbles: true }));\n }, [isInitialRender]);\n\n const checkAndOpenSubMenu = useCallback(() => {\n if (highlightedItem.current[0] === -1) return;\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[highlightedItem.current[0]];\n if (!item || !isElementSubMenuTrigger(item)) return;\n dispatchKeyboardEvent(item, KEYCODES.ARROW_RIGHT);\n }, []);\n\n const checkAndCloseSubMenu = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (highlightedItem.current[0] === -1) return;\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[highlightedItem.current[0]];\n if (\n !item ||\n !isElementSubMenuTrigger(item) ||\n !isElementSubMenuOpen(item)\n )\n return;\n dispatchKeyboardEvent(item, KEYCODES.ESCAPE);\n e.stopPropagation();\n },\n []\n );\n\n const blurStaleMenuItem = useCallback((index: number) => {\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[index];\n if (\n !item ||\n !isElementSubMenuTrigger(item) ||\n !isElementSubMenuOpen(item)\n )\n return;\n dispatchKeyboardEvent(item, KEYCODES.ESCAPE);\n item.dispatchEvent(new PointerEvent('pointerout', { bubbles: true }));\n }, []);\n\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className={styles.positioner}\n sideOffset={sideOffset}\n align={align}\n {...positionerProps}\n >\n <MenuPrimitive.Popup\n ref={ref}\n className={cx(\n styles.content,\n autocomplete && styles.comboboxContainer,\n className\n )}\n style={style}\n render={render}\n finalFocus={finalFocus}\n role={autocomplete ? 'dialog' : 'menu'}\n onFocus={\n autocomplete || parent?.autocomplete\n ? e => {\n focusInput();\n e.stopPropagation();\n highlightFirstItem();\n onFocus?.(e);\n }\n : undefined\n }\n >\n {autocomplete ? (\n <AutocompletePrimitive.Root\n inline\n open\n value={inputValue}\n onValueChange={(value: string) => onInputValueChange?.(value)}\n autoHighlight={!!inputValue?.length}\n mode='none'\n loopFocus={false}\n onItemHighlighted={(value, eventDetails) => {\n if (\n highlightedItem.current[1] === 'pointer' &&\n eventDetails.reason === 'keyboard'\n ) {\n // focus moved using keyboard after using pointer\n blurStaleMenuItem(highlightedItem.current[0]);\n }\n highlightedItem.current = [\n eventDetails.index,\n eventDetails.reason\n ];\n }}\n >\n <AutocompletePrimitive.Input\n placeholder={searchPlaceholder}\n className={styles.comboboxInput}\n ref={inputRef}\n onPointerEnter={e => {\n focusInput();\n }}\n onKeyDown={e => {\n if (e.key === 'ArrowLeft') return;\n if (e.key === 'Escape') return checkAndCloseSubMenu(e);\n if (e.key === 'ArrowRight' || e.key === 'Enter')\n checkAndOpenSubMenu();\n e.stopPropagation();\n }}\n tabIndex={-1}\n />\n <AutocompletePrimitive.List\n className={styles.comboboxContent}\n ref={containerRef}\n >\n {children}\n </AutocompletePrimitive.List>\n </AutocompletePrimitive.Root>\n ) : (\n children\n )}\n </MenuPrimitive.Popup>\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n }\n);\nMenuContent.displayName = 'Menu.Content';\n\nexport const MenuSubContent = forwardRef<HTMLDivElement, MenuContentProps>(\n ({ ...props }, ref) => <MenuContent ref={ref} sideOffset={2} {...props} />\n);\nMenuSubContent.displayName = 'Menu.SubContent';\n"],"names":[],"mappings":";;;;;;;;;;;AA0Ba;AAgBT;AASA;AACE;AACE;AACJ;;AAIA;AAEA;;;AAEE;;AAEA;;AACA;AACF;AAEA;;;;AAGE;AACA;;AACA;;AAGF;;;;AAII;AACA;;;;AAMA;;;AAMJ;;AAEE;AACA;;;;AAMA;AACA;;AAGF;;AAsBgB;;AAEA;AACA;;;AAeF;AAEE;;;;;AAMA;AACA;;;AASA;AACF;AAEE;;AACA;AAAwB;;AAEtB;;AAEJ;AAiBhB;AAEF;AAEO;AAGP;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Menu as MenuPrimitive } from '@base-ui/react';
|
|
2
|
+
export interface MenuContentProps extends Omit<MenuPrimitive.Positioner.Props, 'render' | 'className' | 'style'>, MenuPrimitive.Popup.Props {
|
|
3
|
+
searchPlaceholder?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const MenuContent: import("react").ForwardRefExoticComponent<Omit<MenuContentProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export declare const MenuSubContent: import("react").ForwardRefExoticComponent<Omit<MenuContentProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=menu-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-content.d.ts","sourceRoot":"","sources":["../../../components/menu/menu-content.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,IAAI,IAAI,aAAa,EACtB,MAAM,gBAAgB,CAAC;AAYxB,MAAM,WAAW,gBACf,SAAQ,IAAI,CACR,aAAa,CAAC,UAAU,CAAC,KAAK,EAC9B,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,EACD,aAAa,CAAC,KAAK,CAAC,KAAK;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,0HAoKvB,CAAC;AAGF,eAAO,MAAM,cAAc,0HAE1B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { Menu, Autocomplete } from '@base-ui/react';
|
|
4
|
+
import { cx } from 'class-variance-authority';
|
|
5
|
+
import { forwardRef, useCallback, useRef } from 'react';
|
|
6
|
+
import styles from './menu.module.css.js';
|
|
7
|
+
import { useMenuContext } from './menu-root.js';
|
|
8
|
+
import { isElementSubMenuTrigger, dispatchKeyboardEvent, isElementSubMenuOpen, KEYCODES } from './utils.js';
|
|
9
|
+
|
|
10
|
+
const MenuContent = forwardRef(({ className, children, searchPlaceholder = 'Search...', render, finalFocus, style, sideOffset = 4, align = 'start', onFocus, ...positionerProps }, ref) => {
|
|
11
|
+
const { autocomplete, inputValue, onInputValueChange, inputRef, isInitialRender, parent } = useMenuContext();
|
|
12
|
+
const focusInput = useCallback(() => {
|
|
13
|
+
if (document?.activeElement !== inputRef?.current)
|
|
14
|
+
inputRef?.current?.focus();
|
|
15
|
+
}, [inputRef]);
|
|
16
|
+
const highlightedItem = useRef([-1, 'none']);
|
|
17
|
+
const containerRef = useRef(null);
|
|
18
|
+
const highlightFirstItem = useCallback(() => {
|
|
19
|
+
if (!isInitialRender?.current)
|
|
20
|
+
return;
|
|
21
|
+
isInitialRender.current = false;
|
|
22
|
+
const item = containerRef.current?.querySelector('[role="option"]');
|
|
23
|
+
if (!item)
|
|
24
|
+
return;
|
|
25
|
+
item.dispatchEvent(new PointerEvent('mousemove', { bubbles: true }));
|
|
26
|
+
}, [isInitialRender]);
|
|
27
|
+
const checkAndOpenSubMenu = useCallback(() => {
|
|
28
|
+
if (highlightedItem.current[0] === -1)
|
|
29
|
+
return;
|
|
30
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
31
|
+
const item = items?.[highlightedItem.current[0]];
|
|
32
|
+
if (!item || !isElementSubMenuTrigger(item))
|
|
33
|
+
return;
|
|
34
|
+
dispatchKeyboardEvent(item, KEYCODES.ARROW_RIGHT);
|
|
35
|
+
}, []);
|
|
36
|
+
const checkAndCloseSubMenu = useCallback((e) => {
|
|
37
|
+
if (highlightedItem.current[0] === -1)
|
|
38
|
+
return;
|
|
39
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
40
|
+
const item = items?.[highlightedItem.current[0]];
|
|
41
|
+
if (!item ||
|
|
42
|
+
!isElementSubMenuTrigger(item) ||
|
|
43
|
+
!isElementSubMenuOpen(item))
|
|
44
|
+
return;
|
|
45
|
+
dispatchKeyboardEvent(item, KEYCODES.ESCAPE);
|
|
46
|
+
e.stopPropagation();
|
|
47
|
+
}, []);
|
|
48
|
+
const blurStaleMenuItem = useCallback((index) => {
|
|
49
|
+
const items = containerRef.current?.querySelectorAll('[role="option"]');
|
|
50
|
+
const item = items?.[index];
|
|
51
|
+
if (!item ||
|
|
52
|
+
!isElementSubMenuTrigger(item) ||
|
|
53
|
+
!isElementSubMenuOpen(item))
|
|
54
|
+
return;
|
|
55
|
+
dispatchKeyboardEvent(item, KEYCODES.ESCAPE);
|
|
56
|
+
item.dispatchEvent(new PointerEvent('pointerout', { bubbles: true }));
|
|
57
|
+
}, []);
|
|
58
|
+
return (jsx(Menu.Portal, { children: jsx(Menu.Positioner, { className: styles.positioner, sideOffset: sideOffset, align: align, ...positionerProps, children: jsx(Menu.Popup, { ref: ref, className: cx(styles.content, autocomplete && styles.comboboxContainer, className), style: style, render: render, finalFocus: finalFocus, role: autocomplete ? 'dialog' : 'menu', onFocus: autocomplete || parent?.autocomplete
|
|
59
|
+
? e => {
|
|
60
|
+
focusInput();
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
highlightFirstItem();
|
|
63
|
+
onFocus?.(e);
|
|
64
|
+
}
|
|
65
|
+
: undefined, children: autocomplete ? (jsxs(Autocomplete.Root, { inline: true, open: true, value: inputValue, onValueChange: (value) => onInputValueChange?.(value), autoHighlight: !!inputValue?.length, mode: 'none', loopFocus: false, onItemHighlighted: (value, eventDetails) => {
|
|
66
|
+
if (highlightedItem.current[1] === 'pointer' &&
|
|
67
|
+
eventDetails.reason === 'keyboard') {
|
|
68
|
+
// focus moved using keyboard after using pointer
|
|
69
|
+
blurStaleMenuItem(highlightedItem.current[0]);
|
|
70
|
+
}
|
|
71
|
+
highlightedItem.current = [
|
|
72
|
+
eventDetails.index,
|
|
73
|
+
eventDetails.reason
|
|
74
|
+
];
|
|
75
|
+
}, children: [jsx(Autocomplete.Input, { placeholder: searchPlaceholder, className: styles.comboboxInput, ref: inputRef, onPointerEnter: e => {
|
|
76
|
+
focusInput();
|
|
77
|
+
}, onKeyDown: e => {
|
|
78
|
+
if (e.key === 'ArrowLeft')
|
|
79
|
+
return;
|
|
80
|
+
if (e.key === 'Escape')
|
|
81
|
+
return checkAndCloseSubMenu(e);
|
|
82
|
+
if (e.key === 'ArrowRight' || e.key === 'Enter')
|
|
83
|
+
checkAndOpenSubMenu();
|
|
84
|
+
e.stopPropagation();
|
|
85
|
+
}, tabIndex: -1 }), jsx(Autocomplete.List, { className: styles.comboboxContent, ref: containerRef, children: children })] })) : (children) }) }) }));
|
|
86
|
+
});
|
|
87
|
+
MenuContent.displayName = 'Menu.Content';
|
|
88
|
+
const MenuSubContent = forwardRef(({ ...props }, ref) => jsx(MenuContent, { ref: ref, sideOffset: 2, ...props }));
|
|
89
|
+
MenuSubContent.displayName = 'Menu.SubContent';
|
|
90
|
+
|
|
91
|
+
export { MenuContent, MenuSubContent };
|
|
92
|
+
//# sourceMappingURL=menu-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-content.js","sources":["../../../components/menu/menu-content.tsx"],"sourcesContent":["'use client';\n\nimport {\n Autocomplete as AutocompletePrimitive,\n Menu as MenuPrimitive\n} from '@base-ui/react';\nimport { cx } from 'class-variance-authority';\nimport { forwardRef, KeyboardEvent, useCallback, useRef } from 'react';\nimport styles from './menu.module.css';\nimport { useMenuContext } from './menu-root';\nimport {\n dispatchKeyboardEvent,\n isElementSubMenuOpen,\n isElementSubMenuTrigger,\n KEYCODES\n} from './utils';\n\nexport interface MenuContentProps\n extends Omit<\n MenuPrimitive.Positioner.Props,\n 'render' | 'className' | 'style'\n >,\n MenuPrimitive.Popup.Props {\n searchPlaceholder?: string;\n}\n\nexport const MenuContent = forwardRef<HTMLDivElement, MenuContentProps>(\n (\n {\n className,\n children,\n searchPlaceholder = 'Search...',\n render,\n finalFocus,\n style,\n sideOffset = 4,\n align = 'start',\n onFocus,\n ...positionerProps\n },\n ref\n ) => {\n const {\n autocomplete,\n inputValue,\n onInputValueChange,\n inputRef,\n isInitialRender,\n parent\n } = useMenuContext();\n\n const focusInput = useCallback(() => {\n if (document?.activeElement !== inputRef?.current)\n inputRef?.current?.focus();\n }, [inputRef]);\n const highlightedItem = useRef<\n [index: number, reason: 'keyboard' | 'pointer' | 'none']\n >([-1, 'none']);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const highlightFirstItem = useCallback(() => {\n if (!isInitialRender?.current) return;\n isInitialRender.current = false;\n const item = containerRef.current?.querySelector('[role=\"option\"]');\n if (!item) return;\n item.dispatchEvent(new PointerEvent('mousemove', { bubbles: true }));\n }, [isInitialRender]);\n\n const checkAndOpenSubMenu = useCallback(() => {\n if (highlightedItem.current[0] === -1) return;\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[highlightedItem.current[0]];\n if (!item || !isElementSubMenuTrigger(item)) return;\n dispatchKeyboardEvent(item, KEYCODES.ARROW_RIGHT);\n }, []);\n\n const checkAndCloseSubMenu = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (highlightedItem.current[0] === -1) return;\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[highlightedItem.current[0]];\n if (\n !item ||\n !isElementSubMenuTrigger(item) ||\n !isElementSubMenuOpen(item)\n )\n return;\n dispatchKeyboardEvent(item, KEYCODES.ESCAPE);\n e.stopPropagation();\n },\n []\n );\n\n const blurStaleMenuItem = useCallback((index: number) => {\n const items = containerRef.current?.querySelectorAll('[role=\"option\"]');\n const item = items?.[index];\n if (\n !item ||\n !isElementSubMenuTrigger(item) ||\n !isElementSubMenuOpen(item)\n )\n return;\n dispatchKeyboardEvent(item, KEYCODES.ESCAPE);\n item.dispatchEvent(new PointerEvent('pointerout', { bubbles: true }));\n }, []);\n\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className={styles.positioner}\n sideOffset={sideOffset}\n align={align}\n {...positionerProps}\n >\n <MenuPrimitive.Popup\n ref={ref}\n className={cx(\n styles.content,\n autocomplete && styles.comboboxContainer,\n className\n )}\n style={style}\n render={render}\n finalFocus={finalFocus}\n role={autocomplete ? 'dialog' : 'menu'}\n onFocus={\n autocomplete || parent?.autocomplete\n ? e => {\n focusInput();\n e.stopPropagation();\n highlightFirstItem();\n onFocus?.(e);\n }\n : undefined\n }\n >\n {autocomplete ? (\n <AutocompletePrimitive.Root\n inline\n open\n value={inputValue}\n onValueChange={(value: string) => onInputValueChange?.(value)}\n autoHighlight={!!inputValue?.length}\n mode='none'\n loopFocus={false}\n onItemHighlighted={(value, eventDetails) => {\n if (\n highlightedItem.current[1] === 'pointer' &&\n eventDetails.reason === 'keyboard'\n ) {\n // focus moved using keyboard after using pointer\n blurStaleMenuItem(highlightedItem.current[0]);\n }\n highlightedItem.current = [\n eventDetails.index,\n eventDetails.reason\n ];\n }}\n >\n <AutocompletePrimitive.Input\n placeholder={searchPlaceholder}\n className={styles.comboboxInput}\n ref={inputRef}\n onPointerEnter={e => {\n focusInput();\n }}\n onKeyDown={e => {\n if (e.key === 'ArrowLeft') return;\n if (e.key === 'Escape') return checkAndCloseSubMenu(e);\n if (e.key === 'ArrowRight' || e.key === 'Enter')\n checkAndOpenSubMenu();\n e.stopPropagation();\n }}\n tabIndex={-1}\n />\n <AutocompletePrimitive.List\n className={styles.comboboxContent}\n ref={containerRef}\n >\n {children}\n </AutocompletePrimitive.List>\n </AutocompletePrimitive.Root>\n ) : (\n children\n )}\n </MenuPrimitive.Popup>\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n }\n);\nMenuContent.displayName = 'Menu.Content';\n\nexport const MenuSubContent = forwardRef<HTMLDivElement, MenuContentProps>(\n ({ ...props }, ref) => <MenuContent ref={ref} sideOffset={2} {...props} />\n);\nMenuSubContent.displayName = 'Menu.SubContent';\n"],"names":[],"mappings":";;;;;;;;;AA0Ba;AAgBT;AASA;AACE;AACE;AACJ;;AAIA;AAEA;;;AAEE;;AAEA;;AACA;AACF;AAEA;;;;AAGE;AACA;;AACA;;AAGF;;;;AAII;AACA;;;;AAMA;;;AAMJ;;AAEE;AACA;;;;AAMA;AACA;;AAGF;;AAsBgB;;AAEA;AACA;;;AAeF;AAEE;;;;;AAMA;AACA;;;AASA;AACF;AAEE;;AACA;AAAwB;;AAEtB;;AAEJ;AAiBhB;AAEF;AAEO;AAGP;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@base-ui/react');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var cell = require('./cell.cjs');
|
|
8
|
+
var menuRoot = require('./menu-root.cjs');
|
|
9
|
+
var utils = require('./utils.cjs');
|
|
10
|
+
|
|
11
|
+
const MenuItem = React.forwardRef(({ children, value, leadingIcon, trailingIcon, render, ...props }, ref) => {
|
|
12
|
+
const { autocomplete, inputValue, shouldFilter } = menuRoot.useMenuContext();
|
|
13
|
+
const cell$1 = render ?? (jsxRuntime.jsx(cell.Cell, { leadingIcon: leadingIcon, trailingIcon: trailingIcon }));
|
|
14
|
+
// In auto mode, hide items that don't match the search value
|
|
15
|
+
if (shouldFilter && !utils.getMatch(value, children, inputValue)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
if (autocomplete) {
|
|
19
|
+
return (jsxRuntime.jsx(react.Autocomplete.Item, { ref: ref, value: value, render: jsxRuntime.jsx(react.Menu.Item, { render: cell$1 }), ...props, children: children }));
|
|
20
|
+
}
|
|
21
|
+
return (jsxRuntime.jsx(react.Menu.Item, { ref: ref, render: cell$1, ...props, onFocus: e => {
|
|
22
|
+
e.stopPropagation();
|
|
23
|
+
e.preventDefault();
|
|
24
|
+
e.preventBaseUIHandler();
|
|
25
|
+
}, children: children }));
|
|
26
|
+
});
|
|
27
|
+
MenuItem.displayName = 'Menu.Item';
|
|
28
|
+
|
|
29
|
+
exports.MenuItem = MenuItem;
|
|
30
|
+
//# sourceMappingURL=menu-item.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item.cjs","sources":["../../../components/menu/menu-item.tsx"],"sourcesContent":["'use client';\n\nimport {\n Autocomplete as AutocompletePrimitive,\n Menu as MenuPrimitive\n} from '@base-ui/react';\nimport { forwardRef } from 'react';\nimport { Cell, CellBaseProps } from './cell';\nimport { useMenuContext } from './menu-root';\nimport { getMatch } from './utils';\n\nexport interface MenuItemProps extends MenuPrimitive.Item.Props, CellBaseProps {\n value?: string;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, value, leadingIcon, trailingIcon, render, ...props }, ref) => {\n const { autocomplete, inputValue, shouldFilter } = useMenuContext();\n\n const cell = render ?? (\n <Cell leadingIcon={leadingIcon} trailingIcon={trailingIcon} />\n );\n\n // In auto mode, hide items that don't match the search value\n if (shouldFilter && !getMatch(value, children, inputValue)) {\n return null;\n }\n\n if (autocomplete) {\n return (\n <AutocompletePrimitive.Item\n ref={ref}\n value={value}\n render={<MenuPrimitive.Item render={cell} />}\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n );\n }\n\n return (\n <MenuPrimitive.Item\n ref={ref}\n render={cell}\n {...props}\n onFocus={e => {\n e.stopPropagation();\n e.preventDefault();\n e.preventBaseUIHandler();\n }}\n >\n {children}\n </MenuPrimitive.Item>\n );\n }\n);\nMenuItem.displayName = 'Menu.Item';\n"],"names":[],"mappings":";;;;;;;;;;AAea;;AAIT;;AAKA;AACE;;;AAIA;;;;;;AAqBE;AAKN;AAEF;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Menu as MenuPrimitive } from '@base-ui/react';
|
|
2
|
+
import { CellBaseProps } from './cell';
|
|
3
|
+
export interface MenuItemProps extends MenuPrimitive.Item.Props, CellBaseProps {
|
|
4
|
+
value?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const MenuItem: import("react").ForwardRefExoticComponent<Omit<MenuItemProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=menu-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item.d.ts","sourceRoot":"","sources":["../../../components/menu/menu-item.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,IAAI,IAAI,aAAa,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAQ,aAAa,EAAE,MAAM,QAAQ,CAAC;AAI7C,MAAM,WAAW,aAAc,SAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,uHAyCpB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Autocomplete, Menu } from '@base-ui/react';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { Cell } from './cell.js';
|
|
6
|
+
import { useMenuContext } from './menu-root.js';
|
|
7
|
+
import { getMatch } from './utils.js';
|
|
8
|
+
|
|
9
|
+
const MenuItem = forwardRef(({ children, value, leadingIcon, trailingIcon, render, ...props }, ref) => {
|
|
10
|
+
const { autocomplete, inputValue, shouldFilter } = useMenuContext();
|
|
11
|
+
const cell = render ?? (jsx(Cell, { leadingIcon: leadingIcon, trailingIcon: trailingIcon }));
|
|
12
|
+
// In auto mode, hide items that don't match the search value
|
|
13
|
+
if (shouldFilter && !getMatch(value, children, inputValue)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
if (autocomplete) {
|
|
17
|
+
return (jsx(Autocomplete.Item, { ref: ref, value: value, render: jsx(Menu.Item, { render: cell }), ...props, children: children }));
|
|
18
|
+
}
|
|
19
|
+
return (jsx(Menu.Item, { ref: ref, render: cell, ...props, onFocus: e => {
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
e.preventDefault();
|
|
22
|
+
e.preventBaseUIHandler();
|
|
23
|
+
}, children: children }));
|
|
24
|
+
});
|
|
25
|
+
MenuItem.displayName = 'Menu.Item';
|
|
26
|
+
|
|
27
|
+
export { MenuItem };
|
|
28
|
+
//# sourceMappingURL=menu-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item.js","sources":["../../../components/menu/menu-item.tsx"],"sourcesContent":["'use client';\n\nimport {\n Autocomplete as AutocompletePrimitive,\n Menu as MenuPrimitive\n} from '@base-ui/react';\nimport { forwardRef } from 'react';\nimport { Cell, CellBaseProps } from './cell';\nimport { useMenuContext } from './menu-root';\nimport { getMatch } from './utils';\n\nexport interface MenuItemProps extends MenuPrimitive.Item.Props, CellBaseProps {\n value?: string;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, value, leadingIcon, trailingIcon, render, ...props }, ref) => {\n const { autocomplete, inputValue, shouldFilter } = useMenuContext();\n\n const cell = render ?? (\n <Cell leadingIcon={leadingIcon} trailingIcon={trailingIcon} />\n );\n\n // In auto mode, hide items that don't match the search value\n if (shouldFilter && !getMatch(value, children, inputValue)) {\n return null;\n }\n\n if (autocomplete) {\n return (\n <AutocompletePrimitive.Item\n ref={ref}\n value={value}\n render={<MenuPrimitive.Item render={cell} />}\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n );\n }\n\n return (\n <MenuPrimitive.Item\n ref={ref}\n render={cell}\n {...props}\n onFocus={e => {\n e.stopPropagation();\n e.preventDefault();\n e.preventBaseUIHandler();\n }}\n >\n {children}\n </MenuPrimitive.Item>\n );\n }\n);\nMenuItem.displayName = 'Menu.Item';\n"],"names":[],"mappings":";;;;;;;;AAea;;AAIT;;AAKA;AACE;;;AAIA;;;;;;AAqBE;AAKN;AAEF;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var menu = require('@base-ui/react/menu');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var menu_module = require('./menu.module.css.cjs');
|
|
9
|
+
var menuRoot = require('./menu-root.cjs');
|
|
10
|
+
|
|
11
|
+
const MenuGroup = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
12
|
+
const { shouldFilter } = menuRoot.useMenuContext();
|
|
13
|
+
if (shouldFilter) {
|
|
14
|
+
return jsxRuntime.jsx(React.Fragment, { children: children });
|
|
15
|
+
}
|
|
16
|
+
return (jsxRuntime.jsx(menu.Menu.Group, { ref: ref, className: classVarianceAuthority.cx(className), ...props, children: children }));
|
|
17
|
+
});
|
|
18
|
+
MenuGroup.displayName = 'Menu.Group';
|
|
19
|
+
const MenuLabel = React.forwardRef(({ className, ...props }, ref) => {
|
|
20
|
+
const { shouldFilter } = menuRoot.useMenuContext();
|
|
21
|
+
if (shouldFilter) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return (jsxRuntime.jsx(menu.Menu.GroupLabel, { ref: ref, className: classVarianceAuthority.cx(menu_module.default.label, className), ...props }));
|
|
25
|
+
});
|
|
26
|
+
MenuLabel.displayName = 'Menu.Label';
|
|
27
|
+
const MenuSeparator = React.forwardRef(({ className, ...props }, ref) => {
|
|
28
|
+
const { shouldFilter } = menuRoot.useMenuContext();
|
|
29
|
+
if (shouldFilter) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return (jsxRuntime.jsx("div", { ref: ref, role: 'separator', className: classVarianceAuthority.cx(menu_module.default.separator, className), ...props }));
|
|
33
|
+
});
|
|
34
|
+
MenuSeparator.displayName = 'Menu.Separator';
|
|
35
|
+
const MenuEmptyState = React.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsx("div", { ref: ref, className: classVarianceAuthority.cx(menu_module.default.empty, className), ...props, children: children })));
|
|
36
|
+
MenuEmptyState.displayName = 'Menu.EmptyState';
|
|
37
|
+
|
|
38
|
+
exports.MenuEmptyState = MenuEmptyState;
|
|
39
|
+
exports.MenuGroup = MenuGroup;
|
|
40
|
+
exports.MenuLabel = MenuLabel;
|
|
41
|
+
exports.MenuSeparator = MenuSeparator;
|
|
42
|
+
//# sourceMappingURL=menu-misc.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-misc.cjs","sources":["../../../components/menu/menu-misc.tsx"],"sourcesContent":["'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { cx } from 'class-variance-authority';\nimport { Fragment, forwardRef, HTMLAttributes, ReactNode } from 'react';\nimport styles from './menu.module.css';\nimport { useMenuContext } from './menu-root';\n\nexport const MenuGroup = forwardRef<HTMLDivElement, MenuPrimitive.Group.Props>(\n ({ className, children, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return <Fragment>{children}</Fragment>;\n }\n\n return (\n <MenuPrimitive.Group ref={ref} className={cx(className)} {...props}>\n {children}\n </MenuPrimitive.Group>\n );\n }\n);\nMenuGroup.displayName = 'Menu.Group';\n\nexport const MenuLabel = forwardRef<\n HTMLDivElement,\n MenuPrimitive.GroupLabel.Props\n>(({ className, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return null;\n }\n\n return (\n <MenuPrimitive.GroupLabel\n ref={ref}\n className={cx(styles.label, className)}\n {...props}\n />\n );\n});\nMenuLabel.displayName = 'Menu.Label';\n\nexport const MenuSeparator = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n role='separator'\n className={cx(styles.separator, className)}\n {...props}\n />\n );\n});\nMenuSeparator.displayName = 'Menu.Separator';\n\nexport const MenuEmptyState = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement> & {\n children: ReactNode;\n }\n>(({ className, children, ...props }, ref) => (\n <div ref={ref} className={cx(styles.empty, className)} {...props}>\n {children}\n </div>\n));\nMenuEmptyState.displayName = 'Menu.EmptyState';\n"],"names":[],"mappings":";;;;;;;;;;AAQa;AAET;;AAGE;;;AAQJ;AAEF;AAEa;AAIX;;AAGE;;;AAUJ;AACA;AAEa;AAIX;;AAGE;;;AAWJ;AACA;AAEa;AAUb;;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export declare const MenuGroup: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuGroupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
3
|
+
export declare const MenuLabel: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuGroupLabelProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export declare const MenuSeparator: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export declare const MenuEmptyState: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
//# sourceMappingURL=menu-misc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-misc.d.ts","sourceRoot":"","sources":["../../../components/menu/menu-misc.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAwB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxE,eAAO,MAAM,SAAS,sJAcrB,CAAC;AAGF,eAAO,MAAM,SAAS,2JAiBpB,CAAC;AAGH,eAAO,MAAM,aAAa,2HAkBxB,CAAC;AAGH,eAAO,MAAM,cAAc;cAGb,SAAS;kDAMrB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Menu } from '@base-ui/react/menu';
|
|
4
|
+
import { cx } from 'class-variance-authority';
|
|
5
|
+
import { forwardRef, Fragment } from 'react';
|
|
6
|
+
import styles from './menu.module.css.js';
|
|
7
|
+
import { useMenuContext } from './menu-root.js';
|
|
8
|
+
|
|
9
|
+
const MenuGroup = forwardRef(({ className, children, ...props }, ref) => {
|
|
10
|
+
const { shouldFilter } = useMenuContext();
|
|
11
|
+
if (shouldFilter) {
|
|
12
|
+
return jsx(Fragment, { children: children });
|
|
13
|
+
}
|
|
14
|
+
return (jsx(Menu.Group, { ref: ref, className: cx(className), ...props, children: children }));
|
|
15
|
+
});
|
|
16
|
+
MenuGroup.displayName = 'Menu.Group';
|
|
17
|
+
const MenuLabel = forwardRef(({ className, ...props }, ref) => {
|
|
18
|
+
const { shouldFilter } = useMenuContext();
|
|
19
|
+
if (shouldFilter) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return (jsx(Menu.GroupLabel, { ref: ref, className: cx(styles.label, className), ...props }));
|
|
23
|
+
});
|
|
24
|
+
MenuLabel.displayName = 'Menu.Label';
|
|
25
|
+
const MenuSeparator = forwardRef(({ className, ...props }, ref) => {
|
|
26
|
+
const { shouldFilter } = useMenuContext();
|
|
27
|
+
if (shouldFilter) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return (jsx("div", { ref: ref, role: 'separator', className: cx(styles.separator, className), ...props }));
|
|
31
|
+
});
|
|
32
|
+
MenuSeparator.displayName = 'Menu.Separator';
|
|
33
|
+
const MenuEmptyState = forwardRef(({ className, children, ...props }, ref) => (jsx("div", { ref: ref, className: cx(styles.empty, className), ...props, children: children })));
|
|
34
|
+
MenuEmptyState.displayName = 'Menu.EmptyState';
|
|
35
|
+
|
|
36
|
+
export { MenuEmptyState, MenuGroup, MenuLabel, MenuSeparator };
|
|
37
|
+
//# sourceMappingURL=menu-misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-misc.js","sources":["../../../components/menu/menu-misc.tsx"],"sourcesContent":["'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { cx } from 'class-variance-authority';\nimport { Fragment, forwardRef, HTMLAttributes, ReactNode } from 'react';\nimport styles from './menu.module.css';\nimport { useMenuContext } from './menu-root';\n\nexport const MenuGroup = forwardRef<HTMLDivElement, MenuPrimitive.Group.Props>(\n ({ className, children, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return <Fragment>{children}</Fragment>;\n }\n\n return (\n <MenuPrimitive.Group ref={ref} className={cx(className)} {...props}>\n {children}\n </MenuPrimitive.Group>\n );\n }\n);\nMenuGroup.displayName = 'Menu.Group';\n\nexport const MenuLabel = forwardRef<\n HTMLDivElement,\n MenuPrimitive.GroupLabel.Props\n>(({ className, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return null;\n }\n\n return (\n <MenuPrimitive.GroupLabel\n ref={ref}\n className={cx(styles.label, className)}\n {...props}\n />\n );\n});\nMenuLabel.displayName = 'Menu.Label';\n\nexport const MenuSeparator = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { shouldFilter } = useMenuContext();\n\n if (shouldFilter) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n role='separator'\n className={cx(styles.separator, className)}\n {...props}\n />\n );\n});\nMenuSeparator.displayName = 'Menu.Separator';\n\nexport const MenuEmptyState = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement> & {\n children: ReactNode;\n }\n>(({ className, children, ...props }, ref) => (\n <div ref={ref} className={cx(styles.empty, className)} {...props}>\n {children}\n </div>\n));\nMenuEmptyState.displayName = 'Menu.EmptyState';\n"],"names":[],"mappings":";;;;;;;;AAQa;AAET;;AAGE;;;AAQJ;AAEF;AAEa;AAIX;;AAGE;;;AAUJ;AACA;AAEa;AAIX;;AAGE;;;AAWJ;AACA;AAEa;AAUb;;"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@base-ui/react');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
Root context to manage the Menu control
|
|
10
|
+
@remarks Only for internal usage.
|
|
11
|
+
*/
|
|
12
|
+
const MenuContext = React.createContext(undefined);
|
|
13
|
+
const useMenuContext = () => {
|
|
14
|
+
const context = React.useContext(MenuContext);
|
|
15
|
+
if (!context)
|
|
16
|
+
return {};
|
|
17
|
+
const shouldFilter = !!(context?.autocomplete &&
|
|
18
|
+
context?.autocompleteMode === 'auto' &&
|
|
19
|
+
context?.inputValue?.length);
|
|
20
|
+
const shouldFilterParent = !!(context?.parent?.autocomplete &&
|
|
21
|
+
context?.parent?.autocompleteMode === 'auto' &&
|
|
22
|
+
context?.parent?.inputValue?.length);
|
|
23
|
+
return {
|
|
24
|
+
...context,
|
|
25
|
+
shouldFilter,
|
|
26
|
+
parent: context?.parent && {
|
|
27
|
+
...context.parent,
|
|
28
|
+
shouldFilter: shouldFilterParent
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const MenuRoot = ({ autocomplete, autocompleteMode = 'auto', inputValue: providedInputValue, onInputValueChange, defaultInputValue = '', open: providedOpen, onOpenChange, defaultOpen = false, ...props }) => {
|
|
33
|
+
const [internalInputValue, setInternalInputValue] = React.useState(defaultInputValue);
|
|
34
|
+
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
35
|
+
const open = providedOpen ?? internalOpen;
|
|
36
|
+
const inputRef = React.useRef(null);
|
|
37
|
+
const contentRef = React.useRef(null);
|
|
38
|
+
const isInitialRender = React.useRef(true);
|
|
39
|
+
const inputValue = providedInputValue ?? internalInputValue;
|
|
40
|
+
const setValue = React.useCallback((value) => {
|
|
41
|
+
setInternalInputValue(value);
|
|
42
|
+
onInputValueChange?.(value);
|
|
43
|
+
}, [onInputValueChange]);
|
|
44
|
+
const handleOpenChange = React.useCallback((value, eventDetails) => {
|
|
45
|
+
if (!value && autocomplete) {
|
|
46
|
+
setValue('');
|
|
47
|
+
isInitialRender.current = true;
|
|
48
|
+
}
|
|
49
|
+
setInternalOpen(value);
|
|
50
|
+
onOpenChange?.(value, eventDetails);
|
|
51
|
+
}, [onOpenChange, setValue, autocomplete]);
|
|
52
|
+
return (jsxRuntime.jsx(MenuContext.Provider, { value: {
|
|
53
|
+
autocomplete,
|
|
54
|
+
inputRef,
|
|
55
|
+
autocompleteMode,
|
|
56
|
+
inputValue,
|
|
57
|
+
onInputValueChange: setValue,
|
|
58
|
+
open: open,
|
|
59
|
+
isInitialRender,
|
|
60
|
+
contentRef
|
|
61
|
+
}, children: jsxRuntime.jsx(react.Menu.Root, { open: open, onOpenChange: handleOpenChange, loopFocus: false, modal: true, ...props }) }));
|
|
62
|
+
};
|
|
63
|
+
MenuRoot.displayName = 'Menu';
|
|
64
|
+
const MenuSubMenu = ({ autocomplete, autocompleteMode = 'auto', inputValue: providedInputValue, onInputValueChange, defaultInputValue = '', open: providedOpen, onOpenChange, defaultOpen = false, ...props }) => {
|
|
65
|
+
const [internalInputValue, setInternalInputValue] = React.useState(defaultInputValue);
|
|
66
|
+
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
67
|
+
const open = providedOpen ?? internalOpen;
|
|
68
|
+
const parentContext = useMenuContext();
|
|
69
|
+
const inputRef = React.useRef(null);
|
|
70
|
+
const isInitialRender = React.useRef(true);
|
|
71
|
+
const contentRef = React.useRef(null);
|
|
72
|
+
const inputValue = providedInputValue ?? internalInputValue;
|
|
73
|
+
const setValue = React.useCallback((value) => {
|
|
74
|
+
setInternalInputValue(value);
|
|
75
|
+
onInputValueChange?.(value);
|
|
76
|
+
}, [onInputValueChange]);
|
|
77
|
+
const handleOpenChange = React.useCallback((value, eventDetails) => {
|
|
78
|
+
if (!value && autocomplete) {
|
|
79
|
+
setValue('');
|
|
80
|
+
isInitialRender.current = true;
|
|
81
|
+
}
|
|
82
|
+
setInternalOpen(value);
|
|
83
|
+
onOpenChange?.(value, eventDetails);
|
|
84
|
+
}, [onOpenChange, setValue, autocomplete]);
|
|
85
|
+
return (jsxRuntime.jsx(MenuContext.Provider, { value: {
|
|
86
|
+
autocomplete,
|
|
87
|
+
inputRef,
|
|
88
|
+
parent: parentContext,
|
|
89
|
+
autocompleteMode,
|
|
90
|
+
inputValue,
|
|
91
|
+
onInputValueChange: setValue,
|
|
92
|
+
open: open,
|
|
93
|
+
isInitialRender,
|
|
94
|
+
contentRef
|
|
95
|
+
}, children: jsxRuntime.jsx(react.Menu.SubmenuRoot, { loopFocus: false, open: open, onOpenChange: handleOpenChange, ...props }) }));
|
|
96
|
+
};
|
|
97
|
+
MenuSubMenu.displayName = 'Menu.SubMenu';
|
|
98
|
+
|
|
99
|
+
exports.MenuContext = MenuContext;
|
|
100
|
+
exports.MenuRoot = MenuRoot;
|
|
101
|
+
exports.MenuSubMenu = MenuSubMenu;
|
|
102
|
+
exports.useMenuContext = useMenuContext;
|
|
103
|
+
//# sourceMappingURL=menu-root.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-root.cjs","sources":["../../../components/menu/menu-root.tsx"],"sourcesContent":["'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react';\nimport {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState\n} from 'react';\n\ninterface CommonProps {\n autocomplete?: boolean;\n autocompleteMode?: 'auto' | 'manual';\n inputValue?: string;\n inputRef?: React.RefObject<HTMLInputElement | null>;\n contentRef?: React.RefObject<HTMLDivElement | null>;\n isInitialRender?: React.RefObject<boolean>;\n open?: boolean;\n}\n\ninterface MenuContextValue extends CommonProps {\n parent?: CommonProps;\n onInputValueChange?: (value: string) => void;\n}\n\ninterface UseMenuContextReturn extends MenuContextValue {\n shouldFilter?: boolean;\n parent?: CommonProps & {\n shouldFilter?: boolean;\n };\n}\n\n/**\n Root context to manage the Menu control\n @remarks Only for internal usage.\n */\nexport const MenuContext = createContext<MenuContextValue | undefined>(\n undefined\n);\n\nexport const useMenuContext = (): UseMenuContextReturn => {\n const context = useContext(MenuContext);\n if (!context) return {};\n\n const shouldFilter = !!(\n context?.autocomplete &&\n context?.autocompleteMode === 'auto' &&\n context?.inputValue?.length\n );\n\n const shouldFilterParent = !!(\n context?.parent?.autocomplete &&\n context?.parent?.autocompleteMode === 'auto' &&\n context?.parent?.inputValue?.length\n );\n\n return {\n ...context,\n shouldFilter,\n parent: context?.parent && {\n ...context.parent,\n shouldFilter: shouldFilterParent\n }\n };\n};\n\nexport interface MenuRootBaseProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: MenuPrimitive.Root.Props['onOpenChange'];\n modal?: boolean;\n loopFocus?: boolean;\n}\n\nexport interface NormalMenuRootProps extends MenuPrimitive.Root.Props {\n autocomplete?: false;\n autocompleteMode?: never;\n inputValue?: never;\n onInputValueChange?: never;\n defaultInputValue?: never;\n}\n\nexport interface AutocompleteMenuRootProps\n extends MenuPrimitive.Root.Props,\n CommonProps {\n autocomplete: true;\n onInputValueChange?: (value: string) => void;\n defaultInputValue?: string;\n}\n\nexport type MenuRootProps = NormalMenuRootProps | AutocompleteMenuRootProps;\n\nexport const MenuRoot = ({\n autocomplete,\n autocompleteMode = 'auto',\n inputValue: providedInputValue,\n onInputValueChange,\n defaultInputValue = '',\n open: providedOpen,\n onOpenChange,\n defaultOpen = false,\n ...props\n}: MenuRootProps) => {\n const [internalInputValue, setInternalInputValue] =\n useState(defaultInputValue);\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const open = providedOpen ?? internalOpen;\n const inputRef = useRef<HTMLInputElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const isInitialRender = useRef(true);\n\n const inputValue = providedInputValue ?? internalInputValue;\n\n const setValue = useCallback(\n (value: string) => {\n setInternalInputValue(value);\n onInputValueChange?.(value);\n },\n [onInputValueChange]\n );\n\n const handleOpenChange: MenuPrimitive.Root.Props['onOpenChange'] =\n useCallback(\n (value: boolean, eventDetails: MenuPrimitive.Root.ChangeEventDetails) => {\n if (!value && autocomplete) {\n setValue('');\n isInitialRender.current = true;\n }\n setInternalOpen(value);\n onOpenChange?.(value, eventDetails);\n },\n [onOpenChange, setValue, autocomplete]\n );\n\n return (\n <MenuContext.Provider\n value={{\n autocomplete,\n inputRef,\n autocompleteMode,\n inputValue,\n onInputValueChange: setValue,\n open: open,\n isInitialRender,\n contentRef\n }}\n >\n <MenuPrimitive.Root\n open={open}\n onOpenChange={handleOpenChange}\n loopFocus={false}\n modal\n {...props}\n />\n </MenuContext.Provider>\n );\n};\nMenuRoot.displayName = 'Menu';\n\nexport interface NormalMenuSubMenuProps\n extends MenuPrimitive.SubmenuRoot.Props {\n autocomplete?: false;\n autocompleteMode?: never;\n inputValue?: never;\n onInputValueChange?: never;\n defaultInputValue?: never;\n}\n\nexport interface AutocompleteMenuSubMenuProps\n extends MenuPrimitive.SubmenuRoot.Props {\n autocomplete: true;\n autocompleteMode?: 'auto' | 'manual';\n inputValue?: string;\n onInputValueChange?: (value: string) => void;\n defaultInputValue?: string;\n}\n\nexport type MenuSubMenuProps =\n | NormalMenuSubMenuProps\n | AutocompleteMenuSubMenuProps;\n\nexport const MenuSubMenu = ({\n autocomplete,\n autocompleteMode = 'auto',\n inputValue: providedInputValue,\n onInputValueChange,\n defaultInputValue = '',\n open: providedOpen,\n onOpenChange,\n defaultOpen = false,\n ...props\n}: MenuSubMenuProps) => {\n const [internalInputValue, setInternalInputValue] =\n useState(defaultInputValue);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const open = providedOpen ?? internalOpen;\n const parentContext = useMenuContext();\n const inputRef = useRef<HTMLInputElement>(null);\n const isInitialRender = useRef(true);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputValue = providedInputValue ?? internalInputValue;\n\n const setValue = useCallback(\n (value: string) => {\n setInternalInputValue(value);\n onInputValueChange?.(value);\n },\n [onInputValueChange]\n );\n\n const handleOpenChange: MenuPrimitive.Root.Props['onOpenChange'] =\n useCallback(\n (value: boolean, eventDetails: MenuPrimitive.Root.ChangeEventDetails) => {\n if (!value && autocomplete) {\n setValue('');\n isInitialRender.current = true;\n }\n setInternalOpen(value);\n onOpenChange?.(value, eventDetails);\n },\n [onOpenChange, setValue, autocomplete]\n );\n\n return (\n <MenuContext.Provider\n value={{\n autocomplete,\n inputRef,\n parent: parentContext,\n autocompleteMode,\n inputValue,\n onInputValueChange: setValue,\n open: open,\n isInitialRender,\n contentRef\n }}\n >\n <MenuPrimitive.SubmenuRoot\n loopFocus={false}\n open={open}\n onOpenChange={handleOpenChange}\n {...props}\n />\n </MenuContext.Provider>\n );\n};\nMenuSubMenu.displayName = 'Menu.SubMenu';\n"],"names":[],"mappings":";;;;;;;AAiCA;;;AAGG;;AAKI;AACL;AACA;AAAc;AAEd;;AAGE;;AAKA;AACA;;AAIA;;AAEA;;AAEE;AACD;;AAEL;AA4Ba;;;AAeX;AACA;AACA;AACA;AAEA;AAEA;;AAGI;AACF;;AAOI;;AAEE;;;AAGF;;AAKN;;;;;AAOM;AACA;;;;AAcR;AACA;AAwBa;;;AAcX;AACA;AACA;AACA;AACA;AACA;AAEA;;AAGI;AACF;;AAOI;;AAEE;;;AAGF;;AAKN;;;AAKM;;;AAGA;AACA;;;;AAaR;AACA;;;;;"}
|