@canlooks/can-ui 0.0.70 → 0.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/actionSheet/actionSheet.js +9 -4
- package/dist/cjs/components/alert/alert.style.d.ts +2 -2
- package/dist/cjs/components/app/appDialog.js +28 -24
- package/dist/cjs/components/autocomplete/autocomplete.js +21 -27
- package/dist/cjs/components/avatar/avatar.d.ts +2 -2
- package/dist/cjs/components/avatar/avatar.js +6 -5
- package/dist/cjs/components/avatar/avatarGroup.js +1 -1
- package/dist/cjs/components/bubbleConfirm/bubbleConfirm.js +9 -2
- package/dist/cjs/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
- package/dist/cjs/components/cascade/cascade.d.ts +2 -2
- package/dist/cjs/components/cascade/cascade.js +33 -21
- package/dist/cjs/components/cascade/cascadePanel.js +23 -13
- package/dist/cjs/components/checkboxBase/checkboxBase.d.ts +2 -2
- package/dist/cjs/components/checkboxBase/checkboxBase.js +9 -2
- package/dist/cjs/components/checkboxBase/checkboxBase.style.d.ts +1 -1
- package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +2 -2
- package/dist/cjs/components/clickAway/clickAway.d.ts +27 -27
- package/dist/cjs/components/colorPicker/colorPicker.d.ts +2 -2
- package/dist/cjs/components/colorPicker/colorPicker.js +2 -2
- package/dist/cjs/components/counter/counter.js +9 -10
- package/dist/cjs/components/curd/curd.d.ts +10 -12
- package/dist/cjs/components/curd/curd.js +38 -33
- package/dist/cjs/components/curd/curd.style.d.ts +2 -1
- package/dist/cjs/components/curd/curd.style.js +14 -4
- package/dist/cjs/components/curd/curdDialog.js +2 -1
- package/dist/cjs/components/curd/curdFilterable.d.ts +21 -0
- package/dist/cjs/components/curd/{curdFilter.js → curdFilterable.js} +19 -24
- package/dist/cjs/components/curd/index.d.ts +1 -1
- package/dist/cjs/components/curd/index.js +1 -1
- package/dist/cjs/components/dataGrid/columnResize.js +2 -2
- package/dist/cjs/components/dataGrid/dataGrid.d.ts +29 -12
- package/dist/cjs/components/dataGrid/dataGrid.js +46 -20
- package/dist/cjs/components/dataGrid/dataGrid.style.d.ts +5 -3
- package/dist/cjs/components/dataGrid/dataGrid.style.js +38 -33
- package/dist/cjs/components/dataGrid/dataGridHead.d.ts +4 -1
- package/dist/cjs/components/dataGrid/dataGridHead.js +28 -19
- package/dist/cjs/components/dataGrid/dataGridRows.js +1 -1
- package/dist/cjs/components/dataGrid/filterBubbleContent.d.ts +19 -0
- package/dist/cjs/components/dataGrid/filterBubbleContent.js +42 -0
- package/dist/cjs/components/dateTimePicker/dateTimePicker.d.ts +2 -2
- package/dist/cjs/components/dateTimePicker/dateTimePicker.js +27 -9
- package/dist/cjs/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
- package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
- package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.js +45 -23
- package/dist/cjs/components/descriptions/descriptions.js +2 -0
- package/dist/cjs/components/descriptions/descriptions.style.d.ts +1 -1
- package/dist/cjs/components/dialog/dialog.d.ts +1 -1
- package/dist/cjs/components/dialog/dialog.js +2 -2
- package/dist/cjs/components/dialog/dialog.style.d.ts +2 -2
- package/dist/cjs/components/draggable/draggable.d.ts +12 -2
- package/dist/cjs/components/draggable/draggable.js +34 -4
- package/dist/cjs/components/flex/flex.d.ts +7 -4
- package/dist/cjs/components/flex/flex.js +3 -3
- package/dist/cjs/components/form/form.d.ts +10 -5
- package/dist/cjs/components/form/form.js +45 -9
- package/dist/cjs/components/form/formItem.d.ts +12 -7
- package/dist/cjs/components/form/formItem.js +47 -33
- package/dist/cjs/components/form/formRelatable.js +2 -1
- package/dist/cjs/components/gallery/gallery.style.d.ts +1 -1
- package/dist/cjs/components/gallery/imageItem.js +1 -1
- package/dist/cjs/components/grid/grid.d.ts +5 -5
- package/dist/cjs/components/grid/gridItem.d.ts +8 -7
- package/dist/cjs/components/grid/gridItem.js +2 -3
- package/dist/cjs/components/image/image.d.ts +4 -4
- package/dist/cjs/components/input/input.d.ts +2 -2
- package/dist/cjs/components/input/input.js +9 -2
- package/dist/cjs/components/inputBase/inputBase.d.ts +16 -11
- package/dist/cjs/components/inputBase/inputBase.js +23 -12
- package/dist/cjs/components/loading/loading.d.ts +3 -1
- package/dist/cjs/components/loading/loading.js +2 -2
- package/dist/cjs/components/loading/loading.style.js +4 -3
- package/dist/cjs/components/loadingIndicator/loadingIndicator.d.ts +4 -2
- package/dist/cjs/components/loadingIndicator/loadingIndicator.js +2 -2
- package/dist/cjs/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
- package/dist/cjs/components/loadingIndicator/loadingIndicator.style.js +1 -2
- package/dist/cjs/components/loadingMask/loadingMask.js +1 -1
- package/dist/cjs/components/menu/menu.js +1 -1
- package/dist/cjs/components/menuItem/menuItem.d.ts +2 -2
- package/dist/cjs/components/optionsBase/optionsBase.js +1 -0
- package/dist/cjs/components/overlayBase/overlayBase.js +9 -6
- package/dist/cjs/components/overlayBase/overlayBase.style.js +0 -3
- package/dist/cjs/components/palette/palette.style.d.ts +1 -1
- package/dist/cjs/components/pickerDialog/pickerDialog.js +20 -7
- package/dist/cjs/components/pickerDialog/pickerDialog.style.d.ts +1 -1
- package/dist/cjs/components/popper/popper.d.ts +5 -2
- package/dist/cjs/components/popper/popper.js +31 -12
- package/dist/cjs/components/popper/popper.style.js +1 -2
- package/dist/cjs/components/progress/progress.js +1 -1
- package/dist/cjs/components/resizable/resizable.style.d.ts +1 -1
- package/dist/cjs/components/segmented/segmented.style.d.ts +1 -1
- package/dist/cjs/components/select/select.d.ts +2 -2
- package/dist/cjs/components/select/select.js +44 -20
- package/dist/cjs/components/selectedList/selectedItem.d.ts +1 -1
- package/dist/cjs/components/selectedList/selectedItem.js +2 -2
- package/dist/cjs/components/selectionContext/selectionContext.d.ts +0 -1
- package/dist/cjs/components/selectionContext/selectionHook.d.ts +1 -1
- package/dist/cjs/components/selectionContext/selectionHook.js +2 -2
- package/dist/cjs/components/serialInput/index.d.ts +1 -0
- package/dist/cjs/components/serialInput/index.js +4 -0
- package/dist/cjs/components/serialInput/serialInput.d.ts +21 -0
- package/dist/cjs/components/serialInput/serialInput.js +58 -0
- package/dist/cjs/components/serialInput/serialInput.style.d.ts +6 -0
- package/dist/cjs/components/serialInput/serialInput.style.js +13 -0
- package/dist/cjs/components/skeleton/skeleton.d.ts +2 -2
- package/dist/cjs/components/slidableActions/slidableActionsAction.js +15 -6
- package/dist/cjs/components/slider/slider.d.ts +2 -2
- package/dist/cjs/components/slider/slider.js +15 -21
- package/dist/cjs/components/snackbarBase/snackbarBase.style.d.ts +1 -1
- package/dist/cjs/components/snackbarBase/snackbarBase.style.js +1 -3
- package/dist/cjs/components/sortableItem/sortableItem.js +9 -10
- package/dist/cjs/components/switch/switch.d.ts +2 -2
- package/dist/cjs/components/table/table.d.ts +3 -3
- package/dist/cjs/components/table/table.style.d.ts +1 -1
- package/dist/cjs/components/table/tableSticky.d.ts +5 -5
- package/dist/cjs/components/table/tableSticky.js +4 -4
- package/dist/cjs/components/tabs/tabs.style.d.ts +3 -3
- package/dist/cjs/components/tag/tag.d.ts +1 -1
- package/dist/cjs/components/tag/tag.js +2 -1
- package/dist/cjs/components/tag/tag.style.d.ts +1 -1
- package/dist/cjs/components/textarea/textarea.d.ts +2 -2
- package/dist/cjs/components/textarea/textarea.js +5 -1
- package/dist/cjs/components/toggleButton/toggleButton.js +1 -1
- package/dist/cjs/components/transfer/transfer.style.d.ts +2 -2
- package/dist/cjs/components/transitionBase/collapse.js +36 -14
- package/dist/cjs/components/transitionBase/transitionBase.js +1 -1
- package/dist/cjs/components/transitionBase/transitionBase.style.js +1 -1
- package/dist/cjs/components/transportStyle/transportStyle.d.ts +1 -1
- package/dist/cjs/components/transportStyle/transportStyle.js +2 -3
- package/dist/cjs/components/tree/tree.d.ts +17 -4
- package/dist/cjs/components/tree/tree.js +15 -14
- package/dist/cjs/components/tree/tree.style.d.ts +9 -3
- package/dist/cjs/components/tree/tree.style.js +135 -4
- package/dist/cjs/components/tree/treeDnd.d.ts +25 -0
- package/dist/cjs/components/tree/treeDnd.js +23 -0
- package/dist/cjs/components/tree/treeNode.d.ts +2 -2
- package/dist/cjs/components/tree/treeNode.js +94 -16
- package/dist/cjs/components/treeSelect/treeSelect.d.ts +2 -2
- package/dist/cjs/components/treeSelect/treeSelect.js +3 -3
- package/dist/cjs/components/upload/upload.d.ts +2 -2
- package/dist/cjs/components/upload/upload.js +5 -2
- package/dist/cjs/components/upload/upload.style.d.ts +2 -2
- package/dist/cjs/extensions/curd/curd.d.ts +20 -0
- package/dist/cjs/extensions/curd/curd.js +20 -0
- package/dist/cjs/extensions/documentViewer/pdfViewer.d.ts +2 -2
- package/dist/cjs/extensions/reactiveForm/index.d.ts +2 -0
- package/dist/cjs/extensions/reactiveForm/index.js +5 -0
- package/dist/cjs/extensions/reactiveForm/reactiveForm.d.ts +19 -0
- package/dist/cjs/extensions/reactiveForm/reactiveForm.js +29 -0
- package/dist/cjs/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
- package/dist/cjs/extensions/reactiveForm/reactiveFormItem.js +39 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/types.d.ts +2 -2
- package/dist/cjs/utils/curd.js +5 -2
- package/dist/cjs/utils/dataGrid.d.ts +3 -2
- package/dist/cjs/utils/hooks.js +3 -3
- package/dist/cjs/utils/index.d.ts +2 -2
- package/dist/cjs/utils/index.js +2 -2
- package/dist/cjs/utils/utils.d.ts +17 -9
- package/dist/cjs/utils/utils.js +59 -16
- package/dist/esm/components/actionSheet/actionSheet.js +10 -5
- package/dist/esm/components/alert/alert.style.d.ts +2 -2
- package/dist/esm/components/app/appDialog.js +28 -24
- package/dist/esm/components/autocomplete/autocomplete.js +22 -28
- package/dist/esm/components/avatar/avatar.d.ts +2 -2
- package/dist/esm/components/avatar/avatar.js +7 -6
- package/dist/esm/components/avatar/avatarGroup.js +1 -1
- package/dist/esm/components/bubbleConfirm/bubbleConfirm.js +10 -3
- package/dist/esm/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
- package/dist/esm/components/cascade/cascade.d.ts +2 -2
- package/dist/esm/components/cascade/cascade.js +34 -22
- package/dist/esm/components/cascade/cascadePanel.js +24 -14
- package/dist/esm/components/checkboxBase/checkboxBase.d.ts +2 -2
- package/dist/esm/components/checkboxBase/checkboxBase.js +10 -3
- package/dist/esm/components/checkboxBase/checkboxBase.style.d.ts +1 -1
- package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
- package/dist/esm/components/clickAway/clickAway.d.ts +27 -27
- package/dist/esm/components/colorPicker/colorPicker.d.ts +2 -2
- package/dist/esm/components/colorPicker/colorPicker.js +3 -3
- package/dist/esm/components/counter/counter.js +10 -11
- package/dist/esm/components/curd/curd.d.ts +10 -12
- package/dist/esm/components/curd/curd.js +39 -34
- package/dist/esm/components/curd/curd.style.d.ts +2 -1
- package/dist/esm/components/curd/curd.style.js +14 -4
- package/dist/esm/components/curd/curdDialog.js +2 -1
- package/dist/esm/components/curd/curdFilterable.d.ts +21 -0
- package/dist/esm/components/curd/{curdFilter.js → curdFilterable.js} +20 -25
- package/dist/esm/components/curd/index.d.ts +1 -1
- package/dist/esm/components/curd/index.js +1 -1
- package/dist/esm/components/dataGrid/columnResize.js +3 -3
- package/dist/esm/components/dataGrid/dataGrid.d.ts +29 -12
- package/dist/esm/components/dataGrid/dataGrid.js +48 -22
- package/dist/esm/components/dataGrid/dataGrid.style.d.ts +5 -3
- package/dist/esm/components/dataGrid/dataGrid.style.js +38 -33
- package/dist/esm/components/dataGrid/dataGridHead.d.ts +4 -1
- package/dist/esm/components/dataGrid/dataGridHead.js +29 -20
- package/dist/esm/components/dataGrid/dataGridRows.js +1 -1
- package/dist/esm/components/dataGrid/filterBubbleContent.d.ts +19 -0
- package/dist/esm/components/dataGrid/filterBubbleContent.js +39 -0
- package/dist/esm/components/dateTimePicker/dateTimePicker.d.ts +2 -2
- package/dist/esm/components/dateTimePicker/dateTimePicker.js +28 -10
- package/dist/esm/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
- package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
- package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.js +46 -24
- package/dist/esm/components/descriptions/descriptions.js +2 -0
- package/dist/esm/components/descriptions/descriptions.style.d.ts +1 -1
- package/dist/esm/components/dialog/dialog.d.ts +1 -1
- package/dist/esm/components/dialog/dialog.js +2 -2
- package/dist/esm/components/dialog/dialog.style.d.ts +2 -2
- package/dist/esm/components/draggable/draggable.d.ts +12 -2
- package/dist/esm/components/draggable/draggable.js +35 -5
- package/dist/esm/components/flex/flex.d.ts +7 -4
- package/dist/esm/components/flex/flex.js +2 -2
- package/dist/esm/components/form/form.d.ts +10 -5
- package/dist/esm/components/form/form.js +43 -9
- package/dist/esm/components/form/formItem.d.ts +12 -7
- package/dist/esm/components/form/formItem.js +49 -35
- package/dist/esm/components/form/formRelatable.js +3 -2
- package/dist/esm/components/gallery/gallery.style.d.ts +1 -1
- package/dist/esm/components/gallery/imageItem.js +1 -1
- package/dist/esm/components/grid/grid.d.ts +5 -5
- package/dist/esm/components/grid/gridItem.d.ts +8 -7
- package/dist/esm/components/grid/gridItem.js +2 -2
- package/dist/esm/components/image/image.d.ts +4 -4
- package/dist/esm/components/input/input.d.ts +2 -2
- package/dist/esm/components/input/input.js +10 -3
- package/dist/esm/components/inputBase/inputBase.d.ts +16 -11
- package/dist/esm/components/inputBase/inputBase.js +25 -14
- package/dist/esm/components/loading/loading.d.ts +3 -1
- package/dist/esm/components/loading/loading.js +2 -2
- package/dist/esm/components/loading/loading.style.js +4 -3
- package/dist/esm/components/loadingIndicator/loadingIndicator.d.ts +4 -2
- package/dist/esm/components/loadingIndicator/loadingIndicator.js +2 -2
- package/dist/esm/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
- package/dist/esm/components/loadingIndicator/loadingIndicator.style.js +1 -2
- package/dist/esm/components/loadingMask/loadingMask.js +1 -1
- package/dist/esm/components/menu/menu.js +2 -2
- package/dist/esm/components/menuItem/menuItem.d.ts +2 -2
- package/dist/esm/components/optionsBase/optionsBase.js +1 -0
- package/dist/esm/components/overlayBase/overlayBase.js +10 -7
- package/dist/esm/components/overlayBase/overlayBase.style.js +0 -3
- package/dist/esm/components/palette/palette.style.d.ts +1 -1
- package/dist/esm/components/pickerDialog/pickerDialog.js +21 -8
- package/dist/esm/components/pickerDialog/pickerDialog.style.d.ts +1 -1
- package/dist/esm/components/popper/popper.d.ts +5 -2
- package/dist/esm/components/popper/popper.js +31 -12
- package/dist/esm/components/popper/popper.style.js +1 -2
- package/dist/esm/components/progress/progress.js +1 -1
- package/dist/esm/components/resizable/resizable.style.d.ts +1 -1
- package/dist/esm/components/segmented/segmented.style.d.ts +1 -1
- package/dist/esm/components/select/select.d.ts +2 -2
- package/dist/esm/components/select/select.js +46 -22
- package/dist/esm/components/selectedList/selectedItem.d.ts +1 -1
- package/dist/esm/components/selectedList/selectedItem.js +2 -2
- package/dist/esm/components/selectionContext/selectionContext.d.ts +0 -1
- package/dist/esm/components/selectionContext/selectionHook.d.ts +1 -1
- package/dist/esm/components/selectionContext/selectionHook.js +1 -1
- package/dist/esm/components/serialInput/index.d.ts +1 -0
- package/dist/esm/components/serialInput/index.js +1 -0
- package/dist/esm/components/serialInput/serialInput.d.ts +21 -0
- package/dist/esm/components/serialInput/serialInput.js +55 -0
- package/dist/esm/components/serialInput/serialInput.style.d.ts +6 -0
- package/dist/esm/components/serialInput/serialInput.style.js +10 -0
- package/dist/esm/components/skeleton/skeleton.d.ts +2 -2
- package/dist/esm/components/slidableActions/slidableActionsAction.js +16 -7
- package/dist/esm/components/slider/slider.d.ts +2 -2
- package/dist/esm/components/slider/slider.js +16 -22
- package/dist/esm/components/snackbarBase/snackbarBase.style.d.ts +1 -1
- package/dist/esm/components/snackbarBase/snackbarBase.style.js +1 -3
- package/dist/esm/components/sortableItem/sortableItem.js +10 -11
- package/dist/esm/components/switch/switch.d.ts +2 -2
- package/dist/esm/components/table/table.d.ts +3 -3
- package/dist/esm/components/table/table.style.d.ts +1 -1
- package/dist/esm/components/table/tableSticky.d.ts +5 -5
- package/dist/esm/components/table/tableSticky.js +3 -3
- package/dist/esm/components/tabs/tabs.style.d.ts +3 -3
- package/dist/esm/components/tag/tag.d.ts +1 -1
- package/dist/esm/components/tag/tag.js +2 -1
- package/dist/esm/components/tag/tag.style.d.ts +1 -1
- package/dist/esm/components/textarea/textarea.d.ts +2 -2
- package/dist/esm/components/textarea/textarea.js +6 -2
- package/dist/esm/components/toggleButton/toggleButton.js +2 -2
- package/dist/esm/components/transfer/transfer.style.d.ts +2 -2
- package/dist/esm/components/transitionBase/collapse.js +38 -16
- package/dist/esm/components/transitionBase/transitionBase.js +1 -1
- package/dist/esm/components/transitionBase/transitionBase.style.js +1 -1
- package/dist/esm/components/transportStyle/transportStyle.d.ts +1 -1
- package/dist/esm/components/transportStyle/transportStyle.js +2 -2
- package/dist/esm/components/tree/tree.d.ts +17 -4
- package/dist/esm/components/tree/tree.js +17 -16
- package/dist/esm/components/tree/tree.style.d.ts +9 -3
- package/dist/esm/components/tree/tree.style.js +135 -4
- package/dist/esm/components/tree/treeDnd.d.ts +25 -0
- package/dist/esm/components/tree/treeDnd.js +19 -0
- package/dist/esm/components/tree/treeNode.d.ts +2 -2
- package/dist/esm/components/tree/treeNode.js +96 -18
- package/dist/esm/components/treeSelect/treeSelect.d.ts +2 -2
- package/dist/esm/components/treeSelect/treeSelect.js +4 -4
- package/dist/esm/components/upload/upload.d.ts +2 -2
- package/dist/esm/components/upload/upload.js +6 -3
- package/dist/esm/components/upload/upload.style.d.ts +2 -2
- package/dist/esm/extensions/curd/curd.d.ts +20 -0
- package/dist/esm/extensions/curd/curd.js +20 -0
- package/dist/esm/extensions/documentViewer/pdfViewer.d.ts +2 -2
- package/dist/esm/extensions/reactiveForm/index.d.ts +2 -0
- package/dist/esm/extensions/reactiveForm/index.js +2 -0
- package/dist/esm/extensions/reactiveForm/reactiveForm.d.ts +19 -0
- package/dist/esm/extensions/reactiveForm/reactiveForm.js +25 -0
- package/dist/esm/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
- package/dist/esm/extensions/reactiveForm/reactiveFormItem.js +36 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/types.d.ts +2 -2
- package/dist/esm/utils/curd.js +5 -2
- package/dist/esm/utils/dataGrid.d.ts +3 -2
- package/dist/esm/utils/hooks.js +3 -3
- package/dist/esm/utils/index.d.ts +2 -2
- package/dist/esm/utils/index.js +2 -2
- package/dist/esm/utils/utils.d.ts +17 -9
- package/dist/esm/utils/utils.js +58 -16
- package/extensions/reactiveForm.cjs +5 -0
- package/extensions/reactiveForm.d.ts +1 -0
- package/extensions/reactiveForm.js +1 -0
- package/package.json +2 -1
- package/dist/cjs/components/curd/curdFilter.d.ts +0 -16
- package/dist/esm/components/curd/curdFilter.d.ts +0 -16
- package/documentation/bootstrap.mjs +0 -8
- package/documentation/vite.config.mjs +0 -18
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { createElement as _createElement } from "@emotion/react";
|
|
3
3
|
import { memo, useEffect, useMemo, useRef } from 'react';
|
|
4
|
-
import { clsx,
|
|
4
|
+
import { clsx, isUnset, useControlled, useDraggable, mergeComponentProps } from '../../utils';
|
|
5
5
|
import { classes, useStyle } from './slider.style';
|
|
6
6
|
import { Tooltip } from '../tooltip';
|
|
7
7
|
import { useTheme } from '../theme';
|
|
@@ -160,13 +160,12 @@ export const Slider = memo(({ color = 'primary', orientation = 'horizontal', var
|
|
|
160
160
|
const valueIsArray = Array.isArray(innerValue.current);
|
|
161
161
|
const renderHandleFn = () => {
|
|
162
162
|
const fn = (value, index = 0) => {
|
|
163
|
-
const _handleProps = {
|
|
163
|
+
const _handleProps = mergeComponentProps(handleProps, {
|
|
164
164
|
key: index,
|
|
165
|
-
|
|
166
|
-
ref: cloneRef(r => {
|
|
165
|
+
ref: r => {
|
|
167
166
|
handleRefs.current[index] = r;
|
|
168
|
-
},
|
|
169
|
-
className:
|
|
167
|
+
},
|
|
168
|
+
className: classes.handle,
|
|
170
169
|
style: {
|
|
171
170
|
width: handleSize,
|
|
172
171
|
height: handleSize,
|
|
@@ -178,25 +177,23 @@ export const Slider = memo(({ color = 'primary', orientation = 'horizontal', var
|
|
|
178
177
|
: {
|
|
179
178
|
bottom: valueToPercent(value) + '%',
|
|
180
179
|
left: '50%'
|
|
181
|
-
}
|
|
182
|
-
...handleProps?.style
|
|
180
|
+
}
|
|
183
181
|
},
|
|
184
182
|
onPointerDown(e) {
|
|
185
183
|
e.stopPropagation();
|
|
186
|
-
handleProps?.onPointerDown?.(e);
|
|
187
184
|
draggableHandles.onPointerDown(e);
|
|
188
185
|
}
|
|
189
|
-
};
|
|
186
|
+
});
|
|
190
187
|
return renderHandle
|
|
191
188
|
? renderHandle(value, _handleProps)
|
|
192
|
-
: _createElement(Tooltip, { popperRef: r => {
|
|
189
|
+
: _createElement(Tooltip, { title: valueIsArray ? innerValue.current[index] : innerValue.current, trigger: ['hover', 'focus'], placement: orientation === 'horizontal' ? 'top' : 'left', ...tooltipProps, key: index, popperRef: r => {
|
|
193
190
|
if (r) {
|
|
194
191
|
tooltipRefs.current[index] = r;
|
|
195
192
|
}
|
|
196
193
|
else {
|
|
197
194
|
delete tooltipRefs.current[index];
|
|
198
195
|
}
|
|
199
|
-
}
|
|
196
|
+
} },
|
|
200
197
|
_createElement("button", { ..._handleProps, key: index }));
|
|
201
198
|
};
|
|
202
199
|
return valueIsArray
|
|
@@ -208,10 +205,9 @@ export const Slider = memo(({ color = 'primary', orientation = 'horizontal', var
|
|
|
208
205
|
* 渲染轨道
|
|
209
206
|
*/
|
|
210
207
|
const renderRailFn = () => {
|
|
211
|
-
const _railProps = {
|
|
212
|
-
...railProps,
|
|
208
|
+
const _railProps = mergeComponentProps(railProps, {
|
|
213
209
|
ref: railRef,
|
|
214
|
-
className:
|
|
210
|
+
className: classes.rail,
|
|
215
211
|
style: {
|
|
216
212
|
...orientation === 'horizontal'
|
|
217
213
|
? {
|
|
@@ -222,12 +218,8 @@ export const Slider = memo(({ color = 'primary', orientation = 'horizontal', var
|
|
|
222
218
|
width: railSize,
|
|
223
219
|
[inset ? 'padding' : 'margin']: `${handleSize / 2}px 0`
|
|
224
220
|
},
|
|
225
|
-
...railProps?.style
|
|
226
|
-
},
|
|
227
|
-
onPointerDown: e => {
|
|
228
|
-
railProps?.onPointerDown?.(e);
|
|
229
|
-
draggableHandles.onPointerDown(e);
|
|
230
221
|
},
|
|
222
|
+
onPointerDown: draggableHandles.onPointerDown,
|
|
231
223
|
children: (_jsxs("div", { className: classes.railWrap, children: [!disableTrack &&
|
|
232
224
|
_jsx("div", { className: classes.track, style: valueIsArray
|
|
233
225
|
? (orientation === 'horizontal'
|
|
@@ -281,8 +273,10 @@ export const Slider = memo(({ color = 'primary', orientation = 'horizontal', var
|
|
|
281
273
|
transform: 'translateY(-50%)'
|
|
282
274
|
}
|
|
283
275
|
}, children: label }))), renderHandleFn()] }))
|
|
284
|
-
};
|
|
285
|
-
return renderRail
|
|
276
|
+
});
|
|
277
|
+
return renderRail
|
|
278
|
+
? renderRail(innerValue.current, _railProps)
|
|
279
|
+
: _jsx("div", { ..._railProps });
|
|
286
280
|
};
|
|
287
281
|
/**
|
|
288
282
|
* -----------------------------------------------------------------
|
|
@@ -13,12 +13,10 @@ export const classes = defineInnerClasses('snackbar-base', [
|
|
|
13
13
|
'content'
|
|
14
14
|
]);
|
|
15
15
|
export const style = defineCss(theme => {
|
|
16
|
-
const {
|
|
16
|
+
const { spacing, background, borderRadius } = theme;
|
|
17
17
|
return [
|
|
18
18
|
appStyleCallback(theme),
|
|
19
19
|
css `
|
|
20
|
-
color: ${text.primary};
|
|
21
|
-
font-size: ${fontSize}px;
|
|
22
20
|
width: 100%;
|
|
23
21
|
height: auto;
|
|
24
22
|
display: flex;
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useEffect, useRef } from 'react';
|
|
3
3
|
import { useSortable } from '@dnd-kit/sortable';
|
|
4
4
|
import { CSS } from '@dnd-kit/utilities';
|
|
5
|
-
import { cloneRef } from '../../utils';
|
|
5
|
+
import { cloneRef, useSync } from '../../utils';
|
|
6
6
|
export const SortableItem = (({ component: Component = 'div', id, disabled, sortableArguments, ...props }) => {
|
|
7
7
|
const { attributes, isDragging, listeners, setNodeRef, transform, transition } = useSortable({
|
|
8
8
|
...sortableArguments,
|
|
@@ -10,16 +10,6 @@ export const SortableItem = (({ component: Component = 'div', id, disabled, sort
|
|
|
10
10
|
id
|
|
11
11
|
});
|
|
12
12
|
const preventDefaultCallback = useRef(void 0);
|
|
13
|
-
const onPointerUp = useCallback(() => {
|
|
14
|
-
removeListener();
|
|
15
|
-
}, []);
|
|
16
|
-
const onTouchStart = useCallback((e) => {
|
|
17
|
-
props.onTouchStart?.(e);
|
|
18
|
-
addEventListener('touchmove', preventDefaultCallback.current = e => {
|
|
19
|
-
e.cancelable && e.preventDefault();
|
|
20
|
-
}, { passive: false });
|
|
21
|
-
addEventListener('pointerup', onPointerUp);
|
|
22
|
-
}, []);
|
|
23
13
|
const removeListener = () => {
|
|
24
14
|
if (preventDefaultCallback.current) {
|
|
25
15
|
removeEventListener('touchmove', preventDefaultCallback.current);
|
|
@@ -27,6 +17,15 @@ export const SortableItem = (({ component: Component = 'div', id, disabled, sort
|
|
|
27
17
|
}
|
|
28
18
|
removeEventListener('pointerup', onPointerUp);
|
|
29
19
|
};
|
|
20
|
+
const onPointerUp = useCallback(removeListener, []);
|
|
21
|
+
const syncOnTouchStart = useSync(props.onTouchStart);
|
|
22
|
+
const onTouchStart = useCallback((e) => {
|
|
23
|
+
syncOnTouchStart.current?.(e);
|
|
24
|
+
addEventListener('touchmove', preventDefaultCallback.current = e => {
|
|
25
|
+
e.cancelable && e.preventDefault();
|
|
26
|
+
}, { passive: false });
|
|
27
|
+
addEventListener('pointerup', onPointerUp);
|
|
28
|
+
}, []);
|
|
30
29
|
useEffect(() => removeListener, []);
|
|
31
30
|
return (_jsx(Component, { ...attributes, ...listeners, ...props, ref: cloneRef(setNodeRef, props.ref), style: {
|
|
32
31
|
transform: CSS.Transform.toString(transform),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React, { ReactNode,
|
|
1
|
+
import React, { ReactNode, ComponentProps } from 'react';
|
|
2
2
|
import { ColorPropsValue, DivProps, Size } from '../../types';
|
|
3
3
|
export interface SwitchProps extends Omit<DivProps, 'onChange'> {
|
|
4
4
|
/** <Switch />内部使用<input />实现 */
|
|
5
|
-
inputProps?:
|
|
5
|
+
inputProps?: ComponentProps<'input'>;
|
|
6
6
|
color?: ColorPropsValue;
|
|
7
7
|
size?: Size;
|
|
8
8
|
/** 滑块 */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
2
|
import { Size } from '../../types';
|
|
3
3
|
import { TdCell, ThCell } from './tableSticky';
|
|
4
|
-
export interface TableProps extends Partial<
|
|
4
|
+
export interface TableProps extends Partial<ComponentProps<'table'>> {
|
|
5
5
|
size?: Size;
|
|
6
6
|
/**
|
|
7
7
|
* 是否渲染边框,默认为`none`
|
|
@@ -20,7 +20,7 @@ export declare namespace Table {
|
|
|
20
20
|
var th: typeof ThCell;
|
|
21
21
|
var td: typeof TdCell;
|
|
22
22
|
}
|
|
23
|
-
export interface TableRowProps extends Partial<
|
|
23
|
+
export interface TableRowProps extends Partial<ComponentProps<'tr'>> {
|
|
24
24
|
selected?: boolean;
|
|
25
25
|
}
|
|
26
26
|
export declare function TableRow({ selected, ...props }: TableRowProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { OverridableComponent } from '../../types';
|
|
3
|
+
export declare const TableContainer: OverridableComponent<{}>;
|
|
4
4
|
type CellProps = {
|
|
5
5
|
sticky?: 'left' | 'right';
|
|
6
6
|
};
|
|
7
|
-
export interface TdCellProps extends Partial<
|
|
7
|
+
export interface TdCellProps extends Partial<ComponentProps<'td'>>, CellProps {
|
|
8
8
|
}
|
|
9
|
-
export interface ThCellProps extends Partial<
|
|
9
|
+
export interface ThCellProps extends Partial<ComponentProps<'th'>>, CellProps {
|
|
10
10
|
}
|
|
11
11
|
export declare function TdCell(props: TdCellProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
12
12
|
export declare function ThCell(props: ThCellProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -3,7 +3,7 @@ import { useEffect, useRef, useState } from 'react';
|
|
|
3
3
|
import { clsx, cloneRef } from '../../utils';
|
|
4
4
|
import { classes } from './table.style';
|
|
5
5
|
import { style } from './tableSticky.style';
|
|
6
|
-
export
|
|
6
|
+
export const TableContainer = (({ component: Component = 'div', ...props }) => {
|
|
7
7
|
const [scrolledLeft, setScrolledLeft] = useState(false);
|
|
8
8
|
const [scrolledRight, setScrolledRight] = useState(false);
|
|
9
9
|
const innerRef = useRef(null);
|
|
@@ -19,8 +19,8 @@ export function TableContainer(props) {
|
|
|
19
19
|
el.removeEventListener('scroll', scroll);
|
|
20
20
|
};
|
|
21
21
|
}, []);
|
|
22
|
-
return (_jsx(
|
|
23
|
-
}
|
|
22
|
+
return (_jsx(Component, { ...props, ref: cloneRef(props.ref, innerRef), css: style, className: clsx(classes.container, props.className), "data-scrolled-left": scrolledLeft, "data-scrolled-right": scrolledRight }));
|
|
23
|
+
});
|
|
24
24
|
export function TdCell(props) {
|
|
25
25
|
return _jsx("td", { ...useStickyCellProps(props) });
|
|
26
26
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { TabsProps } from './tabs';
|
|
2
2
|
export declare const classes: {
|
|
3
3
|
label: string;
|
|
4
|
-
|
|
4
|
+
scroll: string;
|
|
5
5
|
prefix: string;
|
|
6
6
|
end: string;
|
|
7
|
-
start: string;
|
|
8
|
-
scroll: string;
|
|
9
7
|
ellipsis: string;
|
|
8
|
+
start: string;
|
|
10
9
|
tab: string;
|
|
10
|
+
indicator: string;
|
|
11
11
|
suffix: string;
|
|
12
12
|
scrollWrap: string;
|
|
13
13
|
tabPrefix: string;
|
|
@@ -9,6 +9,6 @@ export interface TagProps extends Omit<DivProps, 'prefix'> {
|
|
|
9
9
|
suffix?: ReactNode;
|
|
10
10
|
clickable?: boolean;
|
|
11
11
|
closable?: boolean;
|
|
12
|
-
onClose?: React.MouseEventHandler<
|
|
12
|
+
onClose?: React.MouseEventHandler<HTMLButtonElement>;
|
|
13
13
|
}
|
|
14
14
|
export declare const Tag: React.MemoExoticComponent<({ variant, color, shape, size, prefix, suffix, clickable, closable, onClose, ...props }: TagProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
@@ -4,6 +4,7 @@ import { classes, useStyle } from './tag.style';
|
|
|
4
4
|
import { clsx } from '../../utils';
|
|
5
5
|
import { Icon } from '../icon';
|
|
6
6
|
import { faXmark } from '@fortawesome/free-solid-svg-icons/faXmark';
|
|
7
|
+
import { Button } from '../button';
|
|
7
8
|
export const Tag = memo(({ variant = 'outlined', color = 'text.secondary', shape = 'square', size = 'small', prefix, suffix, clickable, closable, onClose, ...props }) => {
|
|
8
9
|
const closeHandler = (e) => {
|
|
9
10
|
e.preventDefault();
|
|
@@ -13,5 +14,5 @@ export const Tag = memo(({ variant = 'outlined', color = 'text.secondary', shape
|
|
|
13
14
|
return (_jsxs("div", { ...props, css: useStyle({ color: color || 'text.secondary' }), className: clsx(classes.root, props.className), "data-variant": variant, "data-size": size, "data-shape": shape, "data-clickable": clickable, children: [!!prefix &&
|
|
14
15
|
_jsx("div", { className: classes.prefix, children: prefix }), _jsx("div", { className: classes.content, children: props.children }), !!suffix &&
|
|
15
16
|
_jsx("div", { className: classes.suffix, children: suffix }), closable &&
|
|
16
|
-
_jsx("
|
|
17
|
+
_jsx(Button, { variant: "plain", className: classes.close, onClick: closeHandler, children: _jsx(Icon, { icon: faXmark }) })] }));
|
|
17
18
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Ref,
|
|
1
|
+
import { Ref, ComponentProps } from 'react';
|
|
2
2
|
import { InputBaseProps } from '../inputBase';
|
|
3
3
|
export interface TextareaProps extends Omit<InputBaseProps<'textarea'>, 'children' | 'prefix' | 'suffix'> {
|
|
4
|
-
textareaProps?:
|
|
4
|
+
textareaProps?: ComponentProps<'textarea'>;
|
|
5
5
|
textareaRef?: Ref<HTMLTextAreaElement>;
|
|
6
6
|
rows?: number;
|
|
7
7
|
fullWidth?: boolean;
|
|
@@ -2,7 +2,11 @@ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import { memo } from 'react';
|
|
3
3
|
import { InputBase } from '../inputBase';
|
|
4
4
|
import { classes, style } from './textarea.style';
|
|
5
|
-
import { clsx,
|
|
5
|
+
import { clsx, mergeComponentProps } from '../../utils';
|
|
6
6
|
export const Textarea = memo(({ textareaProps, textareaRef, rows, fullWidth = false, ...props }) => {
|
|
7
|
-
return (_jsx(InputBase, { ...props, css: style, className: clsx(classes.root, props.className), "data-full-width": fullWidth, children:
|
|
7
|
+
return (_jsx(InputBase, { ...props, css: style, className: clsx(classes.root, props.className), "data-full-width": fullWidth, children: inputBaseProps => _jsx("textarea", { ...mergeComponentProps(inputBaseProps, {
|
|
8
|
+
rows,
|
|
9
|
+
ref: textareaRef,
|
|
10
|
+
className: classes.textarea
|
|
11
|
+
}) }) }));
|
|
8
12
|
});
|
|
@@ -5,9 +5,9 @@ import { Flex } from '../flex';
|
|
|
5
5
|
import { clsx, isSelected } from '../../utils';
|
|
6
6
|
import { classes, style } from './toggleButton.style';
|
|
7
7
|
import { Button } from '../button';
|
|
8
|
-
import {
|
|
8
|
+
import { useFlatSelection } from '../selectionContext';
|
|
9
9
|
export const ToggleButton = (({ variant = 'filled', size, color = 'primary', disabled, readOnly, items, primaryKey = 'value', multiple, defaultValue, value, onChange, ...props }) => {
|
|
10
|
-
const [innerValue, toggleSelected] =
|
|
10
|
+
const [innerValue, toggleSelected] = useFlatSelection({
|
|
11
11
|
disabled: disabled ?? readOnly,
|
|
12
12
|
multiple,
|
|
13
13
|
defaultValue,
|
|
@@ -1,29 +1,51 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { TransitionBase } from './transitionBase';
|
|
4
|
-
import { cloneRef
|
|
4
|
+
import { cloneRef } from '../../utils';
|
|
5
5
|
export const Collapse = ({ transitionType = 'sweeping', ...props }) => {
|
|
6
6
|
const Component = transitionType === 'sweeping' ? Sweeping : TransitionBase;
|
|
7
7
|
return (_jsx(Component, { ...props, _mode: transitionType === 'sweeping' ? '_sweeping' : 'collapse' }));
|
|
8
8
|
};
|
|
9
9
|
const Sweeping = ({ ref, in: _in = false, appear = true, orientation = 'vertical', collapsedSize = 0, ...props }) => {
|
|
10
10
|
const innerRef = useRef(null);
|
|
11
|
-
const
|
|
12
|
-
return typeof
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
const getCollapsedSize = () => {
|
|
12
|
+
return typeof collapsedSize === 'function' ? collapsedSize() : collapsedSize;
|
|
13
|
+
};
|
|
14
|
+
const [size, setSize] = useState(() => {
|
|
15
|
+
if (_in && !appear) {
|
|
16
|
+
return 'auto';
|
|
17
|
+
}
|
|
18
|
+
return getCollapsedSize();
|
|
19
|
+
});
|
|
20
|
+
const [isEntered, setIsEntered] = useState(_in && !appear);
|
|
21
|
+
const expand = () => {
|
|
22
|
+
requestAnimationFrame(() => {
|
|
23
|
+
innerRef.current && setSize(innerRef.current[orientation === 'vertical' ? 'scrollHeight' : 'scrollWidth']);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const collapse = () => {
|
|
27
|
+
setIsEntered(false);
|
|
28
|
+
requestAnimationFrame(() => {
|
|
29
|
+
setSize(getCollapsedSize());
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const initialized = useRef(false);
|
|
18
33
|
useEffect(() => {
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
if (!initialized.current) {
|
|
35
|
+
// 首次渲染
|
|
36
|
+
initialized.current = true;
|
|
37
|
+
if (!appear) {
|
|
38
|
+
// 若appear为false,则跳过首次动画
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
23
41
|
}
|
|
42
|
+
_in
|
|
43
|
+
? expand()
|
|
44
|
+
: collapse();
|
|
24
45
|
}, [_in]);
|
|
25
|
-
return (_jsx(TransitionBase, { ...props, in: _in, ref: cloneRef(ref, innerRef), style: {
|
|
26
|
-
[orientation === 'vertical' ? 'height' : 'width']: size
|
|
46
|
+
return (_jsx(TransitionBase, { ...props, appear: appear, orientation: orientation, in: _in, ref: cloneRef(ref, innerRef), style: {
|
|
47
|
+
[orientation === 'vertical' ? 'height' : 'width']: isEntered ? 'auto' : size,
|
|
48
|
+
...!isEntered ? { overflow: 'hidden' } : {},
|
|
27
49
|
...props.style
|
|
28
|
-
} }));
|
|
50
|
+
}, onEntered: () => setIsEntered(true) }));
|
|
29
51
|
};
|
|
@@ -22,5 +22,5 @@ export const TransitionBase = (({ ref, component: Component = 'div', orientation
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
const innerRef = useRef(null);
|
|
25
|
-
return (_jsx(CSSTransition, { ...props, nodeRef: innerRef, className: clsx(classes.root, props.className), timeout: timeout, appear: appear, children: _jsx(Component, { ref: cloneRef(ref, innerRef),
|
|
25
|
+
return (_jsx(CSSTransition, { ...props, css: cssArr, nodeRef: innerRef, className: clsx(classes.root, props.className), timeout: timeout, appear: appear, children: _jsx(Component, { ref: cloneRef(ref, innerRef), children: props.children }) }));
|
|
26
26
|
});
|
|
@@ -31,4 +31,4 @@ export type TransportStyleOwnProps = {
|
|
|
31
31
|
overflow?: CSSProperties['overflow'];
|
|
32
32
|
};
|
|
33
33
|
export type TransportStyleProps<C extends ElementType = 'div'> = OverridableProps<TransportStyleOwnProps, C>;
|
|
34
|
-
export declare const TransportStyle: OverridableComponent<
|
|
34
|
+
export declare const TransportStyle: OverridableComponent<TransportStyleOwnProps>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { filterProperties } from '../../utils';
|
|
3
|
-
export const TransportStyle = ({ component: Component = 'div', alignItems, justifyContent, alignSelf, justifySelf, flex, width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight, paddingTop, paddingRight, paddingBottom, paddingLeft, padding, marginTop, marginRight, marginBottom, marginLeft, margin, overflowX, overflowY, overflow, ...props }) => {
|
|
3
|
+
export const TransportStyle = (({ component: Component = 'div', alignItems, justifyContent, alignSelf, justifySelf, flex, width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight, paddingTop, paddingRight, paddingBottom, paddingLeft, padding, marginTop, marginRight, marginBottom, marginLeft, margin, overflowX, overflowY, overflow, ...props }) => {
|
|
4
4
|
return (_jsx(Component, { ...props, style: filterProperties({
|
|
5
5
|
alignItems, justifyContent, alignSelf, justifySelf, flex,
|
|
6
6
|
width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight,
|
|
@@ -9,4 +9,4 @@ export const TransportStyle = ({ component: Component = 'div', alignItems, justi
|
|
|
9
9
|
overflow, overflowX, overflowY,
|
|
10
10
|
...props.style
|
|
11
11
|
}) }));
|
|
12
|
-
};
|
|
12
|
+
});
|
|
@@ -6,13 +6,21 @@ import { TreeNode, TreeNodeProps } from './treeNode';
|
|
|
6
6
|
export interface NodeType<V extends Id = Id> extends Partial<Omit<TreeNodeProps, 'children'>>, Omit<OptionType<V>, 'children'> {
|
|
7
7
|
children?: NodeType<V>[];
|
|
8
8
|
}
|
|
9
|
+
export type SortPlacement = 'before' | 'after';
|
|
10
|
+
export type SortInfo<V extends Id = Id> = {
|
|
11
|
+
source: V;
|
|
12
|
+
destination: V;
|
|
13
|
+
placement: SortPlacement | 'child';
|
|
14
|
+
};
|
|
9
15
|
export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends Omit<SelectionContextBaseProps<N, V>, 'options'>, Omit<DivProps, 'defaultValue' | 'onChange' | 'onToggle'> {
|
|
10
16
|
nodes?: N[];
|
|
17
|
+
/** 默认为`label` */
|
|
11
18
|
labelKey?: keyof N;
|
|
12
19
|
searchTokenKey?: keyof N;
|
|
13
20
|
showLine?: boolean;
|
|
14
21
|
indent?: number;
|
|
15
22
|
renderExpandIcon?(nodeValue: V, isExpand: boolean, expanded: V[]): ReactNode;
|
|
23
|
+
/** 是否显示`checkbox`选择框,`multiple`为`true`时,默认为`true`,否则默认为`false` */
|
|
16
24
|
showCheckbox?: boolean;
|
|
17
25
|
readOnly?: boolean;
|
|
18
26
|
/** 为true时,点击标签也会展开节点,默认为`false`, 仅点击展开按钮才能展开节点 */
|
|
@@ -20,6 +28,11 @@ export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends
|
|
|
20
28
|
defaultExpanded?: V[];
|
|
21
29
|
expanded?: V[];
|
|
22
30
|
onExpandedChange?(expanded: V[], nodeValue: V, isExpand: boolean): void;
|
|
31
|
+
/** 是否可以拖拽排序,默认为`false` */
|
|
32
|
+
sortable?: boolean;
|
|
33
|
+
/** 是否显示拖拽把手,默认为`true` */
|
|
34
|
+
showDragHandle?: boolean;
|
|
35
|
+
onSort?(info: SortInfo<V>): void;
|
|
23
36
|
searchable?: boolean;
|
|
24
37
|
searchInputProps?: InputProps;
|
|
25
38
|
defaultSearchValue?: string;
|
|
@@ -28,11 +41,11 @@ export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends
|
|
|
28
41
|
}
|
|
29
42
|
export type TreeProps<N extends NodeType<V>, V extends Id = Id> = TreeBaseProps<N, V> & SelectableProps<V>;
|
|
30
43
|
type TreeContext<V extends Id = Id> = {
|
|
31
|
-
expandedSet
|
|
32
|
-
toggleExpanded
|
|
33
|
-
indent
|
|
44
|
+
expandedSet: Set<V>;
|
|
45
|
+
toggleExpanded(value: V): void;
|
|
46
|
+
indent: number;
|
|
34
47
|
renderExpandIcon?: TreeBaseProps<any, V>['renderExpandIcon'];
|
|
35
|
-
showCheckbox
|
|
48
|
+
showCheckbox: boolean;
|
|
36
49
|
readOnly?: boolean;
|
|
37
50
|
disabled?: boolean;
|
|
38
51
|
clickLabelToExpand?: boolean;
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { createElement as _createElement } from "@emotion/react";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
3
|
-
import { Children, createContext, isValidElement, memo, useContext, useMemo } from 'react';
|
|
3
|
+
import { Children, createContext, isValidElement, memo, useContext, useMemo, useRef } from 'react';
|
|
4
4
|
import { SelectionContext } from '../selectionContext';
|
|
5
5
|
import { Input } from '../input';
|
|
6
6
|
import { classes, style } from './tree.style';
|
|
7
|
-
import { clsx, useTreeSearch } from '../../utils';
|
|
7
|
+
import { cloneRef, clsx, useTreeSearch } from '../../utils';
|
|
8
8
|
import { Highlight } from '../highlight';
|
|
9
|
-
import { Placeholder } from '../placeholder';
|
|
10
9
|
import { TreeNode } from './treeNode';
|
|
11
10
|
import { Icon } from '../icon';
|
|
12
11
|
import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlass';
|
|
12
|
+
import { TreeDnd } from './treeDnd';
|
|
13
13
|
const TreeContext = createContext({});
|
|
14
14
|
export function useTreeContext() {
|
|
15
15
|
return useContext(TreeContext);
|
|
16
16
|
}
|
|
17
|
-
export const Tree = memo(({ nodes, labelKey = 'label', searchTokenKey, showLine = true, indent = 24, renderExpandIcon, multiple, showCheckbox = !!multiple, readOnly, clickLabelToExpand, defaultExpanded, expanded, onExpandedChange, searchable, searchInputProps, defaultSearchValue, searchValue, onSearchChange,
|
|
17
|
+
export const Tree = memo(({ nodes, labelKey = 'label', searchTokenKey, showLine = true, indent = 24, renderExpandIcon, multiple, showCheckbox = !!multiple, readOnly, clickLabelToExpand, defaultExpanded, expanded, onExpandedChange, sortable = false, showDragHandle = true, onSort, searchable, searchInputProps, defaultSearchValue, searchValue, onSearchChange,
|
|
18
18
|
// 从SelectionContext继承来的属性
|
|
19
|
-
primaryKey = '
|
|
19
|
+
primaryKey = 'id', childrenKey = 'children', relation = 'dependent', integration = 'shallowest', clearable, disabled, defaultValue, value, onChange, onToggle, ...props }) => {
|
|
20
20
|
const selectionContextProps = {
|
|
21
21
|
options: nodes, primaryKey, childrenKey, relation, integration,
|
|
22
22
|
multiple, defaultValue, value, onChange, disabled
|
|
23
23
|
};
|
|
24
|
+
const containerRef = useRef(null);
|
|
24
25
|
/**
|
|
25
26
|
* --------------------------------------------------------------
|
|
26
27
|
* 统一处理nodes与children
|
|
@@ -52,20 +53,22 @@ primaryKey = 'value', childrenKey = 'children', relation = 'dependent', integrat
|
|
|
52
53
|
defaultExpanded, expanded, onExpandedChange,
|
|
53
54
|
defaultSearchValue, searchValue, onSearchChange
|
|
54
55
|
});
|
|
55
|
-
return (_jsxs("div", { ...props, css: style, className: clsx(classes.root, props.className), "data-show-line": showLine, children: [searchable &&
|
|
56
|
+
return (_jsxs("div", { ...props, ref: cloneRef(containerRef, props.ref), css: style, className: clsx(classes.root, classes.levelBlock, props.className), "data-show-line": showLine, "data-sortable": sortable, children: [searchable &&
|
|
56
57
|
_jsx(Input, { className: classes.search, prefix: _jsx(Icon, { icon: faMagnifyingGlass }), placeholder: "\u641C\u7D22", value: innerSearchValue.current, ...searchInputProps, onChange: e => {
|
|
57
58
|
searchInputProps?.onChange?.(e);
|
|
58
59
|
setInnerSearchValue(e.target.value);
|
|
59
60
|
} }), _jsx(SelectionContext, { ...selectionContextProps, children: _jsx(TreeContext, { value: useMemo(() => ({
|
|
60
|
-
expandedSet, toggleExpanded, indent, renderExpandIcon,
|
|
61
|
-
showCheckbox, readOnly, disabled
|
|
61
|
+
expandedSet, toggleExpanded, indent, renderExpandIcon, clickLabelToExpand,
|
|
62
|
+
showCheckbox, readOnly, disabled
|
|
62
63
|
}), [
|
|
63
|
-
expandedSet, indent, renderExpandIcon,
|
|
64
|
-
showCheckbox, readOnly, disabled
|
|
65
|
-
]), children: useMemo(() => {
|
|
66
|
-
|
|
64
|
+
expandedSet, indent, renderExpandIcon, clickLabelToExpand,
|
|
65
|
+
showCheckbox, readOnly, disabled
|
|
66
|
+
]), children: _jsx(TreeDnd, { sortable: sortable, showDragHandle: showDragHandle, onSort: onSort, containerRef: containerRef, children: useMemo(() => {
|
|
67
|
+
if (!filteredTreeData?.length) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
67
70
|
const fn = (arr) => {
|
|
68
|
-
return arr?.map(({ _parentId, ...nodeProps }) => {
|
|
71
|
+
return arr?.map(({ _parentId, ...nodeProps }, i) => {
|
|
69
72
|
const currentValue = nodeProps[primaryKey];
|
|
70
73
|
const label = nodeProps[labelKey];
|
|
71
74
|
return (_createElement(TreeNode, { ...nodeProps, key: currentValue, value: currentValue, label: typeof label === 'string' && deferredSearchValue
|
|
@@ -74,8 +77,6 @@ primaryKey = 'value', childrenKey = 'children', relation = 'dependent', integrat
|
|
|
74
77
|
});
|
|
75
78
|
};
|
|
76
79
|
return fn(filteredTreeData);
|
|
77
|
-
}
|
|
78
|
-
return _jsx(Placeholder, {});
|
|
79
|
-
}, [filteredTreeData]) }) })] }));
|
|
80
|
+
}, [filteredTreeData]) }) }) })] }));
|
|
80
81
|
});
|
|
81
82
|
Tree.Node = TreeNode;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
export declare const classes: {
|
|
2
2
|
label: string;
|
|
3
3
|
search: string;
|
|
4
|
-
icon: string;
|
|
5
4
|
prefix: string;
|
|
6
|
-
|
|
7
|
-
suffix: string;
|
|
5
|
+
icon: string;
|
|
8
6
|
expand: string;
|
|
9
7
|
indent: string;
|
|
10
8
|
node: string;
|
|
9
|
+
checkbox: string;
|
|
10
|
+
suffix: string;
|
|
11
|
+
contentWrap: string;
|
|
12
|
+
levelBlock: string;
|
|
13
|
+
dragHandle: string;
|
|
14
|
+
dragMask: string;
|
|
15
|
+
dragMaskPrev: string;
|
|
16
|
+
dragMaskNext: string;
|
|
11
17
|
} & {
|
|
12
18
|
root: string;
|
|
13
19
|
};
|