@lobehub/ui 6.0.0-beta.7 → 6.0.0-beta.9
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/es/Accordion/Accordion.mjs +3 -3
- package/es/Accordion/Accordion.mjs.map +1 -1
- package/es/Accordion/atoms.mjs +2 -2
- package/es/Accordion/atoms.mjs.map +1 -1
- package/es/Accordion/style.d.mts +1 -1
- package/es/ActionIcon/ActionIcon.mjs +2 -2
- package/es/ActionIcon/ActionIcon.mjs.map +1 -1
- package/es/Alert/Alert.mjs +5 -5
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/AutoComplete/AutoComplete.mjs +5 -5
- package/es/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/AutoComplete/style.mjs +2 -2
- package/es/AutoComplete/style.mjs.map +1 -1
- package/es/Avatar/Avatar.mjs +2 -2
- package/es/Avatar/Avatar.mjs.map +1 -1
- package/es/Avatar/AvatarGroup/index.mjs +2 -2
- package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
- package/es/Breadcrumb/Breadcrumb.mjs +2 -2
- package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
- package/es/Button/Button.mjs +1 -1
- package/es/Button/Button.mjs.map +1 -1
- package/es/Button/style.d.mts +8 -1
- package/es/Button/style.mjs +41 -18
- package/es/Button/style.mjs.map +1 -1
- package/es/Checkbox/Checkbox.mjs +3 -3
- package/es/Checkbox/Checkbox.mjs.map +1 -1
- package/es/CodeDiff/DiffPanel.mjs +4 -4
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CodeEditor/CodeEditor.mjs +4 -4
- package/es/CodeEditor/CodeEditor.mjs.map +1 -1
- package/es/ColorPicker/ColorInputs.mjs +136 -0
- package/es/ColorPicker/ColorInputs.mjs.map +1 -0
- package/es/ColorPicker/ColorPanel.mjs +145 -0
- package/es/ColorPicker/ColorPanel.mjs.map +1 -0
- package/es/ColorPicker/ColorPicker.mjs +62 -199
- package/es/ColorPicker/ColorPicker.mjs.map +1 -1
- package/es/ColorPicker/SaturationArea.mjs +2 -1
- package/es/ColorPicker/SaturationArea.mjs.map +1 -1
- package/es/ColorPicker/Swatch.mjs +24 -0
- package/es/ColorPicker/Swatch.mjs.map +1 -0
- package/es/ColorPicker/Swatches.mjs +66 -0
- package/es/ColorPicker/Swatches.mjs.map +1 -0
- package/es/ColorPicker/Trigger.mjs +112 -0
- package/es/ColorPicker/Trigger.mjs.map +1 -0
- package/es/ColorPicker/color.mjs +25 -1
- package/es/ColorPicker/color.mjs.map +1 -1
- package/es/ColorPicker/recent.mjs +25 -0
- package/es/ColorPicker/recent.mjs.map +1 -0
- package/es/ColorPicker/style.mjs +269 -70
- package/es/ColorPicker/style.mjs.map +1 -1
- package/es/ColorPicker/type.d.mts +15 -0
- package/es/ContextMenu/ContextMenuHost.mjs +2 -2
- package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
- package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
- package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
- package/es/ContextMenu/renderItems.mjs +3 -3
- package/es/ContextMenu/renderItems.mjs.map +1 -1
- package/es/DatePicker/DatePicker.d.mts +9 -2
- package/es/DatePicker/DatePicker.mjs +15 -85
- package/es/DatePicker/DatePicker.mjs.map +1 -1
- package/es/DatePicker/DateRangePicker.d.mts +3 -2
- package/es/DatePicker/DateRangePicker.mjs +3 -125
- package/es/DatePicker/DateRangePicker.mjs.map +1 -1
- package/es/DatePicker/DayjsDatePicker.d.mts +12 -0
- package/es/DatePicker/DayjsDatePicker.mjs +19 -0
- package/es/DatePicker/DayjsDatePicker.mjs.map +1 -0
- package/es/DatePicker/DayjsDateRangePicker.d.mts +7 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs +8 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs.map +1 -0
- package/es/DatePicker/PurePanel.mjs +65 -0
- package/es/DatePicker/PurePanel.mjs.map +1 -0
- package/es/DatePicker/RangePicker.mjs +121 -0
- package/es/DatePicker/RangePicker.mjs.map +1 -0
- package/es/DatePicker/SinglePicker.mjs +134 -0
- package/es/DatePicker/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/context.mjs +7 -0
- package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
- package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
- package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
- package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPopup.mjs +118 -0
- package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
- package/es/DatePicker/core/generate/dayjs.mjs +109 -0
- package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
- package/es/DatePicker/core/generate/index.d.mts +40 -0
- package/es/DatePicker/core/hooks/react.mjs +58 -0
- package/es/DatePicker/core/hooks/react.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
- package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
- package/es/DatePicker/core/index.d.mts +5 -0
- package/es/DatePicker/core/index.mjs +9 -0
- package/es/DatePicker/core/index.mjs.map +1 -0
- package/es/DatePicker/core/interface.d.mts +325 -0
- package/es/DatePicker/core/locale/common.mjs +11 -0
- package/es/DatePicker/core/locale/common.mjs.map +1 -0
- package/es/DatePicker/core/locale/en_US.mjs +39 -0
- package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
- package/es/DatePicker/core/utils/common.mjs +73 -0
- package/es/DatePicker/core/utils/common.mjs.map +1 -0
- package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
- package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
- package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
- package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
- package/es/DatePicker/dateGenerateConfig.mjs +52 -0
- package/es/DatePicker/dateGenerateConfig.mjs.map +1 -0
- package/es/DatePicker/generateConfig.mjs +12 -0
- package/es/DatePicker/generateConfig.mjs.map +1 -0
- package/es/DatePicker/generatePicker.d.mts +12 -0
- package/es/DatePicker/generatePicker.mjs +22 -0
- package/es/DatePicker/generatePicker.mjs.map +1 -0
- package/es/DatePicker/index.d.mts +8 -3
- package/es/DatePicker/index.mjs +5 -1
- package/es/DatePicker/legacyDate.mjs +58 -0
- package/es/DatePicker/legacyDate.mjs.map +1 -0
- package/es/DatePicker/locale.d.mts +15 -0
- package/es/DatePicker/locale.mjs +143 -0
- package/es/DatePicker/locale.mjs.map +1 -0
- package/es/DatePicker/semantic.mjs +29 -0
- package/es/DatePicker/semantic.mjs.map +1 -0
- package/es/DatePicker/style.mjs +3 -155
- package/es/DatePicker/style.mjs.map +1 -1
- package/es/DatePicker/type.d.mts +294 -27
- package/es/DatePicker/usePanelKeyboard.mjs +230 -0
- package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
- package/es/DatePicker/usePickerShared.mjs +106 -0
- package/es/DatePicker/usePickerShared.mjs.map +1 -0
- package/es/DatePicker/usePresetActive.mjs +49 -0
- package/es/DatePicker/usePresetActive.mjs.map +1 -0
- package/es/DraggablePanel/atoms.mjs +5 -5
- package/es/DraggablePanel/atoms.mjs.map +1 -1
- package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
- package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
- package/es/Drawer/Drawer.mjs +2 -2
- package/es/Drawer/Drawer.mjs.map +1 -1
- package/es/Drawer/atoms.mjs +6 -6
- package/es/Drawer/atoms.mjs.map +1 -1
- package/es/DropdownMenu/atoms.mjs +22 -22
- package/es/DropdownMenu/atoms.mjs.map +1 -1
- package/es/DropdownMenu/sharedStyle.mjs +2 -2
- package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
- package/es/EditorSlashMenu/atoms.mjs +12 -12
- package/es/EditorSlashMenu/atoms.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +7 -7
- package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
- package/es/EmojiPicker/loadEmojiData.mjs +6 -0
- package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
- package/es/FloatingPanel/FloatingPanel.mjs +2 -2
- package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
- package/es/FormKit/List.mjs +2 -2
- package/es/FormKit/List.mjs.map +1 -1
- package/es/Highlighter/FullFeatured.mjs +2 -2
- package/es/Highlighter/FullFeatured.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
- package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
- package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
- package/es/Highlighter/style.mjs +2 -2
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs +2 -2
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/Icon/Icon.mjs +2 -2
- package/es/Icon/Icon.mjs.map +1 -1
- package/es/List/ListRow.mjs +3 -3
- package/es/List/ListRow.mjs.map +1 -1
- package/es/Markdown/Markdown.mjs +2 -2
- package/es/Markdown/Markdown.mjs.map +1 -1
- package/es/Markdown/Typography.mjs +2 -2
- package/es/Markdown/Typography.mjs.map +1 -1
- package/es/Mermaid/FullFeatured.mjs +2 -2
- package/es/Mermaid/FullFeatured.mjs.map +1 -1
- package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
- package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
- package/es/Modal/atoms.mjs +6 -6
- package/es/Modal/atoms.mjs.map +1 -1
- package/es/Pagination/Pagination.mjs +181 -41
- package/es/Pagination/Pagination.mjs.map +1 -1
- package/es/Pagination/helpers.mjs +3 -3
- package/es/Pagination/helpers.mjs.map +1 -1
- package/es/Pagination/index.d.mts +2 -2
- package/es/Pagination/marker.stylex.mjs +9 -0
- package/es/Pagination/marker.stylex.mjs.map +1 -0
- package/es/Pagination/style.mjs +74 -4
- package/es/Pagination/style.mjs.map +1 -1
- package/es/Pagination/type.d.mts +41 -3
- package/es/Popover/PopoverInGroup.mjs +2 -2
- package/es/Popover/PopoverInGroup.mjs.map +1 -1
- package/es/Popover/atoms.mjs +6 -6
- package/es/Popover/atoms.mjs.map +1 -1
- package/es/ProTable/ProTable.d.mts +11 -0
- package/es/ProTable/ProTable.mjs +208 -0
- package/es/ProTable/ProTable.mjs.map +1 -0
- package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
- package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
- package/es/ProTable/hooks/useColumnsState.mjs +37 -0
- package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
- package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
- package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
- package/es/ProTable/hooks/useDensity.mjs +15 -0
- package/es/ProTable/hooks/useDensity.mjs.map +1 -0
- package/es/ProTable/hooks/useFetchData.mjs +97 -0
- package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
- package/es/ProTable/hooks/useFullscreen.mjs +22 -0
- package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
- package/es/ProTable/hooks/usePageInfo.mjs +35 -0
- package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
- package/es/ProTable/hooks/useProColumns.mjs +123 -0
- package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
- package/es/ProTable/hooks/useProLoading.mjs +19 -0
- package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
- package/es/ProTable/hooks/useProLocale.mjs +22 -0
- package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
- package/es/ProTable/hooks/useProRequest.mjs +137 -0
- package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
- package/es/ProTable/hooks/useRowCache.mjs +11 -0
- package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
- package/es/ProTable/hooks/useSearchForm.mjs +141 -0
- package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
- package/es/ProTable/hooks/useTableBindings.mjs +39 -0
- package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
- package/es/ProTable/hooks/useTableSelection.mjs +14 -0
- package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
- package/es/ProTable/index.d.mts +4 -0
- package/es/ProTable/index.d.ts +1 -0
- package/es/ProTable/index.js +1 -0
- package/es/ProTable/index.mjs +3 -0
- package/es/ProTable/locale.d.mts +15 -0
- package/es/ProTable/locale.mjs +66 -0
- package/es/ProTable/locale.mjs.map +1 -0
- package/es/ProTable/parts/ColumnSetting.mjs +155 -0
- package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
- package/es/ProTable/parts/FieldControl.mjs +117 -0
- package/es/ProTable/parts/FieldControl.mjs.map +1 -0
- package/es/ProTable/parts/KeywordInput.mjs +19 -0
- package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
- package/es/ProTable/parts/LightFilter.mjs +70 -0
- package/es/ProTable/parts/LightFilter.mjs.map +1 -0
- package/es/ProTable/parts/OptionPopover.mjs +17 -0
- package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
- package/es/ProTable/parts/SearchForm.mjs +180 -0
- package/es/ProTable/parts/SearchForm.mjs.map +1 -0
- package/es/ProTable/parts/SearchSection.mjs +33 -0
- package/es/ProTable/parts/SearchSection.mjs.map +1 -0
- package/es/ProTable/parts/TableAlert.mjs +38 -0
- package/es/ProTable/parts/TableAlert.mjs.map +1 -0
- package/es/ProTable/parts/Toolbar.mjs +50 -0
- package/es/ProTable/parts/Toolbar.mjs.map +1 -0
- package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
- package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
- package/es/ProTable/parts/renderValue.mjs +118 -0
- package/es/ProTable/parts/renderValue.mjs.map +1 -0
- package/es/ProTable/style.mjs +278 -0
- package/es/ProTable/style.mjs.map +1 -0
- package/es/ProTable/type.d.mts +397 -0
- package/es/ProTable/utils.mjs +152 -0
- package/es/ProTable/utils.mjs.map +1 -0
- package/es/Radio/Radio.mjs +3 -3
- package/es/Radio/Radio.mjs.map +1 -1
- package/es/ScrollArea/atoms.mjs +4 -4
- package/es/ScrollArea/atoms.mjs.map +1 -1
- package/es/Segmented/Segmented.mjs +3 -3
- package/es/Segmented/Segmented.mjs.map +1 -1
- package/es/Segmented/atoms.mjs +2 -2
- package/es/Segmented/atoms.mjs.map +1 -1
- package/es/Select/Select.mjs +22 -13
- package/es/Select/Select.mjs.map +1 -1
- package/es/Select/atoms.mjs +4 -4
- package/es/Select/atoms.mjs.map +1 -1
- package/es/Select/helpers.mjs +8 -1
- package/es/Select/helpers.mjs.map +1 -1
- package/es/Select/hooks.mjs +8 -4
- package/es/Select/hooks.mjs.map +1 -1
- package/es/Select/renderOptions.mjs +2 -2
- package/es/Select/renderOptions.mjs.map +1 -1
- package/es/Select/type.d.mts +7 -0
- package/es/Switch/Switch.mjs +2 -2
- package/es/Switch/Switch.mjs.map +1 -1
- package/es/Switch/atoms.mjs +2 -2
- package/es/Switch/atoms.mjs.map +1 -1
- package/es/Table/Column.d.mts +8 -0
- package/es/Table/Column.mjs +6 -0
- package/es/Table/Column.mjs.map +1 -0
- package/es/Table/ColumnGroup.d.mts +11 -0
- package/es/Table/ColumnGroup.mjs +6 -0
- package/es/Table/ColumnGroup.mjs.map +1 -0
- package/es/Table/Table.d.mts +16 -2
- package/es/Table/Table.mjs +149 -118
- package/es/Table/Table.mjs.map +1 -1
- package/es/Table/atoms/cells.d.mts +42 -0
- package/es/Table/atoms/cells.mjs +72 -0
- package/es/Table/atoms/cells.mjs.map +1 -0
- package/es/Table/atoms/index.d.mts +3 -0
- package/es/Table/atoms/layout.d.mts +44 -0
- package/es/Table/atoms/layout.mjs +62 -0
- package/es/Table/atoms/layout.mjs.map +1 -0
- package/es/Table/constants.mjs +16 -0
- package/es/Table/constants.mjs.map +1 -0
- package/es/Table/engine/fixed.d.mts +1 -0
- package/es/Table/engine/fixed.mjs +53 -0
- package/es/Table/engine/fixed.mjs.map +1 -0
- package/es/Table/engine/types.d.mts +1 -0
- package/es/Table/engine/useTableEngine.mjs +180 -0
- package/es/Table/engine/useTableEngine.mjs.map +1 -0
- package/es/Table/index.d.mts +7 -2
- package/es/Table/index.mjs +4 -1
- package/es/Table/internal.d.mts +3 -0
- package/es/Table/pipeline/columnUtils.d.mts +5 -0
- package/es/Table/pipeline/columnUtils.mjs +58 -0
- package/es/Table/pipeline/columnUtils.mjs.map +1 -0
- package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
- package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
- package/es/Table/pipeline/normalizeColumns.mjs +140 -0
- package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
- package/es/Table/pipeline/selectionUtils.d.mts +9 -0
- package/es/Table/pipeline/selectionUtils.mjs +115 -0
- package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
- package/es/Table/pipeline/useBreakpoint.mjs +36 -0
- package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
- package/es/Table/pipeline/useExpandable.mjs +45 -0
- package/es/Table/pipeline/useExpandable.mjs.map +1 -0
- package/es/Table/pipeline/useFilter.mjs +52 -0
- package/es/Table/pipeline/useFilter.mjs.map +1 -0
- package/es/Table/pipeline/useSelection.mjs +302 -0
- package/es/Table/pipeline/useSelection.mjs.map +1 -0
- package/es/Table/pipeline/useSorter.mjs +146 -0
- package/es/Table/pipeline/useSorter.mjs.map +1 -0
- package/es/Table/pipeline/useTableLocale.mjs +30 -0
- package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
- package/es/Table/pipeline/useTableState.mjs +118 -0
- package/es/Table/pipeline/useTableState.mjs.map +1 -0
- package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
- package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
- package/es/Table/render/Body.mjs +150 -0
- package/es/Table/render/Body.mjs.map +1 -0
- package/es/Table/render/BodyCell.mjs +87 -0
- package/es/Table/render/BodyCell.mjs.map +1 -0
- package/es/Table/render/CellShell.mjs +84 -0
- package/es/Table/render/CellShell.mjs.map +1 -0
- package/es/Table/render/ExpandIcon.mjs +28 -0
- package/es/Table/render/ExpandIcon.mjs.map +1 -0
- package/es/Table/render/FilterDropdown.mjs +139 -0
- package/es/Table/render/FilterDropdown.mjs.map +1 -0
- package/es/Table/render/FilterPanel.mjs +152 -0
- package/es/Table/render/FilterPanel.mjs.map +1 -0
- package/es/Table/render/FixedFrost.mjs +113 -0
- package/es/Table/render/FixedFrost.mjs.map +1 -0
- package/es/Table/render/FixedHolder.mjs +51 -0
- package/es/Table/render/FixedHolder.mjs.map +1 -0
- package/es/Table/render/Header.mjs +184 -0
- package/es/Table/render/Header.mjs.map +1 -0
- package/es/Table/render/LoadingSkeleton.mjs +78 -0
- package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
- package/es/Table/render/PaginationBar.mjs +71 -0
- package/es/Table/render/PaginationBar.mjs.map +1 -0
- package/es/Table/render/SelectionCells.mjs +111 -0
- package/es/Table/render/SelectionCells.mjs.map +1 -0
- package/es/Table/render/StickyScrollBar.mjs +99 -0
- package/es/Table/render/StickyScrollBar.mjs.map +1 -0
- package/es/Table/render/Summary.d.mts +16 -0
- package/es/Table/render/Summary.mjs +58 -0
- package/es/Table/render/Summary.mjs.map +1 -0
- package/es/Table/render/TableView.mjs +215 -0
- package/es/Table/render/TableView.mjs.map +1 -0
- package/es/Table/render/VirtualBody.mjs +101 -0
- package/es/Table/render/VirtualBody.mjs.map +1 -0
- package/es/Table/render/context.mjs +15 -0
- package/es/Table/render/context.mjs.map +1 -0
- package/es/Table/render/filterUtils.mjs +22 -0
- package/es/Table/render/filterUtils.mjs.map +1 -0
- package/es/Table/render/tableHelpers.mjs +27 -0
- package/es/Table/render/tableHelpers.mjs.map +1 -0
- package/es/Table/render/useColGroups.mjs +23 -0
- package/es/Table/render/useColGroups.mjs.map +1 -0
- package/es/Table/render/useScrollSync.mjs +104 -0
- package/es/Table/render/useScrollSync.mjs.map +1 -0
- package/es/Table/render/useViewContexts.mjs +134 -0
- package/es/Table/render/useViewContexts.mjs.map +1 -0
- package/es/Table/semantic.mjs +45 -0
- package/es/Table/semantic.mjs.map +1 -0
- package/es/Table/store/createTableStore.d.mts +1 -0
- package/es/Table/store/createTableStore.mjs +40 -0
- package/es/Table/store/createTableStore.mjs.map +1 -0
- package/es/Table/store/hooks.mjs +24 -0
- package/es/Table/store/hooks.mjs.map +1 -0
- package/es/Table/style.mjs +175 -90
- package/es/Table/style.mjs.map +1 -1
- package/es/Table/type.d.mts +467 -37
- package/es/Table/useTableController.mjs +293 -0
- package/es/Table/useTableController.mjs.map +1 -0
- package/es/Tabs/Tabs.mjs +2 -2
- package/es/Tabs/Tabs.mjs.map +1 -1
- package/es/Tabs/atoms.mjs +2 -2
- package/es/Tabs/atoms.mjs.map +1 -1
- package/es/Tag/Tag.mjs +2 -2
- package/es/Tag/Tag.mjs.map +1 -1
- package/es/Text/Text.mjs +2 -2
- package/es/Text/Text.mjs.map +1 -1
- package/es/Text/style.d.mts +3 -3
- package/es/Text/style.mjs +3 -3
- package/es/Text/style.mjs.map +1 -1
- package/es/ToggleGroup/ToggleGroup.mjs +3 -3
- package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
- package/es/ToggleGroup/atoms.mjs +2 -2
- package/es/ToggleGroup/atoms.mjs.map +1 -1
- package/es/Tooltip/TooltipGroup.mjs +3 -3
- package/es/Tooltip/TooltipGroup.mjs.map +1 -1
- package/es/Tooltip/TooltipStandalone.mjs +3 -3
- package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/Tree/Tree.mjs +2 -2
- package/es/Tree/Tree.mjs.map +1 -1
- package/es/Tree/TreeNode.mjs +2 -2
- package/es/Tree/TreeNode.mjs.map +1 -1
- package/es/Video/Video.mjs +2 -2
- package/es/Video/Video.mjs.map +1 -1
- package/es/awesome/Features/FeatureItem.mjs +2 -2
- package/es/awesome/Features/FeatureItem.mjs.map +1 -1
- package/es/awesome/Hero/Hero.mjs +3 -3
- package/es/awesome/Hero/Hero.mjs.map +1 -1
- package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
- package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
- package/es/awesome/LandingHero/LandingHero.mjs +3 -3
- package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
- package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
- package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
- package/es/awesome/landingActions.mjs +2 -2
- package/es/awesome/landingActions.mjs.map +1 -1
- package/es/chat/ChatItem/ChatItem.mjs +2 -2
- package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
- package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
- package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
- package/es/chat/MessageInput/MessageInput.mjs +3 -3
- package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
- package/es/dashboard/AuthLayout/AuthLayout.mjs +8 -4
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
- package/es/dashboard/AuthLayout/style.mjs +14 -3
- package/es/dashboard/AuthLayout/style.mjs.map +1 -1
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +2 -2
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -1
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +2 -2
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/style.mjs +2 -2
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/style.mjs +1 -1
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
- package/es/dashboard/FilterSidebar/style.mjs +2 -2
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
- package/es/dashboard/FilterStrip/style.mjs +1 -1
- package/es/dashboard/FilterStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/MetricCell.mjs +25 -14
- package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -1
- package/es/dashboard/MetricStrip/style.mjs +14 -1
- package/es/dashboard/MetricStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/type.d.mts +2 -0
- package/es/dashboard/PageSkeleton/style.mjs +2 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/StatCard/StatCard.d.mts +1 -1
- package/es/dashboard/StatCard/StatCard.mjs +2 -1
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
- package/es/dashboard/StatCard/type.d.mts +2 -0
- package/es/dashboard/Surface/Surface.mjs +3 -4
- package/es/dashboard/Surface/Surface.mjs.map +1 -1
- package/es/dashboard/Surface/link.mjs +1 -1
- package/es/dashboard/Surface/link.mjs.map +1 -1
- package/es/dashboard/Surface/style.mjs +15 -14
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/es/dashboard/index.mjs +2 -2
- package/es/eslint/noBaseUiSubpath.mjs +2 -1
- package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
- package/es/i18n/resources/en/colorPicker.d.mts +5 -0
- package/es/i18n/resources/en/colorPicker.mjs +5 -0
- package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
- package/es/i18n/resources/en/datePicker.d.mts +54 -0
- package/es/i18n/resources/en/datePicker.mjs +55 -1
- package/es/i18n/resources/en/datePicker.mjs.map +1 -1
- package/es/i18n/resources/en/index.d.mts +4 -3
- package/es/i18n/resources/en/index.mjs +3 -1
- package/es/i18n/resources/en/index.mjs.map +1 -1
- package/es/i18n/resources/en/table.d.mts +23 -0
- package/es/i18n/resources/en/table.mjs +24 -0
- package/es/i18n/resources/en/table.mjs.map +1 -0
- package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
- package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
- package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/index.d.mts +4 -3
- package/es/i18n/resources/zhCn/index.mjs +4 -2
- package/es/i18n/resources/zhCn/index.mjs.map +1 -1
- package/es/i18n/resources/zhCn/table.d.mts +23 -0
- package/es/i18n/resources/zhCn/table.mjs +24 -0
- package/es/i18n/resources/zhCn/table.mjs.map +1 -0
- package/es/i18n/types.d.mts +3 -2
- package/es/index.d.mts +15 -6
- package/es/index.mjs +12 -6
- package/es/internal/overflow/OverflowList.mjs +71 -0
- package/es/internal/overflow/OverflowList.mjs.map +1 -0
- package/es/mdx/Callout/index.mjs +2 -2
- package/es/mdx/Callout/index.mjs.map +1 -1
- package/es/mdx/Cards/Card.mjs +2 -2
- package/es/mdx/Cards/Card.mjs.map +1 -1
- package/es/mdx/Cards/index.mjs +2 -2
- package/es/mdx/Cards/index.mjs.map +1 -1
- package/es/mdx/Mdx/index.mjs +2 -2
- package/es/mdx/Mdx/index.mjs.map +1 -1
- package/es/mdx/Steps/index.mjs +2 -2
- package/es/mdx/Steps/index.mjs.map +1 -1
- package/es/mdx/mdxComponents/Pre.mjs +5 -5
- package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
- package/es/storybook/StoryBook/style.mjs +2 -0
- package/es/storybook/StoryBook/style.mjs.map +1 -1
- package/es/style.css +2966 -957
- package/es/styles/stylex/props.mjs +2 -2
- package/es/styles/stylex/props.mjs.map +1 -1
- package/es/styles/theme/themeCss.mjs +15 -0
- package/es/styles/theme/themeCss.mjs.map +1 -1
- package/es/theme.css +8 -0
- package/package.json +6 -1
- package/es/DatePicker/CalendarPanel.mjs +0 -189
- package/es/DatePicker/CalendarPanel.mjs.map +0 -1
- package/es/DatePicker/PickerShell.mjs +0 -43
- package/es/DatePicker/PickerShell.mjs.map +0 -1
- package/es/DatePicker/calendar.d.mts +0 -4
- package/es/DatePicker/calendar.mjs +0 -46
- package/es/DatePicker/calendar.mjs.map +0 -1
- package/es/Table/FilterMenu.mjs +0 -45
- package/es/Table/FilterMenu.mjs.map +0 -1
- package/es/Table/TableBody.mjs +0 -67
- package/es/Table/TableBody.mjs.map +0 -1
- package/es/Table/TableHead.mjs +0 -58
- package/es/Table/TableHead.mjs.map +0 -1
- package/es/Table/features.mjs +0 -12
- package/es/Table/features.mjs.map +0 -1
- package/es/Table/fixedOffsets.mjs +0 -29
- package/es/Table/fixedOffsets.mjs.map +0 -1
- package/es/Table/marker.stylex.mjs +0 -9
- package/es/Table/marker.stylex.mjs.map +0 -1
- package/es/Table/toColumnDefs.mjs +0 -26
- package/es/Table/toColumnDefs.mjs.map +0 -1
- package/es/Table/useTableState.mjs +0 -99
- package/es/Table/useTableState.mjs.map +0 -1
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
import { InputSize } from "../Input/type.mjs";
|
|
2
2
|
import { CSSProperties, ReactElement } from "react";
|
|
3
3
|
//#region src/ColorPicker/type.d.ts
|
|
4
|
+
export type ColorPickerFormat = 'hex' | 'rgb' | 'hsl';
|
|
5
|
+
export type ColorPickerTrigger = 'swatch' | 'field' | 'chip';
|
|
4
6
|
export interface ColorPickerProps {
|
|
5
7
|
alpha?: boolean;
|
|
6
8
|
children?: ReactElement;
|
|
7
9
|
className?: string;
|
|
10
|
+
defaultFormat?: ColorPickerFormat;
|
|
8
11
|
defaultValue?: string;
|
|
9
12
|
disabled?: boolean;
|
|
10
13
|
onChange?: (hex: string) => void;
|
|
11
14
|
onChangeComplete?: (hex: string) => void;
|
|
12
15
|
presets?: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Show the colours committed in this session under a Recent tab. Defaults to `true`.
|
|
18
|
+
*/
|
|
19
|
+
recent?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Same as `trigger="field"`.
|
|
22
|
+
*/
|
|
13
23
|
showText?: boolean;
|
|
14
24
|
size?: InputSize;
|
|
15
25
|
style?: CSSProperties;
|
|
26
|
+
/**
|
|
27
|
+
* `swatch` (default) is a colour tile; `field` is an input-like control with the hex,
|
|
28
|
+
* alpha and a caret; `chip` is a rounded pill for toolbars.
|
|
29
|
+
*/
|
|
30
|
+
trigger?: ColorPickerTrigger;
|
|
16
31
|
value?: string;
|
|
17
32
|
}
|
|
18
33
|
//#endregion
|
|
@@ -12,7 +12,7 @@ import { renderContextMenuItems } from "./renderItems.mjs";
|
|
|
12
12
|
import { closeContextMenu, getServerSnapshot, getSnapshot, setContextMenuState, subscribe, updateLastPointer } from "./store.mjs";
|
|
13
13
|
import { memo, useEffect, useMemo, useSyncExternalStore } from "react";
|
|
14
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
-
import clsx from "clsx";
|
|
15
|
+
import clsx$1 from "clsx";
|
|
16
16
|
import * as stylex from "@stylexjs/stylex";
|
|
17
17
|
import { ContextMenu } from "@base-ui/react/context-menu";
|
|
18
18
|
//#region src/ContextMenu/ContextMenuHost.tsx
|
|
@@ -71,7 +71,7 @@ const ContextMenuHost = memo(() => {
|
|
|
71
71
|
children: /* @__PURE__ */ jsxs(ContextMenu.Popup, {
|
|
72
72
|
"data-has-footer": state.footer == null ? void 0 : "",
|
|
73
73
|
"data-has-header": state.header == null ? void 0 : "",
|
|
74
|
-
className: clsx(stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
|
|
74
|
+
className: clsx$1(stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
|
|
75
75
|
onContextMenu: preventDefaultAndStopPropagation,
|
|
76
76
|
children: [
|
|
77
77
|
state.header == null ? null : /* @__PURE__ */ jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuHost.mjs","names":[],"sources":["../../src/ContextMenu/ContextMenuHost.tsx"],"sourcesContent":["'use client';\n\nimport { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, useEffect, useMemo, useSyncExternalStore } from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { MenuVirtualList } from '@/internal/virtual';\nimport { registerDevSingleton } from '@/utils/devSingleton';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { renderContextMenuItems } from './renderItems';\nimport {\n closeContextMenu,\n getServerSnapshot,\n getSnapshot,\n setContextMenuState,\n subscribe,\n updateLastPointer,\n} from './store';\nimport { menuClassNames, menuStyles, styles } from './style';\n\nconst noAnimationStyles = { '--lobe-dropdown-animation-duration': '0ms' } as React.CSSProperties;\n\nexport const ContextMenuHost = memo(() => {\n const isClient = useIsClient();\n const appElement = useAppElement();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n const DEV = process.env.NODE_ENV === 'development';\n if (!isClient || !DEV) return;\n return registerDevSingleton('ContextMenuHost', document.body);\n }, [isClient]);\n\n useEffect(() => {\n const handler = (event: MouseEvent | PointerEvent) => updateLastPointer(event);\n window.addEventListener('pointerdown', handler, true);\n window.addEventListener('contextmenu', handler, true);\n return () => {\n window.removeEventListener('pointerdown', handler, true);\n window.removeEventListener('contextmenu', handler, true);\n };\n }, []);\n\n const menuItems = useMemo(\n () =>\n renderContextMenuItems(state.items, [], {\n iconAlign: state.iconAlign,\n iconSpaceMode: state.iconSpaceMode,\n }),\n [state.items, state.iconAlign, state.iconSpaceMode],\n );\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating');\n const hasSlots = state.header != null || state.footer != null;\n if (!isClient) return null;\n if (!state.open && state.items.length === 0) return null;\n\n return (\n <ContextMenu.Root\n open={state.open}\n onOpenChange={(open) => {\n if (open) {\n setContextMenuState({ open });\n return;\n }\n closeContextMenu();\n }}\n >\n <ContextMenu.Portal container={appElement}>\n <ContextMenu.Positioner\n anchor={state.anchor ?? undefined}\n className={styles.positioner}\n collisionPadding={getFloatingCollisionPadding()}\n ref={zRef as any}\n sideOffset={6}\n style={{ ...noAnimationStyles, zIndex }}\n >\n <ContextMenu.Popup\n data-has-footer={state.footer == null ? undefined : ''}\n data-has-header={state.header == null ? undefined : ''}\n className={clsx(\n stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className,\n menuClassNames.popup,\n )}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n {state.header == null ? null : <div className={styles.header}>{state.header}</div>}\n {state.virtual ? (\n <MenuVirtualList itemSize={state.listItemHeight}>{menuItems}</MenuVirtualList>\n ) : hasSlots ? (\n <div className={styles.slotViewport}>{menuItems}</div>\n ) : (\n menuItems\n )}\n {state.footer == null ? null : <div className={styles.footer}>{state.footer}</div>}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n});\n\nContextMenuHost.displayName = 'ContextMenuHost';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB,EACxB,sCAAsC,MACxC;AACA,MAAa,kBAAkB,WAAW;CACxC,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,cAAc;CACjC,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,gBAAgB;EACd,MAAM,MAAM,QAAQ,IAAI,aAAa;EACrC,IAAI,CAAC,YAAY,CAAC,KAAK;EACvB,OAAO,qBAAqB,mBAAmB,SAAS,IAAI;CAC9D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,MAAM,WAAW,UAAqC,kBAAkB,KAAK;EAC7E,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,aAAa;GACX,OAAO,oBAAoB,eAAe,SAAS,IAAI;GACvD,OAAO,oBAAoB,eAAe,SAAS,IAAI;EACzD;CACF,GAAG,CAAC,CAAC;CACL,MAAM,YAAY,cAAc,uBAAuB,MAAM,OAAO,CAAC,GAAG;EACtE,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB,CAAC,GAAG;EAAC,MAAM;EAAO,MAAM;EAAW,MAAM;CAAa,CAAC;CACvD,MAAM,EACJ,QACA,KAAK,SACH,eAA+B,UAAU;CAC7C,MAAM,WAAW,MAAM,UAAU,QAAQ,MAAM,UAAU;CACzD,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,WAAW,GAAG,OAAO;CACpD,OAAO,oBAAC,YAAY,MAAb;EAAkB,MAAM,MAAM;EAAM,eAAc,SAAQ;GAC/D,IAAI,MAAM;IACR,oBAAoB,EAClB,KACF,CAAC;IACD;GACF;GACA,iBAAiB;EACnB;EACI,UAAA,oBAAC,YAAY,QAAb;GAAoB,WAAW;GAC7B,UAAA,oBAAC,YAAY,YAAb;IAAwB,QAAQ,MAAM,UAAU,KAAA;IAAW,WAAW,OAAO;IAAY,kBAAkB,4BAA4B;IAAG,KAAK;IAAa,YAAY;IAAG,OAAO;KAClL,GAAG;KACH;IACF;IACI,UAAA,qBAAC,YAAY,OAAb;KAAmB,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,
|
|
1
|
+
{"version":3,"file":"ContextMenuHost.mjs","names":["clsx"],"sources":["../../src/ContextMenu/ContextMenuHost.tsx"],"sourcesContent":["'use client';\n\nimport { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, useEffect, useMemo, useSyncExternalStore } from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { MenuVirtualList } from '@/internal/virtual';\nimport { registerDevSingleton } from '@/utils/devSingleton';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { renderContextMenuItems } from './renderItems';\nimport {\n closeContextMenu,\n getServerSnapshot,\n getSnapshot,\n setContextMenuState,\n subscribe,\n updateLastPointer,\n} from './store';\nimport { menuClassNames, menuStyles, styles } from './style';\n\nconst noAnimationStyles = { '--lobe-dropdown-animation-duration': '0ms' } as React.CSSProperties;\n\nexport const ContextMenuHost = memo(() => {\n const isClient = useIsClient();\n const appElement = useAppElement();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n const DEV = process.env.NODE_ENV === 'development';\n if (!isClient || !DEV) return;\n return registerDevSingleton('ContextMenuHost', document.body);\n }, [isClient]);\n\n useEffect(() => {\n const handler = (event: MouseEvent | PointerEvent) => updateLastPointer(event);\n window.addEventListener('pointerdown', handler, true);\n window.addEventListener('contextmenu', handler, true);\n return () => {\n window.removeEventListener('pointerdown', handler, true);\n window.removeEventListener('contextmenu', handler, true);\n };\n }, []);\n\n const menuItems = useMemo(\n () =>\n renderContextMenuItems(state.items, [], {\n iconAlign: state.iconAlign,\n iconSpaceMode: state.iconSpaceMode,\n }),\n [state.items, state.iconAlign, state.iconSpaceMode],\n );\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating');\n const hasSlots = state.header != null || state.footer != null;\n if (!isClient) return null;\n if (!state.open && state.items.length === 0) return null;\n\n return (\n <ContextMenu.Root\n open={state.open}\n onOpenChange={(open) => {\n if (open) {\n setContextMenuState({ open });\n return;\n }\n closeContextMenu();\n }}\n >\n <ContextMenu.Portal container={appElement}>\n <ContextMenu.Positioner\n anchor={state.anchor ?? undefined}\n className={styles.positioner}\n collisionPadding={getFloatingCollisionPadding()}\n ref={zRef as any}\n sideOffset={6}\n style={{ ...noAnimationStyles, zIndex }}\n >\n <ContextMenu.Popup\n data-has-footer={state.footer == null ? undefined : ''}\n data-has-header={state.header == null ? undefined : ''}\n className={clsx(\n stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className,\n menuClassNames.popup,\n )}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n {state.header == null ? null : <div className={styles.header}>{state.header}</div>}\n {state.virtual ? (\n <MenuVirtualList itemSize={state.listItemHeight}>{menuItems}</MenuVirtualList>\n ) : hasSlots ? (\n <div className={styles.slotViewport}>{menuItems}</div>\n ) : (\n menuItems\n )}\n {state.footer == null ? null : <div className={styles.footer}>{state.footer}</div>}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n});\n\nContextMenuHost.displayName = 'ContextMenuHost';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB,EACxB,sCAAsC,MACxC;AACA,MAAa,kBAAkB,WAAW;CACxC,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,cAAc;CACjC,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,gBAAgB;EACd,MAAM,MAAM,QAAQ,IAAI,aAAa;EACrC,IAAI,CAAC,YAAY,CAAC,KAAK;EACvB,OAAO,qBAAqB,mBAAmB,SAAS,IAAI;CAC9D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,MAAM,WAAW,UAAqC,kBAAkB,KAAK;EAC7E,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,aAAa;GACX,OAAO,oBAAoB,eAAe,SAAS,IAAI;GACvD,OAAO,oBAAoB,eAAe,SAAS,IAAI;EACzD;CACF,GAAG,CAAC,CAAC;CACL,MAAM,YAAY,cAAc,uBAAuB,MAAM,OAAO,CAAC,GAAG;EACtE,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB,CAAC,GAAG;EAAC,MAAM;EAAO,MAAM;EAAW,MAAM;CAAa,CAAC;CACvD,MAAM,EACJ,QACA,KAAK,SACH,eAA+B,UAAU;CAC7C,MAAM,WAAW,MAAM,UAAU,QAAQ,MAAM,UAAU;CACzD,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,WAAW,GAAG,OAAO;CACpD,OAAO,oBAAC,YAAY,MAAb;EAAkB,MAAM,MAAM;EAAM,eAAc,SAAQ;GAC/D,IAAI,MAAM;IACR,oBAAoB,EAClB,KACF,CAAC;IACD;GACF;GACA,iBAAiB;EACnB;EACI,UAAA,oBAAC,YAAY,QAAb;GAAoB,WAAW;GAC7B,UAAA,oBAAC,YAAY,YAAb;IAAwB,QAAQ,MAAM,UAAU,KAAA;IAAW,WAAW,OAAO;IAAY,kBAAkB,4BAA4B;IAAG,KAAK;IAAa,YAAY;IAAG,OAAO;KAClL,GAAG;KACH;IACF;IACI,UAAA,qBAAC,YAAY,OAAb;KAAmB,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,WAAWA,OAAK,OAAO,MAAM,WAAW,OAAO,YAAY,WAAW,cAAc,CAAC,CAAC,WAAW,eAAe,KAAK;KAAG,eAAe;KAA1Q,UAAA;MACG,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;MAChF,MAAM,UAAU,oBAAC,iBAAD;OAAiB,UAAU,MAAM;OAAiB,UAAA;MAA2B,CAAA,IAAI,WAAW,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAe,UAAA;MAAe,CAAA,IAAI;MACrK,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;KAChE;;GACG,CAAA;EACN,CAAA;CACJ,CAAA;AACtB,CAAC;AACD,gBAAgB,cAAc"}
|
|
@@ -3,7 +3,7 @@ import { CLASSNAMES } from "../styles/classNames.mjs";
|
|
|
3
3
|
import { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from "./store.mjs";
|
|
4
4
|
import React, { cloneElement, isValidElement, memo, useCallback, useId, useSyncExternalStore } from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
|
-
import clsx from "clsx";
|
|
6
|
+
import clsx$1 from "clsx";
|
|
7
7
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
8
8
|
//#region src/ContextMenu/ContextMenuTrigger.tsx
|
|
9
9
|
const styles = { trigger: { display: "contents" } };
|
|
@@ -34,7 +34,7 @@ const ContextMenuTrigger = memo(({ children, footer, header, items, listItemHeig
|
|
|
34
34
|
const triggerProps = {
|
|
35
35
|
...rest,
|
|
36
36
|
"aria-expanded": open || void 0,
|
|
37
|
-
"className": clsx(CLASSNAMES.ContextTrigger, rest.className),
|
|
37
|
+
"className": clsx$1(CLASSNAMES.ContextTrigger, rest.className),
|
|
38
38
|
"data-contextmenu-trigger": triggerId,
|
|
39
39
|
"data-popup-open": open ? "" : void 0,
|
|
40
40
|
"data-state": open ? "open" : void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuTrigger.mjs","names":[],"sources":["../../src/ContextMenu/ContextMenuTrigger.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport clsx from 'clsx';\nimport React, {\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useId,\n useSyncExternalStore,\n} from 'react';\n\nimport type { VirtualListProps } from '@/internal/virtual';\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from './store';\nimport { type ContextMenuItem } from './type';\n\nexport type ContextMenuTriggerProps = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n children: ReactNode;\n /**\n * Footer slot pinned below the scrollable items area, with a divider border.\n */\n footer?: ReactNode;\n /**\n * Header slot pinned above the scrollable items area, with a divider border.\n */\n header?: ReactNode;\n /**\n * Menu items to display. Supports lazy rendering via function.\n * When provided, context menu will be automatically shown on right-click.\n */\n items?: ContextMenuItem[] | (() => ContextMenuItem[]);\n /**\n * Custom context menu handler. If `items` is provided, this is optional.\n */\n onContextMenu?: (event: MouseEvent<HTMLElement>) => void;\n} & Omit<HTMLAttributes<HTMLElement>, 'onContextMenu' | 'children'>;\n\nconst styles = {\n trigger: {\n display: 'contents',\n },\n};\n\nexport const ContextMenuTrigger = memo<ContextMenuTriggerProps>(\n ({ children, footer, header, items, listItemHeight, onContextMenu, virtual, ...rest }) => {\n const triggerId = useId();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const open = state.open && state.triggerId === triggerId;\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (items) {\n event.preventDefault();\n const resolvedItems = typeof items === 'function' ? items() : items;\n showContextMenu(resolvedItems, { footer, header, listItemHeight, virtual });\n }\n onContextMenu?.(event);\n },\n [items, onContextMenu, footer, header, listItemHeight, virtual],\n );\n\n const triggerProps = {\n ...rest,\n 'aria-expanded': open || undefined,\n 'className': clsx(CLASSNAMES.ContextTrigger, rest.className),\n 'data-contextmenu-trigger': triggerId,\n 'data-popup-open': open ? '' : undefined,\n 'data-state': open ? 'open' : undefined,\n 'onContextMenu': handleContextMenu,\n };\n\n if (isValidElement(children) && React.Children.only(children)) {\n return cloneElement(children, mergeProps(children.props as any, triggerProps));\n }\n\n return (\n <span style={styles.trigger} {...triggerProps}>\n {children}\n </span>\n );\n },\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\n"],"mappings":";;;;;;;;AA2CA,MAAM,SAAS,EACb,SAAS,EACP,SAAS,WACX,EACF;AAEA,MAAa,qBAAqB,MAC/B,EAAE,UAAU,QAAQ,QAAQ,OAAO,gBAAgB,eAAe,SAAS,GAAG,WAAW;CACxF,MAAM,YAAY,MAAM;CACxB,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,MAAM,OAAO,MAAM,QAAQ,MAAM,cAAc;CAE/C,MAAM,oBAAoB,aACvB,UAAmC;EAClC,IAAI,OAAO;GACT,MAAM,eAAe;GACrB,MAAM,gBAAgB,OAAO,UAAU,aAAa,MAAM,IAAI;GAC9D,gBAAgB,eAAe;IAAE;IAAQ;IAAQ;IAAgB;GAAQ,CAAC;EAC5E;EACA,gBAAgB,KAAK;CACvB,GACA;EAAC;EAAO;EAAe;EAAQ;EAAQ;EAAgB;CAAO,CAChE;CAEA,MAAM,eAAe;EACnB,GAAG;EACH,iBAAiB,QAAQ,KAAA;EACzB,
|
|
1
|
+
{"version":3,"file":"ContextMenuTrigger.mjs","names":["clsx"],"sources":["../../src/ContextMenu/ContextMenuTrigger.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport clsx from 'clsx';\nimport React, {\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useId,\n useSyncExternalStore,\n} from 'react';\n\nimport type { VirtualListProps } from '@/internal/virtual';\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from './store';\nimport { type ContextMenuItem } from './type';\n\nexport type ContextMenuTriggerProps = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n children: ReactNode;\n /**\n * Footer slot pinned below the scrollable items area, with a divider border.\n */\n footer?: ReactNode;\n /**\n * Header slot pinned above the scrollable items area, with a divider border.\n */\n header?: ReactNode;\n /**\n * Menu items to display. Supports lazy rendering via function.\n * When provided, context menu will be automatically shown on right-click.\n */\n items?: ContextMenuItem[] | (() => ContextMenuItem[]);\n /**\n * Custom context menu handler. If `items` is provided, this is optional.\n */\n onContextMenu?: (event: MouseEvent<HTMLElement>) => void;\n} & Omit<HTMLAttributes<HTMLElement>, 'onContextMenu' | 'children'>;\n\nconst styles = {\n trigger: {\n display: 'contents',\n },\n};\n\nexport const ContextMenuTrigger = memo<ContextMenuTriggerProps>(\n ({ children, footer, header, items, listItemHeight, onContextMenu, virtual, ...rest }) => {\n const triggerId = useId();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const open = state.open && state.triggerId === triggerId;\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (items) {\n event.preventDefault();\n const resolvedItems = typeof items === 'function' ? items() : items;\n showContextMenu(resolvedItems, { footer, header, listItemHeight, virtual });\n }\n onContextMenu?.(event);\n },\n [items, onContextMenu, footer, header, listItemHeight, virtual],\n );\n\n const triggerProps = {\n ...rest,\n 'aria-expanded': open || undefined,\n 'className': clsx(CLASSNAMES.ContextTrigger, rest.className),\n 'data-contextmenu-trigger': triggerId,\n 'data-popup-open': open ? '' : undefined,\n 'data-state': open ? 'open' : undefined,\n 'onContextMenu': handleContextMenu,\n };\n\n if (isValidElement(children) && React.Children.only(children)) {\n return cloneElement(children, mergeProps(children.props as any, triggerProps));\n }\n\n return (\n <span style={styles.trigger} {...triggerProps}>\n {children}\n </span>\n );\n },\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\n"],"mappings":";;;;;;;;AA2CA,MAAM,SAAS,EACb,SAAS,EACP,SAAS,WACX,EACF;AAEA,MAAa,qBAAqB,MAC/B,EAAE,UAAU,QAAQ,QAAQ,OAAO,gBAAgB,eAAe,SAAS,GAAG,WAAW;CACxF,MAAM,YAAY,MAAM;CACxB,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,MAAM,OAAO,MAAM,QAAQ,MAAM,cAAc;CAE/C,MAAM,oBAAoB,aACvB,UAAmC;EAClC,IAAI,OAAO;GACT,MAAM,eAAe;GACrB,MAAM,gBAAgB,OAAO,UAAU,aAAa,MAAM,IAAI;GAC9D,gBAAgB,eAAe;IAAE;IAAQ;IAAQ;IAAgB;GAAQ,CAAC;EAC5E;EACA,gBAAgB,KAAK;CACvB,GACA;EAAC;EAAO;EAAe;EAAQ;EAAQ;EAAgB;CAAO,CAChE;CAEA,MAAM,eAAe;EACnB,GAAG;EACH,iBAAiB,QAAQ,KAAA;EACzB,aAAaA,OAAK,WAAW,gBAAgB,KAAK,SAAS;EAC3D,4BAA4B;EAC5B,mBAAmB,OAAO,KAAK,KAAA;EAC/B,cAAc,OAAO,SAAS,KAAA;EAC9B,iBAAiB;CACnB;CAEA,IAAI,eAAe,QAAQ,KAAK,MAAM,SAAS,KAAK,QAAQ,GAC1D,OAAO,aAAa,UAAU,WAAW,SAAS,OAAc,YAAY,CAAC;CAG/E,OACE,oBAAC,QAAD;EAAM,OAAO,OAAO;EAAS,GAAI;EAC9B;CACG,CAAA;AAEV,CACF;AAEA,mBAAmB,cAAc"}
|
|
@@ -11,7 +11,7 @@ import { styles } from "../DropdownMenu/sharedStyle.mjs";
|
|
|
11
11
|
import { preventDefaultAndStopPropagation } from "../utils/dom.mjs";
|
|
12
12
|
import { memo, useCallback, useState } from "react";
|
|
13
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
-
import clsx from "clsx";
|
|
14
|
+
import clsx$1 from "clsx";
|
|
15
15
|
import * as stylex from "@stylexjs/stylex";
|
|
16
16
|
import { Check } from "lucide-react";
|
|
17
17
|
import { ContextMenu } from "@base-ui/react/context-menu";
|
|
@@ -115,7 +115,7 @@ const renderItemContent = (item, options, iconNode) => {
|
|
|
115
115
|
children: [
|
|
116
116
|
shouldRenderIcon ? /* @__PURE__ */ jsx("span", {
|
|
117
117
|
"aria-hidden": !hasIcon,
|
|
118
|
-
className: clsx(stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className, menuClassNames.icon),
|
|
118
|
+
className: clsx$1(stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className, menuClassNames.icon),
|
|
119
119
|
children: hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, "small") : null
|
|
120
120
|
}) : null,
|
|
121
121
|
labelNode,
|
|
@@ -245,7 +245,7 @@ const renderContextMenuItems = (items, keyPath = [], options) => {
|
|
|
245
245
|
sideOffset: -1,
|
|
246
246
|
onContextMenu: preventDefaultAndStopPropagation,
|
|
247
247
|
children: /* @__PURE__ */ jsxs(ContextMenu.Popup, {
|
|
248
|
-
className: clsx(stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
|
|
248
|
+
className: clsx$1(stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
|
|
249
249
|
children: [
|
|
250
250
|
submenu.header == null ? null : /* @__PURE__ */ jsx("div", {
|
|
251
251
|
className: styles.header,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderItems.mjs","names":["common"],"sources":["../../src/ContextMenu/renderItems.tsx"],"sourcesContent":["import { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Check } from 'lucide-react';\nimport {\n type ComponentProps,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { memo, useCallback, useState } from 'react';\n\nimport { menuClassNames, menuStyles, styles } from '@/DropdownMenu/sharedStyle';\nimport common from '@/i18n/resources/en/common';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport type { BaseMenuItemGroupType, BaseSubMenuType } from '@/internal/menu/baseItem';\nimport {\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n type RenderItemContentOptions,\n type RenderOptions,\n} from '@/internal/menu/renderUtils';\nimport type { MenuDividerType, MenuInfo, MenuItemType } from '@/internal/menu/type';\nimport { SubmenuArrowIcon } from '@/internal/SubmenuArrowIcon';\nimport Switch from '@/Switch';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport {\n type ContextMenuCheckboxItem,\n type ContextMenuItem,\n type ContextMenuSwitchItem,\n} from './type';\n\ntype ContextMenuPositionerProps = ComponentProps<typeof ContextMenu.Positioner>;\n\n/**\n * Submenu positioners are portaled outside the root menu, so they must allocate\n * their own layer z-index (same pattern as DropdownMenu) rather than relying on\n * the fixed CSS fallback that can fall behind after repeated root openings (#608).\n */\nconst ContextMenuSubmenuPositioner = memo(\n ({ collisionPadding, style, ...rest }: ContextMenuPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <ContextMenu.Positioner\n {...rest}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={zRef as any}\n style={resolvedStyle}\n />\n );\n },\n);\n\nContextMenuSubmenuPositioner.displayName = 'ContextMenuSubmenuPositioner';\n\nexport type { IconAlign, IconSpaceMode } from '@/internal/menu/renderUtils';\n\nconst EmptyMenuItem = memo(() => {\n const { t } = useTranslation(common);\n return (\n <ContextMenu.Item\n disabled\n className={stylex.props(menuStyles.item, menuStyles.empty).className}\n >\n <div className={styles.itemContent}>\n <span className={styles.label}>{t('common.empty')}</span>\n </div>\n </ContextMenu.Item>\n );\n});\n\nEmptyMenuItem.displayName = 'EmptyMenuItem';\n\ninterface ContextMenuSwitchItemInternalProps {\n checked?: boolean;\n children: ReactNode;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst ContextMenuSwitchItemInternal = ({\n checked: checkedProp,\n children,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n label,\n onCheckedChange,\n}: ContextMenuSwitchItemInternalProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, danger && menuStyles.danger).className}\n closeOnClick={closeOnClick}\n disabled={disabled}\n label={label}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <span\n style={{ display: 'inline-flex', marginInlineStart: 16 }}\n onFocus={(e) => e.stopPropagation()}\n >\n <Switch\n checked={checked}\n disabled={disabled}\n size=\"small\"\n tabIndex={-1}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n />\n </span>\n </ContextMenu.Item>\n );\n};\n\nconst renderItemContent = (\n item: MenuItemType | BaseSubMenuType | ContextMenuCheckboxItem | ContextMenuSwitchItem,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const desc = 'desc' in item ? item.desc : undefined;\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const alignStart = Boolean(desc) && options?.iconAlign === 'start';\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n const labelNode = desc ? (\n <div className={styles.labelGroup}>\n <span className={styles.label}>{label}</span>\n <span className={styles.desc}>{desc}</span>\n </div>\n ) : (\n <span className={styles.label}>{label}</span>\n );\n\n return (\n <div\n className={\n stylex.props(menuStyles.itemContent, alignStart && menuStyles.itemContentAlignStart)\n .className\n }\n >\n {shouldRenderIcon ? (\n <span\n aria-hidden={!hasIcon}\n className={clsx(\n stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className,\n menuClassNames.icon,\n )}\n >\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, 'small') : null}\n </span>\n ) : null}\n {labelNode}\n {extra ? <span className={styles.extra}>{extra}</span> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <span className={styles.submenuArrow}>\n <SubmenuArrowIcon />\n </span>\n ) : null}\n </div>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderContextMenuItems = (\n items: ContextMenuItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconAlign = options?.iconAlign;\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as ContextMenuCheckboxItem).type === 'checkbox') {\n const checkboxItem = item as ContextMenuCheckboxItem;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <ContextMenu.CheckboxItemIndicator>\n <Icon icon={Check} size={'small'} />\n </ContextMenu.CheckboxItemIndicator>\n );\n\n return (\n <ContextMenu.CheckboxItem\n checked={checkboxItem.checked}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={checkboxItem.closeOnClick}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(\n checkboxItem,\n { iconAlign, indicatorOnRight, reserveIconSpace },\n indicator,\n )}\n </ContextMenu.CheckboxItem>\n );\n }\n\n if ((item as ContextMenuSwitchItem).type === 'switch') {\n const switchItem = item as ContextMenuSwitchItem;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <ContextMenuSwitchItemInternal\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={switchItem.onCheckedChange}\n >\n {renderItemContent(switchItem, { iconAlign, reserveIconSpace })}\n </ContextMenuSwitchItemInternal>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <ContextMenu.Separator className={styles.separator} key={itemKey} />;\n }\n\n if ((item as BaseMenuItemGroupType).type === 'group') {\n const group = item as BaseMenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <ContextMenu.Group key={itemKey}>\n {group.label ? (\n <ContextMenu.GroupLabel className={styles.groupLabel}>\n {group.label}\n </ContextMenu.GroupLabel>\n ) : null}\n {group.children\n ? renderContextMenuItems(group.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </ContextMenu.Group>\n );\n }\n\n if (\n (item as BaseSubMenuType).type === 'submenu' ||\n ('children' in item && (item as BaseSubMenuType).children)\n ) {\n const submenu = item as BaseSubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n const submenuHasSlots = submenu.header != null || submenu.footer != null;\n const submenuBody =\n submenu.children && submenu.children.length > 0 ? (\n renderContextMenuItems(submenu.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n })\n ) : (\n <EmptyMenuItem />\n );\n\n return (\n <ContextMenu.SubmenuRoot\n defaultOpen={submenu.defaultOpen}\n key={itemKey}\n open={submenu.open}\n onOpenChange={submenu.onOpenChange}\n >\n <ContextMenu.SubmenuTrigger\n {...submenu.triggerProps}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeDelay={submenu.closeDelay}\n delay={submenu.delay}\n disabled={submenu.disabled}\n label={labelText}\n openOnHover={submenu.openOnHover}\n onClick={submenu.onClick}\n >\n {renderItemContent(submenu, {\n iconAlign,\n reserveIconSpace,\n submenu: true,\n })}\n </ContextMenu.SubmenuTrigger>\n <ContextMenu.Portal>\n <ContextMenuSubmenuPositioner\n alignOffset={-4}\n className={styles.positioner}\n data-submenu=\"\"\n sideOffset={-1}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n <ContextMenu.Popup\n className={clsx(\n stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots)\n .className,\n menuClassNames.popup,\n )}\n >\n {submenu.header == null ? null : (\n <div className={styles.header}>{submenu.header}</div>\n )}\n {submenuHasSlots ? (\n <div className={styles.slotViewport}>{submenuBody}</div>\n ) : (\n submenuBody\n )}\n {submenu.footer == null ? null : (\n <div className={styles.footer}>{submenu.footer}</div>\n )}\n </ContextMenu.Popup>\n </ContextMenuSubmenuPositioner>\n </ContextMenu.Portal>\n </ContextMenu.SubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={menuItem.closeOnClick}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { iconAlign, reserveIconSpace })}\n </ContextMenu.Item>\n );\n });\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderItems.mjs","names":["common","clsx"],"sources":["../../src/ContextMenu/renderItems.tsx"],"sourcesContent":["import { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Check } from 'lucide-react';\nimport {\n type ComponentProps,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { memo, useCallback, useState } from 'react';\n\nimport { menuClassNames, menuStyles, styles } from '@/DropdownMenu/sharedStyle';\nimport common from '@/i18n/resources/en/common';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport type { BaseMenuItemGroupType, BaseSubMenuType } from '@/internal/menu/baseItem';\nimport {\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n type RenderItemContentOptions,\n type RenderOptions,\n} from '@/internal/menu/renderUtils';\nimport type { MenuDividerType, MenuInfo, MenuItemType } from '@/internal/menu/type';\nimport { SubmenuArrowIcon } from '@/internal/SubmenuArrowIcon';\nimport Switch from '@/Switch';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport {\n type ContextMenuCheckboxItem,\n type ContextMenuItem,\n type ContextMenuSwitchItem,\n} from './type';\n\ntype ContextMenuPositionerProps = ComponentProps<typeof ContextMenu.Positioner>;\n\n/**\n * Submenu positioners are portaled outside the root menu, so they must allocate\n * their own layer z-index (same pattern as DropdownMenu) rather than relying on\n * the fixed CSS fallback that can fall behind after repeated root openings (#608).\n */\nconst ContextMenuSubmenuPositioner = memo(\n ({ collisionPadding, style, ...rest }: ContextMenuPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <ContextMenu.Positioner\n {...rest}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={zRef as any}\n style={resolvedStyle}\n />\n );\n },\n);\n\nContextMenuSubmenuPositioner.displayName = 'ContextMenuSubmenuPositioner';\n\nexport type { IconAlign, IconSpaceMode } from '@/internal/menu/renderUtils';\n\nconst EmptyMenuItem = memo(() => {\n const { t } = useTranslation(common);\n return (\n <ContextMenu.Item\n disabled\n className={stylex.props(menuStyles.item, menuStyles.empty).className}\n >\n <div className={styles.itemContent}>\n <span className={styles.label}>{t('common.empty')}</span>\n </div>\n </ContextMenu.Item>\n );\n});\n\nEmptyMenuItem.displayName = 'EmptyMenuItem';\n\ninterface ContextMenuSwitchItemInternalProps {\n checked?: boolean;\n children: ReactNode;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst ContextMenuSwitchItemInternal = ({\n checked: checkedProp,\n children,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n label,\n onCheckedChange,\n}: ContextMenuSwitchItemInternalProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, danger && menuStyles.danger).className}\n closeOnClick={closeOnClick}\n disabled={disabled}\n label={label}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <span\n style={{ display: 'inline-flex', marginInlineStart: 16 }}\n onFocus={(e) => e.stopPropagation()}\n >\n <Switch\n checked={checked}\n disabled={disabled}\n size=\"small\"\n tabIndex={-1}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n />\n </span>\n </ContextMenu.Item>\n );\n};\n\nconst renderItemContent = (\n item: MenuItemType | BaseSubMenuType | ContextMenuCheckboxItem | ContextMenuSwitchItem,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const desc = 'desc' in item ? item.desc : undefined;\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const alignStart = Boolean(desc) && options?.iconAlign === 'start';\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n const labelNode = desc ? (\n <div className={styles.labelGroup}>\n <span className={styles.label}>{label}</span>\n <span className={styles.desc}>{desc}</span>\n </div>\n ) : (\n <span className={styles.label}>{label}</span>\n );\n\n return (\n <div\n className={\n stylex.props(menuStyles.itemContent, alignStart && menuStyles.itemContentAlignStart)\n .className\n }\n >\n {shouldRenderIcon ? (\n <span\n aria-hidden={!hasIcon}\n className={clsx(\n stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className,\n menuClassNames.icon,\n )}\n >\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, 'small') : null}\n </span>\n ) : null}\n {labelNode}\n {extra ? <span className={styles.extra}>{extra}</span> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <span className={styles.submenuArrow}>\n <SubmenuArrowIcon />\n </span>\n ) : null}\n </div>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderContextMenuItems = (\n items: ContextMenuItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconAlign = options?.iconAlign;\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as ContextMenuCheckboxItem).type === 'checkbox') {\n const checkboxItem = item as ContextMenuCheckboxItem;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <ContextMenu.CheckboxItemIndicator>\n <Icon icon={Check} size={'small'} />\n </ContextMenu.CheckboxItemIndicator>\n );\n\n return (\n <ContextMenu.CheckboxItem\n checked={checkboxItem.checked}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={checkboxItem.closeOnClick}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(\n checkboxItem,\n { iconAlign, indicatorOnRight, reserveIconSpace },\n indicator,\n )}\n </ContextMenu.CheckboxItem>\n );\n }\n\n if ((item as ContextMenuSwitchItem).type === 'switch') {\n const switchItem = item as ContextMenuSwitchItem;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <ContextMenuSwitchItemInternal\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={switchItem.onCheckedChange}\n >\n {renderItemContent(switchItem, { iconAlign, reserveIconSpace })}\n </ContextMenuSwitchItemInternal>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <ContextMenu.Separator className={styles.separator} key={itemKey} />;\n }\n\n if ((item as BaseMenuItemGroupType).type === 'group') {\n const group = item as BaseMenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <ContextMenu.Group key={itemKey}>\n {group.label ? (\n <ContextMenu.GroupLabel className={styles.groupLabel}>\n {group.label}\n </ContextMenu.GroupLabel>\n ) : null}\n {group.children\n ? renderContextMenuItems(group.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </ContextMenu.Group>\n );\n }\n\n if (\n (item as BaseSubMenuType).type === 'submenu' ||\n ('children' in item && (item as BaseSubMenuType).children)\n ) {\n const submenu = item as BaseSubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n const submenuHasSlots = submenu.header != null || submenu.footer != null;\n const submenuBody =\n submenu.children && submenu.children.length > 0 ? (\n renderContextMenuItems(submenu.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n })\n ) : (\n <EmptyMenuItem />\n );\n\n return (\n <ContextMenu.SubmenuRoot\n defaultOpen={submenu.defaultOpen}\n key={itemKey}\n open={submenu.open}\n onOpenChange={submenu.onOpenChange}\n >\n <ContextMenu.SubmenuTrigger\n {...submenu.triggerProps}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeDelay={submenu.closeDelay}\n delay={submenu.delay}\n disabled={submenu.disabled}\n label={labelText}\n openOnHover={submenu.openOnHover}\n onClick={submenu.onClick}\n >\n {renderItemContent(submenu, {\n iconAlign,\n reserveIconSpace,\n submenu: true,\n })}\n </ContextMenu.SubmenuTrigger>\n <ContextMenu.Portal>\n <ContextMenuSubmenuPositioner\n alignOffset={-4}\n className={styles.positioner}\n data-submenu=\"\"\n sideOffset={-1}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n <ContextMenu.Popup\n className={clsx(\n stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots)\n .className,\n menuClassNames.popup,\n )}\n >\n {submenu.header == null ? null : (\n <div className={styles.header}>{submenu.header}</div>\n )}\n {submenuHasSlots ? (\n <div className={styles.slotViewport}>{submenuBody}</div>\n ) : (\n submenuBody\n )}\n {submenu.footer == null ? null : (\n <div className={styles.footer}>{submenu.footer}</div>\n )}\n </ContextMenu.Popup>\n </ContextMenuSubmenuPositioner>\n </ContextMenu.Portal>\n </ContextMenu.SubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={menuItem.closeOnClick}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { iconAlign, reserveIconSpace })}\n </ContextMenu.Item>\n );\n });\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DatePickerType } from "./type.mjs";
|
|
2
2
|
//#region src/DatePicker/DatePicker.d.ts
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* DatePicker over native `Date` — the previous lobe DatePicker API: values, `onChange`
|
|
5
|
+
* and `disabledDate` use `Date`, a cleared range is `[null, null]`; inputs may also be
|
|
6
|
+
* `Dayjs`, date strings or timestamps. Statics as in antd: `DatePicker.RangePicker`,
|
|
7
|
+
* `WeekPicker`, `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the pure panels
|
|
8
|
+
* and `generatePicker`. For the antd `Dayjs` API use `DayjsDatePicker`.
|
|
9
|
+
*/
|
|
10
|
+
declare const DatePicker: DatePickerType;
|
|
4
11
|
//#endregion
|
|
5
12
|
export { DatePicker as default };
|
|
6
13
|
//# sourceMappingURL=DatePicker.d.mts.map
|
|
@@ -1,90 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { useTranslation } from "../i18n/useTranslation.mjs";
|
|
6
|
-
import datePicker_default from "../i18n/resources/en/datePicker.mjs";
|
|
7
|
-
import { DEFAULT_FORMAT, clampToBounds } from "./calendar.mjs";
|
|
8
|
-
import { styles } from "./style.mjs";
|
|
9
|
-
import CalendarPanel from "./CalendarPanel.mjs";
|
|
10
|
-
import PickerShell from "./PickerShell.mjs";
|
|
11
|
-
import { memo, useState } from "react";
|
|
12
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import * as stylex from "@stylexjs/stylex";
|
|
14
|
-
import { CalendarIcon } from "lucide-react";
|
|
15
|
-
import dayjs from "dayjs";
|
|
2
|
+
import dateGenerateConfig from "./dateGenerateConfig.mjs";
|
|
3
|
+
import generatePicker from "./generatePicker.mjs";
|
|
4
|
+
import genPurePanel from "./PurePanel.mjs";
|
|
16
5
|
//#region src/DatePicker/DatePicker.tsx
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
value
|
|
29
|
-
});
|
|
30
|
-
const [open, setOpen] = useState(false);
|
|
31
|
-
const [month, setMonth] = useState(() => current ?? /* @__PURE__ */ new Date());
|
|
32
|
-
const text = current ? formatDate(current, format, DEFAULT_FORMAT[mode]) : null;
|
|
33
|
-
return /* @__PURE__ */ jsxs(PickerShell, {
|
|
34
|
-
className,
|
|
35
|
-
disabled,
|
|
36
|
-
open,
|
|
37
|
-
shadow,
|
|
38
|
-
showClear: allowClear && !!current,
|
|
39
|
-
size,
|
|
40
|
-
style,
|
|
41
|
-
variant,
|
|
42
|
-
icon: /* @__PURE__ */ jsx("span", {
|
|
43
|
-
...stylex.props(styles.icon),
|
|
44
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
45
|
-
icon: CalendarIcon,
|
|
46
|
-
size: 14
|
|
47
|
-
})
|
|
48
|
-
}),
|
|
49
|
-
trigger: /* @__PURE__ */ jsx("button", {
|
|
50
|
-
...stylex.props(focusRing.info, styles.trigger),
|
|
51
|
-
disabled,
|
|
52
|
-
type: "button",
|
|
53
|
-
children: text ?? /* @__PURE__ */ jsx("span", {
|
|
54
|
-
...stylex.props(styles.placeholder),
|
|
55
|
-
children: placeholder ?? t(PLACEHOLDER_KEY[mode])
|
|
56
|
-
})
|
|
57
|
-
}),
|
|
58
|
-
onClear: () => setCurrent(null),
|
|
59
|
-
onOpenChange: (next) => {
|
|
60
|
-
if (next) setMonth(current ?? clampToBounds(/* @__PURE__ */ new Date(), {
|
|
61
|
-
max,
|
|
62
|
-
min
|
|
63
|
-
}));
|
|
64
|
-
setOpen(next);
|
|
65
|
-
},
|
|
66
|
-
children: [/* @__PURE__ */ jsx(CalendarPanel, {
|
|
67
|
-
bounds: {
|
|
68
|
-
disabledDate,
|
|
69
|
-
max,
|
|
70
|
-
min
|
|
71
|
-
},
|
|
72
|
-
mode,
|
|
73
|
-
month,
|
|
74
|
-
selected: current,
|
|
75
|
-
onMonthChange: setMonth,
|
|
76
|
-
onSelect: (date) => {
|
|
77
|
-
setCurrent(date);
|
|
78
|
-
setOpen(false);
|
|
79
|
-
}
|
|
80
|
-
}), footer && /* @__PURE__ */ jsx("div", {
|
|
81
|
-
...stylex.props(styles.footer),
|
|
82
|
-
children: footer
|
|
83
|
-
})]
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
DatePicker.displayName = "DatePicker";
|
|
6
|
+
/**
|
|
7
|
+
* DatePicker over native `Date` — the previous lobe DatePicker API: values, `onChange`
|
|
8
|
+
* and `disabledDate` use `Date`, a cleared range is `[null, null]`; inputs may also be
|
|
9
|
+
* `Dayjs`, date strings or timestamps. Statics as in antd: `DatePicker.RangePicker`,
|
|
10
|
+
* `WeekPicker`, `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the pure panels
|
|
11
|
+
* and `generatePicker`. For the antd `Dayjs` API use `DayjsDatePicker`.
|
|
12
|
+
*/
|
|
13
|
+
const DatePicker = generatePicker(dateGenerateConfig);
|
|
14
|
+
DatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker);
|
|
15
|
+
DatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker.RangePicker);
|
|
16
|
+
DatePicker.generatePicker = generatePicker;
|
|
87
17
|
//#endregion
|
|
88
|
-
export { DatePicker as default
|
|
18
|
+
export { DatePicker as default };
|
|
89
19
|
|
|
90
20
|
//# sourceMappingURL=DatePicker.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.mjs","names":[
|
|
1
|
+
{"version":3,"file":"DatePicker.mjs","names":[],"sources":["../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client';\n\nimport dateGenerateConfig from './dateGenerateConfig';\nimport generatePicker from './generatePicker';\nimport genPurePanel from './PurePanel';\nimport type { DatePickerType } from './type';\n\n/**\n * DatePicker over native `Date` — the previous lobe DatePicker API: values, `onChange`\n * and `disabledDate` use `Date`, a cleared range is `[null, null]`; inputs may also be\n * `Dayjs`, date strings or timestamps. Statics as in antd: `DatePicker.RangePicker`,\n * `WeekPicker`, `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the pure panels\n * and `generatePicker`. For the antd `Dayjs` API use `DayjsDatePicker`.\n */\nconst DatePicker = generatePicker(dateGenerateConfig) as DatePickerType;\n\nDatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker);\nDatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker.RangePicker);\nDatePicker.generatePicker = generatePicker;\n\nexport default DatePicker;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,aAAa,eAAe,kBAAkB;AAEpD,WAAW,yCAAyC,aAAa,UAAU;AAC3E,WAAW,8CAA8C,aAAa,WAAW,WAAW;AAC5F,WAAW,iBAAiB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RangePickerComponent } from "./type.mjs";
|
|
2
2
|
//#region src/DatePicker/DateRangePicker.d.ts
|
|
3
|
-
|
|
3
|
+
/** `DatePicker.RangePicker`, kept as a standalone export. */
|
|
4
|
+
declare const DateRangePicker: RangePickerComponent<Date>;
|
|
4
5
|
//#endregion
|
|
5
6
|
export { DateRangePicker as default };
|
|
6
7
|
//# sourceMappingURL=DateRangePicker.d.mts.map
|
|
@@ -1,129 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import { focusRing } from "../styles/stylex/focusRing.mjs";
|
|
3
|
-
import Icon from "../Icon/Icon.mjs";
|
|
4
|
-
import { useControlledState } from "../hooks/useControlledState.mjs";
|
|
5
|
-
import { useTranslation } from "../i18n/useTranslation.mjs";
|
|
6
|
-
import datePicker_default from "../i18n/resources/en/datePicker.mjs";
|
|
7
|
-
import { DEFAULT_FORMAT, clampToBounds, orderRange } from "./calendar.mjs";
|
|
8
|
-
import { styles } from "./style.mjs";
|
|
9
|
-
import CalendarPanel from "./CalendarPanel.mjs";
|
|
10
|
-
import PickerShell from "./PickerShell.mjs";
|
|
11
|
-
import { formatDate } from "./DatePicker.mjs";
|
|
12
|
-
import { memo, useState } from "react";
|
|
13
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
-
import * as stylex from "@stylexjs/stylex";
|
|
15
|
-
import { ArrowRight, CalendarIcon } from "lucide-react";
|
|
16
|
-
import dayjs from "dayjs";
|
|
1
|
+
import DatePicker from "./DatePicker.mjs";
|
|
17
2
|
//#region src/DatePicker/DateRangePicker.tsx
|
|
18
|
-
|
|
19
|
-
const DateRangePicker =
|
|
20
|
-
const { t } = useTranslation(datePicker_default);
|
|
21
|
-
const [current, setCurrent] = useControlledState(defaultValue, {
|
|
22
|
-
defaultValue,
|
|
23
|
-
onChange,
|
|
24
|
-
value
|
|
25
|
-
});
|
|
26
|
-
const [open, setOpen] = useState(false);
|
|
27
|
-
const [draft, setDraft] = useState(EMPTY);
|
|
28
|
-
const [hovered, setHovered] = useState(null);
|
|
29
|
-
const [month, setMonth] = useState(() => current[0] ?? /* @__PURE__ */ new Date());
|
|
30
|
-
const shown = open && draft[0] ? draft : current;
|
|
31
|
-
const nextMonth = dayjs(month).add(1, "month").toDate();
|
|
32
|
-
const bounds = {
|
|
33
|
-
disabledDate,
|
|
34
|
-
max,
|
|
35
|
-
min
|
|
36
|
-
};
|
|
37
|
-
const half = (date, fallback, active) => /* @__PURE__ */ jsx("span", {
|
|
38
|
-
...stylex.props(styles.rangeHalf),
|
|
39
|
-
"data-active": active ? "" : void 0,
|
|
40
|
-
children: date ? formatDate(date, format, DEFAULT_FORMAT.date) : /* @__PURE__ */ jsx("span", {
|
|
41
|
-
...stylex.props(styles.placeholder),
|
|
42
|
-
children: fallback
|
|
43
|
-
})
|
|
44
|
-
});
|
|
45
|
-
const select = (date) => {
|
|
46
|
-
if (!draft[0] || draft[1]) {
|
|
47
|
-
setDraft([date, null]);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const ordered = orderRange(draft[0], date);
|
|
51
|
-
setDraft(EMPTY);
|
|
52
|
-
setCurrent(ordered);
|
|
53
|
-
setOpen(false);
|
|
54
|
-
};
|
|
55
|
-
return /* @__PURE__ */ jsx(PickerShell, {
|
|
56
|
-
className,
|
|
57
|
-
disabled,
|
|
58
|
-
open,
|
|
59
|
-
shadow,
|
|
60
|
-
showClear: allowClear && !!(current[0] || current[1]),
|
|
61
|
-
size,
|
|
62
|
-
style,
|
|
63
|
-
variant,
|
|
64
|
-
icon: /* @__PURE__ */ jsx("span", {
|
|
65
|
-
...stylex.props(styles.icon),
|
|
66
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
67
|
-
icon: CalendarIcon,
|
|
68
|
-
size: 14
|
|
69
|
-
})
|
|
70
|
-
}),
|
|
71
|
-
trigger: /* @__PURE__ */ jsx("button", {
|
|
72
|
-
...stylex.props(focusRing.info, styles.trigger),
|
|
73
|
-
disabled,
|
|
74
|
-
type: "button",
|
|
75
|
-
children: /* @__PURE__ */ jsxs("span", {
|
|
76
|
-
...stylex.props(styles.rangeTrigger),
|
|
77
|
-
children: [
|
|
78
|
-
half(shown[0], placeholder?.[0] ?? t("datePicker.startPlaceholder"), open && !draft[0]),
|
|
79
|
-
/* @__PURE__ */ jsx("span", {
|
|
80
|
-
...stylex.props(styles.icon),
|
|
81
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
82
|
-
icon: ArrowRight,
|
|
83
|
-
size: 14
|
|
84
|
-
})
|
|
85
|
-
}),
|
|
86
|
-
half(shown[1], placeholder?.[1] ?? t("datePicker.endPlaceholder"), open && !!draft[0])
|
|
87
|
-
]
|
|
88
|
-
})
|
|
89
|
-
}),
|
|
90
|
-
onClear: () => setCurrent(EMPTY),
|
|
91
|
-
onOpenChange: (next) => {
|
|
92
|
-
if (next) {
|
|
93
|
-
setMonth(current[0] ?? clampToBounds(/* @__PURE__ */ new Date(), {
|
|
94
|
-
max,
|
|
95
|
-
min
|
|
96
|
-
}));
|
|
97
|
-
setDraft(EMPTY);
|
|
98
|
-
}
|
|
99
|
-
setOpen(next);
|
|
100
|
-
},
|
|
101
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
102
|
-
...stylex.props(styles.range),
|
|
103
|
-
children: [/* @__PURE__ */ jsx(CalendarPanel, {
|
|
104
|
-
bounds,
|
|
105
|
-
hovered,
|
|
106
|
-
mode: "date",
|
|
107
|
-
month,
|
|
108
|
-
range: draft[0] ? draft : current,
|
|
109
|
-
showNav: false,
|
|
110
|
-
onHover: setHovered,
|
|
111
|
-
onMonthChange: setMonth,
|
|
112
|
-
onSelect: select
|
|
113
|
-
}), /* @__PURE__ */ jsx(CalendarPanel, {
|
|
114
|
-
bounds,
|
|
115
|
-
hovered,
|
|
116
|
-
mode: "date",
|
|
117
|
-
month: nextMonth,
|
|
118
|
-
range: draft[0] ? draft : current,
|
|
119
|
-
onHover: setHovered,
|
|
120
|
-
onMonthChange: (next) => setMonth(dayjs(next).subtract(1, "month").toDate()),
|
|
121
|
-
onSelect: select
|
|
122
|
-
})]
|
|
123
|
-
})
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
DateRangePicker.displayName = "DateRangePicker";
|
|
3
|
+
/** `DatePicker.RangePicker`, kept as a standalone export. */
|
|
4
|
+
const DateRangePicker = DatePicker.RangePicker;
|
|
127
5
|
//#endregion
|
|
128
6
|
export { DateRangePicker as default };
|
|
129
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.mjs","names":[
|
|
1
|
+
{"version":3,"file":"DateRangePicker.mjs","names":[],"sources":["../../src/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import DatePicker from './DatePicker';\n\n/** `DatePicker.RangePicker`, kept as a standalone export. */\nconst DateRangePicker = DatePicker.RangePicker;\n\nexport default DateRangePicker;\n"],"mappings":";;;AAGA,MAAM,kBAAkB,WAAW"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DayjsDatePickerType } from "./type.mjs";
|
|
2
|
+
//#region src/DatePicker/DayjsDatePicker.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* antd-aligned DatePicker over `Dayjs` (values, callbacks and `disabledDate` are `Dayjs`),
|
|
5
|
+
* with antd's statics: `RangePicker`, `WeekPicker`, `MonthPicker`, `YearPicker`,
|
|
6
|
+
* `QuarterPicker`, `TimePicker`, the debug-only pure panels and `generatePicker`.
|
|
7
|
+
* The default `DatePicker` export works with native `Date` (the previous lobe API).
|
|
8
|
+
*/
|
|
9
|
+
declare const DayjsDatePicker: DayjsDatePickerType;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { DayjsDatePicker as default };
|
|
12
|
+
//# sourceMappingURL=DayjsDatePicker.d.mts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import generateConfig from "./generateConfig.mjs";
|
|
3
|
+
import generatePicker from "./generatePicker.mjs";
|
|
4
|
+
import genPurePanel from "./PurePanel.mjs";
|
|
5
|
+
//#region src/DatePicker/DayjsDatePicker.tsx
|
|
6
|
+
/**
|
|
7
|
+
* antd-aligned DatePicker over `Dayjs` (values, callbacks and `disabledDate` are `Dayjs`),
|
|
8
|
+
* with antd's statics: `RangePicker`, `WeekPicker`, `MonthPicker`, `YearPicker`,
|
|
9
|
+
* `QuarterPicker`, `TimePicker`, the debug-only pure panels and `generatePicker`.
|
|
10
|
+
* The default `DatePicker` export works with native `Date` (the previous lobe API).
|
|
11
|
+
*/
|
|
12
|
+
const DayjsDatePicker = generatePicker(generateConfig);
|
|
13
|
+
DayjsDatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DayjsDatePicker);
|
|
14
|
+
DayjsDatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(DayjsDatePicker.RangePicker);
|
|
15
|
+
DayjsDatePicker.generatePicker = generatePicker;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { DayjsDatePicker as default };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=DayjsDatePicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DayjsDatePicker.mjs","names":["dayjsGenerateConfig"],"sources":["../../src/DatePicker/DayjsDatePicker.tsx"],"sourcesContent":["'use client';\n\nimport dayjsGenerateConfig from './generateConfig';\nimport generatePicker from './generatePicker';\nimport genPurePanel from './PurePanel';\nimport type { DayjsDatePickerType } from './type';\n\n/**\n * antd-aligned DatePicker over `Dayjs` (values, callbacks and `disabledDate` are `Dayjs`),\n * with antd's statics: `RangePicker`, `WeekPicker`, `MonthPicker`, `YearPicker`,\n * `QuarterPicker`, `TimePicker`, the debug-only pure panels and `generatePicker`.\n * The default `DatePicker` export works with native `Date` (the previous lobe API).\n */\nconst DayjsDatePicker = generatePicker(dayjsGenerateConfig) as DayjsDatePickerType;\n\nDayjsDatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DayjsDatePicker);\nDayjsDatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(\n DayjsDatePicker.RangePicker,\n);\nDayjsDatePicker.generatePicker = generatePicker;\n\nexport default DayjsDatePicker;\n"],"mappings":";;;;;;;;;;;AAaA,MAAM,kBAAkB,eAAeA,cAAmB;AAE1D,gBAAgB,yCAAyC,aAAa,eAAe;AACrF,gBAAgB,8CAA8C,aAC5D,gBAAgB,WAClB;AACA,gBAAgB,iBAAiB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RangePickerComponent } from "./type.mjs";
|
|
2
|
+
//#region src/DatePicker/DayjsDateRangePicker.d.ts
|
|
3
|
+
/** `DayjsDatePicker.RangePicker` (values are `Dayjs`), kept as a standalone export. */
|
|
4
|
+
declare const DayjsDateRangePicker: RangePickerComponent<import("dayjs").Dayjs>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { DayjsDateRangePicker as default };
|
|
7
|
+
//# sourceMappingURL=DayjsDateRangePicker.d.mts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import DayjsDatePicker from "./DayjsDatePicker.mjs";
|
|
2
|
+
//#region src/DatePicker/DayjsDateRangePicker.tsx
|
|
3
|
+
/** `DayjsDatePicker.RangePicker` (values are `Dayjs`), kept as a standalone export. */
|
|
4
|
+
const DayjsDateRangePicker = DayjsDatePicker.RangePicker;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { DayjsDateRangePicker as default };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=DayjsDateRangePicker.mjs.map
|