@lobehub/ui 6.0.0-beta.7 → 6.0.0-beta.8
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 +7 -2
- package/es/DatePicker/DatePicker.mjs +13 -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/PurePanel.mjs +65 -0
- package/es/DatePicker/PurePanel.mjs.map +1 -0
- package/es/DatePicker/RangePicker.mjs +115 -0
- package/es/DatePicker/RangePicker.mjs.map +1 -0
- package/es/DatePicker/SinglePicker.mjs +132 -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/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 +6 -3
- package/es/DatePicker/index.mjs +3 -1
- 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 +268 -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 +48 -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/Tabs/style.d.mts +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 +13 -6
- package/es/index.mjs +10 -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
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { PREFIX_CLS } from "../constants.mjs";
|
|
3
|
+
import { createElement, isValidElement } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import clsx$1 from "clsx";
|
|
6
|
+
//#region src/Table/atoms/cells.tsx
|
|
7
|
+
const CELL = `${PREFIX_CLS}-cell`;
|
|
8
|
+
const getEllipsisTitle = (ellipsis, rowType, children) => {
|
|
9
|
+
const config = ellipsis === true ? { showTitle: true } : ellipsis;
|
|
10
|
+
if (!config || !(config.showTitle || rowType === "header")) return void 0;
|
|
11
|
+
if (typeof children === "string" || typeof children === "number") return String(children);
|
|
12
|
+
if (isValidElement(children)) {
|
|
13
|
+
const inner = children.props.children;
|
|
14
|
+
if (typeof inner === "string") return inner;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const TableCell = ({ align, appendNode, children, className, colSpan, component = "td", ellipsis, fixEnd, fixStart, hovered, rowSpan, rowType = "body", shadowEnd, shadowStart, sticky, style, title, zIndex, zIndexReverse, ...rest }) => {
|
|
18
|
+
const isFixStart = typeof fixStart === "number";
|
|
19
|
+
const isFixEnd = typeof fixEnd === "number";
|
|
20
|
+
const fixedStyle = {};
|
|
21
|
+
if (isFixStart) fixedStyle.insetInlineStart = fixStart;
|
|
22
|
+
if (isFixEnd) fixedStyle.insetInlineEnd = fixEnd;
|
|
23
|
+
if (isFixStart || isFixEnd) {
|
|
24
|
+
fixedStyle["--z-offset"] = zIndex;
|
|
25
|
+
fixedStyle["--z-offset-reverse"] = zIndexReverse;
|
|
26
|
+
}
|
|
27
|
+
const content = ellipsis && Boolean(isFixStart && shadowStart || isFixEnd && shadowEnd) ? /* @__PURE__ */ jsx("span", {
|
|
28
|
+
className: `${CELL}-content`,
|
|
29
|
+
children
|
|
30
|
+
}) : children;
|
|
31
|
+
return createElement(component, {
|
|
32
|
+
...rest,
|
|
33
|
+
className: clsx$1(CELL, className, (isFixStart || isFixEnd) && `${CELL}-fix`, isFixStart && `${CELL}-fix-start`, isFixEnd && `${CELL}-fix-end`, isFixStart && shadowStart && `${CELL}-fix-start-shadow`, isFixEnd && shadowEnd && `${CELL}-fix-end-shadow`, ellipsis && `${CELL}-ellipsis`, appendNode && `${CELL}-with-append`, (isFixStart || isFixEnd) && sticky && `${CELL}-fix-sticky`, hovered && `${CELL}-row-hover`),
|
|
34
|
+
colSpan: colSpan !== void 0 && colSpan !== 1 ? colSpan : void 0,
|
|
35
|
+
rowSpan: rowSpan !== void 0 && rowSpan !== 1 ? rowSpan : void 0,
|
|
36
|
+
style: {
|
|
37
|
+
...fixedStyle,
|
|
38
|
+
...align && { textAlign: align },
|
|
39
|
+
...style
|
|
40
|
+
},
|
|
41
|
+
title: title ?? getEllipsisTitle(ellipsis, rowType, children)
|
|
42
|
+
}, appendNode, content);
|
|
43
|
+
};
|
|
44
|
+
const TableHeaderCell = ({ component, ...props }) => /* @__PURE__ */ jsx(TableCell, {
|
|
45
|
+
rowType: "header",
|
|
46
|
+
...props,
|
|
47
|
+
component: component ?? "th"
|
|
48
|
+
});
|
|
49
|
+
const TableRow = ({ className, component = "tr", level, selected, ...rest }) => createElement(component, {
|
|
50
|
+
...rest,
|
|
51
|
+
className: clsx$1(level !== void 0 && `lobe-table-row`, level !== void 0 && `lobe-table-row-level-${level}`, selected && `lobe-table-row-selected`, className) || void 0
|
|
52
|
+
});
|
|
53
|
+
const TableExpandedRow = ({ cellComponent, children, className, colSpan, component = "tr", expanded = true, fixed }) => createElement(component, {
|
|
54
|
+
className,
|
|
55
|
+
style: { display: expanded ? void 0 : "none" }
|
|
56
|
+
}, /* @__PURE__ */ jsx(TableCell, {
|
|
57
|
+
colSpan,
|
|
58
|
+
component: cellComponent,
|
|
59
|
+
children: fixed ? /* @__PURE__ */ jsx("div", {
|
|
60
|
+
className: `${PREFIX_CLS}-expanded-row-fixed`,
|
|
61
|
+
style: {
|
|
62
|
+
insetInlineStart: 0,
|
|
63
|
+
overflow: "hidden",
|
|
64
|
+
position: "sticky"
|
|
65
|
+
},
|
|
66
|
+
children
|
|
67
|
+
}) : children
|
|
68
|
+
}));
|
|
69
|
+
//#endregion
|
|
70
|
+
export { TableCell, TableExpandedRow, TableHeaderCell, TableRow };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=cells.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cells.mjs","names":["clsx"],"sources":["../../../src/Table/atoms/cells.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport {\n createElement,\n type CSSProperties,\n type HTMLAttributes,\n isValidElement,\n type ReactNode,\n type Ref,\n type TdHTMLAttributes,\n} from 'react';\n\nimport { PREFIX_CLS } from '../constants';\nimport type { TableColumnAlign, TableCustomizeComponent } from '../type';\n\nconst CELL = `${PREFIX_CLS}-cell`;\n\nexport interface TableCellProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'> {\n align?: TableColumnAlign;\n appendNode?: ReactNode;\n component?: TableCustomizeComponent;\n ellipsis?: boolean | { showTitle?: boolean };\n fixEnd?: number;\n fixStart?: number;\n hovered?: boolean;\n ref?: Ref<HTMLTableCellElement>;\n rowType?: 'body' | 'header';\n shadowEnd?: boolean;\n shadowStart?: boolean;\n sticky?: boolean;\n zIndex?: number;\n zIndexReverse?: number;\n}\n\nconst getEllipsisTitle = (\n ellipsis: TableCellProps['ellipsis'],\n rowType: TableCellProps['rowType'],\n children: ReactNode,\n) => {\n const config = ellipsis === true ? { showTitle: true } : ellipsis;\n if (!config || !(config.showTitle || rowType === 'header')) return undefined;\n if (typeof children === 'string' || typeof children === 'number') return String(children);\n if (isValidElement<{ children?: unknown }>(children)) {\n const inner = children.props.children;\n if (typeof inner === 'string') return inner;\n }\n return undefined;\n};\n\nexport const TableCell = ({\n align,\n appendNode,\n children,\n className,\n colSpan,\n component = 'td',\n ellipsis,\n fixEnd,\n fixStart,\n hovered,\n rowSpan,\n rowType = 'body',\n shadowEnd,\n shadowStart,\n sticky,\n style,\n title,\n zIndex,\n zIndexReverse,\n ...rest\n}: TableCellProps) => {\n const isFixStart = typeof fixStart === 'number';\n const isFixEnd = typeof fixEnd === 'number';\n const fixedStyle: CSSProperties & Record<string, unknown> = {};\n if (isFixStart) fixedStyle.insetInlineStart = fixStart;\n if (isFixEnd) fixedStyle.insetInlineEnd = fixEnd;\n if (isFixStart || isFixEnd) {\n fixedStyle['--z-offset'] = zIndex;\n fixedStyle['--z-offset-reverse'] = zIndexReverse;\n }\n const withShadow = Boolean((isFixStart && shadowStart) || (isFixEnd && shadowEnd));\n const content =\n ellipsis && withShadow ? <span className={`${CELL}-content`}>{children}</span> : children;\n\n return createElement(\n component,\n {\n ...rest,\n className: clsx(\n CELL,\n className,\n (isFixStart || isFixEnd) && `${CELL}-fix`,\n isFixStart && `${CELL}-fix-start`,\n isFixEnd && `${CELL}-fix-end`,\n isFixStart && shadowStart && `${CELL}-fix-start-shadow`,\n isFixEnd && shadowEnd && `${CELL}-fix-end-shadow`,\n ellipsis && `${CELL}-ellipsis`,\n appendNode && `${CELL}-with-append`,\n (isFixStart || isFixEnd) && sticky && `${CELL}-fix-sticky`,\n hovered && `${CELL}-row-hover`,\n ),\n colSpan: colSpan !== undefined && colSpan !== 1 ? colSpan : undefined,\n rowSpan: rowSpan !== undefined && rowSpan !== 1 ? rowSpan : undefined,\n style: { ...fixedStyle, ...(align && { textAlign: align }), ...style },\n title: title ?? getEllipsisTitle(ellipsis, rowType, children),\n },\n appendNode,\n content,\n );\n};\n\nexport const TableHeaderCell = ({ component, ...props }: TableCellProps) => (\n <TableCell rowType=\"header\" {...props} component={component ?? 'th'} />\n);\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n component?: TableCustomizeComponent;\n level?: number;\n ref?: Ref<HTMLTableRowElement>;\n selected?: boolean;\n}\n\nexport const TableRow = ({\n className,\n component = 'tr',\n level,\n selected,\n ...rest\n}: TableRowProps) =>\n createElement(component, {\n ...rest,\n className:\n clsx(\n level !== undefined && `${PREFIX_CLS}-row`,\n level !== undefined && `${PREFIX_CLS}-row-level-${level}`,\n selected && `${PREFIX_CLS}-row-selected`,\n className,\n ) || undefined,\n });\n\nexport interface TableExpandedRowProps {\n cellComponent?: TableCustomizeComponent;\n children?: ReactNode;\n className?: string;\n colSpan: number;\n component?: TableCustomizeComponent;\n expanded?: boolean;\n fixed?: boolean;\n}\n\nexport const TableExpandedRow = ({\n cellComponent,\n children,\n className,\n colSpan,\n component = 'tr',\n expanded = true,\n fixed,\n}: TableExpandedRowProps) =>\n createElement(\n component,\n { className, style: { display: expanded ? undefined : 'none' } },\n <TableCell colSpan={colSpan} component={cellComponent}>\n {fixed ? (\n <div\n className={`${PREFIX_CLS}-expanded-row-fixed`}\n style={{ insetInlineStart: 0, overflow: 'hidden', position: 'sticky' }}\n >\n {children}\n </div>\n ) : (\n children\n )}\n </TableCell>,\n );\n"],"mappings":";;;;;;AAgBA,MAAM,OAAO,GAAG,WAAW;AAmB3B,MAAM,oBACJ,UACA,SACA,aACG;CACH,MAAM,SAAS,aAAa,OAAO,EAAE,WAAW,KAAK,IAAI;CACzD,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,YAAY,WAAW,OAAO,KAAA;CACnE,IAAI,OAAO,aAAa,YAAY,OAAO,aAAa,UAAU,OAAO,OAAO,QAAQ;CACxF,IAAI,eAAuC,QAAQ,GAAG;EACpD,MAAM,QAAQ,SAAS,MAAM;EAC7B,IAAI,OAAO,UAAU,UAAU,OAAO;CACxC;AAEF;AAEA,MAAa,aAAa,EACxB,OACA,YACA,UACA,WACA,SACA,YAAY,MACZ,UACA,QACA,UACA,SACA,SACA,UAAU,QACV,WACA,aACA,QACA,OACA,OACA,QACA,eACA,GAAG,WACiB;CACpB,MAAM,aAAa,OAAO,aAAa;CACvC,MAAM,WAAW,OAAO,WAAW;CACnC,MAAM,aAAsD,CAAC;CAC7D,IAAI,YAAY,WAAW,mBAAmB;CAC9C,IAAI,UAAU,WAAW,iBAAiB;CAC1C,IAAI,cAAc,UAAU;EAC1B,WAAW,gBAAgB;EAC3B,WAAW,wBAAwB;CACrC;CAEA,MAAM,UACJ,YAFiB,QAAS,cAAc,eAAiB,YAAY,SAEhD,IAAI,oBAAC,QAAD;EAAM,WAAW,GAAG,KAAK;EAAY;CAAe,CAAA,IAAI;CAEnF,OAAO,cACL,WACA;EACE,GAAG;EACH,WAAWA,OACT,MACA,YACC,cAAc,aAAa,GAAG,KAAK,OACpC,cAAc,GAAG,KAAK,aACtB,YAAY,GAAG,KAAK,WACpB,cAAc,eAAe,GAAG,KAAK,oBACrC,YAAY,aAAa,GAAG,KAAK,kBACjC,YAAY,GAAG,KAAK,YACpB,cAAc,GAAG,KAAK,gBACrB,cAAc,aAAa,UAAU,GAAG,KAAK,cAC9C,WAAW,GAAG,KAAK,WACrB;EACA,SAAS,YAAY,KAAA,KAAa,YAAY,IAAI,UAAU,KAAA;EAC5D,SAAS,YAAY,KAAA,KAAa,YAAY,IAAI,UAAU,KAAA;EAC5D,OAAO;GAAE,GAAG;GAAY,GAAI,SAAS,EAAE,WAAW,MAAM;GAAI,GAAG;EAAM;EACrE,OAAO,SAAS,iBAAiB,UAAU,SAAS,QAAQ;CAC9D,GACA,YACA,OACF;AACF;AAEA,MAAa,mBAAmB,EAAE,WAAW,GAAG,YAC9C,oBAAC,WAAD;CAAW,SAAQ;CAAS,GAAI;CAAO,WAAW,aAAa;AAAO,CAAA;AAUxE,MAAa,YAAY,EACvB,WACA,YAAY,MACZ,OACA,UACA,GAAG,WAEH,cAAc,WAAW;CACvB,GAAG;CACH,WACEA,OACE,UAAU,KAAA,KAAa,kBACvB,UAAU,KAAA,KAAa,wBAA2B,SAClD,YAAY,2BACZ,SACF,KAAK,KAAA;AACT,CAAC;AAYH,MAAa,oBAAoB,EAC/B,eACA,UACA,WACA,SACA,YAAY,MACZ,WAAW,MACX,YAEA,cACE,WACA;CAAE;CAAW,OAAO,EAAE,SAAS,WAAW,KAAA,IAAY,OAAO;AAAE,GAC/D,oBAAC,WAAD;CAAoB;CAAS,WAAW;CACrC,UAAA,QACC,oBAAC,OAAD;EACE,WAAW,GAAG,WAAW;EACzB,OAAO;GAAE,kBAAkB;GAAG,UAAU;GAAU,UAAU;EAAS;EAEpE;CACE,CAAA,IAEL;AAEO,CAAA,CACb"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { TableCell, TableCellProps, TableExpandedRow, TableExpandedRowProps, TableHeaderCell, TableRow, TableRowProps } from "./cells.mjs";
|
|
2
|
+
import { TableBody, TableColGroup, TableColGroupColumn, TableColGroupProps, TableContainer, TableElement, TableElementProps, TableFooter, TableHeader, TablePartProps, TableRoot, TableRootProps, TableScroll, TableScrollProps, TableSectionProps, TableSummaryFoot, TableTitle } from "./layout.mjs";
|
|
3
|
+
export { TableBody, TableCell, type TableCellProps, TableColGroup, type TableColGroupColumn, type TableColGroupProps, TableContainer, TableElement, type TableElementProps, TableExpandedRow, type TableExpandedRowProps, TableFooter, TableHeader, TableHeaderCell, type TablePartProps, TableRoot, type TableRootProps, TableRow, type TableRowProps, TableScroll, type TableScrollProps, type TableSectionProps, TableSummaryFoot, TableTitle };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TableCustomizeComponent, TableSize, TableVariant } from "../type.mjs";
|
|
2
|
+
import { HTMLAttributes, Ref, TableHTMLAttributes } from "react";
|
|
3
|
+
//#region src/Table/atoms/layout.d.ts
|
|
4
|
+
export interface TableRootProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
grouped?: boolean;
|
|
6
|
+
hoverable?: boolean;
|
|
7
|
+
ref?: Ref<HTMLDivElement>;
|
|
8
|
+
size?: TableSize;
|
|
9
|
+
variant?: TableVariant;
|
|
10
|
+
}
|
|
11
|
+
export declare const TableRoot: ({ className, grouped, hoverable, size, variant, ...rest }: TableRootProps) => import("react").JSX.Element;
|
|
12
|
+
export interface TablePartProps extends HTMLAttributes<HTMLDivElement> {
|
|
13
|
+
ref?: Ref<HTMLDivElement>;
|
|
14
|
+
}
|
|
15
|
+
export declare const TableContainer: ({ className, ...rest }: TablePartProps) => import("react").JSX.Element;
|
|
16
|
+
export interface TableScrollProps extends TablePartProps {
|
|
17
|
+
part?: 'body' | 'content' | 'header' | 'summary';
|
|
18
|
+
}
|
|
19
|
+
export declare const TableScroll: ({ className, part, ...rest }: TableScrollProps) => import("react").JSX.Element;
|
|
20
|
+
export declare const TableTitle: ({ className, ...rest }: TablePartProps) => import("react").JSX.Element;
|
|
21
|
+
export declare const TableFooter: ({ className, ...rest }: TablePartProps) => import("react").JSX.Element;
|
|
22
|
+
export interface TableElementProps extends TableHTMLAttributes<HTMLTableElement> {
|
|
23
|
+
component?: TableCustomizeComponent;
|
|
24
|
+
ref?: Ref<HTMLTableElement>;
|
|
25
|
+
}
|
|
26
|
+
export declare const TableElement: ({ component, ...rest }: TableElementProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
27
|
+
export interface TableColGroupColumn {
|
|
28
|
+
className?: string;
|
|
29
|
+
minWidth?: number | string;
|
|
30
|
+
width?: number | string;
|
|
31
|
+
}
|
|
32
|
+
export interface TableColGroupProps {
|
|
33
|
+
columns: readonly TableColGroupColumn[];
|
|
34
|
+
}
|
|
35
|
+
export declare const TableColGroup: ({ columns }: TableColGroupProps) => import("react").JSX.Element | null;
|
|
36
|
+
export interface TableSectionProps extends HTMLAttributes<HTMLTableSectionElement> {
|
|
37
|
+
component?: TableCustomizeComponent;
|
|
38
|
+
ref?: Ref<HTMLTableSectionElement>;
|
|
39
|
+
}
|
|
40
|
+
export declare const TableHeader: ({ className, component, ...rest }: TableSectionProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
41
|
+
export declare const TableBody: ({ className, component, ...rest }: TableSectionProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
42
|
+
export declare const TableSummaryFoot: ({ className, ...rest }: TableSectionProps) => import("react").JSX.Element;
|
|
43
|
+
//#endregion
|
|
44
|
+
//# sourceMappingURL=layout.d.mts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { PREFIX_CLS, SIZE_CLASS } from "../constants.mjs";
|
|
3
|
+
import { createElement } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import clsx$1 from "clsx";
|
|
6
|
+
//#region src/Table/atoms/layout.tsx
|
|
7
|
+
const TableRoot = ({ className, grouped, hoverable = true, size = "middle", variant = "borderless", ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
8
|
+
...rest,
|
|
9
|
+
className: clsx$1(PREFIX_CLS, SIZE_CLASS[size], `${PREFIX_CLS}-${variant}`, grouped && `lobe-table-grouped`, hoverable && `lobe-table-hoverable`, className)
|
|
10
|
+
});
|
|
11
|
+
const TableContainer = ({ className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
12
|
+
...rest,
|
|
13
|
+
className: clsx$1(`${PREFIX_CLS}-container`, className)
|
|
14
|
+
});
|
|
15
|
+
const TableScroll = ({ className, part = "content", ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
16
|
+
...rest,
|
|
17
|
+
className: clsx$1(`${PREFIX_CLS}-${part}`, className)
|
|
18
|
+
});
|
|
19
|
+
const TableTitle = ({ className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
20
|
+
...rest,
|
|
21
|
+
className: clsx$1(`${PREFIX_CLS}-title`, className)
|
|
22
|
+
});
|
|
23
|
+
const TableFooter = ({ className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
24
|
+
...rest,
|
|
25
|
+
className: clsx$1(`${PREFIX_CLS}-footer`, className)
|
|
26
|
+
});
|
|
27
|
+
const TableElement = ({ component = "table", ...rest }) => createElement(component, rest);
|
|
28
|
+
const TableColGroup = ({ columns }) => {
|
|
29
|
+
const cols = [];
|
|
30
|
+
let mustInsert = false;
|
|
31
|
+
for (let index = columns.length - 1; index >= 0; index -= 1) {
|
|
32
|
+
const { className, minWidth, width } = columns[index];
|
|
33
|
+
if (width || minWidth || className || mustInsert) {
|
|
34
|
+
const style = {
|
|
35
|
+
minWidth,
|
|
36
|
+
width
|
|
37
|
+
};
|
|
38
|
+
cols.unshift(/* @__PURE__ */ jsx("col", {
|
|
39
|
+
className,
|
|
40
|
+
style
|
|
41
|
+
}, index));
|
|
42
|
+
mustInsert = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return cols.length > 0 ? /* @__PURE__ */ jsx("colgroup", { children: cols }) : null;
|
|
46
|
+
};
|
|
47
|
+
const TableHeader = ({ className, component = "thead", ...rest }) => createElement(component, {
|
|
48
|
+
...rest,
|
|
49
|
+
className: clsx$1(`${PREFIX_CLS}-thead`, className)
|
|
50
|
+
});
|
|
51
|
+
const TableBody = ({ className, component = "tbody", ...rest }) => createElement(component, {
|
|
52
|
+
...rest,
|
|
53
|
+
className: clsx$1(`${PREFIX_CLS}-tbody`, className)
|
|
54
|
+
});
|
|
55
|
+
const TableSummaryFoot = ({ className, ...rest }) => /* @__PURE__ */ jsx("tfoot", {
|
|
56
|
+
...rest,
|
|
57
|
+
className: clsx$1(`${PREFIX_CLS}-summary`, className)
|
|
58
|
+
});
|
|
59
|
+
//#endregion
|
|
60
|
+
export { TableBody, TableColGroup, TableContainer, TableElement, TableFooter, TableHeader, TableRoot, TableScroll, TableSummaryFoot, TableTitle };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=layout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.mjs","names":["clsx"],"sources":["../../../src/Table/atoms/layout.tsx"],"sourcesContent":["'use client';\n\nimport '../style.css';\n\nimport clsx from 'clsx';\nimport {\n createElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n type TableHTMLAttributes,\n} from 'react';\n\nimport { PREFIX_CLS, SIZE_CLASS } from '../constants';\nimport type { TableCustomizeComponent, TableSize, TableVariant } from '../type';\n\nexport interface TableRootProps extends HTMLAttributes<HTMLDivElement> {\n grouped?: boolean;\n hoverable?: boolean;\n ref?: Ref<HTMLDivElement>;\n size?: TableSize;\n variant?: TableVariant;\n}\n\nexport const TableRoot = ({\n className,\n grouped,\n hoverable = true,\n size = 'middle',\n variant = 'borderless',\n ...rest\n}: TableRootProps) => (\n <div\n {...rest}\n className={clsx(\n PREFIX_CLS,\n SIZE_CLASS[size],\n `${PREFIX_CLS}-${variant}`,\n grouped && `${PREFIX_CLS}-grouped`,\n hoverable && `${PREFIX_CLS}-hoverable`,\n className,\n )}\n />\n);\n\nexport interface TablePartProps extends HTMLAttributes<HTMLDivElement> {\n ref?: Ref<HTMLDivElement>;\n}\n\nexport const TableContainer = ({ className, ...rest }: TablePartProps) => (\n <div {...rest} className={clsx(`${PREFIX_CLS}-container`, className)} />\n);\n\nexport interface TableScrollProps extends TablePartProps {\n part?: 'body' | 'content' | 'header' | 'summary';\n}\n\nexport const TableScroll = ({ className, part = 'content', ...rest }: TableScrollProps) => (\n <div {...rest} className={clsx(`${PREFIX_CLS}-${part}`, className)} />\n);\n\nexport const TableTitle = ({ className, ...rest }: TablePartProps) => (\n <div {...rest} className={clsx(`${PREFIX_CLS}-title`, className)} />\n);\n\nexport const TableFooter = ({ className, ...rest }: TablePartProps) => (\n <div {...rest} className={clsx(`${PREFIX_CLS}-footer`, className)} />\n);\n\nexport interface TableElementProps extends TableHTMLAttributes<HTMLTableElement> {\n component?: TableCustomizeComponent;\n ref?: Ref<HTMLTableElement>;\n}\n\nexport const TableElement = ({ component = 'table', ...rest }: TableElementProps) =>\n createElement(component, rest);\n\nexport interface TableColGroupColumn {\n className?: string;\n minWidth?: number | string;\n width?: number | string;\n}\n\nexport interface TableColGroupProps {\n columns: readonly TableColGroupColumn[];\n}\n\nexport const TableColGroup = ({ columns }: TableColGroupProps) => {\n const cols: ReactNode[] = [];\n let mustInsert = false;\n for (let index = columns.length - 1; index >= 0; index -= 1) {\n const { className, minWidth, width } = columns[index];\n if (width || minWidth || className || mustInsert) {\n const style: CSSProperties = { minWidth, width };\n cols.unshift(<col className={className} key={index} style={style} />);\n mustInsert = true;\n }\n }\n return cols.length > 0 ? <colgroup>{cols}</colgroup> : null;\n};\n\nexport interface TableSectionProps extends HTMLAttributes<HTMLTableSectionElement> {\n component?: TableCustomizeComponent;\n ref?: Ref<HTMLTableSectionElement>;\n}\n\nexport const TableHeader = ({ className, component = 'thead', ...rest }: TableSectionProps) =>\n createElement(component, { ...rest, className: clsx(`${PREFIX_CLS}-thead`, className) });\n\nexport const TableBody = ({ className, component = 'tbody', ...rest }: TableSectionProps) =>\n createElement(component, { ...rest, className: clsx(`${PREFIX_CLS}-tbody`, className) });\n\nexport const TableSummaryFoot = ({ className, ...rest }: TableSectionProps) => (\n <tfoot {...rest} className={clsx(`${PREFIX_CLS}-summary`, className)} />\n);\n"],"mappings":";;;;;;AAyBA,MAAa,aAAa,EACxB,WACA,SACA,YAAY,MACZ,OAAO,UACP,UAAU,cACV,GAAG,WAEH,oBAAC,OAAD;CACE,GAAI;CACJ,WAAWA,OACT,YACA,WAAW,OACX,GAAG,WAAW,GAAG,WACjB,WAAW,sBACX,aAAa,wBACb,SACF;AACD,CAAA;AAOH,MAAa,kBAAkB,EAAE,WAAW,GAAG,WAC7C,oBAAC,OAAD;CAAK,GAAI;CAAM,WAAWA,OAAK,GAAG,WAAW,aAAa,SAAS;AAAI,CAAA;AAOzE,MAAa,eAAe,EAAE,WAAW,OAAO,WAAW,GAAG,WAC5D,oBAAC,OAAD;CAAK,GAAI;CAAM,WAAWA,OAAK,GAAG,WAAW,GAAG,QAAQ,SAAS;AAAI,CAAA;AAGvE,MAAa,cAAc,EAAE,WAAW,GAAG,WACzC,oBAAC,OAAD;CAAK,GAAI;CAAM,WAAWA,OAAK,GAAG,WAAW,SAAS,SAAS;AAAI,CAAA;AAGrE,MAAa,eAAe,EAAE,WAAW,GAAG,WAC1C,oBAAC,OAAD;CAAK,GAAI;CAAM,WAAWA,OAAK,GAAG,WAAW,UAAU,SAAS;AAAI,CAAA;AAQtE,MAAa,gBAAgB,EAAE,YAAY,SAAS,GAAG,WACrD,cAAc,WAAW,IAAI;AAY/B,MAAa,iBAAiB,EAAE,cAAkC;CAChE,MAAM,OAAoB,CAAC;CAC3B,IAAI,aAAa;CACjB,KAAK,IAAI,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG;EAC3D,MAAM,EAAE,WAAW,UAAU,UAAU,QAAQ;EAC/C,IAAI,SAAS,YAAY,aAAa,YAAY;GAChD,MAAM,QAAuB;IAAE;IAAU;GAAM;GAC/C,KAAK,QAAQ,oBAAC,OAAD;IAAgB;IAA8B;GAAQ,GAAtB,KAAsB,CAAC;GACpE,aAAa;EACf;CACF;CACA,OAAO,KAAK,SAAS,IAAI,oBAAC,YAAD,EAAA,UAAW,KAAe,CAAA,IAAI;AACzD;AAOA,MAAa,eAAe,EAAE,WAAW,YAAY,SAAS,GAAG,WAC/D,cAAc,WAAW;CAAE,GAAG;CAAM,WAAWA,OAAK,GAAG,WAAW,SAAS,SAAS;AAAE,CAAC;AAEzF,MAAa,aAAa,EAAE,WAAW,YAAY,SAAS,GAAG,WAC7D,cAAc,WAAW;CAAE,GAAG;CAAM,WAAWA,OAAK,GAAG,WAAW,SAAS,SAAS;AAAE,CAAC;AAEzF,MAAa,oBAAoB,EAAE,WAAW,GAAG,WAC/C,oBAAC,SAAD;CAAO,GAAI;CAAM,WAAWA,OAAK,GAAG,WAAW,WAAW,SAAS;AAAI,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/Table/constants.ts
|
|
2
|
+
const PREFIX_CLS = "lobe-table";
|
|
3
|
+
const VIRTUAL_ROW_HEIGHT = {
|
|
4
|
+
large: 55,
|
|
5
|
+
middle: 47,
|
|
6
|
+
small: 39
|
|
7
|
+
};
|
|
8
|
+
const SIZE_CLASS = {
|
|
9
|
+
large: `${PREFIX_CLS}-large`,
|
|
10
|
+
middle: `${PREFIX_CLS}-medium`,
|
|
11
|
+
small: `${PREFIX_CLS}-small`
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PREFIX_CLS, SIZE_CLASS, VIRTUAL_ROW_HEIGHT };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":[],"sources":["../../src/Table/constants.ts"],"sourcesContent":["import type { TableSize } from './type';\n\nexport const PREFIX_CLS = 'lobe-table';\n\nexport const EXPAND_COLUMN_WIDTH = 48;\nexport const SELECTION_COLUMN_WIDTH = 32;\nexport const SELECTION_DROPDOWN_WIDTH = 24;\nexport const DEFAULT_INDENT_SIZE = 15;\n\nexport const VIRTUAL_ROW_HEIGHT: Record<TableSize, number> = {\n large: 16 * 2 + 22 + 1,\n middle: 12 * 2 + 22 + 1,\n small: 8 * 2 + 22 + 1,\n};\n\nexport const SIZE_CLASS: Record<TableSize, string> = {\n large: `${PREFIX_CLS}-large`,\n middle: `${PREFIX_CLS}-medium`,\n small: `${PREFIX_CLS}-small`,\n};\n"],"mappings":";AAEA,MAAa,aAAa;AAO1B,MAAa,qBAAgD;CAC3D,OAAO;CACP,QAAQ;CACR,OAAO;AACT;AAEA,MAAa,aAAwC;CACnD,OAAO,GAAG,WAAW;CACrB,QAAQ,GAAG,WAAW;CACtB,OAAO,GAAG,WAAW;AACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./types.mjs";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//#region src/Table/engine/fixed.ts
|
|
2
|
+
const getStickyOffsets = (widths, leaves) => {
|
|
3
|
+
const count = leaves.length;
|
|
4
|
+
const collect = (from, to, step) => {
|
|
5
|
+
const offsets = [];
|
|
6
|
+
let total = 0;
|
|
7
|
+
for (let index = from; index !== to; index += step) {
|
|
8
|
+
offsets.push(total);
|
|
9
|
+
if (leaves[index].fixed) total += widths[index] || 0;
|
|
10
|
+
}
|
|
11
|
+
return offsets;
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
end: collect(count - 1, -1, -1).reverse(),
|
|
15
|
+
start: collect(0, count, 1),
|
|
16
|
+
widths
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const isStart = (column) => column?.fixed === "start";
|
|
20
|
+
const isEnd = (column) => column?.fixed === "end";
|
|
21
|
+
const getFixedInfo = (colStart, colEnd, leaves, offsets) => {
|
|
22
|
+
const count = leaves.length;
|
|
23
|
+
const info = {
|
|
24
|
+
offsetFixedEndShadow: 0,
|
|
25
|
+
offsetFixedStartShadow: 0,
|
|
26
|
+
shadowEnd: false,
|
|
27
|
+
shadowStart: false,
|
|
28
|
+
zIndex: 0,
|
|
29
|
+
zIndexReverse: 0
|
|
30
|
+
};
|
|
31
|
+
if (isStart(leaves[colStart]) && isStart(leaves[colEnd])) {
|
|
32
|
+
info.fixStart = offsets.start[colStart];
|
|
33
|
+
info.shadowStart = !isStart(leaves[colEnd + 1]);
|
|
34
|
+
info.zIndex = count * 2 - colStart;
|
|
35
|
+
info.zIndexReverse = count + colStart;
|
|
36
|
+
} else if (isEnd(leaves[colEnd]) && isEnd(leaves[colStart])) {
|
|
37
|
+
info.fixEnd = offsets.end[colEnd];
|
|
38
|
+
info.shadowEnd = !isEnd(leaves[colStart - 1]);
|
|
39
|
+
info.zIndex = colEnd;
|
|
40
|
+
info.zIndexReverse = count - colEnd;
|
|
41
|
+
}
|
|
42
|
+
if (info.shadowStart) {
|
|
43
|
+
for (let index = 0; index < colStart; index += 1) if (!isStart(leaves[index])) info.offsetFixedStartShadow += offsets.widths[index] || 0;
|
|
44
|
+
}
|
|
45
|
+
if (info.shadowEnd) {
|
|
46
|
+
for (let index = count - 1; index > colEnd; index -= 1) if (!isEnd(leaves[index])) info.offsetFixedEndShadow += offsets.widths[index] || 0;
|
|
47
|
+
}
|
|
48
|
+
return info;
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
51
|
+
export { getFixedInfo, getStickyOffsets };
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=fixed.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed.mjs","names":[],"sources":["../../../src/Table/engine/fixed.ts"],"sourcesContent":["import type { EngineColumn, FixedInfo } from './types';\n\nexport interface StickyOffsets {\n end: number[];\n start: number[];\n widths: readonly number[];\n}\n\nexport const getStickyOffsets = (\n widths: readonly number[],\n leaves: readonly Pick<EngineColumn, 'fixed'>[],\n): StickyOffsets => {\n const count = leaves.length;\n const collect = (from: number, to: number, step: number) => {\n const offsets: number[] = [];\n let total = 0;\n for (let index = from; index !== to; index += step) {\n offsets.push(total);\n if (leaves[index].fixed) total += widths[index] || 0;\n }\n return offsets;\n };\n return { end: collect(count - 1, -1, -1).reverse(), start: collect(0, count, 1), widths };\n};\n\nconst isStart = (column?: Pick<EngineColumn, 'fixed'>) => column?.fixed === 'start';\nconst isEnd = (column?: Pick<EngineColumn, 'fixed'>) => column?.fixed === 'end';\n\nexport const getFixedInfo = (\n colStart: number,\n colEnd: number,\n leaves: readonly Pick<EngineColumn, 'fixed'>[],\n offsets: StickyOffsets,\n): FixedInfo => {\n const count = leaves.length;\n const info: FixedInfo = {\n offsetFixedEndShadow: 0,\n offsetFixedStartShadow: 0,\n shadowEnd: false,\n shadowStart: false,\n zIndex: 0,\n zIndexReverse: 0,\n };\n\n if (isStart(leaves[colStart]) && isStart(leaves[colEnd])) {\n info.fixStart = offsets.start[colStart];\n info.shadowStart = !isStart(leaves[colEnd + 1]);\n info.zIndex = count * 2 - colStart;\n info.zIndexReverse = count + colStart;\n } else if (isEnd(leaves[colEnd]) && isEnd(leaves[colStart])) {\n info.fixEnd = offsets.end[colEnd];\n info.shadowEnd = !isEnd(leaves[colStart - 1]);\n info.zIndex = colEnd;\n info.zIndexReverse = count - colEnd;\n }\n\n if (info.shadowStart) {\n for (let index = 0; index < colStart; index += 1) {\n if (!isStart(leaves[index])) info.offsetFixedStartShadow += offsets.widths[index] || 0;\n }\n }\n if (info.shadowEnd) {\n for (let index = count - 1; index > colEnd; index -= 1) {\n if (!isEnd(leaves[index])) info.offsetFixedEndShadow += offsets.widths[index] || 0;\n }\n }\n return info;\n};\n"],"mappings":";AAQA,MAAa,oBACX,QACA,WACkB;CAClB,MAAM,QAAQ,OAAO;CACrB,MAAM,WAAW,MAAc,IAAY,SAAiB;EAC1D,MAAM,UAAoB,CAAC;EAC3B,IAAI,QAAQ;EACZ,KAAK,IAAI,QAAQ,MAAM,UAAU,IAAI,SAAS,MAAM;GAClD,QAAQ,KAAK,KAAK;GAClB,IAAI,OAAO,MAAM,CAAC,OAAO,SAAS,OAAO,UAAU;EACrD;EACA,OAAO;CACT;CACA,OAAO;EAAE,KAAK,QAAQ,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ;EAAG,OAAO,QAAQ,GAAG,OAAO,CAAC;EAAG;CAAO;AAC1F;AAEA,MAAM,WAAW,WAAyC,QAAQ,UAAU;AAC5E,MAAM,SAAS,WAAyC,QAAQ,UAAU;AAE1E,MAAa,gBACX,UACA,QACA,QACA,YACc;CACd,MAAM,QAAQ,OAAO;CACrB,MAAM,OAAkB;EACtB,sBAAsB;EACtB,wBAAwB;EACxB,WAAW;EACX,aAAa;EACb,QAAQ;EACR,eAAe;CACjB;CAEA,IAAI,QAAQ,OAAO,SAAS,KAAK,QAAQ,OAAO,OAAO,GAAG;EACxD,KAAK,WAAW,QAAQ,MAAM;EAC9B,KAAK,cAAc,CAAC,QAAQ,OAAO,SAAS,EAAE;EAC9C,KAAK,SAAS,QAAQ,IAAI;EAC1B,KAAK,gBAAgB,QAAQ;CAC/B,OAAO,IAAI,MAAM,OAAO,OAAO,KAAK,MAAM,OAAO,SAAS,GAAG;EAC3D,KAAK,SAAS,QAAQ,IAAI;EAC1B,KAAK,YAAY,CAAC,MAAM,OAAO,WAAW,EAAE;EAC5C,KAAK,SAAS;EACd,KAAK,gBAAgB,QAAQ;CAC/B;CAEA,IAAI,KAAK,aACF;OAAA,IAAI,QAAQ,GAAG,QAAQ,UAAU,SAAS,GAC7C,IAAI,CAAC,QAAQ,OAAO,MAAM,GAAG,KAAK,0BAA0B,QAAQ,OAAO,UAAU;CAAA;CAGzF,IAAI,KAAK,WACF;OAAA,IAAI,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GACnD,IAAI,CAAC,MAAM,OAAO,MAAM,GAAG,KAAK,wBAAwB,QAAQ,OAAO,UAAU;CAAA;CAGrF,OAAO;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { Key } from "react";
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { getFixedInfo, getStickyOffsets } from "./fixed.mjs";
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { createExpandedRowModel, rowExpandingFeature, tableFeatures, useTable } from "@tanstack/react-table";
|
|
4
|
+
import { measureElement, observeElementRect, useVirtualizer } from "@tanstack/react-virtual";
|
|
5
|
+
//#region src/Table/engine/useTableEngine.ts
|
|
6
|
+
const features = tableFeatures({
|
|
7
|
+
expandedRowModel: createExpandedRowModel(),
|
|
8
|
+
rowExpandingFeature
|
|
9
|
+
});
|
|
10
|
+
const flattenLeaves = (columns, inheritedFixed) => columns.flatMap((column) => {
|
|
11
|
+
const fixed = column.fixed ?? inheritedFixed;
|
|
12
|
+
if (column.children?.length) return flattenLeaves(column.children, fixed);
|
|
13
|
+
return [{
|
|
14
|
+
...column,
|
|
15
|
+
fixed
|
|
16
|
+
}];
|
|
17
|
+
});
|
|
18
|
+
const toColumnDefs = (columns) => columns.map((column) => column.children?.length ? {
|
|
19
|
+
columns: toColumnDefs(column.children),
|
|
20
|
+
id: column.key,
|
|
21
|
+
meta: column
|
|
22
|
+
} : {
|
|
23
|
+
id: column.key,
|
|
24
|
+
meta: column
|
|
25
|
+
});
|
|
26
|
+
const useHeaderRows = (table, columns, leaves, offsets) => useMemo(() => {
|
|
27
|
+
const leafIndex = new Map(leaves.map((leaf, index) => [leaf.key, index]));
|
|
28
|
+
const fixedByKey = /* @__PURE__ */ new Map();
|
|
29
|
+
const collectFixed = (list, inherited) => list.forEach((column) => {
|
|
30
|
+
const fixed = column.fixed ?? inherited;
|
|
31
|
+
fixedByKey.set(column.key, fixed);
|
|
32
|
+
if (column.children) collectFixed(column.children, fixed);
|
|
33
|
+
});
|
|
34
|
+
collectFixed(columns);
|
|
35
|
+
return table.getHeaderGroups().map((group) => group.headers.flatMap((header) => {
|
|
36
|
+
if (header.rowSpan === 0) return [];
|
|
37
|
+
const column = header.column.columnDef.meta;
|
|
38
|
+
const leafHeader = header.getLeafHeaders().find((leaf) => !leaf.subHeaders.length);
|
|
39
|
+
const colStart = leafIndex.get(leafHeader?.column.id) ?? 0;
|
|
40
|
+
const colSpan = column.headerColSpan ?? header.colSpan;
|
|
41
|
+
if (colSpan === 0) return [];
|
|
42
|
+
const colEnd = colStart + colSpan - 1;
|
|
43
|
+
return [{
|
|
44
|
+
colEnd,
|
|
45
|
+
colSpan,
|
|
46
|
+
colStart,
|
|
47
|
+
column: {
|
|
48
|
+
...column,
|
|
49
|
+
fixed: fixedByKey.get(column.key)
|
|
50
|
+
},
|
|
51
|
+
fixedInfo: getFixedInfo(colStart, colEnd, leaves, offsets),
|
|
52
|
+
isLeaf: !column.children?.length,
|
|
53
|
+
key: column.key,
|
|
54
|
+
rowSpan: header.rowSpan
|
|
55
|
+
}];
|
|
56
|
+
}));
|
|
57
|
+
}, [
|
|
58
|
+
table,
|
|
59
|
+
columns,
|
|
60
|
+
leaves,
|
|
61
|
+
offsets
|
|
62
|
+
]);
|
|
63
|
+
const useVirtualModel = (virtual, rows) => {
|
|
64
|
+
const { rowHeight } = virtual;
|
|
65
|
+
const fallbackHeight = virtual.initialHeight ?? 0;
|
|
66
|
+
const observeRect = useCallback((instance, callback) => observeElementRect(instance, (rect) => callback({
|
|
67
|
+
height: rect.height || fallbackHeight,
|
|
68
|
+
width: rect.width
|
|
69
|
+
})), [fallbackHeight]);
|
|
70
|
+
const estimateSize = useCallback(() => rowHeight, [rowHeight]);
|
|
71
|
+
const measure = useCallback((element, entry, instance) => measureElement(element, entry, instance) || rowHeight, [rowHeight]);
|
|
72
|
+
const getItemKey = useCallback((index) => rows[index]?.key ?? index, [rows]);
|
|
73
|
+
const virtualizer = useVirtualizer({
|
|
74
|
+
count: rows.length,
|
|
75
|
+
estimateSize,
|
|
76
|
+
getItemKey,
|
|
77
|
+
getScrollElement: virtual.getScrollElement,
|
|
78
|
+
initialRect: {
|
|
79
|
+
height: fallbackHeight,
|
|
80
|
+
width: 0
|
|
81
|
+
},
|
|
82
|
+
measureElement: measure,
|
|
83
|
+
observeElementRect: observeRect,
|
|
84
|
+
overscan: virtual.overscan ?? 6
|
|
85
|
+
});
|
|
86
|
+
const scrollTo = ({ align = "nearest", index, key, offset = 0, top }) => {
|
|
87
|
+
const element = virtual.getScrollElement();
|
|
88
|
+
if (!element) return;
|
|
89
|
+
if (typeof top === "number") {
|
|
90
|
+
element.scrollTop = top;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const target = key === void 0 ? index : rows.findIndex((row) => String(row.key) === String(key));
|
|
94
|
+
if (target === void 0 || target < 0) return;
|
|
95
|
+
const item = virtualizer.measurementsCache[target];
|
|
96
|
+
if (!item) return;
|
|
97
|
+
const viewport = element.clientHeight;
|
|
98
|
+
let next = element.scrollTop;
|
|
99
|
+
if (align === "start") next = item.start;
|
|
100
|
+
else if (align === "end") next = item.end - viewport;
|
|
101
|
+
else if (item.start < next) next = item.start;
|
|
102
|
+
else if (item.end > next + viewport) next = item.end - viewport;
|
|
103
|
+
element.scrollTop = Math.max(0, next + offset);
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
getRange: (index) => {
|
|
107
|
+
const item = virtualizer.measurementsCache[index];
|
|
108
|
+
return item ? {
|
|
109
|
+
end: item.end,
|
|
110
|
+
start: item.start
|
|
111
|
+
} : void 0;
|
|
112
|
+
},
|
|
113
|
+
items: virtualizer.getVirtualItems().map((item) => ({
|
|
114
|
+
index: item.index,
|
|
115
|
+
key: item.key,
|
|
116
|
+
size: item.size,
|
|
117
|
+
start: item.start
|
|
118
|
+
})),
|
|
119
|
+
measureElement: virtualizer.measureElement,
|
|
120
|
+
scrollTo,
|
|
121
|
+
totalSize: virtualizer.getTotalSize()
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
const useTableEngine = ({ columnWidths, columns, data, expandedKeys, getChildren, getRowKey }) => {
|
|
125
|
+
const columnDefs = useMemo(() => toColumnDefs(columns), [columns]);
|
|
126
|
+
const leaves = useMemo(() => flattenLeaves(columns), [columns]);
|
|
127
|
+
const expanded = useMemo(() => {
|
|
128
|
+
const state = {};
|
|
129
|
+
expandedKeys.forEach((key) => {
|
|
130
|
+
state[String(key)] = true;
|
|
131
|
+
});
|
|
132
|
+
return state;
|
|
133
|
+
}, [expandedKeys]);
|
|
134
|
+
const table = useTable({
|
|
135
|
+
columns: columnDefs,
|
|
136
|
+
data,
|
|
137
|
+
features,
|
|
138
|
+
getRowId: (record, index) => String(getRowKey(record, index)),
|
|
139
|
+
getSubRows: getChildren ? (record) => {
|
|
140
|
+
const children = getChildren(record);
|
|
141
|
+
return children?.length ? children : void 0;
|
|
142
|
+
} : void 0,
|
|
143
|
+
state: { expanded }
|
|
144
|
+
}, () => null);
|
|
145
|
+
const offsets = useMemo(() => getStickyOffsets(columnWidths, leaves), [columnWidths, leaves]);
|
|
146
|
+
const leafColumns = useMemo(() => leaves.map((column, index) => ({
|
|
147
|
+
column,
|
|
148
|
+
fixed: column.fixed,
|
|
149
|
+
fixedInfo: getFixedInfo(index, index, leaves, offsets),
|
|
150
|
+
index,
|
|
151
|
+
key: column.key
|
|
152
|
+
})), [leaves, offsets]);
|
|
153
|
+
const headerRows = useHeaderRows(table, columns, leaves, offsets);
|
|
154
|
+
const coreRows = table.getRowModel().rows;
|
|
155
|
+
return {
|
|
156
|
+
headerRows,
|
|
157
|
+
leafColumns,
|
|
158
|
+
rows: useMemo(() => coreRows.map((row, index) => {
|
|
159
|
+
const key = getRowKey(row.original, row.index);
|
|
160
|
+
return {
|
|
161
|
+
depth: row.depth,
|
|
162
|
+
expanded: expandedKeys.has(key),
|
|
163
|
+
hasChildren: Boolean(getChildren?.(row.original)),
|
|
164
|
+
index,
|
|
165
|
+
key,
|
|
166
|
+
record: row.original,
|
|
167
|
+
renderIndex: row.index
|
|
168
|
+
};
|
|
169
|
+
}), [
|
|
170
|
+
coreRows,
|
|
171
|
+
expandedKeys,
|
|
172
|
+
getChildren,
|
|
173
|
+
getRowKey
|
|
174
|
+
])
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
//#endregion
|
|
178
|
+
export { useTableEngine, useVirtualModel };
|
|
179
|
+
|
|
180
|
+
//# sourceMappingURL=useTableEngine.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableEngine.mjs","names":[],"sources":["../../../src/Table/engine/useTableEngine.ts"],"sourcesContent":["import {\n type ColumnDef,\n createExpandedRowModel,\n type ExpandedState,\n rowExpandingFeature,\n tableFeatures,\n useTable,\n} from '@tanstack/react-table';\nimport {\n measureElement,\n observeElementRect,\n useVirtualizer,\n type Virtualizer,\n} from '@tanstack/react-virtual';\nimport { type Key, useCallback, useMemo } from 'react';\n\nimport { getFixedInfo, getStickyOffsets } from './fixed';\nimport type {\n EngineColumn,\n HeaderCellModel,\n LeafColumnModel,\n RowModel,\n TableEngineInput,\n TableModel,\n VirtualInput,\n VirtualModel,\n VirtualScrollConfig,\n} from './types';\n\nconst features = tableFeatures({\n expandedRowModel: createExpandedRowModel(),\n rowExpandingFeature,\n});\n\ntype Features = typeof features;\n\nconst flattenLeaves = <C>(\n columns: readonly EngineColumn<C>[],\n inheritedFixed?: EngineColumn<C>['fixed'],\n): EngineColumn<C>[] =>\n columns.flatMap((column) => {\n const fixed = column.fixed ?? inheritedFixed;\n if (column.children?.length) return flattenLeaves(column.children, fixed);\n return [{ ...column, fixed }];\n });\n\nconst toColumnDefs = <C>(columns: readonly EngineColumn<C>[]): ColumnDef<Features, any>[] =>\n columns.map((column) =>\n column.children?.length\n ? { columns: toColumnDefs(column.children), id: column.key, meta: column }\n : { id: column.key, meta: column },\n ) as ColumnDef<Features, any>[];\n\nconst useHeaderRows = <C>(\n table: { getHeaderGroups: () => any[] },\n columns: readonly EngineColumn<C>[],\n leaves: readonly EngineColumn<C>[],\n offsets: ReturnType<typeof getStickyOffsets>,\n): HeaderCellModel<C>[][] =>\n useMemo(() => {\n const leafIndex = new Map(leaves.map((leaf, index) => [leaf.key, index]));\n const fixedByKey = new Map<string, EngineColumn<C>['fixed']>();\n const collectFixed = (list: readonly EngineColumn<C>[], inherited?: EngineColumn<C>['fixed']) =>\n list.forEach((column) => {\n const fixed = column.fixed ?? inherited;\n fixedByKey.set(column.key, fixed);\n if (column.children) collectFixed(column.children, fixed);\n });\n collectFixed(columns);\n\n return table.getHeaderGroups().map((group) =>\n group.headers.flatMap((header: any): HeaderCellModel<C>[] => {\n if (header.rowSpan === 0) return [];\n const column = header.column.columnDef.meta as EngineColumn<C>;\n const leafHeader = header.getLeafHeaders().find((leaf: any) => !leaf.subHeaders.length);\n const colStart = leafIndex.get(leafHeader?.column.id) ?? 0;\n const colSpan = column.headerColSpan ?? header.colSpan;\n if (colSpan === 0) return [];\n const colEnd = colStart + colSpan - 1;\n return [\n {\n colEnd,\n colSpan,\n colStart,\n column: { ...column, fixed: fixedByKey.get(column.key) },\n fixedInfo: getFixedInfo(colStart, colEnd, leaves, offsets),\n isLeaf: !column.children?.length,\n key: column.key,\n rowSpan: header.rowSpan,\n },\n ];\n }),\n );\n }, [table, columns, leaves, offsets]);\n\nexport const useVirtualModel = <T>(\n virtual: VirtualInput,\n rows: readonly RowModel<T>[],\n): VirtualModel => {\n const { rowHeight } = virtual;\n const fallbackHeight = virtual.initialHeight ?? 0;\n const observeRect = useCallback(\n (\n instance: Virtualizer<HTMLElement, Element>,\n callback: (rect: { height: number; width: number }) => void,\n ) =>\n observeElementRect(instance, (rect) =>\n callback({ height: rect.height || fallbackHeight, width: rect.width }),\n ),\n [fallbackHeight],\n );\n const estimateSize = useCallback(() => rowHeight, [rowHeight]);\n const measure = useCallback(\n (\n element: Element,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<HTMLElement, Element>,\n ) => measureElement(element, entry, instance) || rowHeight,\n [rowHeight],\n );\n const getItemKey = useCallback((index: number) => rows[index]?.key ?? index, [rows]);\n const virtualizer = useVirtualizer({\n count: rows.length,\n estimateSize,\n getItemKey,\n getScrollElement: virtual.getScrollElement,\n initialRect: { height: fallbackHeight, width: 0 },\n measureElement: measure,\n observeElementRect: observeRect,\n overscan: virtual.overscan ?? 6,\n });\n\n const scrollTo = ({ align = 'nearest', index, key, offset = 0, top }: VirtualScrollConfig) => {\n const element = virtual.getScrollElement();\n if (!element) return;\n if (typeof top === 'number') {\n element.scrollTop = top;\n return;\n }\n const target =\n key === undefined ? index : rows.findIndex((row) => String(row.key) === String(key));\n if (target === undefined || target < 0) return;\n const item = virtualizer.measurementsCache[target];\n if (!item) return;\n const viewport = element.clientHeight;\n let next = element.scrollTop;\n if (align === 'start') next = item.start;\n else if (align === 'end') next = item.end - viewport;\n else if (item.start < next) next = item.start;\n else if (item.end > next + viewport) next = item.end - viewport;\n element.scrollTop = Math.max(0, next + offset);\n };\n\n return {\n getRange: (index) => {\n const item = virtualizer.measurementsCache[index];\n return item ? { end: item.end, start: item.start } : undefined;\n },\n items: virtualizer.getVirtualItems().map((item) => ({\n index: item.index,\n key: item.key as Key,\n size: item.size,\n start: item.start,\n })),\n measureElement: virtualizer.measureElement,\n scrollTo,\n totalSize: virtualizer.getTotalSize(),\n };\n};\n\nexport const useTableEngine = <T, C = unknown>({\n columnWidths,\n columns,\n data,\n expandedKeys,\n getChildren,\n getRowKey,\n}: TableEngineInput<T, C>): TableModel<T, C> => {\n const columnDefs = useMemo(() => toColumnDefs(columns), [columns]);\n const leaves = useMemo(() => flattenLeaves(columns), [columns]);\n\n const expanded = useMemo(() => {\n const state: Record<string, boolean> = {};\n expandedKeys.forEach((key) => {\n state[String(key)] = true;\n });\n return state as ExpandedState;\n }, [expandedKeys]);\n\n const table = useTable(\n {\n columns: columnDefs,\n data: data as T[],\n features,\n getRowId: (record: T, index: number) => String(getRowKey(record, index)),\n getSubRows: getChildren\n ? (record: T) => {\n const children = getChildren(record);\n return children?.length ? children : undefined;\n }\n : undefined,\n state: { expanded },\n } as any,\n () => null,\n );\n\n const offsets = useMemo(() => getStickyOffsets(columnWidths, leaves), [columnWidths, leaves]);\n\n const leafColumns = useMemo(\n (): LeafColumnModel<C>[] =>\n leaves.map((column, index) => ({\n column,\n fixed: column.fixed,\n fixedInfo: getFixedInfo(index, index, leaves, offsets),\n index,\n key: column.key,\n })),\n [leaves, offsets],\n );\n\n const headerRows = useHeaderRows(table as any, columns, leaves, offsets);\n\n const coreRows = (table as any).getRowModel().rows as any[];\n const rows = useMemo(\n (): RowModel<T>[] =>\n coreRows.map((row, index) => {\n const key = getRowKey(row.original, row.index);\n return {\n depth: row.depth,\n expanded: expandedKeys.has(key),\n hasChildren: Boolean(getChildren?.(row.original)),\n index,\n key,\n record: row.original,\n renderIndex: row.index,\n };\n }),\n [coreRows, expandedKeys, getChildren, getRowKey],\n );\n\n return { headerRows, leafColumns, rows };\n};\n"],"mappings":";;;;;AA6BA,MAAM,WAAW,cAAc;CAC7B,kBAAkB,uBAAuB;CACzC;AACF,CAAC;AAID,MAAM,iBACJ,SACA,mBAEA,QAAQ,SAAS,WAAW;CAC1B,MAAM,QAAQ,OAAO,SAAS;CAC9B,IAAI,OAAO,UAAU,QAAQ,OAAO,cAAc,OAAO,UAAU,KAAK;CACxE,OAAO,CAAC;EAAE,GAAG;EAAQ;CAAM,CAAC;AAC9B,CAAC;AAEH,MAAM,gBAAmB,YACvB,QAAQ,KAAK,WACX,OAAO,UAAU,SACb;CAAE,SAAS,aAAa,OAAO,QAAQ;CAAG,IAAI,OAAO;CAAK,MAAM;AAAO,IACvE;CAAE,IAAI,OAAO;CAAK,MAAM;AAAO,CACrC;AAEF,MAAM,iBACJ,OACA,SACA,QACA,YAEA,cAAc;CACZ,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,MAAM,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;CACxE,MAAM,6BAAa,IAAI,IAAsC;CAC7D,MAAM,gBAAgB,MAAkC,cACtD,KAAK,SAAS,WAAW;EACvB,MAAM,QAAQ,OAAO,SAAS;EAC9B,WAAW,IAAI,OAAO,KAAK,KAAK;EAChC,IAAI,OAAO,UAAU,aAAa,OAAO,UAAU,KAAK;CAC1D,CAAC;CACH,aAAa,OAAO;CAEpB,OAAO,MAAM,gBAAgB,CAAC,CAAC,KAAK,UAClC,MAAM,QAAQ,SAAS,WAAsC;EAC3D,IAAI,OAAO,YAAY,GAAG,OAAO,CAAC;EAClC,MAAM,SAAS,OAAO,OAAO,UAAU;EACvC,MAAM,aAAa,OAAO,eAAe,CAAC,CAAC,MAAM,SAAc,CAAC,KAAK,WAAW,MAAM;EACtF,MAAM,WAAW,UAAU,IAAI,YAAY,OAAO,EAAE,KAAK;EACzD,MAAM,UAAU,OAAO,iBAAiB,OAAO;EAC/C,IAAI,YAAY,GAAG,OAAO,CAAC;EAC3B,MAAM,SAAS,WAAW,UAAU;EACpC,OAAO,CACL;GACE;GACA;GACA;GACA,QAAQ;IAAE,GAAG;IAAQ,OAAO,WAAW,IAAI,OAAO,GAAG;GAAE;GACvD,WAAW,aAAa,UAAU,QAAQ,QAAQ,OAAO;GACzD,QAAQ,CAAC,OAAO,UAAU;GAC1B,KAAK,OAAO;GACZ,SAAS,OAAO;EAClB,CACF;CACF,CAAC,CACH;AACF,GAAG;CAAC;CAAO;CAAS;CAAQ;AAAO,CAAC;AAEtC,MAAa,mBACX,SACA,SACiB;CACjB,MAAM,EAAE,cAAc;CACtB,MAAM,iBAAiB,QAAQ,iBAAiB;CAChD,MAAM,cAAc,aAEhB,UACA,aAEA,mBAAmB,WAAW,SAC5B,SAAS;EAAE,QAAQ,KAAK,UAAU;EAAgB,OAAO,KAAK;CAAM,CAAC,CACvE,GACF,CAAC,cAAc,CACjB;CACA,MAAM,eAAe,kBAAkB,WAAW,CAAC,SAAS,CAAC;CAC7D,MAAM,UAAU,aAEZ,SACA,OACA,aACG,eAAe,SAAS,OAAO,QAAQ,KAAK,WACjD,CAAC,SAAS,CACZ;CACA,MAAM,aAAa,aAAa,UAAkB,KAAK,MAAM,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;CACnF,MAAM,cAAc,eAAe;EACjC,OAAO,KAAK;EACZ;EACA;EACA,kBAAkB,QAAQ;EAC1B,aAAa;GAAE,QAAQ;GAAgB,OAAO;EAAE;EAChD,gBAAgB;EAChB,oBAAoB;EACpB,UAAU,QAAQ,YAAY;CAChC,CAAC;CAED,MAAM,YAAY,EAAE,QAAQ,WAAW,OAAO,KAAK,SAAS,GAAG,UAA+B;EAC5F,MAAM,UAAU,QAAQ,iBAAiB;EACzC,IAAI,CAAC,SAAS;EACd,IAAI,OAAO,QAAQ,UAAU;GAC3B,QAAQ,YAAY;GACpB;EACF;EACA,MAAM,SACJ,QAAQ,KAAA,IAAY,QAAQ,KAAK,WAAW,QAAQ,OAAO,IAAI,GAAG,MAAM,OAAO,GAAG,CAAC;EACrF,IAAI,WAAW,KAAA,KAAa,SAAS,GAAG;EACxC,MAAM,OAAO,YAAY,kBAAkB;EAC3C,IAAI,CAAC,MAAM;EACX,MAAM,WAAW,QAAQ;EACzB,IAAI,OAAO,QAAQ;EACnB,IAAI,UAAU,SAAS,OAAO,KAAK;OAC9B,IAAI,UAAU,OAAO,OAAO,KAAK,MAAM;OACvC,IAAI,KAAK,QAAQ,MAAM,OAAO,KAAK;OACnC,IAAI,KAAK,MAAM,OAAO,UAAU,OAAO,KAAK,MAAM;EACvD,QAAQ,YAAY,KAAK,IAAI,GAAG,OAAO,MAAM;CAC/C;CAEA,OAAO;EACL,WAAW,UAAU;GACnB,MAAM,OAAO,YAAY,kBAAkB;GAC3C,OAAO,OAAO;IAAE,KAAK,KAAK;IAAK,OAAO,KAAK;GAAM,IAAI,KAAA;EACvD;EACA,OAAO,YAAY,gBAAgB,CAAC,CAAC,KAAK,UAAU;GAClD,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,MAAM,KAAK;GACX,OAAO,KAAK;EACd,EAAE;EACF,gBAAgB,YAAY;EAC5B;EACA,WAAW,YAAY,aAAa;CACtC;AACF;AAEA,MAAa,kBAAkC,EAC7C,cACA,SACA,MACA,cACA,aACA,gBAC8C;CAC9C,MAAM,aAAa,cAAc,aAAa,OAAO,GAAG,CAAC,OAAO,CAAC;CACjE,MAAM,SAAS,cAAc,cAAc,OAAO,GAAG,CAAC,OAAO,CAAC;CAE9D,MAAM,WAAW,cAAc;EAC7B,MAAM,QAAiC,CAAC;EACxC,aAAa,SAAS,QAAQ;GAC5B,MAAM,OAAO,GAAG,KAAK;EACvB,CAAC;EACD,OAAO;CACT,GAAG,CAAC,YAAY,CAAC;CAEjB,MAAM,QAAQ,SACZ;EACE,SAAS;EACH;EACN;EACA,WAAW,QAAW,UAAkB,OAAO,UAAU,QAAQ,KAAK,CAAC;EACvE,YAAY,eACP,WAAc;GACb,MAAM,WAAW,YAAY,MAAM;GACnC,OAAO,UAAU,SAAS,WAAW,KAAA;EACvC,IACA,KAAA;EACJ,OAAO,EAAE,SAAS;CACpB,SACM,IACR;CAEA,MAAM,UAAU,cAAc,iBAAiB,cAAc,MAAM,GAAG,CAAC,cAAc,MAAM,CAAC;CAE5F,MAAM,cAAc,cAEhB,OAAO,KAAK,QAAQ,WAAW;EAC7B;EACA,OAAO,OAAO;EACd,WAAW,aAAa,OAAO,OAAO,QAAQ,OAAO;EACrD;EACA,KAAK,OAAO;CACd,EAAE,GACJ,CAAC,QAAQ,OAAO,CAClB;CAEA,MAAM,aAAa,cAAc,OAAc,SAAS,QAAQ,OAAO;CAEvE,MAAM,WAAY,MAAc,YAAY,CAAC,CAAC;CAkB9C,OAAO;EAAE;EAAY;EAAa,MAjBrB,cAET,SAAS,KAAK,KAAK,UAAU;GAC3B,MAAM,MAAM,UAAU,IAAI,UAAU,IAAI,KAAK;GAC7C,OAAO;IACL,OAAO,IAAI;IACX,UAAU,aAAa,IAAI,GAAG;IAC9B,aAAa,QAAQ,cAAc,IAAI,QAAQ,CAAC;IAChD;IACA;IACA,QAAQ,IAAI;IACZ,aAAa,IAAI;GACnB;EACF,CAAC,GACH;GAAC;GAAU;GAAc;GAAa;EAAS,CAGZ;CAAE;AACzC"}
|
package/es/Table/index.d.mts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import { FilterValue, SortOrder, TableColumn, TableFilters, TablePaginationConfig, TableProps, TableSemanticName, TableSorterResult } from "./type.mjs";
|
|
1
|
+
import { FilterValue, SortOrder, TableBreakpoint, TableCellAttributes, TableClassNames, TableColumn, TableColumnAlign, TableColumnEllipsis, TableColumnFilterItem, TableColumnFixed, TableColumnGroupType, TableColumnSorter, TableColumnTitle, TableColumnTitleProps, TableColumnType, TableColumnsType, TableCompareFn, TableComponents, TableComponentsSemanticName, TableCurrentDataSource, TableCustomizeComponent, TableDataIndex, TableExpandIconProps, TableExpandableConfig, TableExpandedRowRender, TableFilterDropdownPopupProps, TableFilterDropdownProps, TableFilters, TableHeaderCellAttributes, TableLoadingConfig, TableLocale, TableMultipleSorterResult, TablePaginationConfig, TablePaginationPlacement, TableProps, TableRef, TableRenderedCell, TableRowClassName, TableRowSelectMethod, TableRowSelection, TableRowSelectionCheckboxProps, TableRowSelectionType, TableScrollToConfig, TableSelectionItem, TableSelectionPreset, TableSemanticInfo, TableSemanticName, TableSize, TableSorterResult, TableSorterTooltipProps, TableSticky, TableStyles, TableSummaryCellProps, TableSummaryProps, TableSummaryRowProps, TableVariant } from "./type.mjs";
|
|
2
|
+
import { TableCell, TableCellProps, TableExpandedRow, TableExpandedRowProps, TableHeaderCell, TableRow, TableRowProps } from "./atoms/cells.mjs";
|
|
3
|
+
import { TableBody, TableColGroup, TableColGroupColumn, TableColGroupProps, TableContainer, TableElement, TableElementProps, TableFooter, TableHeader, TablePartProps, TableRoot, TableRootProps, TableScroll, TableScrollProps, TableSectionProps, TableSummaryFoot, TableTitle } from "./atoms/layout.mjs";
|
|
4
|
+
import "./atoms/index.mjs";
|
|
5
|
+
import { TableColumnProps } from "./Column.mjs";
|
|
6
|
+
import { TableColumnGroupProps } from "./ColumnGroup.mjs";
|
|
2
7
|
import Table from "./Table.mjs";
|
|
3
|
-
export { type FilterValue, type SortOrder, type TableColumn, type TableFilters, type TablePaginationConfig, type TableProps, type TableSemanticName, type TableSorterResult, Table as default };
|
|
8
|
+
export { type FilterValue, type SortOrder, TableBody, type TableBreakpoint, TableCell, type TableCellAttributes, type TableCellProps, type TableClassNames, TableColGroup, type TableColGroupColumn, type TableColGroupProps, type TableColumn, type TableColumnAlign, type TableColumnEllipsis, type TableColumnFilterItem, type TableColumnFixed, type TableColumnGroupProps, type TableColumnGroupType, type TableColumnProps, type TableColumnSorter, type TableColumnTitle, type TableColumnTitleProps, type TableColumnType, type TableColumnsType, type TableCompareFn, type TableComponents, type TableComponentsSemanticName, TableContainer, type TableCurrentDataSource, type TableCustomizeComponent, type TableDataIndex, TableElement, type TableElementProps, type TableExpandIconProps, type TableExpandableConfig, TableExpandedRow, type TableExpandedRowProps, type TableExpandedRowRender, type TableFilterDropdownPopupProps, type TableFilterDropdownProps, type TableFilters, TableFooter, TableHeader, TableHeaderCell, type TableHeaderCellAttributes, type TableLoadingConfig, type TableLocale, type TableMultipleSorterResult, type TablePaginationConfig, type TablePaginationPlacement, type TablePartProps, type TableProps, type TableRef, type TableRenderedCell, TableRoot, type TableRootProps, TableRow, type TableRowClassName, type TableRowProps, type TableRowSelectMethod, type TableRowSelection, type TableRowSelectionCheckboxProps, type TableRowSelectionType, TableScroll, type TableScrollProps, type TableScrollToConfig, type TableSectionProps, type TableSelectionItem, type TableSelectionPreset, type TableSemanticInfo, type TableSemanticName, type TableSize, type TableSorterResult, type TableSorterTooltipProps, type TableSticky, type TableStyles, type TableSummaryCellProps, TableSummaryFoot, type TableSummaryProps, type TableSummaryRowProps, TableTitle, type TableVariant, Table as default };
|
package/es/Table/index.mjs
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { TableCell, TableExpandedRow, TableHeaderCell, TableRow } from "./atoms/cells.mjs";
|
|
2
|
+
import { TableBody, TableColGroup, TableContainer, TableElement, TableFooter, TableHeader, TableRoot, TableScroll, TableSummaryFoot, TableTitle } from "./atoms/layout.mjs";
|
|
3
|
+
import Table from "./Table.mjs";
|
|
4
|
+
export { TableBody, TableCell, TableColGroup, TableContainer, TableElement, TableExpandedRow, TableFooter, TableHeader, TableHeaderCell, TableRoot, TableRow, TableScroll, TableSummaryFoot, TableTitle, Table as default };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { SELECTION_COLUMN } from "./selectionUtils.mjs";
|
|
2
|
+
//#region src/Table/pipeline/columnUtils.ts
|
|
3
|
+
const EXPAND_COLUMN = {};
|
|
4
|
+
const isColumnGroup = (column) => "children" in column && Array.isArray(column.children);
|
|
5
|
+
const dataIndexOf = (column) => "dataIndex" in column ? column.dataIndex : void 0;
|
|
6
|
+
const getColumnPos = (index, parentPos) => parentPos === void 0 ? String(index) : `${parentPos}-${index}`;
|
|
7
|
+
const getColumnId = (column, pos) => {
|
|
8
|
+
if (column.key != null) return String(column.key);
|
|
9
|
+
const dataIndex = dataIndexOf(column);
|
|
10
|
+
if (Array.isArray(dataIndex)) {
|
|
11
|
+
if (dataIndex.length > 0) return dataIndex.join(".");
|
|
12
|
+
} else if (dataIndex != null && dataIndex !== "") return String(dataIndex);
|
|
13
|
+
return `__column_${pos}`;
|
|
14
|
+
};
|
|
15
|
+
const getPathValue = (record, path) => {
|
|
16
|
+
if (path == null || path === "") return void 0;
|
|
17
|
+
const keys = Array.isArray(path) ? path : [path];
|
|
18
|
+
let value = record;
|
|
19
|
+
for (const key of keys) {
|
|
20
|
+
if (value == null) return void 0;
|
|
21
|
+
value = value[key];
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
const getCellValue = (record, column) => getPathValue(record, dataIndexOf(column));
|
|
26
|
+
const flattenColumns = (columns, parentPos) => {
|
|
27
|
+
const list = [];
|
|
28
|
+
columns.forEach((column, index) => {
|
|
29
|
+
if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return;
|
|
30
|
+
const pos = getColumnPos(index, parentPos);
|
|
31
|
+
list.push({
|
|
32
|
+
column,
|
|
33
|
+
id: getColumnId(column, pos)
|
|
34
|
+
});
|
|
35
|
+
if (isColumnGroup(column)) list.push(...flattenColumns(column.children, pos));
|
|
36
|
+
});
|
|
37
|
+
return list;
|
|
38
|
+
};
|
|
39
|
+
const assertColumnKeys = (columns) => {
|
|
40
|
+
for (const { column } of flattenColumns(columns)) if ((Boolean(column.sorter) || Boolean(column.filters) || column.filterDropdown !== void 0) && column.key == null && dataIndexOf(column) == null) throw new Error("[Table] sortable or filterable columns need a `key` or `dataIndex`");
|
|
41
|
+
};
|
|
42
|
+
const fillColumns = (columns, defaults) => {
|
|
43
|
+
if (!defaults) return columns;
|
|
44
|
+
const { children: _children, ...base } = defaults;
|
|
45
|
+
return columns.map((column) => {
|
|
46
|
+
if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return column;
|
|
47
|
+
const merged = { ...base };
|
|
48
|
+
for (const [key, value] of Object.entries(column)) if (value !== void 0) merged[key] = value;
|
|
49
|
+
if (isColumnGroup(column)) merged.children = fillColumns(column.children, defaults);
|
|
50
|
+
return merged;
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const isColumnVisibleAt = (column, screens) => !column.responsive || !screens || column.responsive.some((point) => screens.has(point));
|
|
54
|
+
const renderColumnTitle = (title, props) => typeof title === "function" ? title(props) : title;
|
|
55
|
+
//#endregion
|
|
56
|
+
export { EXPAND_COLUMN, assertColumnKeys, fillColumns, flattenColumns, getCellValue, getColumnId, getColumnPos, getPathValue, isColumnGroup, isColumnVisibleAt, renderColumnTitle };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=columnUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnUtils.mjs","names":[],"sources":["../../../src/Table/pipeline/columnUtils.ts"],"sourcesContent":["import type {\n TableBreakpoint,\n TableColumn,\n TableColumnGroupType,\n TableColumnTitle,\n TableColumnTitleProps,\n TableColumnType,\n} from '../type';\nimport { SELECTION_COLUMN } from './selectionUtils';\n\ntype DataIndexOf<T> = TableColumnType<T>['dataIndex'];\n\nexport const EXPAND_COLUMN = {} as TableColumn<any>;\n\nexport const isColumnGroup = <T>(column: TableColumn<T>): column is TableColumnGroupType<T> =>\n 'children' in column && Array.isArray(column.children);\n\nconst dataIndexOf = <T>(column: TableColumn<T>): DataIndexOf<T> =>\n 'dataIndex' in column ? column.dataIndex : undefined;\n\nexport const getColumnPos = (index: number, parentPos?: string) =>\n parentPos === undefined ? String(index) : `${parentPos}-${index}`;\n\nexport const getColumnId = (column: TableColumn<any>, pos: number | string): string => {\n if (column.key != null) return String(column.key);\n const dataIndex = dataIndexOf(column);\n if (Array.isArray(dataIndex)) {\n if (dataIndex.length > 0) return dataIndex.join('.');\n } else if (dataIndex != null && dataIndex !== '') {\n return String(dataIndex);\n }\n return `__column_${pos}`;\n};\n\nexport const getPathValue = (record: unknown, path: DataIndexOf<any>): unknown => {\n if (path == null || path === '') return undefined;\n const keys = Array.isArray(path) ? path : [path];\n let value: any = record;\n for (const key of keys) {\n if (value == null) return undefined;\n value = value[key as PropertyKey];\n }\n return value;\n};\n\nexport const getCellValue = <T>(record: T, column: TableColumn<T>): unknown =>\n getPathValue(record, dataIndexOf(column));\n\nexport interface FlatColumn<T> {\n column: TableColumn<T>;\n id: string;\n}\n\nexport const flattenColumns = <T>(columns: readonly TableColumn<T>[], parentPos?: string) => {\n const list: FlatColumn<T>[] = [];\n columns.forEach((column, index) => {\n if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return;\n const pos = getColumnPos(index, parentPos);\n list.push({ column, id: getColumnId(column, pos) });\n if (isColumnGroup(column)) list.push(...flattenColumns(column.children, pos));\n });\n return list;\n};\n\nexport const assertColumnKeys = (columns: readonly TableColumn<any>[]) => {\n for (const { column } of flattenColumns(columns)) {\n const needsStableId =\n Boolean(column.sorter) || Boolean(column.filters) || column.filterDropdown !== undefined;\n if (needsStableId && column.key == null && dataIndexOf(column) == null) {\n throw new Error('[Table] sortable or filterable columns need a `key` or `dataIndex`');\n }\n }\n};\n\nexport const fillColumns = <T>(\n columns: readonly TableColumn<T>[],\n defaults: Partial<TableColumnType<T>> | undefined,\n): TableColumn<T>[] => {\n if (!defaults) return columns as TableColumn<T>[];\n const { children: _children, ...base } = defaults as Partial<TableColumnGroupType<T>>;\n return columns.map((column) => {\n if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return column;\n const merged = { ...base } as Record<string, unknown>;\n for (const [key, value] of Object.entries(column)) {\n if (value !== undefined) merged[key] = value;\n }\n if (isColumnGroup(column)) merged.children = fillColumns(column.children, defaults);\n return merged as unknown as TableColumn<T>;\n });\n};\n\nexport const isColumnVisibleAt = (\n column: TableColumn<any>,\n screens: ReadonlySet<TableBreakpoint> | null,\n) => !column.responsive || !screens || column.responsive.some((point) => screens.has(point));\n\nexport const renderColumnTitle = <T>(\n title: TableColumnTitle<T>,\n props: TableColumnTitleProps<T>,\n) => (typeof title === 'function' ? title(props) : title);\n"],"mappings":";;AAYA,MAAa,gBAAgB,CAAC;AAE9B,MAAa,iBAAoB,WAC/B,cAAc,UAAU,MAAM,QAAQ,OAAO,QAAQ;AAEvD,MAAM,eAAkB,WACtB,eAAe,SAAS,OAAO,YAAY,KAAA;AAE7C,MAAa,gBAAgB,OAAe,cAC1C,cAAc,KAAA,IAAY,OAAO,KAAK,IAAI,GAAG,UAAU,GAAG;AAE5D,MAAa,eAAe,QAA0B,QAAiC;CACrF,IAAI,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO,GAAG;CAChD,MAAM,YAAY,YAAY,MAAM;CACpC,IAAI,MAAM,QAAQ,SAAS,GACrB;MAAA,UAAU,SAAS,GAAG,OAAO,UAAU,KAAK,GAAG;CAAA,OAC9C,IAAI,aAAa,QAAQ,cAAc,IAC5C,OAAO,OAAO,SAAS;CAEzB,OAAO,YAAY;AACrB;AAEA,MAAa,gBAAgB,QAAiB,SAAoC;CAChF,IAAI,QAAQ,QAAQ,SAAS,IAAI,OAAO,KAAA;CACxC,MAAM,OAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;CAC/C,IAAI,QAAa;CACjB,KAAK,MAAM,OAAO,MAAM;EACtB,IAAI,SAAS,MAAM,OAAO,KAAA;EAC1B,QAAQ,MAAM;CAChB;CACA,OAAO;AACT;AAEA,MAAa,gBAAmB,QAAW,WACzC,aAAa,QAAQ,YAAY,MAAM,CAAC;AAO1C,MAAa,kBAAqB,SAAoC,cAAuB;CAC3F,MAAM,OAAwB,CAAC;CAC/B,QAAQ,SAAS,QAAQ,UAAU;EACjC,IAAI,WAAW,iBAAiB,WAAW,kBAAkB;EAC7D,MAAM,MAAM,aAAa,OAAO,SAAS;EACzC,KAAK,KAAK;GAAE;GAAQ,IAAI,YAAY,QAAQ,GAAG;EAAE,CAAC;EAClD,IAAI,cAAc,MAAM,GAAG,KAAK,KAAK,GAAG,eAAe,OAAO,UAAU,GAAG,CAAC;CAC9E,CAAC;CACD,OAAO;AACT;AAEA,MAAa,oBAAoB,YAAyC;CACxE,KAAK,MAAM,EAAE,YAAY,eAAe,OAAO,GAG7C,KADE,QAAQ,OAAO,MAAM,KAAK,QAAQ,OAAO,OAAO,KAAK,OAAO,mBAAmB,KAAA,MAC5D,OAAO,OAAO,QAAQ,YAAY,MAAM,KAAK,MAChE,MAAM,IAAI,MAAM,oEAAoE;AAG1F;AAEA,MAAa,eACX,SACA,aACqB;CACrB,IAAI,CAAC,UAAU,OAAO;CACtB,MAAM,EAAE,UAAU,WAAW,GAAG,SAAS;CACzC,OAAO,QAAQ,KAAK,WAAW;EAC7B,IAAI,WAAW,iBAAiB,WAAW,kBAAkB,OAAO;EACpE,MAAM,SAAS,EAAE,GAAG,KAAK;EACzB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAC9C,IAAI,UAAU,KAAA,GAAW,OAAO,OAAO;EAEzC,IAAI,cAAc,MAAM,GAAG,OAAO,WAAW,YAAY,OAAO,UAAU,QAAQ;EAClF,OAAO;CACT,CAAC;AACH;AAEA,MAAa,qBACX,QACA,YACG,CAAC,OAAO,cAAc,CAAC,WAAW,OAAO,WAAW,MAAM,UAAU,QAAQ,IAAI,KAAK,CAAC;AAE3F,MAAa,qBACX,OACA,UACI,OAAO,UAAU,aAAa,MAAM,KAAK,IAAI"}
|