@choice-ui/react 1.4.3 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/alert-dialog/dist/index.d.ts +20 -41
- package/dist/components/alert-dialog/dist/index.js +497 -0
- package/dist/components/alert-dialog/src/alert-dialog.js +1 -1
- package/dist/components/alert-dialog/src/hooks/use-alert-dialog.d.ts +1 -1
- package/dist/components/alert-dialog/src/index.d.ts +4 -5
- package/dist/components/alert-dialog/src/types.d.ts +11 -11
- package/dist/components/avatar/dist/index.js +4 -4
- package/dist/components/avatar/src/avatar.js +4 -4
- package/dist/components/badge/src/badge.js +2 -2
- package/dist/components/badge/src/index.d.ts +2 -1
- package/dist/components/button/dist/index.js +4 -4
- package/dist/components/button/src/button.js +4 -4
- package/dist/components/calendar/dist/index.d.ts +296 -296
- package/dist/components/calendar/dist/index.js +57 -56
- package/dist/components/calendar/src/date-range-input/date-range-input.d.ts +5 -5
- package/dist/components/calendar/src/time-calendar/time-calendar.d.ts +3 -3
- package/dist/components/calendar/src/time-calendar/time-calendar.js +2 -2
- package/dist/components/calendar/src/time-input/time-input.d.ts +9 -9
- package/dist/components/calendar/src/time-input/time-input.js +4 -4
- package/dist/components/calendar/src/types.d.ts +165 -165
- package/dist/components/calendar/src/utils/constants.js +32 -31
- package/dist/components/calendar/src/utils/date-comparisons.d.ts +34 -34
- package/dist/components/calendar/src/utils/locale.d.ts +12 -12
- package/dist/components/calendar/src/utils/month.d.ts +3 -3
- package/dist/components/calendar/src/utils/month.js +1 -1
- package/dist/components/calendar/src/utils/parsers/month-names.js +3 -3
- package/dist/components/calendar/src/utils/parsers/numeric-utils.d.ts +20 -20
- package/dist/components/calendar/src/utils/parsers/numeric-utils.js +8 -8
- package/dist/components/calendar/src/utils/parsers/parsers.d.ts +17 -17
- package/dist/components/calendar/src/utils/parsers/parsers.js +2 -2
- package/dist/components/calendar/src/utils/parsers/prediction.d.ts +7 -7
- package/dist/components/calendar/src/utils/parsers/relative-dates.js +6 -6
- package/dist/components/calendar/src/utils/quarter.d.ts +13 -13
- package/dist/components/calendar/src/utils/quarter.js +6 -6
- package/dist/components/calendar/src/utils/time.d.ts +8 -8
- package/dist/components/calendar/src/utils/year.d.ts +3 -3
- package/dist/components/calendar/src/utils/year.js +3 -3
- package/dist/components/checkbox/dist/index.d.ts +1 -12
- package/dist/components/checkbox/dist/index.js +9 -9
- package/dist/components/checkbox/src/checkbox-label.js +2 -2
- package/dist/components/checkbox/src/checkbox.js +6 -5
- package/dist/components/checkbox/src/context.js +1 -1
- package/dist/components/checkbox/src/index.d.ts +0 -3
- package/dist/components/chip/dist/index.js +6 -6
- package/dist/components/chip/src/chip.js +6 -6
- package/dist/components/chip/src/index.d.ts +2 -1
- package/dist/components/chips-input/dist/index.js +270 -0
- package/dist/components/chips-input/src/index.d.ts +2 -1
- package/dist/components/code-block/dist/index.d.ts +14 -32
- package/dist/components/code-block/dist/index.js +211 -147
- package/dist/components/code-block/src/code-block.d.ts +8 -1
- package/dist/components/code-block/src/code-block.js +14 -3
- package/dist/components/code-block/src/components/code-block-code.js +31 -5
- package/dist/components/code-block/src/components/code-block-header.js +45 -10
- package/dist/components/code-block/src/index.d.ts +3 -9
- package/dist/components/combobox/dist/index.d.ts +21 -2
- package/dist/components/combobox/dist/index.js +16 -13
- package/dist/components/combobox/src/combobox-trigger.d.ts +1 -1
- package/dist/components/combobox/src/combobox-trigger.js +7 -4
- package/dist/components/combobox/src/combobox.d.ts +20 -1
- package/dist/components/combobox/src/combobox.js +10 -10
- package/dist/components/command/dist/index.d.ts +65 -4
- package/dist/components/command/src/command.js +6 -5
- package/dist/components/command/src/components/command-divider.d.ts +4 -1
- package/dist/components/command/src/components/command-group.d.ts +16 -1
- package/dist/components/command/src/components/command-group.js +56 -54
- package/dist/components/command/src/components/command-input.js +3 -3
- package/dist/components/command/src/components/command-item.d.ts +1 -1
- package/dist/components/command/src/components/command-item.js +117 -115
- package/dist/components/command/src/components/command-loading.d.ts +8 -0
- package/dist/components/command/src/components/command-loading.js +1 -1
- package/dist/components/command/src/context/create-command-context.js +1 -1
- package/dist/components/command/src/hooks/use-schedule-layout-effect.d.ts +1 -1
- package/dist/components/command/src/hooks/use-value.js +2 -2
- package/dist/components/command/src/index.d.ts +16 -8
- package/dist/components/command/src/tv.d.ts +30 -0
- package/dist/components/command/src/tv.js +10 -0
- package/dist/components/command/src/types.d.ts +8 -0
- package/dist/components/command/src/utils/constants.d.ts +1 -1
- package/dist/components/command/src/utils/constants.js +1 -1
- package/dist/components/command/src/utils/helpers.d.ts +0 -1
- package/dist/components/command/src/utils/helpers.js +1 -3
- package/dist/components/command/src/utils/index.d.ts +1 -0
- package/dist/components/comments/src/comment-input/components/comment-input-mention-popover.js +4 -2
- package/dist/components/comments/src/comments.js +1 -1
- package/dist/components/context-input/dist/index.d.ts +47 -251
- package/dist/components/context-input/src/components/mention-menu.d.ts +5 -4
- package/dist/components/context-input/src/components/mention-menu.js +19 -4
- package/dist/components/context-input/src/components/mention.d.ts +2 -2
- package/dist/components/context-input/src/components/slate-editor.js +4 -2
- package/dist/components/context-input/src/context-input.js +31 -16
- package/dist/components/context-input/src/extensions/with-mentions.d.ts +1 -1
- package/dist/components/context-input/src/extensions/with-mentions.js +10 -9
- package/dist/components/context-input/src/hooks/use-context-input.js +87 -46
- package/dist/components/context-input/src/hooks/use-mentions.d.ts +11 -10
- package/dist/components/context-input/src/hooks/use-mentions.js +147 -128
- package/dist/components/context-input/src/index.d.ts +4 -5
- package/dist/components/context-input/src/types.d.ts +12 -12
- package/dist/components/context-input/src/utils/mention-spacing.d.ts +16 -16
- package/dist/components/context-input/src/utils/slate-converters.d.ts +6 -6
- package/dist/components/context-input/src/utils/slate-converters.js +2 -2
- package/dist/components/context-input/src/utils/text-extraction.js +7 -1
- package/dist/components/context-menu/src/context-menu.js +10 -4
- package/dist/components/dialog/dist/index.js +1 -2
- package/dist/components/dialog/src/dialog.js +0 -1
- package/dist/components/dialog/src/hooks/use-floating-dialog.js +1 -1
- package/dist/components/dialog/src/index.d.ts +3 -2
- package/dist/components/dropdown/dist/index.d.ts +1 -2
- package/dist/components/dropdown/dist/index.js +23 -8
- package/dist/components/dropdown/src/dropdown.d.ts +1 -2
- package/dist/components/dropdown/src/dropdown.js +23 -8
- package/dist/components/emoji-picker/dist/index.d.ts +33 -1
- package/dist/components/emoji-picker/dist/index.js +3 -1
- package/dist/components/emoji-picker/src/emoji-picker.d.ts +1 -1
- package/dist/components/emoji-picker/src/emoji-picker.js +3 -1
- package/dist/components/emoji-picker/src/index.d.ts +3 -1
- package/dist/components/form/dist/index.d.ts +93 -98
- package/dist/components/form/src/adapters/base-adapter.d.ts +3 -3
- package/dist/components/form/src/adapters/checkbox-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/chips-input-adapter.d.ts +9 -0
- package/dist/components/form/src/adapters/chips-input-adapter.js +38 -0
- package/dist/components/form/src/adapters/index.d.ts +8 -7
- package/dist/components/form/src/adapters/input-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/multi-select-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/numeric-input-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/raido-group-adapter.d.ts +1 -7
- package/dist/components/form/src/adapters/range-adapter.d.ts +1 -7
- package/dist/components/form/src/adapters/segmented-adapter.d.ts +1 -7
- package/dist/components/form/src/adapters/select-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/switch-adapter.d.ts +1 -1
- package/dist/components/form/src/adapters/textarea-adapter.d.ts +1 -1
- package/dist/components/form/src/index.d.ts +18 -16
- package/dist/components/form/src/index.js +16 -13
- package/dist/components/form/src/types.d.ts +58 -51
- package/dist/components/hint/dist/index.d.ts +10 -54
- package/dist/components/hint/src/components/info-content.d.ts +3 -5
- package/dist/components/hint/src/components/info-content.js +14 -6
- package/dist/components/hint/src/components/info-trigger.d.ts +2 -3
- package/dist/components/hint/src/components/info-trigger.js +4 -2
- package/dist/components/hint/src/context/hint-context.d.ts +2 -0
- package/dist/components/hint/src/context/hint-context.js +1 -1
- package/dist/components/hint/src/hint.d.ts +7 -7
- package/dist/components/hint/src/hint.js +24 -29
- package/dist/components/hint/src/hooks/use-hint.d.ts +4 -2
- package/dist/components/hint/src/hooks/use-hint.js +12 -4
- package/dist/components/hint/src/index.d.ts +3 -3
- package/dist/components/hint/src/tv.d.ts +33 -0
- package/dist/components/hint/src/tv.js +11 -0
- package/dist/components/icon-button/dist/index.js +2 -2
- package/dist/components/icon-button/src/icon-button.js +2 -2
- package/dist/components/index.d.ts +3 -0
- package/dist/components/input/dist/index.js +4 -4
- package/dist/components/input/src/input.js +3 -3
- package/dist/components/input/src/tv.js +1 -1
- package/dist/components/kbd/dist/index.js +4 -4
- package/dist/components/kbd/src/kbd.js +4 -4
- package/dist/components/label/dist/index.js +3 -3
- package/dist/components/label/src/tv.js +3 -3
- package/dist/components/link-button/dist/index.js +3 -3
- package/dist/components/link-button/src/link-button.js +3 -3
- package/dist/components/list/src/components/list-content.js +2 -2
- package/dist/components/list/src/components/list-divider.js +3 -3
- package/dist/components/list/src/components/list-item.js +5 -5
- package/dist/components/list/src/components/list-label.js +2 -2
- package/dist/components/list/src/components/list-sub-trigger.js +4 -4
- package/dist/components/list/src/list.js +2 -2
- package/dist/components/md-input/dist/index.d.ts +8 -104
- package/dist/components/md-input/src/components/extensions/md-input-mention.d.ts +6 -4
- package/dist/components/md-input/src/components/extensions/md-input-mention.js +23 -6
- package/dist/components/md-input/src/components/md-input-container.js +1 -0
- package/dist/components/md-input/src/components/md-input-editor.js +4 -1
- package/dist/components/md-input/src/components/md-input-footer.js +5 -1
- package/dist/components/md-input/src/components/toolbar/default-actions.d.ts +2 -2
- package/dist/components/md-input/src/components/toolbar/toolbar-button.d.ts +1 -0
- package/dist/components/md-input/src/components/toolbar/toolbar-button.js +1 -7
- package/dist/components/md-input/src/components/toolbar/toolbar.d.ts +2 -2
- package/dist/components/md-input/src/hooks/use-markdown-mentions.d.ts +5 -4
- package/dist/components/md-input/src/hooks/use-markdown-mentions.js +31 -4
- package/dist/components/md-input/src/index.d.ts +1 -4
- package/dist/components/md-input/src/md-input.js +18 -14
- package/dist/components/md-input/src/tv.d.ts +3 -0
- package/dist/components/md-input/src/tv.js +2 -1
- package/dist/components/md-input/src/types.d.ts +18 -16
- package/dist/components/md-render/dist/index.d.ts +1 -4
- package/dist/components/md-render/dist/index.js +8 -9
- package/dist/components/md-render/src/components/markdown-components.js +3 -3
- package/dist/components/md-render/src/index.d.ts +0 -1
- package/dist/components/md-render/src/md-render.js +5 -4
- package/dist/components/md-render/src/tv.js +1 -1
- package/dist/components/menubar/dist/index.d.ts +50 -0
- package/dist/components/menubar/src/components/index.d.ts +3 -0
- package/dist/components/menubar/src/components/menubar-divider.d.ts +8 -0
- package/dist/components/menubar/src/components/menubar-divider.js +24 -0
- package/dist/components/menubar/src/components/menubar-item.d.ts +8 -0
- package/dist/components/menubar/src/components/menubar-item.js +195 -0
- package/dist/components/menubar/src/components/menubar-trigger.d.ts +8 -0
- package/dist/components/menubar/src/components/menubar-trigger.js +45 -0
- package/dist/components/menubar/src/context/index.d.ts +1 -0
- package/dist/components/menubar/src/context/menubar-context.d.ts +34 -0
- package/dist/components/menubar/src/context/menubar-context.js +13 -0
- package/dist/components/menubar/src/index.d.ts +3 -0
- package/dist/components/menubar/src/menubar.d.ts +22 -0
- package/dist/components/menubar/src/menubar.js +177 -0
- package/dist/components/menubar/src/tv.d.ts +108 -0
- package/dist/components/menubar/src/tv.js +72 -0
- package/dist/components/menubar/tsup.config.d.ts +2 -0
- package/dist/components/menus/dist/index.d.ts +144 -143
- package/dist/components/menus/dist/index.js +50 -49
- package/dist/components/menus/src/components/menu-button.js +2 -2
- package/dist/components/menus/src/components/menu-checkbox.d.ts +1 -2
- package/dist/components/menus/src/components/menu-checkbox.js +2 -2
- package/dist/components/menus/src/components/menu-divider.js +3 -3
- package/dist/components/menus/src/components/menu-item.js +5 -5
- package/dist/components/menus/src/components/menu-label.js +2 -2
- package/dist/components/menus/src/components/menu-scroll-arrow.d.ts +2 -2
- package/dist/components/menus/src/components/menu-scroll-arrow.js +13 -3
- package/dist/components/menus/src/components/menu-search.js +3 -3
- package/dist/components/menus/src/components/menu-trigger.js +4 -4
- package/dist/components/menus/src/context/menu-context-item.d.ts +6 -6
- package/dist/components/menus/src/context/menu-context-item.js +2 -2
- package/dist/components/menus/src/context/menu-context-sub-trigger.js +4 -19
- package/dist/components/menus/src/context/menu-context.d.ts +2 -2
- package/dist/components/menus/src/hooks/use-menu-base-refs.d.ts +12 -12
- package/dist/components/menus/src/hooks/use-menu-children.d.ts +16 -16
- package/dist/components/menus/src/hooks/use-menu-floating.d.ts +22 -22
- package/dist/components/menus/src/hooks/use-menu-refs.d.ts +8 -8
- package/dist/components/menus/src/hooks/use-menu-refs.js +2 -2
- package/dist/components/menus/src/hooks/use-menu-scroll-height.d.ts +11 -11
- package/dist/components/menus/src/hooks/use-menu-scroll.d.ts +18 -18
- package/dist/components/menus/src/hooks/use-menu-selection.d.ts +21 -21
- package/dist/components/menus/src/hooks/use-menu-state.d.ts +11 -11
- package/dist/components/menus/src/hooks/use-menu-state.js +4 -4
- package/dist/components/menus/src/hooks/use-menu-touch.d.ts +11 -11
- package/dist/components/menus/src/hooks/use-menu-tree.d.ts +15 -15
- package/dist/components/menus/src/index.d.ts +5 -0
- package/dist/components/menus/src/menus.js +2 -2
- package/dist/components/menus/src/tv.d.ts +15 -0
- package/dist/components/menus/src/tv.js +8 -2
- package/dist/components/modal/dist/index.d.ts +3 -1
- package/dist/components/modal/dist/index.js +18 -11
- package/dist/components/modal/src/components/modal-content.js +2 -2
- package/dist/components/modal/src/components/modal-footer.js +2 -2
- package/dist/components/modal/src/components/modal-header.d.ts +3 -1
- package/dist/components/modal/src/components/modal-header.js +12 -5
- package/dist/components/modal/src/modal.js +2 -2
- package/dist/components/multi-select/dist/index.js +13 -11
- package/dist/components/multi-select/src/components/multi-select-trigger.js +8 -8
- package/dist/components/multi-select/src/multi-select.js +5 -3
- package/dist/components/numeric-input/dist/index.d.ts +10 -117
- package/dist/components/numeric-input/dist/index.js +18 -24
- package/dist/components/numeric-input/src/components/numeric-input-element.js +2 -2
- package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.d.ts +1 -1
- package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.js +2 -2
- package/dist/components/numeric-input/src/components/numeric-input-variable.d.ts +1 -2
- package/dist/components/numeric-input/src/components/numeric-input-variable.js +3 -3
- package/dist/components/numeric-input/src/hooks/use-input-interactions.d.ts +3 -3
- package/dist/components/numeric-input/src/hooks/use-numeric-input.d.ts +3 -3
- package/dist/components/numeric-input/src/hooks/use-numeric-value-processing.d.ts +3 -3
- package/dist/components/numeric-input/src/hooks/use-step-calculation.d.ts +6 -6
- package/dist/components/numeric-input/src/index.d.ts +5 -4
- package/dist/components/numeric-input/src/numeric-input.js +9 -9
- package/dist/components/numeric-input/src/utils/error-handler.d.ts +8 -8
- package/dist/components/numeric-input/src/utils/expression-evaluator.d.ts +11 -11
- package/dist/components/numeric-input/src/utils/input-parser.d.ts +8 -8
- package/dist/components/numeric-input/src/utils/numeric-value-processor.d.ts +6 -6
- package/dist/components/numeric-input/src/utils/pattern-parser.d.ts +7 -7
- package/dist/components/numeric-input/src/utils/value-comparator.d.ts +16 -16
- package/dist/components/numeric-input/src/utils/value-processor.d.ts +14 -14
- package/dist/components/pagination/src/components/pagination-items-per-page.js +1 -1
- package/dist/components/pagination/src/components/pagination-navigation.js +5 -5
- package/dist/components/pagination/src/components/pagination-root.js +3 -3
- package/dist/components/pagination/src/components/pagination-spinner.js +20 -19
- package/dist/components/pagination/src/context/index.d.ts +1 -0
- package/dist/components/popover/dist/index.d.ts +2 -4
- package/dist/components/popover/dist/index.js +25 -33
- package/dist/components/popover/src/components/popover-header.js +1 -1
- package/dist/components/popover/src/hooks/use-drag.d.ts +3 -3
- package/dist/components/popover/src/hooks/use-floating-popover.d.ts +0 -2
- package/dist/components/popover/src/hooks/use-floating-popover.js +16 -13
- package/dist/components/popover/src/index.d.ts +2 -1
- package/dist/components/popover/src/popover.d.ts +1 -2
- package/dist/components/popover/src/popover.js +11 -21
- package/dist/components/progress/src/index.d.ts +4 -2
- package/dist/components/radio/dist/index.d.ts +1 -17
- package/dist/components/radio/dist/index.js +7 -10
- package/dist/components/radio/src/context.js +1 -1
- package/dist/components/radio/src/index.d.ts +0 -4
- package/dist/components/radio/src/radio-label.js +2 -2
- package/dist/components/radio/src/radio.js +4 -4
- package/dist/components/range/dist/index.js +16 -16
- package/dist/components/range/src/index.d.ts +4 -2
- package/dist/components/range/src/range-tuple.js +10 -10
- package/dist/components/range/src/range.js +6 -6
- package/dist/components/rich-input/dist/index.d.ts +12 -366
- package/dist/components/rich-input/src/components/rich-input-editable-component.d.ts +2 -2
- package/dist/components/rich-input/src/components/rich-input-viewport.d.ts +2 -2
- package/dist/components/rich-input/src/hooks/use-editor-config.d.ts +1 -1
- package/dist/components/rich-input/src/hooks/use-editor-effects.js +3 -0
- package/dist/components/rich-input/src/hooks/use-floating-ui.js +1 -1
- package/dist/components/rich-input/src/hooks/use-keyboard-shortcuts.d.ts +9 -9
- package/dist/components/rich-input/src/hooks/use-rich-input.d.ts +2 -2
- package/dist/components/rich-input/src/hooks/use-rich-input.js +40 -17
- package/dist/components/rich-input/src/hooks/use-selection-events.js +1 -2
- package/dist/components/rich-input/src/index.d.ts +3 -5
- package/dist/components/rich-input/src/rich-input-base.js +1 -1
- package/dist/components/rich-input/src/utils/custom-options.js +1 -1
- package/dist/components/rich-input/src/utils/editor-utils.js +1 -1
- package/dist/components/rich-input/src/utils/markdown-to-slate.d.ts +2 -2
- package/dist/components/rich-input/src/utils/slate-to-markdown.d.ts +1 -1
- package/dist/components/rich-input/src/utils/slate-to-markdown.js +9 -0
- package/dist/components/scroll-area/dist/index.d.ts +19 -19
- package/dist/components/scroll-area/dist/index.js +24 -24
- package/dist/components/scroll-area/src/components/scroll-area-corner.js +2 -2
- package/dist/components/scroll-area/src/components/scroll-area-root.js +3 -3
- package/dist/components/scroll-area/src/components/scroll-area-scrollbar.js +2 -2
- package/dist/components/scroll-area/src/components/scroll-area-thumb.js +2 -2
- package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.d.ts +6 -6
- package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.js +3 -3
- package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.d.ts +1 -1
- package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.js +3 -3
- package/dist/components/scroll-area/src/hooks/use-scrollbar.d.ts +2 -2
- package/dist/components/scroll-area/src/hooks/use-thumb.d.ts +2 -2
- package/dist/components/scroll-area/src/tv.d.ts +18 -18
- package/dist/components/scroll-area/src/tv.js +12 -12
- package/dist/components/scroll-area/src/types.d.ts +8 -8
- package/dist/components/scroll-area/src/utils/index.d.ts +3 -3
- package/dist/components/search-input/dist/index.js +3 -3
- package/dist/components/search-input/src/index.d.ts +2 -1
- package/dist/components/search-input/src/search-input.js +3 -3
- package/dist/components/segmented/dist/index.js +5 -5
- package/dist/components/segmented/src/segmented-item.js +3 -3
- package/dist/components/segmented/src/segmented.js +2 -2
- package/dist/components/select/dist/index.js +4 -4
- package/dist/components/select/src/select.js +4 -4
- package/dist/components/separator/dist/index.d.ts +26 -0
- package/dist/components/separator/src/index.d.ts +2 -0
- package/dist/components/separator/src/separator.d.ts +22 -0
- package/dist/components/separator/src/separator.js +33 -0
- package/dist/components/separator/src/tv.d.ts +76 -0
- package/dist/components/separator/src/tv.js +25 -0
- package/dist/components/separator/tsup.config.d.ts +2 -0
- package/dist/components/skeleton/dist/index.d.ts +1 -28
- package/dist/components/skeleton/src/context/skeleton-context.js +1 -1
- package/dist/components/skeleton/src/hooks/use-skeleton.d.ts +1 -2
- package/dist/components/skeleton/src/hooks/use-skeleton.js +1 -1
- package/dist/components/skeleton/src/index.d.ts +1 -3
- package/dist/components/skeleton/src/skeleton.d.ts +0 -13
- package/dist/components/skeleton/src/skeleton.js +4 -6
- package/dist/components/skeleton/src/tv.d.ts +18 -12
- package/dist/components/skeleton/src/tv.js +10 -6
- package/dist/components/slot/dist/index.d.ts +10 -10
- package/dist/components/slot/dist/index.js +4 -2
- package/dist/components/slot/src/slot.d.ts +12 -12
- package/dist/components/slot/src/slot.js +6 -3
- package/dist/components/stackflow/src/context.js +1 -1
- package/dist/components/stackflow/src/index.d.ts +2 -1
- package/dist/components/switch/dist/index.d.ts +2 -2
- package/dist/components/switch/dist/index.js +6 -7
- package/dist/components/switch/src/index.d.ts +2 -1
- package/dist/components/switch/src/switch.js +6 -6
- package/dist/components/table/dist/index.d.ts +679 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/src/components/column-resizer.d.ts +8 -0
- package/dist/components/table/src/components/column-resizer.js +58 -0
- package/dist/components/table/src/components/drag-guide.d.ts +6 -0
- package/dist/components/table/src/components/drag-guide.js +64 -0
- package/dist/components/table/src/components/index.d.ts +12 -0
- package/dist/components/table/src/components/resize-guide.d.ts +5 -0
- package/dist/components/table/src/components/resize-guide.js +25 -0
- package/dist/components/table/src/components/table-body.d.ts +6 -0
- package/dist/components/table/src/components/table-body.js +335 -0
- package/dist/components/table/src/components/table-cell.d.ts +6 -0
- package/dist/components/table/src/components/table-cell.js +89 -0
- package/dist/components/table/src/components/table-column.d.ts +5 -0
- package/dist/components/table/src/components/table-column.js +269 -0
- package/dist/components/table/src/components/table-empty.d.ts +8 -0
- package/dist/components/table/src/components/table-empty.js +10 -0
- package/dist/components/table/src/components/table-footer.d.ts +7 -0
- package/dist/components/table/src/components/table-footer.js +15 -0
- package/dist/components/table/src/components/table-header.d.ts +3 -0
- package/dist/components/table/src/components/table-header.js +88 -0
- package/dist/components/table/src/components/table-root.d.ts +3 -0
- package/dist/components/table/src/components/table-root.js +317 -0
- package/dist/components/table/src/components/table-row.d.ts +23 -0
- package/dist/components/table/src/components/table-row.js +166 -0
- package/dist/components/table/src/components/table-value.d.ts +6 -0
- package/dist/components/table/src/components/table-value.js +8 -0
- package/dist/components/table/src/context.d.ts +121 -0
- package/dist/components/table/src/context.js +63 -0
- package/dist/components/table/src/hooks/index.d.ts +4 -0
- package/dist/components/table/src/hooks/use-column-order.d.ts +26 -0
- package/dist/components/table/src/hooks/use-column-order.js +95 -0
- package/dist/components/table/src/hooks/use-column-resize.d.ts +17 -0
- package/dist/components/table/src/hooks/use-column-resize.js +75 -0
- package/dist/components/table/src/hooks/use-consecutive-selection-style.d.ts +12 -0
- package/dist/components/table/src/hooks/use-consecutive-selection-style.js +28 -0
- package/dist/components/table/src/hooks/use-table.d.ts +35 -0
- package/dist/components/table/src/hooks/use-table.js +245 -0
- package/dist/components/table/src/index.d.ts +4 -0
- package/dist/components/table/src/table.d.ts +88 -0
- package/dist/components/table/src/table.js +24 -0
- package/dist/components/table/src/tv.d.ts +176 -0
- package/dist/components/table/src/tv.js +97 -0
- package/dist/components/table/src/types.d.ts +292 -0
- package/dist/components/table/tsup.config.d.ts +2 -0
- package/dist/components/tabs/dist/index.js +4 -3
- package/dist/components/tabs/src/tabs.d.ts +2 -2
- package/dist/components/tabs/src/tabs.js +5 -4
- package/dist/components/text-field/dist/index.d.ts +1 -1
- package/dist/components/text-field/dist/index.js +10 -10
- package/dist/components/text-field/src/components/field-addon.d.ts +1 -2
- package/dist/components/text-field/src/index.d.ts +3 -1
- package/dist/components/text-field/src/text-field.js +10 -10
- package/dist/components/textarea/dist/index.d.ts +33 -5
- package/dist/components/textarea/dist/index.js +32 -7
- package/dist/components/textarea/src/components/autosize/index.d.ts +6 -1
- package/dist/components/textarea/src/components/autosize/index.js +31 -6
- package/dist/components/textarea/src/textarea.js +1 -1
- package/dist/components/textarea/src/types.d.ts +33 -5
- package/dist/components/toggle-button/dist/index.d.ts +26 -2
- package/dist/components/toggle-button/src/context.d.ts +11 -0
- package/dist/components/toggle-button/src/context.js +13 -0
- package/dist/components/toggle-button/src/index.d.ts +2 -0
- package/dist/components/toggle-button/src/toggle-button.js +4 -4
- package/dist/components/toggle-button/src/toggle-group.d.ts +26 -0
- package/dist/components/toggle-button/src/toggle-group.js +156 -0
- package/dist/components/toggle-button/src/tv.d.ts +67 -3
- package/dist/components/toggle-button/src/tv.js +45 -14
- package/dist/components/tooltip/dist/index.d.ts +10 -43
- package/dist/components/tooltip/dist/index.js +35 -33
- package/dist/components/tooltip/src/components/tooltip-arrow.js +1 -1
- package/dist/components/tooltip/src/components/tooltip-content.js +5 -4
- package/dist/components/tooltip/src/context/index.d.ts +1 -0
- package/dist/components/tooltip/src/hooks/use-tooltip.js +3 -3
- package/dist/components/tooltip/src/index.d.ts +2 -4
- package/dist/components/tooltip/src/tooltip.d.ts +7 -1
- package/dist/components/tooltip/src/tooltip.js +6 -1
- package/dist/components/tooltip/src/tv.js +1 -1
- package/dist/components/virtualized-grid/dist/index.d.ts +2 -2
- package/dist/components/virtualized-grid/src/use-item-pool.js +14 -26
- package/dist/components/virtualized-grid/src/use-virtualized-grid.d.ts +1 -1
- package/dist/components/virtualized-grid/src/use-virtualized-grid.js +14 -8
- package/dist/components/virtualized-grid/src/utility.d.ts +1 -1
- package/dist/components/virtualized-grid/src/utility.js +37 -31
- package/dist/components/virtualized-grid/src/virtualized-grid.js +27 -17
- package/dist/context/choice-ui-provider.d.ts +35 -0
- package/dist/context/choice-ui-provider.js +14 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +53 -177
- package/package.json +1 -1
- package/dist/components/code-block/src/index.js +0 -15
- package/dist/components/rich-input/src/hooks/use-mouse-events.js +0 -113
- package/dist/components/rich-input/src/hooks/use-validation.js +0 -80
- package/dist/components/rich-input/src/utils/markdown-to-slate.js +0 -219
- /package/dist/components/command/src/{command-score.d.ts → utils/command-score.d.ts} +0 -0
- /package/dist/components/command/src/{command-score.js → utils/command-score.js} +0 -0
- /package/dist/components/pagination/src/{components → context}/pagination-context.d.ts +0 -0
- /package/dist/components/pagination/src/{components → context}/pagination-context.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { IconButton } from "../../../icon-button/dist/index.js";
|
|
3
|
-
import { FileCode,
|
|
3
|
+
import { FileCode, Check, ClipboardSmall, Enlarge } from "@choiceform/icons-react";
|
|
4
4
|
import { memo } from "react";
|
|
5
5
|
import { getIconFromFilename, getLanguageIcon } from "../utils/language-icon-map.js";
|
|
6
6
|
import { getDefaultFilenameForLanguage } from "../utils/default-filename.js";
|
|
@@ -9,17 +9,51 @@ const codeBlockHeaderTv = tcv({
|
|
|
9
9
|
slots: {
|
|
10
10
|
header: "text-body-medium code-header flex h-8 items-center justify-between pr-1 pl-2",
|
|
11
11
|
title: "flex items-center gap-1",
|
|
12
|
-
filename: "
|
|
12
|
+
filename: "",
|
|
13
13
|
actions: "flex items-center",
|
|
14
|
-
button: "opacity-0 group-hover:opacity-100",
|
|
14
|
+
button: "opacity-0 group-hover/code-block:opacity-100",
|
|
15
15
|
lineCount: "text-success-foreground ml-2 font-strong"
|
|
16
16
|
},
|
|
17
17
|
variants: {
|
|
18
18
|
isExpanded: {
|
|
19
|
-
true: {
|
|
19
|
+
true: {},
|
|
20
20
|
false: {}
|
|
21
|
+
},
|
|
22
|
+
variant: {
|
|
23
|
+
default: {
|
|
24
|
+
filename: "text-secondary-foreground"
|
|
25
|
+
},
|
|
26
|
+
light: {
|
|
27
|
+
filename: "text-gray-900"
|
|
28
|
+
},
|
|
29
|
+
dark: {
|
|
30
|
+
filename: "text-white"
|
|
31
|
+
}
|
|
21
32
|
}
|
|
22
33
|
},
|
|
34
|
+
compoundVariants: [
|
|
35
|
+
{
|
|
36
|
+
variant: "default",
|
|
37
|
+
isExpanded: true,
|
|
38
|
+
class: {
|
|
39
|
+
header: "bg-secondary-background"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
variant: "light",
|
|
44
|
+
isExpanded: true,
|
|
45
|
+
class: {
|
|
46
|
+
header: "bg-gray-100"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
variant: "dark",
|
|
51
|
+
isExpanded: true,
|
|
52
|
+
class: {
|
|
53
|
+
header: "bg-gray-700"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
],
|
|
23
57
|
defaultVariants: {
|
|
24
58
|
isExpanded: true
|
|
25
59
|
}
|
|
@@ -28,7 +62,7 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
|
|
|
28
62
|
const {
|
|
29
63
|
className,
|
|
30
64
|
codeBlock,
|
|
31
|
-
showLineCount =
|
|
65
|
+
showLineCount = false,
|
|
32
66
|
i18n = {
|
|
33
67
|
collapse: "Collapse",
|
|
34
68
|
copied: "Copied",
|
|
@@ -46,12 +80,13 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
|
|
|
46
80
|
copied = false,
|
|
47
81
|
expandable = true,
|
|
48
82
|
handleExpand,
|
|
49
|
-
handleCopy
|
|
83
|
+
handleCopy,
|
|
84
|
+
variant
|
|
50
85
|
} = codeBlock;
|
|
51
86
|
if (!handleExpand || !handleCopy) {
|
|
52
87
|
return null;
|
|
53
88
|
}
|
|
54
|
-
const tv = codeBlockHeaderTv({ isExpanded });
|
|
89
|
+
const tv = codeBlockHeaderTv({ isExpanded, variant });
|
|
55
90
|
let icon = null;
|
|
56
91
|
try {
|
|
57
92
|
if (filename && typeof filename === "string") {
|
|
@@ -78,17 +113,17 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
|
|
|
78
113
|
IconButton,
|
|
79
114
|
{
|
|
80
115
|
className: tv.button(),
|
|
81
|
-
variant: "ghost",
|
|
116
|
+
variant: variant === "dark" ? "dark" : "ghost",
|
|
82
117
|
onClick: () => handleCopy(),
|
|
83
118
|
tooltip: { content: copyTooltipContent },
|
|
84
|
-
children: copied ? /* @__PURE__ */ jsx(
|
|
119
|
+
children: copied ? /* @__PURE__ */ jsx(Check, { className: "text-success-foreground" }) : /* @__PURE__ */ jsx(ClipboardSmall, {})
|
|
85
120
|
}
|
|
86
121
|
),
|
|
87
122
|
expandable && /* @__PURE__ */ jsx(
|
|
88
123
|
IconButton,
|
|
89
124
|
{
|
|
90
125
|
className: tv.button(),
|
|
91
|
-
variant: "ghost",
|
|
126
|
+
variant: variant === "dark" ? "dark" : "ghost",
|
|
92
127
|
onClick: handleExpand,
|
|
93
128
|
tooltip: {
|
|
94
129
|
content: expandTooltipContent
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
Content: typeof CodeBlockContent;
|
|
5
|
-
Footer: import('react').NamedExoticComponent<import('../..').CodeBlockFooterProps>;
|
|
6
|
-
Header: import('react').NamedExoticComponent<import('../..').CodeBlockHeaderProps>;
|
|
7
|
-
};
|
|
8
|
-
export { CodeBlockCode } from './components';
|
|
9
|
-
export type { CodeBlockProps, CodeBlockHeaderProps, CodeBlockFooterProps, CodeBlockContentProps, CodeBlockCodeProps, CodeBlockContextValue, CodeBlockInjectedProps, UseCodeBlockOptions, UseCodeBlockReturn, UseScrollDetectionOptions, } from './types';
|
|
1
|
+
export { CodeBlock } from './code-block';
|
|
2
|
+
export { CodeBlockHeader, CodeBlockFooter, CodeBlockContent, CodeBlockCode } from './components';
|
|
3
|
+
export type { CodeBlockProps, CodeBlockHeaderProps, CodeBlockFooterProps, CodeBlockContentProps, CodeBlockCodeProps, } from './types';
|
|
10
4
|
export { getDefaultFilenameForLanguage } from './utils';
|
|
@@ -19,21 +19,33 @@ interface ComboboxTriggerProps extends Omit<HTMLProps<HTMLInputElement>, "size"
|
|
|
19
19
|
value?: string;
|
|
20
20
|
variant?: "default" | "dark" | "reset";
|
|
21
21
|
}
|
|
22
|
-
declare const ComboboxTrigger: React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement
|
|
22
|
+
declare const ComboboxTrigger: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>>;
|
|
23
23
|
|
|
24
24
|
interface ComboboxRef {
|
|
25
25
|
handleKeyDown: (event: React.KeyboardEvent) => void;
|
|
26
26
|
}
|
|
27
27
|
interface ComboboxProps {
|
|
28
|
+
/**
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
28
31
|
autoSelection?: boolean;
|
|
29
32
|
children?: React.ReactNode;
|
|
30
33
|
disabled?: boolean;
|
|
31
|
-
|
|
34
|
+
/**
|
|
35
|
+
* @default { returnFocus: true, modal: false }
|
|
36
|
+
*/
|
|
37
|
+
focusManagerProps?: Partial<Omit<FloatingFocusManagerProps, "children" | "context">>;
|
|
38
|
+
/**
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
32
41
|
matchTriggerWidth?: boolean;
|
|
33
42
|
onBlur?: (value: string) => void;
|
|
34
43
|
onChange?: (value: string) => void;
|
|
35
44
|
onOpenChange?: (open: boolean, trigger?: "click" | "focus" | "input") => void;
|
|
36
45
|
open?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @default "bottom-start"
|
|
48
|
+
*/
|
|
37
49
|
placement?: Placement;
|
|
38
50
|
portalId?: string;
|
|
39
51
|
position?: {
|
|
@@ -42,8 +54,15 @@ interface ComboboxProps {
|
|
|
42
54
|
} | null;
|
|
43
55
|
readOnly?: boolean;
|
|
44
56
|
root?: HTMLElement | null;
|
|
57
|
+
/**
|
|
58
|
+
* Trigger type: "input" for input mode, "coordinate" for coordinate mode
|
|
59
|
+
* @default "input"
|
|
60
|
+
*/
|
|
45
61
|
trigger?: "input" | "coordinate";
|
|
46
62
|
value?: string;
|
|
63
|
+
/**
|
|
64
|
+
* @default "default"
|
|
65
|
+
*/
|
|
47
66
|
variant?: "default" | "light" | "reset";
|
|
48
67
|
}
|
|
49
68
|
interface ComboboxComponentType extends React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<ComboboxRef>> {
|
|
@@ -119,8 +119,8 @@ var comboboxTriggerTv = tcv({
|
|
|
119
119
|
noMatch: false
|
|
120
120
|
}
|
|
121
121
|
});
|
|
122
|
-
var ComboboxTrigger =
|
|
123
|
-
function ComboboxTrigger2(props, ref) {
|
|
122
|
+
var ComboboxTrigger = memo(
|
|
123
|
+
forwardRef(function ComboboxTrigger2(props, ref) {
|
|
124
124
|
const {
|
|
125
125
|
active = false,
|
|
126
126
|
className,
|
|
@@ -194,12 +194,14 @@ var ComboboxTrigger = forwardRef(
|
|
|
194
194
|
variant: "ghost",
|
|
195
195
|
tooltip: { content: i18n.clear },
|
|
196
196
|
onClick: handleClear,
|
|
197
|
+
disabled,
|
|
197
198
|
children: /* @__PURE__ */ jsx(RemoveSmall, {})
|
|
198
199
|
}
|
|
199
200
|
) : suffixElement && /* @__PURE__ */ jsx(
|
|
200
201
|
IconButton,
|
|
201
202
|
{
|
|
202
203
|
className: tv.icon(),
|
|
204
|
+
disabled,
|
|
203
205
|
variant: "solid",
|
|
204
206
|
active,
|
|
205
207
|
onClick: (e) => {
|
|
@@ -211,8 +213,9 @@ var ComboboxTrigger = forwardRef(
|
|
|
211
213
|
}
|
|
212
214
|
)
|
|
213
215
|
] });
|
|
214
|
-
}
|
|
216
|
+
})
|
|
215
217
|
);
|
|
218
|
+
ComboboxTrigger.displayName = "ComboboxTrigger";
|
|
216
219
|
var PORTAL_ROOT_ID = "floating-menu-root";
|
|
217
220
|
var DEFAULT_OFFSET = 4;
|
|
218
221
|
var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
@@ -230,7 +233,6 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
230
233
|
position,
|
|
231
234
|
readOnly = false,
|
|
232
235
|
trigger = "input",
|
|
233
|
-
// 默认为输入模式
|
|
234
236
|
value: controlledValue = "",
|
|
235
237
|
focusManagerProps = {
|
|
236
238
|
returnFocus: true,
|
|
@@ -327,8 +329,10 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
327
329
|
apply(args) {
|
|
328
330
|
var _a;
|
|
329
331
|
const { elements, availableHeight, rects } = args;
|
|
330
|
-
const
|
|
331
|
-
const
|
|
332
|
+
const floatingScrollHeight = elements.floating.scrollHeight;
|
|
333
|
+
const scrollRefHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || 0;
|
|
334
|
+
const contentHeight = Math.max(floatingScrollHeight, scrollRefHeight);
|
|
335
|
+
const maxHeight = contentHeight > 0 ? Math.min(contentHeight, availableHeight) : availableHeight;
|
|
332
336
|
Object.assign(elements.floating.style, {
|
|
333
337
|
maxHeight: `${maxHeight}px`,
|
|
334
338
|
display: "flex",
|
|
@@ -375,8 +379,6 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
375
379
|
virtual: true,
|
|
376
380
|
loop: true,
|
|
377
381
|
allowEscape: !isCoordinateMode
|
|
378
|
-
// 官方案例中有这个设置
|
|
379
|
-
// selectedIndex: isCoordinateMode ? null : activeIndex, // 确保选中状态同步
|
|
380
382
|
});
|
|
381
383
|
const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([
|
|
382
384
|
role,
|
|
@@ -431,11 +433,11 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
431
433
|
setScrollTop,
|
|
432
434
|
touch,
|
|
433
435
|
isSelect: false,
|
|
434
|
-
// Combobox
|
|
436
|
+
// Combobox is not a Select
|
|
435
437
|
fallback: false,
|
|
436
|
-
// Combobox
|
|
438
|
+
// Combobox does not have fallback mechanism
|
|
437
439
|
setInnerOffset: void 0
|
|
438
|
-
// Combobox
|
|
440
|
+
// Combobox does not use innerOffset
|
|
439
441
|
});
|
|
440
442
|
const handleTouchStart = useEventCallback(() => {
|
|
441
443
|
setTouch(true);
|
|
@@ -568,7 +570,7 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
568
570
|
onContextMenu(e) {
|
|
569
571
|
e.preventDefault();
|
|
570
572
|
},
|
|
571
|
-
//
|
|
573
|
+
// Add keyboard event handling in coordinate mode
|
|
572
574
|
...isCoordinateMode && {
|
|
573
575
|
tabIndex: 0,
|
|
574
576
|
onKeyDown: handleKeyDown
|
|
@@ -590,7 +592,8 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
590
592
|
innerOffset: 0,
|
|
591
593
|
isPositioned,
|
|
592
594
|
onScroll: handleArrowScroll,
|
|
593
|
-
onHide: handleArrowHide
|
|
595
|
+
onHide: handleArrowHide,
|
|
596
|
+
variant
|
|
594
597
|
},
|
|
595
598
|
dir
|
|
596
599
|
))
|
|
@@ -17,4 +17,4 @@ export interface ComboboxTriggerProps extends Omit<HTMLProps<HTMLInputElement>,
|
|
|
17
17
|
value?: string;
|
|
18
18
|
variant?: "default" | "dark" | "reset";
|
|
19
19
|
}
|
|
20
|
-
export declare const ComboboxTrigger: React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement
|
|
20
|
+
export declare const ComboboxTrigger: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { IconButton } from "../../icon-button/dist/index.js";
|
|
3
3
|
import { ChevronDownSmall, RemoveSmall } from "@choiceform/icons-react";
|
|
4
|
-
import { forwardRef, useState } from "react";
|
|
4
|
+
import { memo, forwardRef, useState } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
6
6
|
import { comboboxTriggerTv } from "./tv.js";
|
|
7
7
|
import { tcx } from "../../../shared/utils/tcx/tcx.js";
|
|
8
|
-
const ComboboxTrigger =
|
|
9
|
-
function ComboboxTrigger2(props, ref) {
|
|
8
|
+
const ComboboxTrigger = memo(
|
|
9
|
+
forwardRef(function ComboboxTrigger2(props, ref) {
|
|
10
10
|
const {
|
|
11
11
|
active = false,
|
|
12
12
|
className,
|
|
@@ -80,12 +80,14 @@ const ComboboxTrigger = forwardRef(
|
|
|
80
80
|
variant: "ghost",
|
|
81
81
|
tooltip: { content: i18n.clear },
|
|
82
82
|
onClick: handleClear,
|
|
83
|
+
disabled,
|
|
83
84
|
children: /* @__PURE__ */ jsx(RemoveSmall, {})
|
|
84
85
|
}
|
|
85
86
|
) : suffixElement && /* @__PURE__ */ jsx(
|
|
86
87
|
IconButton,
|
|
87
88
|
{
|
|
88
89
|
className: tv.icon(),
|
|
90
|
+
disabled,
|
|
89
91
|
variant: "solid",
|
|
90
92
|
active,
|
|
91
93
|
onClick: (e) => {
|
|
@@ -97,8 +99,9 @@ const ComboboxTrigger = forwardRef(
|
|
|
97
99
|
}
|
|
98
100
|
)
|
|
99
101
|
] });
|
|
100
|
-
}
|
|
102
|
+
})
|
|
101
103
|
);
|
|
104
|
+
ComboboxTrigger.displayName = "ComboboxTrigger";
|
|
102
105
|
export {
|
|
103
106
|
ComboboxTrigger
|
|
104
107
|
};
|
|
@@ -6,15 +6,27 @@ export interface ComboboxRef {
|
|
|
6
6
|
handleKeyDown: (event: React.KeyboardEvent) => void;
|
|
7
7
|
}
|
|
8
8
|
export interface ComboboxProps {
|
|
9
|
+
/**
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
9
12
|
autoSelection?: boolean;
|
|
10
13
|
children?: React.ReactNode;
|
|
11
14
|
disabled?: boolean;
|
|
12
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @default { returnFocus: true, modal: false }
|
|
17
|
+
*/
|
|
18
|
+
focusManagerProps?: Partial<Omit<FloatingFocusManagerProps, "children" | "context">>;
|
|
19
|
+
/**
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
13
22
|
matchTriggerWidth?: boolean;
|
|
14
23
|
onBlur?: (value: string) => void;
|
|
15
24
|
onChange?: (value: string) => void;
|
|
16
25
|
onOpenChange?: (open: boolean, trigger?: "click" | "focus" | "input") => void;
|
|
17
26
|
open?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @default "bottom-start"
|
|
29
|
+
*/
|
|
18
30
|
placement?: Placement;
|
|
19
31
|
portalId?: string;
|
|
20
32
|
position?: {
|
|
@@ -23,8 +35,15 @@ export interface ComboboxProps {
|
|
|
23
35
|
} | null;
|
|
24
36
|
readOnly?: boolean;
|
|
25
37
|
root?: HTMLElement | null;
|
|
38
|
+
/**
|
|
39
|
+
* Trigger type: "input" for input mode, "coordinate" for coordinate mode
|
|
40
|
+
* @default "input"
|
|
41
|
+
*/
|
|
26
42
|
trigger?: "input" | "coordinate";
|
|
27
43
|
value?: string;
|
|
44
|
+
/**
|
|
45
|
+
* @default "default"
|
|
46
|
+
*/
|
|
28
47
|
variant?: "default" | "light" | "reset";
|
|
29
48
|
}
|
|
30
49
|
interface ComboboxComponentType extends React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<ComboboxRef>> {
|
|
@@ -24,7 +24,6 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
24
24
|
position,
|
|
25
25
|
readOnly = false,
|
|
26
26
|
trigger = "input",
|
|
27
|
-
// 默认为输入模式
|
|
28
27
|
value: controlledValue = "",
|
|
29
28
|
focusManagerProps = {
|
|
30
29
|
returnFocus: true,
|
|
@@ -121,8 +120,10 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
121
120
|
apply(args) {
|
|
122
121
|
var _a;
|
|
123
122
|
const { elements, availableHeight, rects } = args;
|
|
124
|
-
const
|
|
125
|
-
const
|
|
123
|
+
const floatingScrollHeight = elements.floating.scrollHeight;
|
|
124
|
+
const scrollRefHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || 0;
|
|
125
|
+
const contentHeight = Math.max(floatingScrollHeight, scrollRefHeight);
|
|
126
|
+
const maxHeight = contentHeight > 0 ? Math.min(contentHeight, availableHeight) : availableHeight;
|
|
126
127
|
Object.assign(elements.floating.style, {
|
|
127
128
|
maxHeight: `${maxHeight}px`,
|
|
128
129
|
display: "flex",
|
|
@@ -169,8 +170,6 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
169
170
|
virtual: true,
|
|
170
171
|
loop: true,
|
|
171
172
|
allowEscape: !isCoordinateMode
|
|
172
|
-
// 官方案例中有这个设置
|
|
173
|
-
// selectedIndex: isCoordinateMode ? null : activeIndex, // 确保选中状态同步
|
|
174
173
|
});
|
|
175
174
|
const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([
|
|
176
175
|
role,
|
|
@@ -225,11 +224,11 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
225
224
|
setScrollTop,
|
|
226
225
|
touch,
|
|
227
226
|
isSelect: false,
|
|
228
|
-
// Combobox
|
|
227
|
+
// Combobox is not a Select
|
|
229
228
|
fallback: false,
|
|
230
|
-
// Combobox
|
|
229
|
+
// Combobox does not have fallback mechanism
|
|
231
230
|
setInnerOffset: void 0
|
|
232
|
-
// Combobox
|
|
231
|
+
// Combobox does not use innerOffset
|
|
233
232
|
});
|
|
234
233
|
const handleTouchStart = useEventCallback(() => {
|
|
235
234
|
setTouch(true);
|
|
@@ -362,7 +361,7 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
362
361
|
onContextMenu(e) {
|
|
363
362
|
e.preventDefault();
|
|
364
363
|
},
|
|
365
|
-
//
|
|
364
|
+
// Add keyboard event handling in coordinate mode
|
|
366
365
|
...isCoordinateMode && {
|
|
367
366
|
tabIndex: 0,
|
|
368
367
|
onKeyDown: handleKeyDown
|
|
@@ -384,7 +383,8 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
|
|
|
384
383
|
innerOffset: 0,
|
|
385
384
|
isPositioned,
|
|
386
385
|
onScroll: handleArrowScroll,
|
|
387
|
-
onHide: handleArrowHide
|
|
386
|
+
onHide: handleArrowHide,
|
|
387
|
+
variant
|
|
388
388
|
},
|
|
389
389
|
dir
|
|
390
390
|
))
|
|
@@ -10,9 +10,24 @@ interface CommandEmptyProps extends HTMLProps<HTMLDivElement> {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
interface CommandGroupProps extends HTMLProps<HTMLDivElement> {
|
|
13
|
+
/**
|
|
14
|
+
* Whether to force mount the group.
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
13
17
|
forceMount?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* The heading of the group.
|
|
20
|
+
*/
|
|
14
21
|
heading?: react__default.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* The value of the group.
|
|
24
|
+
*/
|
|
15
25
|
value?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the group is hidden.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
hidden?: boolean;
|
|
16
31
|
}
|
|
17
32
|
|
|
18
33
|
interface CommandInputProps extends Omit<TextFieldProps, "value" | "onChange" | "type"> {
|
|
@@ -43,12 +58,23 @@ interface CommandListProps extends ScrollAreaProps {
|
|
|
43
58
|
}
|
|
44
59
|
|
|
45
60
|
interface CommandLoadingProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
61
|
+
/**
|
|
62
|
+
* The label of the loading.
|
|
63
|
+
* @default "Loading..."
|
|
64
|
+
*/
|
|
46
65
|
label?: string;
|
|
66
|
+
/**
|
|
67
|
+
* The progress of the loading.
|
|
68
|
+
* @default undefined
|
|
69
|
+
*/
|
|
47
70
|
progress?: number;
|
|
48
71
|
}
|
|
49
72
|
|
|
50
73
|
interface CommandDividerProps extends HTMLProps<HTMLDivElement> {
|
|
51
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Whether to always render this divider. Useful when automatic filtering is disabled.
|
|
76
|
+
* @default false
|
|
77
|
+
*/
|
|
52
78
|
alwaysRender?: boolean;
|
|
53
79
|
}
|
|
54
80
|
|
|
@@ -85,17 +111,40 @@ interface CommandProps extends Omit<react__default.HTMLAttributes<HTMLDivElement
|
|
|
85
111
|
* If `false`, you must conditionally render valid items based on the search query yourself.
|
|
86
112
|
*/
|
|
87
113
|
shouldFilter?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* The size of the command menu.
|
|
116
|
+
* @default "default"
|
|
117
|
+
*/
|
|
88
118
|
size?: "default" | "large";
|
|
89
119
|
/**
|
|
90
120
|
* Optional controlled state of the selected command menu item.
|
|
91
121
|
*/
|
|
92
122
|
value?: string;
|
|
123
|
+
/**
|
|
124
|
+
* The variant of the command menu.
|
|
125
|
+
* @default "default"
|
|
126
|
+
*/
|
|
93
127
|
variant?: "default" | "dark";
|
|
94
128
|
/**
|
|
95
129
|
* Set to `false` to disable ctrl+n/j/p/k shortcuts. Defaults to `true`.
|
|
96
130
|
*/
|
|
97
131
|
vimBindings?: boolean;
|
|
98
132
|
}
|
|
133
|
+
type Context = {
|
|
134
|
+
filter: () => boolean;
|
|
135
|
+
getDisablePointerSelection: () => boolean;
|
|
136
|
+
group: (id: string) => () => void;
|
|
137
|
+
inputId: string;
|
|
138
|
+
item: (id: string, groupId?: string) => () => void;
|
|
139
|
+
label?: string;
|
|
140
|
+
labelId: string;
|
|
141
|
+
listId: string;
|
|
142
|
+
listInnerRef: react__default.MutableRefObject<HTMLDivElement | null>;
|
|
143
|
+
size?: "default" | "large";
|
|
144
|
+
store: Store;
|
|
145
|
+
value: (id: string, value?: string, keywords?: string[]) => void;
|
|
146
|
+
variant?: "default" | "dark";
|
|
147
|
+
};
|
|
99
148
|
type State = {
|
|
100
149
|
filtered: {
|
|
101
150
|
count: number;
|
|
@@ -106,19 +155,31 @@ type State = {
|
|
|
106
155
|
selectedItemId?: string;
|
|
107
156
|
value: string;
|
|
108
157
|
};
|
|
158
|
+
type Store = {
|
|
159
|
+
emit: () => void;
|
|
160
|
+
setState: <K extends keyof State>(key: K, value: State[K], opts?: unknown) => void;
|
|
161
|
+
snapshot: () => State;
|
|
162
|
+
subscribe: (callback: () => void) => () => void;
|
|
163
|
+
};
|
|
109
164
|
|
|
110
165
|
declare const defaultFilter: CommandFilter;
|
|
111
166
|
declare const Command$1: react__default.ForwardRefExoticComponent<CommandProps & react__default.RefAttributes<HTMLDivElement>>;
|
|
112
167
|
|
|
168
|
+
declare const useCommand: () => Context;
|
|
169
|
+
|
|
113
170
|
/** Run a selector against the store state. */
|
|
114
171
|
declare function useCommandState<T>(selector: (state: State) => T): T;
|
|
115
172
|
|
|
173
|
+
declare function useValue(id: string, ref: react__default.RefObject<HTMLElement>, deps: (string | react__default.ReactNode | react__default.RefObject<HTMLElement>)[], aliases?: string[]): react__default.MutableRefObject<string | undefined>;
|
|
174
|
+
|
|
175
|
+
declare function commandScore(string: string, abbreviation: string, aliases?: string[]): number;
|
|
176
|
+
|
|
116
177
|
declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefAttributes<HTMLDivElement>> & {
|
|
117
178
|
Empty: react.ForwardRefExoticComponent<Omit<CommandEmptyProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
118
179
|
Footer: react.ForwardRefExoticComponent<Omit<react.HTMLProps<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
119
|
-
Group: react.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & react.RefAttributes<HTMLDivElement
|
|
180
|
+
Group: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
|
|
120
181
|
Input: react.ForwardRefExoticComponent<Omit<CommandInputProps, "ref"> & react.RefAttributes<HTMLInputElement>>;
|
|
121
|
-
Item: react.ForwardRefExoticComponent<Omit<CommandItemProps, "ref"> & react.RefAttributes<HTMLDivElement
|
|
182
|
+
Item: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CommandItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
|
|
122
183
|
List: react.ForwardRefExoticComponent<CommandListProps & react.RefAttributes<HTMLDivElement>>;
|
|
123
184
|
Loading: react.ForwardRefExoticComponent<CommandLoadingProps & react.RefAttributes<HTMLDivElement>>;
|
|
124
185
|
Divider: react.ForwardRefExoticComponent<Omit<CommandDividerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
@@ -127,4 +188,4 @@ declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefA
|
|
|
127
188
|
TabItem: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<_choice_ui_tabs.TabItemProps, "ref"> & react.RefAttributes<HTMLElement>>>;
|
|
128
189
|
};
|
|
129
190
|
|
|
130
|
-
export { Command, Command$1 as CommandRoot, defaultFilter, useCommandState };
|
|
191
|
+
export { Command, type CommandDividerProps, type CommandGroupProps, type CommandInputProps, type CommandItemProps, type CommandListProps, type CommandLoadingProps, type CommandProps, Command$1 as CommandRoot, commandScore, defaultFilter, useCommand, useCommandState, useValue };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, useId, useRef, useMemo, useCallback } from "react";
|
|
3
3
|
import { useIsomorphicLayoutEffect, useEventCallback } from "usehooks-ts";
|
|
4
|
-
import { commandScore } from "./command-score.js";
|
|
5
4
|
import { commandTv } from "./tv.js";
|
|
6
5
|
import { useAsRef } from "./hooks/use-as-ref.js";
|
|
7
6
|
import { useScheduleLayoutEffect } from "./hooks/use-schedule-layout-effect.js";
|
|
@@ -10,6 +9,7 @@ import { findNextSibling, findPreviousSibling } from "./utils/dom.js";
|
|
|
10
9
|
import { createCommandContext } from "./context/create-command-context.js";
|
|
11
10
|
import { SlottableWithNestedChildren } from "./utils/helpers.js";
|
|
12
11
|
import { StoreContext, CommandContext } from "./context/command-context.js";
|
|
12
|
+
import { commandScore } from "./utils/command-score.js";
|
|
13
13
|
import { useLazyRef } from "../../../shared/hooks/use-lazy-ref/use-lazy-ref.js";
|
|
14
14
|
import { tcx } from "../../../shared/utils/tcx/tcx.js";
|
|
15
15
|
const defaultFilter = (value, search, keywords) => commandScore(value, search, keywords);
|
|
@@ -163,7 +163,6 @@ const Command = forwardRef((props, forwardedRef) => {
|
|
|
163
163
|
store.setState("value", value2 || "");
|
|
164
164
|
}, []);
|
|
165
165
|
const filterItems = useCallback(() => {
|
|
166
|
-
var _a, _b;
|
|
167
166
|
if (!state.current.search || // Explicitly false, because true | undefined is the default
|
|
168
167
|
propsRef.current.shouldFilter === false) {
|
|
169
168
|
state.current.filtered.count = allItems.current.size;
|
|
@@ -172,8 +171,10 @@ const Command = forwardRef((props, forwardedRef) => {
|
|
|
172
171
|
state.current.filtered.groups = /* @__PURE__ */ new Set();
|
|
173
172
|
let itemCount = 0;
|
|
174
173
|
for (const id of allItems.current) {
|
|
175
|
-
const
|
|
176
|
-
|
|
174
|
+
const itemData = ids.current.get(id);
|
|
175
|
+
if (!itemData) continue;
|
|
176
|
+
const value2 = itemData.value ?? "";
|
|
177
|
+
const keywords = itemData.keywords ?? [];
|
|
177
178
|
const rank = score(value2, keywords);
|
|
178
179
|
state.current.filtered.items.set(id, rank);
|
|
179
180
|
if (rank > 0) itemCount++;
|
|
@@ -259,7 +260,7 @@ const Command = forwardRef((props, forwardedRef) => {
|
|
|
259
260
|
variant
|
|
260
261
|
}),
|
|
261
262
|
[]
|
|
262
|
-
//
|
|
263
|
+
// Empty deps array, consistent with original cmdk implementation
|
|
263
264
|
);
|
|
264
265
|
const last = () => updateSelectedToIndex(getValidItems().length - 1);
|
|
265
266
|
const next = (e) => {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { HTMLProps } from 'react';
|
|
2
2
|
export interface CommandDividerProps extends HTMLProps<HTMLDivElement> {
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Whether to always render this divider. Useful when automatic filtering is disabled.
|
|
5
|
+
* @default false
|
|
6
|
+
*/
|
|
4
7
|
alwaysRender?: boolean;
|
|
5
8
|
}
|
|
6
9
|
export declare const CommandDivider: import('react').ForwardRefExoticComponent<Omit<CommandDividerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { default as React, HTMLProps } from 'react';
|
|
2
2
|
export interface CommandGroupProps extends HTMLProps<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Whether to force mount the group.
|
|
5
|
+
* @default false
|
|
6
|
+
*/
|
|
3
7
|
forceMount?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The heading of the group.
|
|
10
|
+
*/
|
|
4
11
|
heading?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* The value of the group.
|
|
14
|
+
*/
|
|
5
15
|
value?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the group is hidden.
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
hidden?: boolean;
|
|
6
21
|
}
|
|
7
|
-
export declare const CommandGroup: React.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & React.RefAttributes<HTMLDivElement
|
|
22
|
+
export declare const CommandGroup: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>>;
|