@lobehub/ui 6.0.0-beta.1 → 6.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- 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/ActionIcon/style.mjs +1 -1
- package/es/ActionIcon/style.mjs.map +1 -1
- package/es/ActionIcon/type.d.mts +1 -0
- package/es/Alert/Alert.mjs +5 -5
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/Alert/type.d.mts +1 -0
- package/es/Anchor/Anchor.mjs +2 -2
- package/es/Anchor/Anchor.mjs.map +1 -1
- package/es/AutoComplete/AutoComplete.mjs +5 -5
- package/es/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/AutoComplete/style.d.mts +1 -0
- package/es/AutoComplete/style.mjs +2 -2
- package/es/AutoComplete/style.mjs.map +1 -1
- package/es/AutoComplete/type.d.mts +1 -0
- 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/Button/type.d.mts +1 -0
- package/es/Carousel/Carousel.mjs +1 -1
- package/es/Carousel/Carousel.mjs.map +1 -1
- package/es/Checkbox/Checkbox.mjs +3 -3
- package/es/Checkbox/Checkbox.mjs.map +1 -1
- package/es/Checkbox/type.d.mts +1 -0
- package/es/CodeDiff/CodeDiff.mjs.map +1 -1
- package/es/CodeDiff/DiffPanel.mjs +6 -6
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CodeDiff/PatchDiff.mjs.map +1 -1
- package/es/CodeDiff/theme.mjs.map +1 -1
- package/es/CodeDiff/type.d.mts +2 -2
- package/es/CodeEditor/CodeEditor.mjs +5 -5
- 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 +63 -200
- 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/ColorSwatches/ColorSwatches.mjs +18 -23
- package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
- package/es/ColorSwatches/CustomPicker.mjs +101 -0
- package/es/ColorSwatches/CustomPicker.mjs.map +1 -0
- package/es/ColorSwatches/index.d.mts +2 -2
- package/es/ColorSwatches/marker.stylex.mjs +9 -0
- package/es/ColorSwatches/marker.stylex.mjs.map +1 -0
- package/es/ColorSwatches/style.mjs +36 -0
- package/es/ColorSwatches/style.mjs.map +1 -1
- package/es/ColorSwatches/type.d.mts +12 -2
- package/es/ConfigProvider/cdnAssets.mjs +6 -0
- package/es/ConfigProvider/cdnAssets.mjs.map +1 -0
- package/es/ConfigProvider/index.mjs +2 -1
- package/es/ConfigProvider/index.mjs.map +1 -1
- 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/ContextMenu/store.d.mts +0 -1
- package/es/ContextMenu/store.mjs.map +1 -1
- package/es/DatePicker/DatePicker.d.mts +9 -2
- package/es/DatePicker/DatePicker.mjs +15 -85
- package/es/DatePicker/DatePicker.mjs.map +1 -1
- package/es/DatePicker/DateRangePicker.d.mts +3 -2
- package/es/DatePicker/DateRangePicker.mjs +3 -125
- package/es/DatePicker/DateRangePicker.mjs.map +1 -1
- package/es/DatePicker/DayjsDatePicker.d.mts +12 -0
- package/es/DatePicker/DayjsDatePicker.mjs +19 -0
- package/es/DatePicker/DayjsDatePicker.mjs.map +1 -0
- package/es/DatePicker/DayjsDateRangePicker.d.mts +7 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs +8 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs.map +1 -0
- package/es/DatePicker/PurePanel.mjs +65 -0
- package/es/DatePicker/PurePanel.mjs.map +1 -0
- package/es/DatePicker/RangePicker.mjs +121 -0
- package/es/DatePicker/RangePicker.mjs.map +1 -0
- package/es/DatePicker/SinglePicker.mjs +134 -0
- package/es/DatePicker/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/context.mjs +7 -0
- package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
- package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
- package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
- package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPopup.mjs +118 -0
- package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
- package/es/DatePicker/core/generate/dayjs.mjs +109 -0
- package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
- package/es/DatePicker/core/generate/index.d.mts +40 -0
- package/es/DatePicker/core/hooks/react.mjs +58 -0
- package/es/DatePicker/core/hooks/react.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
- package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
- package/es/DatePicker/core/index.d.mts +5 -0
- package/es/DatePicker/core/index.mjs +9 -0
- package/es/DatePicker/core/index.mjs.map +1 -0
- package/es/DatePicker/core/interface.d.mts +325 -0
- package/es/DatePicker/core/locale/common.mjs +11 -0
- package/es/DatePicker/core/locale/common.mjs.map +1 -0
- package/es/DatePicker/core/locale/en_US.mjs +39 -0
- package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
- package/es/DatePicker/core/utils/common.mjs +73 -0
- package/es/DatePicker/core/utils/common.mjs.map +1 -0
- package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
- package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
- package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
- package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
- package/es/DatePicker/dateGenerateConfig.mjs +52 -0
- package/es/DatePicker/dateGenerateConfig.mjs.map +1 -0
- package/es/DatePicker/generateConfig.mjs +12 -0
- package/es/DatePicker/generateConfig.mjs.map +1 -0
- package/es/DatePicker/generatePicker.d.mts +12 -0
- package/es/DatePicker/generatePicker.mjs +22 -0
- package/es/DatePicker/generatePicker.mjs.map +1 -0
- package/es/DatePicker/index.d.mts +8 -3
- package/es/DatePicker/index.mjs +5 -1
- package/es/DatePicker/legacyDate.mjs +58 -0
- package/es/DatePicker/legacyDate.mjs.map +1 -0
- package/es/DatePicker/locale.d.mts +15 -0
- package/es/DatePicker/locale.mjs +143 -0
- package/es/DatePicker/locale.mjs.map +1 -0
- package/es/DatePicker/semantic.mjs +29 -0
- package/es/DatePicker/semantic.mjs.map +1 -0
- package/es/DatePicker/style.mjs +3 -155
- package/es/DatePicker/style.mjs.map +1 -1
- package/es/DatePicker/type.d.mts +294 -27
- package/es/DatePicker/usePanelKeyboard.mjs +230 -0
- package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
- package/es/DatePicker/usePickerShared.mjs +106 -0
- package/es/DatePicker/usePickerShared.mjs.map +1 -0
- package/es/DatePicker/usePresetActive.mjs +49 -0
- package/es/DatePicker/usePresetActive.mjs.map +1 -0
- package/es/DraggablePanel/atoms.mjs +6 -6
- package/es/DraggablePanel/atoms.mjs.map +1 -1
- package/es/DraggableSideNav/DraggableSideNav.mjs +5 -5
- 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.d.mts +1 -0
- package/es/Drawer/atoms.mjs +7 -7
- package/es/Drawer/atoms.mjs.map +1 -1
- package/es/Drawer/constants.d.mts +1 -0
- package/es/Drawer/style.mjs.map +1 -1
- package/es/DropdownMenu/atoms.mjs +23 -23
- 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/EditableText/ControlInput.mjs +42 -29
- package/es/EditableText/ControlInput.mjs.map +1 -1
- package/es/EditableText/EditableText.mjs +2 -2
- package/es/EditableText/EditableText.mjs.map +1 -1
- package/es/EditorSlashMenu/atoms.mjs +12 -12
- package/es/EditorSlashMenu/atoms.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +10 -16
- 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/EmojiPicker/useEmojiMartI18n.mjs +37 -0
- package/es/EmojiPicker/useEmojiMartI18n.mjs.map +1 -0
- package/es/FileTypeIcon/type.d.mts +1 -0
- package/es/FloatingPanel/FloatingPanel.mjs +2 -2
- package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
- package/es/FloatingPanel/style.mjs +3 -2
- package/es/FloatingPanel/style.mjs.map +1 -1
- package/es/Form/Form.mjs +6 -2
- package/es/Form/Form.mjs.map +1 -1
- package/es/Form/style.mjs +3 -3
- package/es/Form/style.mjs.map +1 -1
- package/es/Form/type.d.mts +8 -0
- package/es/FormKit/List.mjs +2 -2
- package/es/FormKit/List.mjs.map +1 -1
- package/es/FormKit/engine/tanstack.mjs +1 -1
- package/es/FormKit/engine/tanstack.mjs.map +1 -1
- package/es/Grid/style.mjs +1 -1
- package/es/Grid/style.mjs.map +1 -1
- package/es/GroupAvatar/type.d.mts +1 -0
- 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/const.d.mts +1 -0
- package/es/Highlighter/style.mjs +2 -2
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/HotkeyInput/HotkeyInput.mjs +1 -1
- package/es/HotkeyInput/HotkeyInput.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/Image/type.d.mts +1 -0
- package/es/Image/viewer/ImageViewer.mjs +2 -1
- package/es/Image/viewer/ImageViewer.mjs.map +1 -1
- package/es/Image/viewer/Toolbar.mjs +19 -6
- package/es/Image/viewer/Toolbar.mjs.map +1 -1
- package/es/Image/viewer/ViewerChrome.mjs.map +1 -1
- package/es/ImageSelect/ImageSelect.mjs +1 -1
- package/es/ImageSelect/ImageSelect.mjs.map +1 -1
- package/es/Input/Input.mjs +7 -5
- package/es/Input/Input.mjs.map +1 -1
- package/es/Input/TextArea.mjs +1 -1
- package/es/Input/TextArea.mjs.map +1 -1
- package/es/Input/style.d.mts +1 -0
- package/es/Input/style.mjs +3 -3
- package/es/Input/style.mjs.map +1 -1
- package/es/Input/type.d.mts +1 -0
- 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/Markdown/plugins/remarkColor.d.mts +1 -0
- package/es/Markdown/plugins/remarkGfmPlus.d.mts +1 -0
- package/es/Markdown/plugins/remarkVideo.d.mts +1 -0
- 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/Mermaid/const.d.mts +1 -0
- package/es/Modal/atoms.d.mts +1 -0
- package/es/Modal/atoms.mjs +8 -8
- package/es/Modal/atoms.mjs.map +1 -1
- package/es/Modal/constants.d.mts +1 -0
- package/es/Modal/type.d.mts +1 -0
- package/es/Pagination/Pagination.mjs +182 -42
- 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 +3 -3
- package/es/Popover/PopoverInGroup.mjs.map +1 -1
- package/es/Popover/atoms.mjs +7 -7
- package/es/Popover/atoms.mjs.map +1 -1
- package/es/Popover/style.mjs +1 -1
- package/es/Popover/style.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 +134 -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 +287 -0
- package/es/ProTable/style.mjs.map +1 -0
- package/es/ProTable/type.d.mts +400 -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/Radio/type.d.mts +1 -0
- package/es/Rate/Rate.mjs +1 -1
- package/es/Rate/Rate.mjs.map +1 -1
- package/es/ScrollArea/atoms.mjs +4 -4
- package/es/ScrollArea/atoms.mjs.map +1 -1
- package/es/ScrollShadow/ScrollShadow.mjs +1 -1
- package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
- package/es/SearchBar/SearchBar.mjs +31 -25
- package/es/SearchBar/SearchBar.mjs.map +1 -1
- package/es/Segmented/Segmented.mjs +4 -4
- package/es/Segmented/Segmented.mjs.map +1 -1
- package/es/Segmented/atoms.d.mts +1 -0
- 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 +5 -5
- 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/Slider/type.d.mts +1 -0
- package/es/Switch/Switch.mjs +9 -2
- package/es/Switch/Switch.mjs.map +1 -1
- package/es/Switch/atoms.d.mts +8 -1
- package/es/Switch/atoms.mjs +23 -7
- package/es/Switch/atoms.mjs.map +1 -1
- package/es/Switch/style.mjs +33 -2
- package/es/Switch/style.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 +158 -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 +122 -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 +179 -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 +37 -23
- 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 +1 -0
- package/es/Text/style.mjs +3 -3
- package/es/Text/style.mjs.map +1 -1
- package/es/Toast/dodge.mjs +0 -1
- package/es/Toast/dodge.mjs.map +1 -1
- package/es/Toast/dodge.stylex.mjs +1 -4
- package/es/Toast/dodge.stylex.mjs.map +1 -1
- package/es/Toast/style.mjs +1 -1
- package/es/Toast/style.mjs.map +1 -1
- package/es/ToggleGroup/ToggleGroup.mjs +4 -4
- package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
- package/es/ToggleGroup/atoms.d.mts +1 -0
- 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/TooltipInGroup.mjs +1 -1
- package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
- package/es/Tooltip/TooltipStandalone.mjs +4 -4
- package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/Tooltip/style.mjs +2 -2
- package/es/Tooltip/style.mjs.map +1 -1
- package/es/Tree/Tree.mjs +3 -3
- 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 +46 -0
- package/es/Video/Video.mjs.map +1 -0
- package/es/Video/context.mjs +14 -0
- package/es/Video/context.mjs.map +1 -0
- package/es/Video/index.d.mts +23 -39
- package/es/Video/index.mjs +21 -111
- package/es/Video/index.mjs.map +1 -1
- package/es/Video/parts/Caption.d.mts +9 -0
- package/es/Video/parts/Caption.mjs +37 -0
- package/es/Video/parts/Caption.mjs.map +1 -0
- package/es/Video/parts/CenterPlay.d.mts +8 -0
- package/es/Video/parts/CenterPlay.mjs +34 -0
- package/es/Video/parts/CenterPlay.mjs.map +1 -0
- package/es/Video/parts/Controls.d.mts +9 -0
- package/es/Video/parts/Controls.mjs +128 -0
- package/es/Video/parts/Controls.mjs.map +1 -0
- package/es/Video/parts/Frame.d.mts +9 -0
- package/es/Video/parts/Frame.mjs +101 -0
- package/es/Video/parts/Frame.mjs.map +1 -0
- package/es/Video/parts/HoverPreview.mjs +93 -0
- package/es/Video/parts/HoverPreview.mjs.map +1 -0
- package/es/Video/parts/LoadError.d.mts +8 -0
- package/es/Video/parts/LoadError.mjs +47 -0
- package/es/Video/parts/LoadError.mjs.map +1 -0
- package/es/Video/parts/PlayPauseIcon.mjs +48 -0
- package/es/Video/parts/PlayPauseIcon.mjs.map +1 -0
- package/es/Video/parts/RateMenu.mjs +48 -0
- package/es/Video/parts/RateMenu.mjs.map +1 -0
- package/es/Video/parts/Root.d.mts +9 -0
- package/es/Video/parts/Root.mjs +110 -0
- package/es/Video/parts/Root.mjs.map +1 -0
- package/es/Video/parts/SectionList.d.mts +9 -0
- package/es/Video/parts/SectionList.mjs +32 -0
- package/es/Video/parts/SectionList.mjs.map +1 -0
- package/es/Video/parts/SectionMenu.mjs +63 -0
- package/es/Video/parts/SectionMenu.mjs.map +1 -0
- package/es/Video/parts/Timeline.d.mts +9 -0
- package/es/Video/parts/Timeline.mjs +169 -0
- package/es/Video/parts/Timeline.mjs.map +1 -0
- package/es/Video/store.mjs +241 -0
- package/es/Video/store.mjs.map +1 -0
- package/es/Video/style.mjs +393 -23
- package/es/Video/style.mjs.map +1 -1
- package/es/Video/time.mjs +60 -0
- package/es/Video/time.mjs.map +1 -0
- package/es/Video/type.d.mts +125 -0
- package/es/Video/useControlsIdle.mjs +39 -0
- package/es/Video/useControlsIdle.mjs.map +1 -0
- package/es/Video/useFullscreen.mjs +17 -0
- package/es/Video/useFullscreen.mjs.map +1 -0
- package/es/Video/useKeyboard.mjs +60 -0
- package/es/Video/useKeyboard.mjs.map +1 -0
- package/es/Video/useVideo.d.mts +9 -0
- package/es/Video/useVideo.mjs +17 -0
- package/es/Video/useVideo.mjs.map +1 -0
- package/es/awesome/Features/FeatureItem.mjs +2 -2
- package/es/awesome/Features/FeatureItem.mjs.map +1 -1
- package/es/awesome/Giscus/style.mjs +9 -9
- package/es/awesome/Giscus/style.mjs.map +1 -1
- package/es/awesome/Grainient/Grainient.d.mts +11 -0
- package/es/awesome/Grainient/Grainient.mjs +314 -0
- package/es/awesome/Grainient/Grainient.mjs.map +1 -0
- package/es/awesome/Grainient/index.d.mts +3 -0
- package/es/awesome/Grainient/style.mjs +23 -0
- package/es/awesome/Grainient/style.mjs.map +1 -0
- package/es/awesome/Grainient/type.d.mts +121 -0
- package/es/awesome/GridBackground/GridBackground.mjs +1 -1
- package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
- package/es/awesome/GridBackground/GridShowcase.mjs +4 -4
- package/es/awesome/GridBackground/GridShowcase.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/Spline/ParentSize.mjs +1 -1
- package/es/awesome/Spline/ParentSize.mjs.map +1 -1
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
- package/es/awesome/index.d.mts +4 -1
- package/es/awesome/index.mjs +2 -1
- package/es/awesome/landingActions.mjs +2 -2
- package/es/awesome/landingActions.mjs.map +1 -1
- package/es/chat/BackBottom/BackBottom.mjs +1 -1
- package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
- package/es/chat/BackBottom/type.d.mts +2 -2
- package/es/chat/ChatItem/ChatItem.mjs +2 -2
- package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
- package/es/chat/EditableMessage/EditableMessage.mjs +4 -4
- package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs +2 -2
- package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
- package/es/chat/EditableMessageList/messageReducer.mjs +30 -23
- package/es/chat/EditableMessageList/messageReducer.mjs.map +1 -1
- package/es/chat/MessageInput/MessageInput.mjs +3 -3
- package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
- package/es/chat/MessageModal/MessageModal.mjs +1 -1
- package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
- package/es/chat/TokenTag/TokenTag.mjs +2 -3
- package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
- package/es/color/index.d.mts +2 -1
- package/es/color/index.mjs +2 -1
- package/es/color/status/error.mjs +67 -0
- package/es/color/status/error.mjs.map +1 -0
- package/es/color/status/index.d.mts +11 -0
- package/es/color/status/index.mjs +15 -0
- package/es/color/status/index.mjs.map +1 -0
- package/es/color/status/info.mjs +67 -0
- package/es/color/status/info.mjs.map +1 -0
- package/es/color/status/success.mjs +67 -0
- package/es/color/status/success.mjs.map +1 -0
- package/es/color/status/warning.mjs +67 -0
- package/es/color/status/warning.mjs.map +1 -0
- package/es/color/types.d.mts +1 -0
- package/es/dashboard/AuthLayout/Aside.d.mts +10 -0
- package/es/dashboard/AuthLayout/Aside.mjs +31 -0
- package/es/dashboard/AuthLayout/Aside.mjs.map +1 -0
- package/es/dashboard/AuthLayout/AuthLayout.d.mts +3 -1
- package/es/dashboard/AuthLayout/AuthLayout.mjs +97 -37
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
- package/es/dashboard/AuthLayout/index.d.mts +3 -2
- package/es/dashboard/AuthLayout/style.mjs +109 -1
- package/es/dashboard/AuthLayout/style.mjs.map +1 -1
- package/es/dashboard/AuthLayout/type.d.mts +38 -2
- package/es/dashboard/AuthTools/AuthLocaleSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +33 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +59 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/index.d.mts +4 -0
- package/es/dashboard/AuthTools/style.mjs +27 -0
- package/es/dashboard/AuthTools/style.mjs.map +1 -0
- package/es/dashboard/AuthTools/type.d.mts +29 -0
- package/es/dashboard/ChartGrid/ChartGrid.d.mts +10 -0
- package/es/dashboard/ChartGrid/ChartGrid.mjs +19 -0
- package/es/dashboard/ChartGrid/ChartGrid.mjs.map +1 -0
- package/es/dashboard/ChartGrid/index.d.mts +3 -0
- package/es/dashboard/ChartGrid/style.mjs +18 -0
- package/es/dashboard/ChartGrid/style.mjs.map +1 -0
- package/es/dashboard/ChartGrid/type.d.mts +8 -0
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/Skeleton.d.mts +15 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs +82 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/index.d.mts +3 -2
- package/es/dashboard/ConsoleNav/style.mjs +20 -2
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/type.d.mts +13 -0
- package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +1 -1
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs +26 -6
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/style.mjs +11 -1
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/type.d.mts +11 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +18 -17
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -1
- package/es/dashboard/FilterSidebar/style.mjs +2 -2
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
- package/es/dashboard/FilterStrip/FilterStrip.d.mts +11 -0
- package/es/dashboard/FilterStrip/FilterStrip.mjs +55 -0
- package/es/dashboard/FilterStrip/FilterStrip.mjs.map +1 -0
- package/es/dashboard/FilterStrip/index.d.mts +3 -0
- package/es/dashboard/FilterStrip/style.mjs +78 -0
- package/es/dashboard/FilterStrip/style.mjs.map +1 -0
- package/es/dashboard/FilterStrip/type.d.mts +25 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.d.mts +10 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.mjs +18 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.mjs.map +1 -0
- package/es/dashboard/LabelWithKey/index.d.mts +3 -0
- package/es/dashboard/LabelWithKey/type.d.mts +11 -0
- package/es/dashboard/MetricStrip/MetricCell.mjs +92 -0
- package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -0
- package/es/dashboard/MetricStrip/MetricStrip.d.mts +13 -0
- package/es/dashboard/MetricStrip/MetricStrip.mjs +47 -0
- package/es/dashboard/MetricStrip/MetricStrip.mjs.map +1 -0
- package/es/dashboard/MetricStrip/index.d.mts +3 -0
- package/es/dashboard/MetricStrip/style.mjs +169 -0
- package/es/dashboard/MetricStrip/style.mjs.map +1 -0
- package/es/dashboard/MetricStrip/type.d.mts +38 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs +20 -18
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -1
- package/es/dashboard/PageSkeleton/style.mjs +2 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/PageToolbar/PageToolbar.d.mts +10 -0
- package/es/dashboard/PageToolbar/PageToolbar.mjs +22 -0
- package/es/dashboard/PageToolbar/PageToolbar.mjs.map +1 -0
- package/es/dashboard/PageToolbar/index.d.mts +3 -0
- package/es/dashboard/PageToolbar/style.mjs +36 -0
- package/es/dashboard/PageToolbar/style.mjs.map +1 -0
- package/es/dashboard/PageToolbar/type.d.mts +11 -0
- package/es/dashboard/PanelSurface/PanelSurface.d.mts +10 -0
- package/es/dashboard/PanelSurface/PanelSurface.mjs +40 -0
- package/es/dashboard/PanelSurface/PanelSurface.mjs.map +1 -0
- package/es/dashboard/PanelSurface/index.d.mts +3 -0
- package/es/dashboard/PanelSurface/style.mjs +25 -0
- package/es/dashboard/PanelSurface/style.mjs.map +1 -0
- package/es/dashboard/PanelSurface/type.d.mts +17 -0
- package/es/dashboard/Section/Section.d.mts +10 -0
- package/es/dashboard/Section/Section.mjs +81 -0
- package/es/dashboard/Section/Section.mjs.map +1 -0
- package/es/dashboard/Section/index.d.mts +3 -0
- package/es/dashboard/Section/style.mjs +31 -0
- package/es/dashboard/Section/style.mjs.map +1 -0
- package/es/dashboard/Section/type.d.mts +23 -0
- package/es/dashboard/StatCard/StatCard.d.mts +2 -1
- package/es/dashboard/StatCard/StatCard.mjs +29 -91
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
- package/es/dashboard/StatCard/type.d.mts +18 -5
- package/es/dashboard/Surface/Surface.d.mts +4 -3
- package/es/dashboard/Surface/Surface.mjs +90 -8
- package/es/dashboard/Surface/Surface.mjs.map +1 -1
- package/es/dashboard/Surface/index.d.mts +3 -2
- package/es/dashboard/Surface/link.d.mts +16 -0
- package/es/dashboard/Surface/link.mjs +40 -0
- package/es/dashboard/Surface/link.mjs.map +1 -0
- package/es/dashboard/Surface/marker.stylex.mjs +9 -0
- package/es/dashboard/Surface/marker.stylex.mjs.map +1 -0
- package/es/dashboard/Surface/style.d.mts +2 -0
- package/es/dashboard/Surface/style.mjs +156 -14
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/es/dashboard/Surface/type.d.mts +29 -1
- package/es/dashboard/TableIconActions/TableIconActions.d.mts +17 -0
- package/es/dashboard/TableIconActions/TableIconActions.mjs +39 -0
- package/es/dashboard/TableIconActions/TableIconActions.mjs.map +1 -0
- package/es/dashboard/TableIconActions/index.d.mts +3 -0
- package/es/dashboard/TableIconActions/type.d.mts +17 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.d.mts +10 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.mjs +28 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.mjs.map +1 -0
- package/es/dashboard/TitleWithTips/index.d.mts +3 -0
- package/es/dashboard/TitleWithTips/type.d.mts +10 -0
- package/es/dashboard/index.d.mts +38 -4
- package/es/dashboard/index.mjs +18 -4
- package/es/eslint/noBaseUiSubpath.mjs +2 -1
- package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
- package/es/hooks/useControlledState.mjs +20 -0
- package/es/hooks/useControlledState.mjs.map +1 -0
- package/es/hooks/useHighlight.mjs +2 -2
- package/es/hooks/useHighlight.mjs.map +1 -1
- package/es/hooks/useHover.mjs +22 -0
- package/es/hooks/useHover.mjs.map +1 -0
- package/es/hooks/useMarkdown/utils.d.mts +1 -0
- package/es/hooks/useScroll.d.mts +8 -0
- package/es/hooks/useScroll.mjs +33 -0
- package/es/hooks/useScroll.mjs.map +1 -0
- package/es/hooks/useSize.mjs +26 -0
- package/es/hooks/useSize.mjs.map +1 -0
- 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 -2
- package/es/i18n/resources/en/index.mjs +6 -2
- 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/en/video.d.mts +23 -0
- package/es/i18n/resources/en/video.mjs +24 -0
- package/es/i18n/resources/en/video.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 -2
- package/es/i18n/resources/zhCn/index.mjs +7 -3
- 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/resources/zhCn/video.d.mts +23 -0
- package/es/i18n/resources/zhCn/video.mjs +24 -0
- package/es/i18n/resources/zhCn/video.mjs.map +1 -0
- package/es/i18n/types.d.mts +4 -1
- package/es/index.d.mts +21 -8
- package/es/index.mjs +18 -9
- package/es/internal/menu/itemInterface.d.mts +1 -0
- package/es/internal/menu/renderUtils.d.mts +1 -0
- package/es/internal/overflow/OverflowList.mjs +71 -0
- package/es/internal/overflow/OverflowList.mjs.map +1 -0
- package/es/internal/virtual/VirtualScrollArea.mjs +1 -1
- package/es/internal/virtual/VirtualScrollArea.mjs.map +1 -1
- 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/mdx/mdxComponents/Video.d.mts +2 -1
- package/es/mdx/mdxComponents/Video.mjs +5 -3
- package/es/mdx/mdxComponents/Video.mjs.map +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
- package/es/mobile/TabBar/TabBar.mjs +1 -1
- package/es/mobile/TabBar/TabBar.mjs.map +1 -1
- package/es/node_modules/.pnpm/@eslint_core@1.2.1/node_modules/@eslint/core/dist/esm/types.d.mts +2 -46
- package/es/node_modules/.pnpm/@eslint_plugin-kit@0.7.3/node_modules/@eslint/plugin-kit/dist/cjs/index.d.mts +1 -1
- package/es/node_modules/.pnpm/@types_estree@1.0.9/node_modules/@types/estree/index.d.mts +1 -4
- package/es/node_modules/.pnpm/@types_mdx@2.0.14/node_modules/@types/mdx/types.d.mts +1 -0
- package/es/node_modules/.pnpm/eslint@10.12.0_jiti@2.6.1_supports-color@10.2.2/node_modules/eslint/lib/types/index.d.mts +2 -1
- package/es/storybook/StoryBook/style.mjs +2 -0
- package/es/storybook/StoryBook/style.mjs.map +1 -1
- package/es/style.css +3643 -996
- package/es/styles/createGlobalStyle.d.mts +1 -0
- package/es/styles/createGlobalStyle.mjs +1 -1
- package/es/styles/index.d.mts +4 -2
- package/es/styles/index.mjs +6 -4
- package/es/styles/stylex/cssVar.stylex.mjs +3 -0
- package/es/styles/stylex/cssVar.stylex.mjs.map +1 -1
- package/es/styles/stylex/props.mjs +2 -2
- package/es/styles/stylex/props.mjs.map +1 -1
- package/es/styles/theme/createLobeToken.d.mts +12 -7
- package/es/styles/theme/createLobeToken.mjs +3 -2
- package/es/styles/theme/createLobeToken.mjs.map +1 -1
- package/es/styles/theme/customPalette.d.mts +6 -0
- package/es/styles/theme/customPalette.mjs +28 -0
- package/es/styles/theme/customPalette.mjs.map +1 -0
- package/es/styles/theme/customPrimary.d.mts +7 -0
- package/es/styles/theme/customPrimary.mjs +101 -0
- package/es/styles/theme/customPrimary.mjs.map +1 -0
- package/es/styles/theme/generateColorPalette.d.mts +1 -0
- package/es/styles/theme/scope.d.mts +9 -5
- package/es/styles/theme/scope.mjs +73 -18
- package/es/styles/theme/scope.mjs.map +1 -1
- package/es/styles/theme/themeCss.d.mts +3 -0
- package/es/styles/theme/themeCss.mjs +39 -2
- package/es/styles/theme/themeCss.mjs.map +1 -1
- package/es/styles/theme/token/legacy.mjs +12 -12
- package/es/styles/theme/token/legacy.mjs.map +1 -1
- package/es/styles/theme/token/neutral.mjs +17 -9
- package/es/styles/theme/token/neutral.mjs.map +1 -1
- package/es/styles/theme/token/neutralText.mjs +91 -0
- package/es/styles/theme/token/neutralText.mjs.map +1 -0
- package/es/styles/theme/token/palette.mjs +16 -41
- package/es/styles/theme/token/palette.mjs.map +1 -1
- package/es/styles/theme/token/primary.mjs +6 -2
- package/es/styles/theme/token/primary.mjs.map +1 -1
- package/es/styles/theme/token/static.mjs +3 -0
- package/es/styles/theme/token/static.mjs.map +1 -1
- package/es/theme.css +301 -290
- package/es/types/customToken.d.mts +1 -0
- package/es/utils/colorMath.mjs +52 -0
- package/es/utils/colorMath.mjs.map +1 -0
- package/es/utils/formatNumber.mjs +7 -0
- package/es/utils/formatNumber.mjs.map +1 -0
- package/es/utils/genCdnUrl.mjs +6 -3
- package/es/utils/genCdnUrl.mjs.map +1 -1
- package/es/utils/hashString.mjs +19 -0
- package/es/utils/hashString.mjs.map +1 -0
- package/es/utils/mergeRefs.mjs +20 -0
- package/es/utils/mergeRefs.mjs.map +1 -0
- package/es/utils/placement.d.mts +5 -5
- package/es/utils/placement.mjs.map +1 -1
- package/package.json +25 -46
- 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
- package/es/Video/marker.stylex.mjs +0 -9
- package/es/Video/marker.stylex.mjs.map +0 -1
- package/es/dashboard/StatCard/style.mjs +0 -105
- package/es/dashboard/StatCard/style.mjs.map +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
3
|
+
import { PopoverPopup, PopoverPortal, PopoverPositioner, PopoverRoot, PopoverTriggerElement } from "../../Popover/atoms.mjs";
|
|
4
|
+
import { MeasureRowContext } from "./context.mjs";
|
|
5
|
+
import { styles } from "../style.mjs";
|
|
6
|
+
import { FILTER_CLS, sameKeys, sx } from "./filterUtils.mjs";
|
|
7
|
+
import FilterPanel from "./FilterPanel.mjs";
|
|
8
|
+
import { use, useEffect, useReducer, useRef, useState } from "react";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import clsx$1 from "clsx";
|
|
11
|
+
import { ListFilter } from "lucide-react";
|
|
12
|
+
//#region src/Table/render/FilterDropdown.tsx
|
|
13
|
+
const DEPRECATED_PROPS = [["filterDropdownOpen", "filterDropdownProps.open"], ["onFilterDropdownOpenChange", "filterDropdownProps.onOpenChange"]];
|
|
14
|
+
const warnedProps = /* @__PURE__ */ new Set();
|
|
15
|
+
const warnDeprecated = (column) => {
|
|
16
|
+
if (process.env.NODE_ENV === "production") return;
|
|
17
|
+
for (const [name, replacement] of DEPRECATED_PROPS) if (name in column && !warnedProps.has(name)) {
|
|
18
|
+
warnedProps.add(name);
|
|
19
|
+
console.warn(`[Table] \`${name}\` is deprecated. Please use \`${replacement}\` instead.`);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const useSyncKeys = (initial) => {
|
|
23
|
+
const ref = useRef(initial);
|
|
24
|
+
const [, rerender] = useReducer((count) => count + 1, 0);
|
|
25
|
+
return [() => ref.current, (next) => {
|
|
26
|
+
ref.current = next;
|
|
27
|
+
rerender();
|
|
28
|
+
}];
|
|
29
|
+
};
|
|
30
|
+
const FilterDropdown = ({ column, columnKey, filterState, getPopupContainer, label, locale, triggerFilter }) => {
|
|
31
|
+
const { defaultFilteredValue, filterDropdown, filterDropdownOpen, filterDropdownProps = {}, filterIcon, filterOnClose = true, filterResetToDefaultFilteredValue, filters, onFilterDropdownOpenChange } = column;
|
|
32
|
+
const inMeasureRow = use(MeasureRowContext);
|
|
33
|
+
warnDeprecated(column);
|
|
34
|
+
const triggerRef = useRef(null);
|
|
35
|
+
const [visible, setVisible] = useState(false);
|
|
36
|
+
const [searchValue, setSearchValue] = useState("");
|
|
37
|
+
const mergedVisible = filterDropdownProps.open ?? filterDropdownOpen ?? visible;
|
|
38
|
+
const filtered = Boolean(filterState?.filteredKeys?.length || filterState?.forceFiltered);
|
|
39
|
+
const triggerOpen = (next) => {
|
|
40
|
+
setVisible(next);
|
|
41
|
+
setSearchValue("");
|
|
42
|
+
filterDropdownProps.onOpenChange?.(next);
|
|
43
|
+
onFilterDropdownOpenChange?.(next);
|
|
44
|
+
};
|
|
45
|
+
const propFilteredKeys = filterState?.filteredKeys;
|
|
46
|
+
const [getSelectedKeys, setSelectedKeys] = useSyncKeys(propFilteredKeys ?? []);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (mergedVisible) setSelectedKeys(propFilteredKeys ?? []);
|
|
49
|
+
}, [propFilteredKeys, mergedVisible]);
|
|
50
|
+
const internalTriggerFilter = (keys) => {
|
|
51
|
+
const mergedKeys = keys?.length ? keys : null;
|
|
52
|
+
if (mergedKeys === null && !propFilteredKeys) return;
|
|
53
|
+
if (sameKeys(mergedKeys, propFilteredKeys)) return;
|
|
54
|
+
triggerFilter(columnKey, mergedKeys);
|
|
55
|
+
};
|
|
56
|
+
const onConfirm = () => {
|
|
57
|
+
triggerOpen(false);
|
|
58
|
+
internalTriggerFilter(getSelectedKeys());
|
|
59
|
+
};
|
|
60
|
+
const onReset = ({ closeDropdown = false, confirm = false } = {}) => {
|
|
61
|
+
if (confirm) internalTriggerFilter([]);
|
|
62
|
+
if (closeDropdown) triggerOpen(false);
|
|
63
|
+
setSearchValue("");
|
|
64
|
+
setSelectedKeys(filterResetToDefaultFilteredValue ? (defaultFilteredValue ?? []).map(String) : []);
|
|
65
|
+
};
|
|
66
|
+
const doFilter = ({ closeDropdown = true } = {}) => {
|
|
67
|
+
if (closeDropdown) triggerOpen(false);
|
|
68
|
+
internalTriggerFilter(getSelectedKeys());
|
|
69
|
+
};
|
|
70
|
+
const onPopoverOpenChange = (next) => {
|
|
71
|
+
if (next && propFilteredKeys !== void 0) setSelectedKeys(propFilteredKeys ?? []);
|
|
72
|
+
if (!next && !filterDropdown && filterOnClose) onConfirm();
|
|
73
|
+
else triggerOpen(next);
|
|
74
|
+
};
|
|
75
|
+
let content;
|
|
76
|
+
if (typeof filterDropdown === "function") content = filterDropdown({
|
|
77
|
+
clearFilters: onReset,
|
|
78
|
+
close: () => triggerOpen(false),
|
|
79
|
+
confirm: doFilter,
|
|
80
|
+
filters,
|
|
81
|
+
prefixCls: `${FILTER_CLS}-dropdown-custom`,
|
|
82
|
+
selectedKeys: getSelectedKeys(),
|
|
83
|
+
setSelectedKeys,
|
|
84
|
+
visible: mergedVisible
|
|
85
|
+
});
|
|
86
|
+
else if (filterDropdown !== void 0) content = filterDropdown;
|
|
87
|
+
else content = /* @__PURE__ */ jsx(FilterPanel, {
|
|
88
|
+
column,
|
|
89
|
+
locale,
|
|
90
|
+
searchValue,
|
|
91
|
+
selectedKeys: getSelectedKeys(),
|
|
92
|
+
setSelectedKeys,
|
|
93
|
+
onConfirm,
|
|
94
|
+
onReset: () => onReset(),
|
|
95
|
+
onSearchChange: setSearchValue
|
|
96
|
+
});
|
|
97
|
+
const popupRender = filterDropdownProps.popupRender ?? filterDropdownProps.dropdownRender;
|
|
98
|
+
const panel = /* @__PURE__ */ jsx("div", {
|
|
99
|
+
className: clsx$1(sx(styles.filterDropdown), `${FILTER_CLS}-dropdown`),
|
|
100
|
+
children: popupRender ? popupRender(content) : content
|
|
101
|
+
});
|
|
102
|
+
const icon = typeof filterIcon === "function" ? filterIcon(filtered) : filterIcon ?? ListFilter;
|
|
103
|
+
const trigger = /* @__PURE__ */ jsx(ActionIcon, {
|
|
104
|
+
active: filtered,
|
|
105
|
+
"aria-description": locale.filterTitle,
|
|
106
|
+
"aria-label": `Filter ${label}`,
|
|
107
|
+
"data-active": filtered || void 0,
|
|
108
|
+
icon,
|
|
109
|
+
ref: triggerRef,
|
|
110
|
+
size: "small",
|
|
111
|
+
className: clsx$1(sx(styles.filterButton), `${FILTER_CLS}-trigger`, filtered && sx(styles.filterActive)),
|
|
112
|
+
onClick: (event) => event.stopPropagation()
|
|
113
|
+
});
|
|
114
|
+
if (inMeasureRow) return trigger;
|
|
115
|
+
const resolveContainer = filterDropdownProps.getPopupContainer ?? getPopupContainer;
|
|
116
|
+
const container = mergedVisible && resolveContainer && triggerRef.current ? resolveContainer(triggerRef.current) : void 0;
|
|
117
|
+
return /* @__PURE__ */ jsxs(PopoverRoot, {
|
|
118
|
+
open: mergedVisible,
|
|
119
|
+
onOpenChange: onPopoverOpenChange,
|
|
120
|
+
children: [/* @__PURE__ */ jsx(PopoverTriggerElement, { children: trigger }), /* @__PURE__ */ jsx(PopoverPortal, {
|
|
121
|
+
container,
|
|
122
|
+
children: /* @__PURE__ */ jsx(PopoverPositioner, {
|
|
123
|
+
className: filterDropdownProps.rootClassName,
|
|
124
|
+
placement: filterDropdownProps.placement ?? "bottomRight",
|
|
125
|
+
sideOffset: 4,
|
|
126
|
+
style: filterDropdownProps.zIndex === void 0 ? void 0 : { zIndex: filterDropdownProps.zIndex },
|
|
127
|
+
children: /* @__PURE__ */ jsx(PopoverPopup, {
|
|
128
|
+
className: clsx$1(sx(styles.filterPopup), filterDropdownProps.className),
|
|
129
|
+
style: filterDropdownProps.style,
|
|
130
|
+
children: panel
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
})]
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
//#endregion
|
|
137
|
+
export { FilterDropdown as default };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=FilterDropdown.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterDropdown.mjs","names":["clsx"],"sources":["../../../src/Table/render/FilterDropdown.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { ListFilter } from 'lucide-react';\nimport { type Key, type ReactNode, use, useEffect, useReducer, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport {\n PopoverPopup,\n PopoverPortal,\n PopoverPositioner,\n PopoverRoot,\n PopoverTriggerElement,\n} from '@/Popover';\n\nimport { type FilterKeys, type FilterState } from '../pipeline/useFilter';\nimport { styles } from '../style';\nimport type { TableColumnType, TableFilterDropdownProps, TableLocale } from '../type';\nimport { MeasureRowContext } from './context';\nimport FilterPanel from './FilterPanel';\nimport { FILTER_CLS, sameKeys, sx } from './filterUtils';\n\nconst DEPRECATED_PROPS = [\n ['filterDropdownOpen', 'filterDropdownProps.open'],\n ['onFilterDropdownOpenChange', 'filterDropdownProps.onOpenChange'],\n] as const;\nconst warnedProps = new Set<string>();\n\nconst warnDeprecated = (column: object) => {\n if (process.env.NODE_ENV === 'production') return;\n for (const [name, replacement] of DEPRECATED_PROPS) {\n if (name in column && !warnedProps.has(name)) {\n warnedProps.add(name);\n console.warn(`[Table] \\`${name}\\` is deprecated. Please use \\`${replacement}\\` instead.`);\n }\n }\n};\n\nconst useSyncKeys = (initial: Key[]) => {\n const ref = useRef(initial);\n const [, rerender] = useReducer((count: number) => count + 1, 0);\n return [\n () => ref.current,\n (next: Key[]) => {\n ref.current = next;\n rerender();\n },\n ] as const;\n};\n\ninterface FilterDropdownProps<T> {\n column: TableColumnType<T>;\n columnKey: string;\n filterState?: FilterState<T>;\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n label: string;\n locale: Pick<\n TableLocale,\n | 'filterCheckAll'\n | 'filterConfirm'\n | 'filterEmptyText'\n | 'filterReset'\n | 'filterSearchPlaceholder'\n | 'filterTitle'\n >;\n triggerFilter: (columnKey: string, filteredKeys: FilterKeys) => void;\n}\n\nconst FilterDropdown = <T,>({\n column,\n columnKey,\n filterState,\n getPopupContainer,\n label,\n locale,\n triggerFilter,\n}: FilterDropdownProps<T>) => {\n const {\n defaultFilteredValue,\n filterDropdown,\n filterDropdownOpen,\n filterDropdownProps = {},\n filterIcon,\n filterOnClose = true,\n filterResetToDefaultFilteredValue,\n filters,\n onFilterDropdownOpenChange,\n } = column;\n\n const inMeasureRow = use(MeasureRowContext);\n warnDeprecated(column);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [visible, setVisible] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const mergedVisible = filterDropdownProps.open ?? filterDropdownOpen ?? visible;\n const filtered = Boolean(filterState?.filteredKeys?.length || filterState?.forceFiltered);\n\n const triggerOpen = (next: boolean) => {\n setVisible(next);\n // The search box starts empty every time the panel opens.\n setSearchValue('');\n filterDropdownProps.onOpenChange?.(next);\n onFilterDropdownOpenChange?.(next);\n };\n\n // Booleans only come from `filteredValue`; the panel works with keys, like antd.\n const propFilteredKeys = filterState?.filteredKeys as Key[] | null | undefined;\n const [getSelectedKeys, setSelectedKeys] = useSyncKeys(propFilteredKeys ?? []);\n\n useEffect(() => {\n if (mergedVisible) setSelectedKeys(propFilteredKeys ?? []);\n // `setSelectedKeys` is stable in behavior; re-sync only on open / applied-keys change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propFilteredKeys, mergedVisible]);\n\n const internalTriggerFilter = (keys: Key[] | null) => {\n const mergedKeys = keys?.length ? keys : null;\n if (mergedKeys === null && !propFilteredKeys) return;\n if (sameKeys(mergedKeys, propFilteredKeys)) return;\n triggerFilter(columnKey, mergedKeys);\n };\n\n const onConfirm = () => {\n triggerOpen(false);\n internalTriggerFilter(getSelectedKeys());\n };\n\n const onReset: NonNullable<TableFilterDropdownProps['clearFilters']> = ({\n closeDropdown = false,\n confirm = false,\n } = {}) => {\n if (confirm) internalTriggerFilter([]);\n if (closeDropdown) triggerOpen(false);\n setSearchValue('');\n setSelectedKeys(\n filterResetToDefaultFilteredValue ? (defaultFilteredValue ?? []).map(String) : [],\n );\n };\n\n const doFilter: TableFilterDropdownProps['confirm'] = ({ closeDropdown = true } = {}) => {\n if (closeDropdown) triggerOpen(false);\n internalTriggerFilter(getSelectedKeys());\n };\n\n const onPopoverOpenChange = (next: boolean) => {\n if (next && propFilteredKeys !== undefined) setSelectedKeys(propFilteredKeys ?? []);\n if (!next && !filterDropdown && filterOnClose) onConfirm();\n else triggerOpen(next);\n };\n\n let content: ReactNode;\n if (typeof filterDropdown === 'function') {\n content = filterDropdown({\n clearFilters: onReset,\n close: () => triggerOpen(false),\n confirm: doFilter,\n filters,\n prefixCls: `${FILTER_CLS}-dropdown-custom`,\n selectedKeys: getSelectedKeys(),\n setSelectedKeys,\n visible: mergedVisible,\n });\n } else if (filterDropdown !== undefined) {\n content = filterDropdown;\n } else {\n content = (\n <FilterPanel\n column={column}\n locale={locale}\n searchValue={searchValue}\n selectedKeys={getSelectedKeys()}\n setSelectedKeys={setSelectedKeys}\n onConfirm={onConfirm}\n onReset={() => onReset()}\n onSearchChange={setSearchValue}\n />\n );\n }\n\n const popupRender = filterDropdownProps.popupRender ?? filterDropdownProps.dropdownRender;\n const panel = (\n <div className={clsx(sx(styles.filterDropdown), `${FILTER_CLS}-dropdown`)}>\n {popupRender ? popupRender(content) : content}\n </div>\n );\n\n const icon = typeof filterIcon === 'function' ? filterIcon(filtered) : (filterIcon ?? ListFilter);\n\n // Native `title` would need ActionIcon's tooltip, which can't sit inside the popover trigger;\n // the localized hint rides on `aria-description` instead.\n const trigger = (\n <ActionIcon\n active={filtered}\n aria-description={locale.filterTitle}\n aria-label={`Filter ${label}`}\n data-active={filtered || undefined}\n icon={icon}\n ref={triggerRef}\n size=\"small\"\n className={clsx(\n sx(styles.filterButton),\n `${FILTER_CLS}-trigger`,\n filtered && sx(styles.filterActive),\n )}\n onClick={(event) => event.stopPropagation()}\n />\n );\n\n if (inMeasureRow) return trigger;\n\n const resolveContainer = filterDropdownProps.getPopupContainer ?? getPopupContainer;\n const container =\n mergedVisible && resolveContainer && triggerRef.current\n ? resolveContainer(triggerRef.current)\n : undefined;\n\n return (\n <PopoverRoot open={mergedVisible} onOpenChange={onPopoverOpenChange}>\n <PopoverTriggerElement>{trigger}</PopoverTriggerElement>\n <PopoverPortal container={container}>\n <PopoverPositioner\n className={filterDropdownProps.rootClassName}\n placement={filterDropdownProps.placement ?? 'bottomRight'}\n sideOffset={4}\n style={\n filterDropdownProps.zIndex === undefined\n ? undefined\n : { zIndex: filterDropdownProps.zIndex }\n }\n >\n <PopoverPopup\n className={clsx(sx(styles.filterPopup), filterDropdownProps.className)}\n style={filterDropdownProps.style}\n >\n {panel}\n </PopoverPopup>\n </PopoverPositioner>\n </PopoverPortal>\n </PopoverRoot>\n );\n};\n\nexport default FilterDropdown;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import Button from "../../Button/Button.mjs";
|
|
4
|
+
import Input_default from "../../Input/Input.mjs";
|
|
5
|
+
import Checkbox_default from "../../Checkbox/Checkbox.mjs";
|
|
6
|
+
import Empty from "../../Empty/Empty.mjs";
|
|
7
|
+
import Radio from "../../Radio/Radio.mjs";
|
|
8
|
+
import { PREFIX_CLS } from "../constants.mjs";
|
|
9
|
+
import { styles } from "../style.mjs";
|
|
10
|
+
import { conductCheck } from "../../Tree/utils.mjs";
|
|
11
|
+
import Tree from "../../Tree/Tree.mjs";
|
|
12
|
+
import { flattenFilterKeys } from "../pipeline/useFilter.mjs";
|
|
13
|
+
import { FILTER_CLS, findLineage, sameKeys, sx, textMatches } from "./filterUtils.mjs";
|
|
14
|
+
import { useMemo } from "react";
|
|
15
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import clsx$1 from "clsx";
|
|
17
|
+
import { Search } from "lucide-react";
|
|
18
|
+
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
19
|
+
//#region src/Table/render/FilterPanel.tsx
|
|
20
|
+
const FilterPanel = ({ column, locale, onConfirm, onReset, onSearchChange, searchValue, selectedKeys, setSelectedKeys }) => {
|
|
21
|
+
const { defaultFilteredValue, filterMode = "menu", filterMultiple = true, filterResetToDefaultFilteredValue, filters, filterSearch = false } = column;
|
|
22
|
+
const normalizedSearch = searchValue.trim().toLowerCase();
|
|
23
|
+
const selectedSet = new Set(selectedKeys.map(String));
|
|
24
|
+
const allKeys = useMemo(() => flattenFilterKeys(filters).map(String), [filters]);
|
|
25
|
+
const matches = (item) => typeof filterSearch === "function" ? filterSearch(normalizedSearch, item) : textMatches(normalizedSearch, item.text);
|
|
26
|
+
const toggleKey = (key, checked) => {
|
|
27
|
+
if (!filterMultiple) return setSelectedKeys(checked ? [key] : []);
|
|
28
|
+
const rest = selectedKeys.filter((item) => String(item) !== key);
|
|
29
|
+
setSelectedKeys(checked ? [...rest, key] : rest);
|
|
30
|
+
};
|
|
31
|
+
const renderMenuItems = (items) => items.flatMap((item, index) => {
|
|
32
|
+
const key = String(item.value);
|
|
33
|
+
if (item.children) {
|
|
34
|
+
const children = renderMenuItems(item.children);
|
|
35
|
+
if (children.length === 0) return [];
|
|
36
|
+
return [/* @__PURE__ */ jsxs("div", {
|
|
37
|
+
className: sx(styles.filterGroup),
|
|
38
|
+
role: "group",
|
|
39
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
40
|
+
className: clsx$1(sx(styles.filterGroupTitle), `${FILTER_CLS}-dropdown-submenu-title`),
|
|
41
|
+
children: item.text
|
|
42
|
+
}), children]
|
|
43
|
+
}, key || index)];
|
|
44
|
+
}
|
|
45
|
+
if (normalizedSearch && !matches(item)) return [];
|
|
46
|
+
return [/* @__PURE__ */ jsx("div", {
|
|
47
|
+
className: clsx$1(sx(styles.filterItem), `${FILTER_CLS}-dropdown-item`),
|
|
48
|
+
children: filterMultiple ? /* @__PURE__ */ jsx(Checkbox_default, {
|
|
49
|
+
checked: selectedSet.has(key),
|
|
50
|
+
onChange: (checked) => toggleKey(key, checked),
|
|
51
|
+
children: item.text
|
|
52
|
+
}) : /* @__PURE__ */ jsx(Radio, {
|
|
53
|
+
value: key,
|
|
54
|
+
children: item.text
|
|
55
|
+
})
|
|
56
|
+
}, key)];
|
|
57
|
+
});
|
|
58
|
+
const toTreeData = (items, ancestorMatched = false) => (items ?? []).flatMap((item, index) => {
|
|
59
|
+
const selfMatched = ancestorMatched || !normalizedSearch || matches(item);
|
|
60
|
+
const children = item.children ? toTreeData(item.children, selfMatched) : void 0;
|
|
61
|
+
if (!selfMatched && !children?.length) return [];
|
|
62
|
+
return [{
|
|
63
|
+
children,
|
|
64
|
+
key: item.value !== void 0 ? String(item.value) : String(index),
|
|
65
|
+
title: item.text
|
|
66
|
+
}];
|
|
67
|
+
});
|
|
68
|
+
const renderSearch = () => filterSearch ? /* @__PURE__ */ jsx("div", {
|
|
69
|
+
className: clsx$1(sx(styles.filterSearch), `${PREFIX_CLS}-filter-dropdown-search`),
|
|
70
|
+
children: /* @__PURE__ */ jsx(Input_default, {
|
|
71
|
+
allowClear: true,
|
|
72
|
+
placeholder: locale.filterSearchPlaceholder,
|
|
73
|
+
prefix: /* @__PURE__ */ jsx(Icon, {
|
|
74
|
+
icon: Search,
|
|
75
|
+
size: 14
|
|
76
|
+
}),
|
|
77
|
+
size: "small",
|
|
78
|
+
value: searchValue,
|
|
79
|
+
onChange: (event) => onSearchChange(event.target.value)
|
|
80
|
+
})
|
|
81
|
+
}) : null;
|
|
82
|
+
const empty = /* @__PURE__ */ jsx(Empty, {
|
|
83
|
+
className: sx(styles.filterEmpty),
|
|
84
|
+
description: locale.filterEmptyText,
|
|
85
|
+
imageSize: 24
|
|
86
|
+
});
|
|
87
|
+
let body;
|
|
88
|
+
if (!filters?.length) body = empty;
|
|
89
|
+
else if (filterMode === "tree") {
|
|
90
|
+
const treeData = toTreeData(filters);
|
|
91
|
+
const fullTreeData = normalizedSearch ? toTreeData(filters, true) : treeData;
|
|
92
|
+
const onTreeCheck = (checked, node) => {
|
|
93
|
+
if (!filterMultiple) return setSelectedKeys(checked ? [node.key] : []);
|
|
94
|
+
const lineage = findLineage(fullTreeData, node.key);
|
|
95
|
+
const base = conductCheck(fullTreeData, selectedKeys.map(String)).checked;
|
|
96
|
+
if (checked) lineage?.subtree.forEach((key) => base.add(key));
|
|
97
|
+
else [...lineage?.subtree ?? [], ...lineage?.ancestors ?? []].forEach((key) => base.delete(key));
|
|
98
|
+
setSelectedKeys([...conductCheck(fullTreeData, base).checked]);
|
|
99
|
+
};
|
|
100
|
+
body = /* @__PURE__ */ jsxs(Fragment$1, { children: [renderSearch(), /* @__PURE__ */ jsxs("div", {
|
|
101
|
+
className: clsx$1(sx(styles.filterTree), `${PREFIX_CLS}-filter-dropdown-tree`),
|
|
102
|
+
children: [filterMultiple && /* @__PURE__ */ jsx(Checkbox_default, {
|
|
103
|
+
checked: selectedKeys.length > 0 && selectedKeys.length === allKeys.length,
|
|
104
|
+
className: clsx$1(sx(styles.filterCheckAll), `lobe-table-filter-dropdown-checkall`),
|
|
105
|
+
indeterminate: selectedKeys.length > 0 && selectedKeys.length < allKeys.length,
|
|
106
|
+
onChange: (checked) => setSelectedKeys(checked ? allKeys : []),
|
|
107
|
+
children: locale.filterCheckAll
|
|
108
|
+
}), treeData.length > 0 ? /* @__PURE__ */ jsx(Tree, {
|
|
109
|
+
checkable: true,
|
|
110
|
+
defaultExpandAll: true,
|
|
111
|
+
checkStrictly: !filterMultiple || Boolean(normalizedSearch),
|
|
112
|
+
checkedKeys: selectedKeys.map(String),
|
|
113
|
+
multiple: filterMultiple,
|
|
114
|
+
selectedKeys: [],
|
|
115
|
+
size: "small",
|
|
116
|
+
treeData,
|
|
117
|
+
onCheck: (_, { checked, node }) => onTreeCheck(checked, node)
|
|
118
|
+
}) : empty]
|
|
119
|
+
})] });
|
|
120
|
+
} else {
|
|
121
|
+
const items = renderMenuItems(filters);
|
|
122
|
+
const list = /* @__PURE__ */ jsx("div", {
|
|
123
|
+
className: clsx$1(sx(styles.filterMenu), `${FILTER_CLS}-dropdown-menu`),
|
|
124
|
+
children: items
|
|
125
|
+
});
|
|
126
|
+
body = /* @__PURE__ */ jsxs(Fragment$1, { children: [renderSearch(), items.length === 0 ? empty : filterMultiple ? list : /* @__PURE__ */ jsx(RadioGroup, {
|
|
127
|
+
value: selectedKeys.length ? String(selectedKeys[0]) : null,
|
|
128
|
+
onValueChange: (value) => setSelectedKeys(value == null ? [] : [String(value)]),
|
|
129
|
+
children: list
|
|
130
|
+
})] });
|
|
131
|
+
}
|
|
132
|
+
const resetDisabled = filterResetToDefaultFilteredValue ? sameKeys((defaultFilteredValue ?? []).map(String), selectedKeys.map(String)) : selectedKeys.length === 0;
|
|
133
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [body, /* @__PURE__ */ jsxs("div", {
|
|
134
|
+
className: clsx$1(sx(styles.filterButtons), `${FILTER_CLS}-dropdown-btns`),
|
|
135
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
136
|
+
disabled: resetDisabled,
|
|
137
|
+
size: "small",
|
|
138
|
+
type: "link",
|
|
139
|
+
onClick: () => onReset(),
|
|
140
|
+
children: locale.filterReset
|
|
141
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
142
|
+
size: "small",
|
|
143
|
+
type: "primary",
|
|
144
|
+
onClick: onConfirm,
|
|
145
|
+
children: locale.filterConfirm
|
|
146
|
+
})]
|
|
147
|
+
})] });
|
|
148
|
+
};
|
|
149
|
+
//#endregion
|
|
150
|
+
export { FilterPanel as default };
|
|
151
|
+
|
|
152
|
+
//# sourceMappingURL=FilterPanel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterPanel.mjs","names":["clsx","Checkbox","Input","BaseRadioGroup"],"sources":["../../../src/Table/render/FilterPanel.tsx"],"sourcesContent":["'use client';\n\nimport { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';\nimport clsx from 'clsx';\nimport { Search } from 'lucide-react';\nimport { type Key, type ReactNode, useMemo } from 'react';\n\nimport Button from '@/Button';\nimport { Checkbox } from '@/Checkbox';\nimport Empty from '@/Empty';\nimport Icon from '@/Icon';\nimport { Input } from '@/Input';\nimport { Radio } from '@/Radio';\nimport Tree, { conductCheck, type TreeDataNode } from '@/Tree';\n\nimport { PREFIX_CLS } from '../constants';\nimport { flattenFilterKeys } from '../pipeline/useFilter';\nimport { styles } from '../style';\nimport type { TableColumnFilterItem, TableColumnType, TableLocale } from '../type';\nimport { FILTER_CLS, findLineage, sameKeys, sx, textMatches } from './filterUtils';\n\nexport interface FilterPanelProps<T> {\n column: TableColumnType<T>;\n locale: Pick<\n TableLocale,\n | 'filterCheckAll'\n | 'filterConfirm'\n | 'filterEmptyText'\n | 'filterReset'\n | 'filterSearchPlaceholder'\n >;\n onConfirm: () => void;\n onReset: () => void;\n onSearchChange: (value: string) => void;\n searchValue: string;\n selectedKeys: Key[];\n setSelectedKeys: (keys: Key[]) => void;\n}\n\nconst FilterPanel = <T,>({\n column,\n locale,\n onConfirm,\n onReset,\n onSearchChange,\n searchValue,\n selectedKeys,\n setSelectedKeys,\n}: FilterPanelProps<T>) => {\n const {\n defaultFilteredValue,\n filterMode = 'menu',\n filterMultiple = true,\n filterResetToDefaultFilteredValue,\n filters,\n filterSearch = false,\n } = column;\n const normalizedSearch = searchValue.trim().toLowerCase();\n const selectedSet = new Set(selectedKeys.map(String));\n const allKeys = useMemo(() => flattenFilterKeys(filters).map(String), [filters]);\n\n const matches = (item: TableColumnFilterItem) =>\n typeof filterSearch === 'function'\n ? filterSearch(normalizedSearch, item)\n : textMatches(normalizedSearch, item.text);\n\n const toggleKey = (key: string, checked: boolean) => {\n if (!filterMultiple) return setSelectedKeys(checked ? [key] : []);\n const rest = selectedKeys.filter((item) => String(item) !== key);\n setSelectedKeys(checked ? [...rest, key] : rest);\n };\n\n const renderMenuItems = (items: readonly TableColumnFilterItem[]): ReactNode[] =>\n items.flatMap((item, index) => {\n const key = String(item.value);\n if (item.children) {\n const children = renderMenuItems(item.children);\n if (children.length === 0) return [];\n return [\n <div className={sx(styles.filterGroup)} key={key || index} role=\"group\">\n <div\n className={clsx(sx(styles.filterGroupTitle), `${FILTER_CLS}-dropdown-submenu-title`)}\n >\n {item.text}\n </div>\n {children}\n </div>,\n ];\n }\n if (normalizedSearch && !matches(item)) return [];\n return [\n <div className={clsx(sx(styles.filterItem), `${FILTER_CLS}-dropdown-item`)} key={key}>\n {filterMultiple ? (\n <Checkbox\n checked={selectedSet.has(key)}\n onChange={(checked) => toggleKey(key, checked)}\n >\n {item.text}\n </Checkbox>\n ) : (\n <Radio value={key}>{item.text}</Radio>\n )}\n </div>,\n ];\n });\n\n const toTreeData = (\n items: readonly TableColumnFilterItem[] | undefined,\n ancestorMatched = false,\n ): TreeDataNode[] =>\n (items ?? []).flatMap((item, index) => {\n const selfMatched = ancestorMatched || !normalizedSearch || matches(item);\n const children = item.children ? toTreeData(item.children, selfMatched) : undefined;\n if (!selfMatched && !children?.length) return [];\n return [\n {\n children,\n key: item.value !== undefined ? String(item.value) : String(index),\n title: item.text,\n },\n ];\n });\n\n const renderSearch = () =>\n filterSearch ? (\n <div className={clsx(sx(styles.filterSearch), `${PREFIX_CLS}-filter-dropdown-search`)}>\n <Input\n allowClear\n placeholder={locale.filterSearchPlaceholder}\n prefix={<Icon icon={Search} size={14} />}\n size=\"small\"\n value={searchValue}\n onChange={(event) => onSearchChange(event.target.value)}\n />\n </div>\n ) : null;\n\n const empty = (\n <Empty className={sx(styles.filterEmpty)} description={locale.filterEmptyText} imageSize={24} />\n );\n\n let body: ReactNode;\n if (!filters?.length) {\n body = empty;\n } else if (filterMode === 'tree') {\n const treeData = toTreeData(filters);\n // Searching prunes the tree, so cascade checks on the full tree and show the keys as is.\n const fullTreeData = normalizedSearch ? toTreeData(filters, true) : treeData;\n const onTreeCheck = (checked: boolean, node: TreeDataNode) => {\n if (!filterMultiple) return setSelectedKeys(checked ? [node.key] : []);\n const lineage = findLineage(fullTreeData, node.key);\n const base = conductCheck(fullTreeData, selectedKeys.map(String)).checked;\n if (checked) lineage?.subtree.forEach((key) => base.add(key));\n else\n [...(lineage?.subtree ?? []), ...(lineage?.ancestors ?? [])].forEach((key) =>\n base.delete(key),\n );\n setSelectedKeys([...conductCheck(fullTreeData, base).checked]);\n };\n body = (\n <>\n {renderSearch()}\n <div className={clsx(sx(styles.filterTree), `${PREFIX_CLS}-filter-dropdown-tree`)}>\n {filterMultiple && (\n <Checkbox\n checked={selectedKeys.length > 0 && selectedKeys.length === allKeys.length}\n className={clsx(sx(styles.filterCheckAll), `${PREFIX_CLS}-filter-dropdown-checkall`)}\n indeterminate={selectedKeys.length > 0 && selectedKeys.length < allKeys.length}\n onChange={(checked) => setSelectedKeys(checked ? allKeys : [])}\n >\n {locale.filterCheckAll}\n </Checkbox>\n )}\n {treeData.length > 0 ? (\n <Tree\n checkable\n defaultExpandAll\n checkStrictly={!filterMultiple || Boolean(normalizedSearch)}\n checkedKeys={selectedKeys.map(String)}\n multiple={filterMultiple}\n selectedKeys={[]}\n size=\"small\"\n treeData={treeData}\n onCheck={(_, { checked, node }) => onTreeCheck(checked, node)}\n />\n ) : (\n empty\n )}\n </div>\n </>\n );\n } else {\n const items = renderMenuItems(filters);\n const list = (\n <div className={clsx(sx(styles.filterMenu), `${FILTER_CLS}-dropdown-menu`)}>{items}</div>\n );\n body = (\n <>\n {renderSearch()}\n {items.length === 0 ? (\n empty\n ) : filterMultiple ? (\n list\n ) : (\n <BaseRadioGroup\n value={selectedKeys.length ? String(selectedKeys[0]) : null}\n onValueChange={(value) => setSelectedKeys(value == null ? [] : [String(value)])}\n >\n {list}\n </BaseRadioGroup>\n )}\n </>\n );\n }\n\n const resetDisabled = filterResetToDefaultFilteredValue\n ? sameKeys((defaultFilteredValue ?? []).map(String), selectedKeys.map(String))\n : selectedKeys.length === 0;\n\n return (\n <>\n {body}\n <div className={clsx(sx(styles.filterButtons), `${FILTER_CLS}-dropdown-btns`)}>\n <Button disabled={resetDisabled} size=\"small\" type=\"link\" onClick={() => onReset()}>\n {locale.filterReset}\n </Button>\n <Button size=\"small\" type=\"primary\" onClick={onConfirm}>\n {locale.filterConfirm}\n </Button>\n </div>\n </>\n );\n};\n\nexport default FilterPanel;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { PREFIX_CLS } from "../constants.mjs";
|
|
3
|
+
import { styles } from "../style.mjs";
|
|
4
|
+
import { memo, useEffect, useState } from "react";
|
|
5
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import * as stylex from "@stylexjs/stylex";
|
|
7
|
+
import { createPortal } from "react-dom";
|
|
8
|
+
//#region src/Table/render/FixedFrost.tsx
|
|
9
|
+
const p = `.${PREFIX_CLS}`;
|
|
10
|
+
const px = (value) => Number.parseFloat(value) || 0;
|
|
11
|
+
const measureSides = (rows) => {
|
|
12
|
+
let start = 0;
|
|
13
|
+
let end = 0;
|
|
14
|
+
for (const row of rows) for (const cell of Array.from(row.children)) if (cell.classList.contains(`lobe-table-cell-fix-start`)) start = Math.max(start, px(cell.style.insetInlineStart || cell.style.left) + cell.offsetWidth);
|
|
15
|
+
else if (cell.classList.contains(`lobe-table-cell-fix-end`)) end = Math.max(end, px(cell.style.insetInlineEnd || cell.style.right) + cell.offsetWidth);
|
|
16
|
+
return {
|
|
17
|
+
end: Math.round(end),
|
|
18
|
+
start: Math.round(start)
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const collectRails = (table) => {
|
|
22
|
+
const rails = [];
|
|
23
|
+
const own = (el) => el.closest(p) === table;
|
|
24
|
+
const ownMatch = (selector) => Array.from(table.querySelectorAll(selector)).some((el) => own(el));
|
|
25
|
+
if (ownMatch(`${p}-placeholder`) || ownMatch("[data-table-skeleton]")) return rails;
|
|
26
|
+
const showStart = table.classList.contains(`${PREFIX_CLS}-fix-start-shadow-show`);
|
|
27
|
+
const showEnd = table.classList.contains(`${PREFIX_CLS}-fix-end-shadow-show`);
|
|
28
|
+
if (!showStart && !showEnd) return rails;
|
|
29
|
+
const hosts = table.querySelectorAll(`${p}-content, ${p}-header, ${p}-body, ${p}-tbody-virtual-holder-inner`);
|
|
30
|
+
for (const host of Array.from(hosts)) {
|
|
31
|
+
if (!own(host)) continue;
|
|
32
|
+
if (host.closest(`${p}-sticky-holder`)) continue;
|
|
33
|
+
if (host.classList.contains(`lobe-table-tbody-virtual-holder-inner`)) {
|
|
34
|
+
const rows = Array.from(host.querySelectorAll(`${p}-row`)).filter((el) => own(el) && !el.classList.contains(`lobe-table-row-extra`));
|
|
35
|
+
const measured = measureSides(rows.slice(0, 3));
|
|
36
|
+
const start = showStart ? measured.start : 0;
|
|
37
|
+
const end = showEnd ? measured.end : 0;
|
|
38
|
+
if (start || end) rails.push({
|
|
39
|
+
end,
|
|
40
|
+
fill: true,
|
|
41
|
+
height: 0,
|
|
42
|
+
host,
|
|
43
|
+
start,
|
|
44
|
+
width: 0
|
|
45
|
+
});
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const tableEl = host.querySelector(":scope > table");
|
|
49
|
+
if (!tableEl) continue;
|
|
50
|
+
const rows = Array.from(tableEl.querySelectorAll(":scope > thead > tr, :scope > tbody > tr")).filter((row) => !row.classList.contains(`${PREFIX_CLS}-measure-row`)).slice(0, 6);
|
|
51
|
+
const measured = measureSides(rows);
|
|
52
|
+
const start = showStart ? measured.start : 0;
|
|
53
|
+
const end = showEnd ? measured.end : 0;
|
|
54
|
+
if (!start && !end) continue;
|
|
55
|
+
rails.push({
|
|
56
|
+
end,
|
|
57
|
+
fill: false,
|
|
58
|
+
height: tableEl.offsetHeight,
|
|
59
|
+
host,
|
|
60
|
+
start,
|
|
61
|
+
width: tableEl.offsetWidth
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return rails;
|
|
65
|
+
};
|
|
66
|
+
const sameRails = (a, b) => a.length === b.length && a.every((rail, i) => rail.host === b[i].host && rail.start === b[i].start && rail.end === b[i].end && rail.width === b[i].width && rail.height === b[i].height);
|
|
67
|
+
const FixedFrost = memo(({ rootRef }) => {
|
|
68
|
+
const [rails, setRails] = useState([]);
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
const root = rootRef.current;
|
|
71
|
+
if (!root) return;
|
|
72
|
+
let frame = 0;
|
|
73
|
+
const update = () => {
|
|
74
|
+
frame = 0;
|
|
75
|
+
const table = root.querySelector(p);
|
|
76
|
+
const next = table ? collectRails(table) : [];
|
|
77
|
+
for (const rail of next) if (!rail.fill && getComputedStyle(rail.host).position === "static") rail.host.style.position = "relative";
|
|
78
|
+
setRails((prev) => sameRails(prev, next) ? prev : next);
|
|
79
|
+
};
|
|
80
|
+
const schedule = () => {
|
|
81
|
+
if (!frame) frame = requestAnimationFrame(update);
|
|
82
|
+
};
|
|
83
|
+
update();
|
|
84
|
+
const resize = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(schedule);
|
|
85
|
+
resize?.observe(root);
|
|
86
|
+
const mutation = new MutationObserver((records) => {
|
|
87
|
+
if (records.every((r) => r.target.closest?.("[data-table-frost]"))) return;
|
|
88
|
+
schedule();
|
|
89
|
+
});
|
|
90
|
+
mutation.observe(root, {
|
|
91
|
+
attributeFilter: ["class", "style"],
|
|
92
|
+
childList: true,
|
|
93
|
+
subtree: true
|
|
94
|
+
});
|
|
95
|
+
return () => {
|
|
96
|
+
if (frame) cancelAnimationFrame(frame);
|
|
97
|
+
resize?.disconnect();
|
|
98
|
+
mutation.disconnect();
|
|
99
|
+
};
|
|
100
|
+
}, [rootRef]);
|
|
101
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: rails.map((rail, i) => createPortal(/* @__PURE__ */ jsxs("div", {
|
|
102
|
+
"aria-hidden": true,
|
|
103
|
+
"data-table-frost": "",
|
|
104
|
+
...stylex.props(styles.frostRail),
|
|
105
|
+
style: rail.fill ? { inset: 0 } : {
|
|
106
|
+
height: rail.height,
|
|
107
|
+
width: rail.width
|
|
108
|
+
},
|
|
109
|
+
children: [rail.start > 0 && /* @__PURE__ */ jsx("div", {
|
|
110
|
+
...stylex.props(styles.frostStart),
|
|
111
|
+
style: { width: rail.start }
|
|
112
|
+
}), rail.end > 0 && /* @__PURE__ */ jsx("div", {
|
|
113
|
+
...stylex.props(styles.frostEnd),
|
|
114
|
+
style: { width: rail.end }
|
|
115
|
+
})]
|
|
116
|
+
}), rail.host, `frost-${i}`)) });
|
|
117
|
+
});
|
|
118
|
+
FixedFrost.displayName = "TableFixedFrost";
|
|
119
|
+
//#endregion
|
|
120
|
+
export { FixedFrost as default };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=FixedFrost.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedFrost.mjs","names":[],"sources":["../../../src/Table/render/FixedFrost.tsx"],"sourcesContent":["'use client';\n\nimport * as stylex from '@stylexjs/stylex';\nimport { memo, type RefObject, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { PREFIX_CLS } from '../constants';\nimport { styles } from '../style';\n\nconst p = `.${PREFIX_CLS}`;\n\ninterface Rail {\n end: number;\n fill: boolean;\n height: number;\n host: HTMLElement;\n start: number;\n width: number;\n}\n\nconst px = (value: string) => Number.parseFloat(value) || 0;\n\nconst measureSides = (rows: Element[]) => {\n let start = 0;\n let end = 0;\n for (const row of rows) {\n for (const cell of Array.from(row.children) as HTMLElement[]) {\n if (cell.classList.contains(`${PREFIX_CLS}-cell-fix-start`)) {\n start = Math.max(\n start,\n px(cell.style.insetInlineStart || cell.style.left) + cell.offsetWidth,\n );\n } else if (cell.classList.contains(`${PREFIX_CLS}-cell-fix-end`)) {\n end = Math.max(end, px(cell.style.insetInlineEnd || cell.style.right) + cell.offsetWidth);\n }\n }\n }\n return { end: Math.round(end), start: Math.round(start) };\n};\n\nconst collectRails = (table: HTMLElement): Rail[] => {\n const rails: Rail[] = [];\n const own = (el: Element) => el.closest(p) === table;\n const ownMatch = (selector: string) =>\n Array.from(table.querySelectorAll(selector)).some((el) => own(el));\n\n // Empty / skeleton body: the placeholder row spans every column, so there is nothing fixed\n // in the body and nothing scrolled under the fixed side; a rail would only blur the\n // skeleton and its row dividers.\n if (ownMatch(`${p}-placeholder`) || ownMatch('[data-table-skeleton]')) return rails;\n\n // useScrollSync flags the table with `*-shadow-show` exactly while content sits under a\n // fixed side; at rest the transparent fixed cells cover nothing.\n const showStart = table.classList.contains(`${PREFIX_CLS}-fix-start-shadow-show`);\n const showEnd = table.classList.contains(`${PREFIX_CLS}-fix-end-shadow-show`);\n if (!showStart && !showEnd) return rails;\n const hosts = table.querySelectorAll<HTMLElement>(\n `${p}-content, ${p}-header, ${p}-body, ${p}-tbody-virtual-holder-inner`,\n );\n\n for (const host of Array.from(hosts)) {\n if (!own(host)) continue;\n // A sticky header is one element and blurs itself in CSS.\n if (host.closest(`${p}-sticky-holder`)) continue;\n\n if (host.classList.contains(`${PREFIX_CLS}-tbody-virtual-holder-inner`)) {\n const rows = Array.from(host.querySelectorAll(`${p}-row`)).filter(\n (el) => own(el) && !el.classList.contains(`${PREFIX_CLS}-row-extra`),\n );\n const measured = measureSides(rows.slice(0, 3));\n const start = showStart ? measured.start : 0;\n const end = showEnd ? measured.end : 0;\n if (start || end) rails.push({ end, fill: true, height: 0, host, start, width: 0 });\n continue;\n }\n\n const tableEl = host.querySelector<HTMLTableElement>(':scope > table');\n if (!tableEl) continue;\n const rows = Array.from(tableEl.querySelectorAll(':scope > thead > tr, :scope > tbody > tr'))\n .filter((row) => !row.classList.contains(`${PREFIX_CLS}-measure-row`))\n .slice(0, 6);\n const measured = measureSides(rows);\n const start = showStart ? measured.start : 0;\n const end = showEnd ? measured.end : 0;\n if (!start && !end) continue;\n rails.push({\n end,\n fill: false,\n height: tableEl.offsetHeight,\n host,\n start,\n width: tableEl.offsetWidth,\n });\n }\n return rails;\n};\n\nconst sameRails = (a: Rail[], b: Rail[]) =>\n a.length === b.length &&\n a.every(\n (rail, i) =>\n rail.host === b[i].host &&\n rail.start === b[i].start &&\n rail.end === b[i].end &&\n rail.width === b[i].width &&\n rail.height === b[i].height,\n );\n\n// A per-cell backdrop-filter blurs each box on its own and shows seams at every row, so\n// each scroll host gets one rail holding a sticky pane per fixed side instead. A side is only\n// frosted while content is scrolled under it and never over an empty / skeleton body, so row\n// dividers stay continuous through fixed columns.\nconst FixedFrost = memo<{ rootRef: RefObject<HTMLElement | null> }>(({ rootRef }) => {\n const [rails, setRails] = useState<Rail[]>([]);\n\n // Passive effect: the root ref belongs to an ancestor and is attached after this\n // child's layout effects, so a layout effect would see it as null on mount.\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n let frame = 0;\n\n const update = () => {\n frame = 0;\n const table = root.querySelector<HTMLElement>(p);\n const next = table ? collectRails(table) : [];\n for (const rail of next) {\n if (!rail.fill && getComputedStyle(rail.host).position === 'static') {\n rail.host.style.position = 'relative';\n }\n }\n setRails((prev) => (sameRails(prev, next) ? prev : next));\n };\n const schedule = () => {\n if (!frame) frame = requestAnimationFrame(update);\n };\n\n update();\n // Consumers render Table in jsdom without a ResizeObserver polyfill.\n const resize = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(schedule);\n resize?.observe(root);\n const mutation = new MutationObserver((records) => {\n if (records.every((r) => (r.target as Element).closest?.('[data-table-frost]'))) return;\n schedule();\n });\n mutation.observe(root, { attributeFilter: ['class', 'style'], childList: true, subtree: true });\n\n return () => {\n if (frame) cancelAnimationFrame(frame);\n resize?.disconnect();\n mutation.disconnect();\n };\n }, [rootRef]);\n\n return (\n <>\n {rails.map((rail, i) =>\n createPortal(\n <div\n aria-hidden\n data-table-frost=\"\"\n {...stylex.props(styles.frostRail)}\n style={rail.fill ? { inset: 0 } : { height: rail.height, width: rail.width }}\n >\n {rail.start > 0 && (\n <div {...stylex.props(styles.frostStart)} style={{ width: rail.start }} />\n )}\n {rail.end > 0 && <div {...stylex.props(styles.frostEnd)} style={{ width: rail.end }} />}\n </div>,\n rail.host,\n `frost-${i}`,\n ),\n )}\n </>\n );\n});\n\nFixedFrost.displayName = 'TableFixedFrost';\n\nexport default FixedFrost;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEventCallback } from "../../hooks/useEventCallback.mjs";
|
|
3
|
+
import { TableElement } from "../atoms/layout.mjs";
|
|
4
|
+
import { useTableView } from "./context.mjs";
|
|
5
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/Table/render/FixedHolder.tsx
|
|
8
|
+
const FixedHolder = ({ children, className, colGroup, holderRef, onWheelX, stickyStyle, tableLayout, scrollX }) => {
|
|
9
|
+
const { components } = useTableView();
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
const onWheel = useEventCallback(onWheelX);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const element = ref.current;
|
|
14
|
+
if (!element) return;
|
|
15
|
+
const handler = (event) => {
|
|
16
|
+
if (!event.deltaX) return;
|
|
17
|
+
const max = element.scrollWidth - element.clientWidth;
|
|
18
|
+
const next = Math.min(Math.max(element.scrollLeft + event.deltaX, 0), max);
|
|
19
|
+
onWheel(element, next);
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
};
|
|
22
|
+
element.addEventListener("wheel", handler, { passive: false });
|
|
23
|
+
return () => element.removeEventListener("wheel", handler);
|
|
24
|
+
}, [onWheel]);
|
|
25
|
+
const setRef = useCallback((element) => {
|
|
26
|
+
ref.current = element;
|
|
27
|
+
if (typeof holderRef === "function") holderRef(element);
|
|
28
|
+
else if (holderRef) holderRef.current = element;
|
|
29
|
+
}, [holderRef]);
|
|
30
|
+
return /* @__PURE__ */ jsx("div", {
|
|
31
|
+
className,
|
|
32
|
+
ref: setRef,
|
|
33
|
+
style: {
|
|
34
|
+
overflow: "hidden",
|
|
35
|
+
...stickyStyle
|
|
36
|
+
},
|
|
37
|
+
children: /* @__PURE__ */ jsxs(TableElement, {
|
|
38
|
+
component: components.headerTable,
|
|
39
|
+
style: {
|
|
40
|
+
minWidth: "100%",
|
|
41
|
+
tableLayout,
|
|
42
|
+
width: scrollX === true ? "auto" : scrollX
|
|
43
|
+
},
|
|
44
|
+
children: [colGroup, children]
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { FixedHolder };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=FixedHolder.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedHolder.mjs","names":[],"sources":["../../../src/Table/render/FixedHolder.tsx"],"sourcesContent":["'use client';\n\nimport {\n type CSSProperties,\n type ReactNode,\n type Ref,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport { TableElement } from '../atoms';\nimport { useTableView } from './context';\n\nexport const FixedHolder = ({\n children,\n className,\n colGroup,\n holderRef,\n onWheelX,\n stickyStyle,\n tableLayout,\n scrollX,\n}: {\n children: ReactNode;\n className: string;\n colGroup: ReactNode;\n holderRef: Ref<HTMLDivElement>;\n onWheelX: (target: HTMLDivElement, scrollLeft: number) => void;\n scrollX?: number | string | true;\n stickyStyle?: CSSProperties;\n tableLayout: 'auto' | 'fixed';\n}) => {\n const { components } = useTableView();\n const ref = useRef<HTMLDivElement | null>(null);\n const onWheel = useEventCallback(onWheelX);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const handler = (event: WheelEvent) => {\n if (!event.deltaX) return;\n const max = element.scrollWidth - element.clientWidth;\n const next = Math.min(Math.max(element.scrollLeft + event.deltaX, 0), max);\n onWheel(element, next);\n event.preventDefault();\n };\n element.addEventListener('wheel', handler, { passive: false });\n return () => element.removeEventListener('wheel', handler);\n }, [onWheel]);\n\n const setRef = useCallback(\n (element: HTMLDivElement | null) => {\n ref.current = element;\n if (typeof holderRef === 'function') holderRef(element);\n else if (holderRef) holderRef.current = element;\n },\n [holderRef],\n );\n\n return (\n <div className={className} ref={setRef} style={{ overflow: 'hidden', ...stickyStyle }}>\n <TableElement\n component={components.headerTable}\n style={{ minWidth: '100%', tableLayout, width: scrollX === true ? 'auto' : scrollX }}\n >\n {colGroup}\n {children}\n </TableElement>\n </div>\n );\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,eAAe,EAC1B,UACA,WACA,UACA,WACA,UACA,aACA,aACA,cAUI;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,MAAM,OAA8B,IAAI;CAC9C,MAAM,UAAU,iBAAiB,QAAQ;CAEzC,gBAAgB;EACd,MAAM,UAAU,IAAI;EACpB,IAAI,CAAC,SAAS;EACd,MAAM,WAAW,UAAsB;GACrC,IAAI,CAAC,MAAM,QAAQ;GACnB,MAAM,MAAM,QAAQ,cAAc,QAAQ;GAC1C,MAAM,OAAO,KAAK,IAAI,KAAK,IAAI,QAAQ,aAAa,MAAM,QAAQ,CAAC,GAAG,GAAG;GACzE,QAAQ,SAAS,IAAI;GACrB,MAAM,eAAe;EACvB;EACA,QAAQ,iBAAiB,SAAS,SAAS,EAAE,SAAS,MAAM,CAAC;EAC7D,aAAa,QAAQ,oBAAoB,SAAS,OAAO;CAC3D,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,SAAS,aACZ,YAAmC;EAClC,IAAI,UAAU;EACd,IAAI,OAAO,cAAc,YAAY,UAAU,OAAO;OACjD,IAAI,WAAW,UAAU,UAAU;CAC1C,GACA,CAAC,SAAS,CACZ;CAEA,OACE,oBAAC,OAAD;EAAgB;EAAW,KAAK;EAAQ,OAAO;GAAE,UAAU;GAAU,GAAG;EAAY;EAClF,UAAA,qBAAC,cAAD;GACE,WAAW,WAAW;GACtB,OAAO;IAAE,UAAU;IAAQ;IAAa,OAAO,YAAY,OAAO,SAAS;GAAQ;GAFrF,UAAA,CAIG,UACA,QACW;;CACX,CAAA;AAET"}
|