@canlooks/can-ui 0.0.69 → 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 +39 -34
- 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 +40 -35
- 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 { cloneElement, isValidElement, useImperativeHandle, useRef, useState } from 'react';
|
|
3
3
|
import { Dialog } from '../dialog';
|
|
4
|
-
import { clsx, toArray, useControlled } from '../../utils';
|
|
4
|
+
import { clsx, mergeComponentProps, toArray, useControlled } from '../../utils';
|
|
5
5
|
import { classes, style } from './pickerDialog.style';
|
|
6
6
|
import { SelectionContext } from '../selectionContext';
|
|
7
7
|
import { Divider } from '../divider';
|
|
@@ -28,7 +28,7 @@ options = rows ?? nodes, primaryKey = 'id', childrenKey = 'children', relation =
|
|
|
28
28
|
!multiple && confirmHandler(value);
|
|
29
29
|
};
|
|
30
30
|
const [innerOpen, setInnerOpen] = useControlled(props.defaultOpen, props.open);
|
|
31
|
-
const
|
|
31
|
+
const closeHandler = (reason) => {
|
|
32
32
|
if (reason === 'confirmed') {
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
@@ -46,8 +46,7 @@ options = rows ?? nodes, primaryKey = 'id', childrenKey = 'children', relation =
|
|
|
46
46
|
resolvers.current?.resolve(value);
|
|
47
47
|
setInnerOpen(false);
|
|
48
48
|
};
|
|
49
|
-
const
|
|
50
|
-
props.modalProps?.onExited?.();
|
|
49
|
+
const onExited = () => {
|
|
51
50
|
_setInnerValue(null);
|
|
52
51
|
};
|
|
53
52
|
const renderChildren = () => {
|
|
@@ -62,10 +61,24 @@ options = rows ?? nodes, primaryKey = 'id', childrenKey = 'children', relation =
|
|
|
62
61
|
: children;
|
|
63
62
|
};
|
|
64
63
|
const selectedCount = toArray(innerValue)?.length || 0;
|
|
65
|
-
return (_jsx(SelectionContext, { options
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
return (_jsx(SelectionContext, { options,
|
|
65
|
+
primaryKey,
|
|
66
|
+
childrenKey,
|
|
67
|
+
relation,
|
|
68
|
+
integration,
|
|
69
|
+
disabled,
|
|
70
|
+
clearable,
|
|
71
|
+
multiple, value: innerValue, onChange: setInnerValue, onToggle: onToggle, children: _jsx(Dialog, { ...mergeComponentProps({
|
|
72
|
+
width: multiple ? '90%' : 1080,
|
|
73
|
+
footer: null,
|
|
74
|
+
maskClosable: false
|
|
75
|
+
}, props, {
|
|
76
|
+
ref: dialogRef,
|
|
77
|
+
css: style,
|
|
78
|
+
className: classes.root,
|
|
79
|
+
open: innerOpen.current,
|
|
80
|
+
modalProps: mergeComponentProps(props.modalProps, { onExited })
|
|
81
|
+
}), onClose: closeHandler, ...showSelectedList && {
|
|
69
82
|
[selectedListPlacement === 'left' ? 'prefix' : 'suffix']: (_jsxs("div", { className: classes.selectedArea, children: [_jsxs(Divider, { className: classes.count, textAlign: "start", children: [_jsxs("div", { children: ["\u5DF2\u9009\u62E9", _jsx("b", { children: selectedCount }), "\u9879"] }), clearable &&
|
|
70
83
|
_jsx(Button, { prefix: _jsx(Icon, { icon: faTrashCan }), variant: "plain", color: "text.secondary", onClick: () => setInnerValue(multiple ? [] : null), children: "\u6E05\u7A7A" })] }), _jsx(SelectedList, { itemProps: selectedItemProps, ...selectedListProps, className: clsx(classes.list, selectedListProps?.className) }), _jsx(Button, { className: classes.confirm, disabled: selectedCount === 0, onClick: () => confirmHandler(), children: "\u786E\u5B9A" })] }))
|
|
71
84
|
}, children: renderChildren() }) }));
|
|
@@ -2,6 +2,7 @@ import { ReactElement, ReactNode, Ref } from 'react';
|
|
|
2
2
|
import { DivProps, DefineElement, Placement } from '../../types';
|
|
3
3
|
export type Trigger = 'click' | 'hover' | 'focus' | 'enter' | 'contextMenu';
|
|
4
4
|
export interface PopperProps extends Omit<DivProps, 'content' | 'children'> {
|
|
5
|
+
/** 默认的ref会传递至`children` */
|
|
5
6
|
popperRef?: Ref<PopperRef | null>;
|
|
6
7
|
/** 若不指定anchorElement,默认使用{@link children}作为目标锚点元素 */
|
|
7
8
|
anchorElement?: DefineElement<HTMLElement>;
|
|
@@ -15,6 +16,8 @@ export interface PopperProps extends Omit<DivProps, 'content' | 'children'> {
|
|
|
15
16
|
offset?: number;
|
|
16
17
|
/** 自动打开弹框的触发方法,默认为`hover` */
|
|
17
18
|
trigger?: Trigger | Trigger[] | false;
|
|
19
|
+
/** 点击元素时关闭,主要用于某元素同时存在tooltip与其他popper的情况,点击时打开popper同时关闭tooltip */
|
|
20
|
+
clickToClose?: boolean;
|
|
18
21
|
placement?: Placement;
|
|
19
22
|
variant?: 'zoom' | 'collapse';
|
|
20
23
|
/**
|
|
@@ -23,7 +26,7 @@ export interface PopperProps extends Omit<DivProps, 'content' | 'children'> {
|
|
|
23
26
|
* @enum {@link variant}为`collapse`时,默认为`true`
|
|
24
27
|
*/
|
|
25
28
|
sizeAdaptable?: boolean;
|
|
26
|
-
/** trigger{@link trigger}包含"hover"时,鼠标移入移的延迟时间,默认为`
|
|
29
|
+
/** trigger{@link trigger}包含"hover"时,鼠标移入移的延迟时间,默认为`150(ms)` */
|
|
27
30
|
mouseEnterDelay?: number;
|
|
28
31
|
/**默认为`150(ms)` */
|
|
29
32
|
mouseLeaveDelay?: number;
|
|
@@ -48,4 +51,4 @@ export interface PopperRef extends HTMLDivElement {
|
|
|
48
51
|
openAnimation?: boolean;
|
|
49
52
|
}, beforeOpen?: () => void): void;
|
|
50
53
|
}
|
|
51
|
-
export declare function Popper({ ref, popperRef, anchorElement, container, effectContainer, content, offset, trigger, placement, variant, sizeAdaptable, mouseEnterDelay, mouseLeaveDelay, defaultOpen, open, onOpenChange, onOpenChangeEnd, disabled, autoClose, forceRender, children, ...props }: PopperProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
54
|
+
export declare function Popper({ ref, popperRef, anchorElement, container, effectContainer, content, offset, trigger, clickToClose, placement, variant, sizeAdaptable, mouseEnterDelay, mouseLeaveDelay, defaultOpen, open, onOpenChange, onOpenChangeEnd, disabled, autoClose, forceRender, children, ...props }: PopperProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -19,7 +19,7 @@ const getAttemptOrder = (placement) => {
|
|
|
19
19
|
}
|
|
20
20
|
return order;
|
|
21
21
|
};
|
|
22
|
-
export function Popper({ ref, popperRef, anchorElement, container = document.body, effectContainer, content, offset, trigger = 'hover', placement = 'top', variant = 'zoom', sizeAdaptable = variant === 'collapse', mouseEnterDelay =
|
|
22
|
+
export function Popper({ ref, popperRef, anchorElement, container = document.body, effectContainer, content, offset, trigger = 'hover', clickToClose, placement = 'top', variant = 'zoom', sizeAdaptable = variant === 'collapse', mouseEnterDelay = 150, mouseLeaveDelay = 150, defaultOpen = false, open, onOpenChange, onOpenChangeEnd, disabled, autoClose = false, forceRender, children, ...props }) {
|
|
23
23
|
const { spacing } = useTheme();
|
|
24
24
|
offset ??= spacing[2];
|
|
25
25
|
useImperativeHandle(popperRef, () => {
|
|
@@ -37,11 +37,10 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
37
37
|
const hold = (open) => {
|
|
38
38
|
return open ? ++openHolding.current
|
|
39
39
|
: openHolding.current > 0 ? --openHolding.current
|
|
40
|
-
:
|
|
40
|
+
: 0;
|
|
41
41
|
};
|
|
42
42
|
const [innerOpen, _setInnerOpen] = useControlled(defaultOpen, open, onOpenChange);
|
|
43
|
-
const
|
|
44
|
-
const setInnerOpen = (open, force) => {
|
|
43
|
+
const setInnerOpen = (open) => {
|
|
45
44
|
if (disabled || unmounted.current) {
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
@@ -50,15 +49,15 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
50
49
|
return;
|
|
51
50
|
}
|
|
52
51
|
// 打开时无需判断,关闭时需要判断openHolding.current是否归0
|
|
53
|
-
if (newOpen ||
|
|
52
|
+
if (newOpen || openHolding.current === 0) {
|
|
54
53
|
_setInnerOpen(newOpen);
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
56
|
const { onChildrenOpenChange: tellParentOpenChange } = usePopperContext();
|
|
58
|
-
const
|
|
57
|
+
const initialized = useRef(false);
|
|
59
58
|
useEffect(() => {
|
|
60
|
-
if (
|
|
61
|
-
|
|
59
|
+
if (!initialized.current) {
|
|
60
|
+
initialized.current = true;
|
|
62
61
|
return;
|
|
63
62
|
}
|
|
64
63
|
tellParentOpenChange(innerOpen.current);
|
|
@@ -67,7 +66,10 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
67
66
|
hold(open) === 0 && setInnerOpen(false);
|
|
68
67
|
};
|
|
69
68
|
const setOpenForce = (open) => {
|
|
70
|
-
|
|
69
|
+
if (!open) {
|
|
70
|
+
openHolding.current = 0;
|
|
71
|
+
}
|
|
72
|
+
setInnerOpen(open);
|
|
71
73
|
};
|
|
72
74
|
const openAndHold = (open) => {
|
|
73
75
|
hold(open);
|
|
@@ -104,6 +106,7 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
104
106
|
const containerEl = useContainer(container, effectContainer);
|
|
105
107
|
const innerPopperRef = useRef(null);
|
|
106
108
|
const [popperBounding, setPopperBounding] = useState();
|
|
109
|
+
const [contextMenuEvent, setContextMenuEvent] = useSyncState();
|
|
107
110
|
const [openNextFrame, setOpenNextFrame] = useDerivedState(!innerOpen.current, [innerOpen.current, contextMenuEvent.current]);
|
|
108
111
|
const placeA = useRef(void 0);
|
|
109
112
|
const placeB = useRef(void 0);
|
|
@@ -361,7 +364,7 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
361
364
|
}
|
|
362
365
|
isEntered.current = true;
|
|
363
366
|
hold(true);
|
|
364
|
-
clearTimeout(
|
|
367
|
+
clearTimeout(leaveTimeout.current);
|
|
365
368
|
mouseEnterDelay
|
|
366
369
|
? enterTimeout.current = setTimeout(() => setInnerOpen(true), mouseEnterDelay)
|
|
367
370
|
: setInnerOpen(true);
|
|
@@ -369,7 +372,7 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
369
372
|
const pointerLeave = () => {
|
|
370
373
|
isEntered.current = false;
|
|
371
374
|
hold(false);
|
|
372
|
-
clearTimeout(
|
|
375
|
+
clearTimeout(enterTimeout.current);
|
|
373
376
|
mouseLeaveDelay
|
|
374
377
|
? leaveTimeout.current = setTimeout(() => setInnerOpen(false), mouseLeaveDelay)
|
|
375
378
|
: setInnerOpen(false);
|
|
@@ -441,7 +444,9 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
441
444
|
if (!clickable) {
|
|
442
445
|
return;
|
|
443
446
|
}
|
|
444
|
-
const click = () =>
|
|
447
|
+
const click = () => {
|
|
448
|
+
openAndHold(true);
|
|
449
|
+
};
|
|
445
450
|
const anchorEl = anchorRef.current;
|
|
446
451
|
anchorEl.addEventListener('click', click);
|
|
447
452
|
return () => {
|
|
@@ -451,6 +456,20 @@ export function Popper({ ref, popperRef, anchorElement, container = document.bod
|
|
|
451
456
|
const onClickAway = () => {
|
|
452
457
|
innerOpen.current && openAndHold(false);
|
|
453
458
|
};
|
|
459
|
+
/**
|
|
460
|
+
* clickToClose
|
|
461
|
+
*/
|
|
462
|
+
useEffect(() => {
|
|
463
|
+
if (clickToClose) {
|
|
464
|
+
const click = () => {
|
|
465
|
+
setOpenForce(false);
|
|
466
|
+
};
|
|
467
|
+
anchorRef.current.addEventListener('click', click);
|
|
468
|
+
return () => {
|
|
469
|
+
anchorRef.current.removeEventListener('click', click);
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
}, [clickToClose]);
|
|
454
473
|
/**
|
|
455
474
|
* contextmenu相关
|
|
456
475
|
*/
|
|
@@ -6,11 +6,10 @@ export const classes = defineInnerClasses('popper', [
|
|
|
6
6
|
'popper',
|
|
7
7
|
]);
|
|
8
8
|
export const style = defineCss(theme => {
|
|
9
|
-
const { easing
|
|
9
|
+
const { easing } = theme;
|
|
10
10
|
return [
|
|
11
11
|
appStyleCallback(theme),
|
|
12
12
|
css `
|
|
13
|
-
font-size: ${fontSize}px;
|
|
14
13
|
position: absolute;
|
|
15
14
|
top: 0;
|
|
16
15
|
left: 0;
|
|
@@ -53,7 +53,7 @@ export const Progress = memo(({ showInfo = true, renderInfo, color, status = 'de
|
|
|
53
53
|
return css({ animation: `${anim} 1.4s linear infinite` });
|
|
54
54
|
}
|
|
55
55
|
return;
|
|
56
|
-
}, [indeterminate, variant,
|
|
56
|
+
}, [indeterminate, variant, commonCircleProps.r]);
|
|
57
57
|
return (_jsx("div", { ...props, css: useStyle({ color: color || 'primary', variant }), className: clsx(classes.root, props.className), "data-variant": variant, "data-indeterminate": indeterminate, "data-processing": value < 100 && status === 'processing', "data-success": isColorSpecified ? void 0 : isSucceed, "data-error": isColorSpecified ? void 0 : status === 'error', children: variant === 'linear'
|
|
58
58
|
? _jsxs(_Fragment, { children: [_jsx("div", { className: classes.track, style: {
|
|
59
59
|
height: barWidth,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement, ReactNode, Ref,
|
|
1
|
+
import { ReactElement, ReactNode, Ref, ComponentProps } from 'react';
|
|
2
2
|
import { InputBaseProps } from '../inputBase';
|
|
3
3
|
import { PopperProps, PopperRef } from '../popper';
|
|
4
4
|
import { MenuItem } from '../menuItem';
|
|
@@ -7,7 +7,7 @@ import { InputProps } from '../input';
|
|
|
7
7
|
import { Id, SelectableMultipleProps, SelectableSingleProps } from '../../types';
|
|
8
8
|
export interface SelectBaseProps<O extends MenuOptionType> extends OptionsBaseSharedProps<O>, Omit<InputBaseProps<'input'>, 'children' | 'defaultValue' | 'value' | 'onChange'> {
|
|
9
9
|
/** <select />内部由<input />实现 */
|
|
10
|
-
inputProps?:
|
|
10
|
+
inputProps?: ComponentProps<'input'>;
|
|
11
11
|
popperProps?: PopperProps;
|
|
12
12
|
popperRef?: Ref<PopperRef>;
|
|
13
13
|
defaultOpen?: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { Children, isValidElement, memo, useCallback, useDeferredValue, useMemo, useRef } from 'react';
|
|
3
3
|
import { InputBase } from '../inputBase';
|
|
4
|
-
import {
|
|
4
|
+
import { mergeComponentProps, toArray, useControlled } from '../../utils';
|
|
5
5
|
import { classes, style } from './select.style';
|
|
6
6
|
import { Popper } from '../popper';
|
|
7
7
|
import { MenuItem } from '../menuItem';
|
|
@@ -9,11 +9,11 @@ import { Tag } from '../tag';
|
|
|
9
9
|
import { OptionsBase } from '../optionsBase';
|
|
10
10
|
import { Input } from '../input';
|
|
11
11
|
import { LoadingIndicator } from '../loadingIndicator';
|
|
12
|
-
import {
|
|
13
|
-
import { useShallowSelection } from '../selectionContext';
|
|
12
|
+
import { useFlatSelection } from '../selectionContext';
|
|
14
13
|
import { Icon } from '../icon';
|
|
15
14
|
import { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';
|
|
16
15
|
import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlass';
|
|
16
|
+
import { popperStyle } from '../popper/popper.style';
|
|
17
17
|
export const Select = memo(({ inputProps, popperProps, popperRef, defaultOpen = false, open, onOpenChange, sizeAdaptable = true, children, multiple, defaultValue, value, onChange, renderBackfill, searchable, defaultSearchValue = '', searchValue, onSearchChange, searchInputProps,
|
|
18
18
|
// 从OptionsBaseSharedProps继承的属性
|
|
19
19
|
showCheckbox = !!multiple, loading, options, labelKey = 'label', primaryKey = 'value', searchTokenKey = 'searchToken', filterPredicate, ...props }) => {
|
|
@@ -26,28 +26,26 @@ showCheckbox = !!multiple, loading, options, labelKey = 'label', primaryKey = 'v
|
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
const openChangeHandler = (open) => {
|
|
29
|
-
popperProps?.onOpenChange?.(open);
|
|
30
29
|
setInnerOpen(open);
|
|
31
30
|
};
|
|
32
31
|
const openChangeEnd = (open) => {
|
|
33
|
-
popperProps?.onOpenChangeEnd?.(open);
|
|
34
32
|
// 关闭动画结束后清空搜索框
|
|
35
33
|
!open && setInnerSearchValue('');
|
|
36
34
|
};
|
|
37
35
|
const searchInputRef = useRef(null);
|
|
38
|
-
const
|
|
36
|
+
const onBlur = () => {
|
|
39
37
|
setTimeout(() => {
|
|
40
38
|
// 失去焦点后,如果不是聚焦在搜索框,则需要关闭弹框
|
|
41
39
|
searchInputRef.current !== document.activeElement && setInnerOpen(false);
|
|
42
40
|
});
|
|
43
41
|
};
|
|
44
|
-
const [innerValue, _toggleSelected, setInnerValue] =
|
|
45
|
-
const
|
|
42
|
+
const [innerValue, _toggleSelected, setInnerValue] = useFlatSelection({ multiple, defaultValue, value, onChange });
|
|
43
|
+
const onToggleSelected = useCallback((value) => {
|
|
46
44
|
_toggleSelected(value);
|
|
47
45
|
// 单选模式下,选中一次就自动关闭弹框
|
|
48
46
|
!multiple && setInnerOpen(false);
|
|
49
47
|
}, [multiple]);
|
|
50
|
-
const
|
|
48
|
+
const onClear = () => {
|
|
51
49
|
props.onClear?.();
|
|
52
50
|
setInnerValue(multiple ? [] : void 0);
|
|
53
51
|
};
|
|
@@ -74,23 +72,49 @@ showCheckbox = !!multiple, loading, options, labelKey = 'label', primaryKey = 'v
|
|
|
74
72
|
return renderBackfill(innerValue);
|
|
75
73
|
}
|
|
76
74
|
if (multiple) {
|
|
77
|
-
return innerValue?.map((v) => _jsx(Tag, { closable: true, onClose: () =>
|
|
75
|
+
return innerValue?.map((v) => _jsx(Tag, { closable: true, onClose: () => onToggleSelected(v), children: optionsMap.get(v)?.[labelKey] ?? v }, v));
|
|
78
76
|
}
|
|
79
77
|
return (_jsx("div", { className: classes.backfillWrap, children: optionsMap.get(innerValue)?.[labelKey] ?? innerValue }));
|
|
80
78
|
};
|
|
81
|
-
return (_jsx(Popper, {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
return (_jsx(Popper, { ...mergeComponentProps({
|
|
80
|
+
css: popperStyle,
|
|
81
|
+
open: innerOpen.current,
|
|
82
|
+
placement: 'bottom',
|
|
83
|
+
variant: 'collapse',
|
|
84
|
+
trigger: ['click', 'enter'],
|
|
85
|
+
disabled: props.disabled || props.readOnly,
|
|
86
|
+
sizeAdaptable: sizeAdaptable,
|
|
87
|
+
content: (_jsxs(_Fragment, { children: [searchable &&
|
|
88
|
+
_jsx(Input, { ...mergeComponentProps({
|
|
89
|
+
inputProps: mergeComponentProps(searchInputProps?.inputProps, { ref: searchInputRef }),
|
|
90
|
+
prefix: _jsx(Icon, { icon: faMagnifyingGlass }),
|
|
91
|
+
placeholder: '搜索',
|
|
92
|
+
value: innerSearchValue.current
|
|
93
|
+
}, searchInputProps, {
|
|
94
|
+
onChange: e => setInnerSearchValue?.(e.target.value),
|
|
95
|
+
onBlur
|
|
96
|
+
}) }), _jsx(OptionsBase, { selectedValue: innerValue, searchValue: deferredSearchValue, onToggleSelected,
|
|
97
|
+
showCheckbox,
|
|
98
|
+
loading,
|
|
99
|
+
options,
|
|
100
|
+
labelKey,
|
|
101
|
+
primaryKey,
|
|
102
|
+
searchTokenKey,
|
|
103
|
+
filterPredicate, children: children })] }))
|
|
104
|
+
}, popperProps, {
|
|
105
|
+
popperRef,
|
|
106
|
+
onOpenChange: openChangeHandler,
|
|
107
|
+
onOpenChangeEnd: openChangeEnd,
|
|
108
|
+
onPointerDown: e => e.preventDefault()
|
|
109
|
+
}), children: _jsx(InputBase, { clearable: !!multiple, ...mergeComponentProps(props, {
|
|
110
|
+
css: style,
|
|
111
|
+
className: classes.root,
|
|
112
|
+
value: innerValue,
|
|
113
|
+
onClear,
|
|
114
|
+
onBlur
|
|
115
|
+
}), "data-focused": innerOpen.current, children: inputBaseProps => _jsxs("div", { className: classes.contentWrap, children: [!toArray(innerValue)?.length
|
|
92
116
|
? _jsx("div", { className: classes.placeholder, children: props.placeholder ?? '请选择' })
|
|
93
|
-
: _jsx("div", { className: classes.backfill, children: renderBackfillFn() }), _jsx("input", { size: 1, ...inputBaseProps,
|
|
117
|
+
: _jsx("div", { className: classes.backfill, children: renderBackfillFn() }), _jsx("input", { size: 1, ...mergeComponentProps(inputBaseProps, inputProps), "data-hidden": "true" }), _jsx("div", { className: classes.arrow, "data-open": innerOpen.current, children: loading
|
|
94
118
|
? _jsx(LoadingIndicator, {})
|
|
95
119
|
: _jsx(Icon, { icon: faChevronDown }) })] }) }) }));
|
|
96
120
|
});
|
|
@@ -7,5 +7,5 @@ interface SelectedItemProps extends Omit<AlertProps, 'onClose'>, Pick<SelectedLi
|
|
|
7
7
|
itemProps?(value: Id, index: number): AlertProps | Promise<AlertProps>;
|
|
8
8
|
onClose?(value: Id, index: number): void;
|
|
9
9
|
}
|
|
10
|
-
export declare function SelectedItem({ value, index, itemProps, onClose, ...
|
|
10
|
+
export declare function SelectedItem({ value, index, itemProps, onClose, ...props }: SelectedItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
@@ -4,7 +4,7 @@ import { clsx, useLoading, useSyncState } from '../../utils';
|
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { Collapse } from '../transitionBase';
|
|
6
6
|
import { classes } from './selectedList.style';
|
|
7
|
-
export function SelectedItem({ value, index, itemProps, onClose, ...
|
|
7
|
+
export function SelectedItem({ value, index, itemProps, onClose, ...props }) {
|
|
8
8
|
const [alertProps, setAlertProps] = useSyncState();
|
|
9
9
|
const [loading, requestFn] = useLoading(async () => {
|
|
10
10
|
itemProps && setAlertProps(await itemProps(value, index));
|
|
@@ -14,5 +14,5 @@ export function SelectedItem({ value, index, itemProps, onClose, ...collapseProp
|
|
|
14
14
|
alertProps.current?.onClose?.(e);
|
|
15
15
|
onClose?.(value, index);
|
|
16
16
|
};
|
|
17
|
-
return (_jsx(Collapse, { ...
|
|
17
|
+
return (_jsx(Collapse, { ...props, className: classes.option, children: _jsx(Alert, { closable: true, color: "info", showIcon: false, ...alertProps.current, className: clsx(classes.optionWrap, alertProps.current?.className), onClose: closeHandler, loading: loading.current }) }));
|
|
18
18
|
}
|
|
@@ -2,7 +2,7 @@ import { Dispatch, SetStateAction } from 'react';
|
|
|
2
2
|
import { ISelectionContext, OptionType, SelectionContextProps } from './selectionContext';
|
|
3
3
|
import { Id } from '../../types';
|
|
4
4
|
export declare function useSelection<O extends OptionType<V>, V extends Id = Id>(props: SelectionContextProps<O, V>): ISelectionContext<O, V>;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function useFlatSelection<V extends Id | Id[]>(params: {
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
multiple?: boolean;
|
|
8
8
|
clearable?: boolean;
|
|
@@ -202,7 +202,7 @@ export function useSelection(props) {
|
|
|
202
202
|
onToggle: props.onToggle
|
|
203
203
|
};
|
|
204
204
|
}
|
|
205
|
-
export function
|
|
205
|
+
export function useFlatSelection(params) {
|
|
206
206
|
const [innerValue, setInnerValue] = useControlled(params.defaultValue, params.value, params.onChange);
|
|
207
207
|
const sync = useSync(params);
|
|
208
208
|
return [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './serialInput';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './serialInput';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { FlexProps } from '../flex';
|
|
3
|
+
import { InputProps } from '../input';
|
|
4
|
+
export interface SerialInputProps<V = string> extends Omit<FlexProps, 'defaultValue' | 'onChange'> {
|
|
5
|
+
separator?: ReactNode | ((index: number) => ReactNode);
|
|
6
|
+
count?: number;
|
|
7
|
+
defaultValue?: V[];
|
|
8
|
+
value?: V[];
|
|
9
|
+
onChange?: (value: V[]) => void;
|
|
10
|
+
onItemChange?: (value: V, index: number, values: V[]) => void;
|
|
11
|
+
inputProps?: InputProps;
|
|
12
|
+
renderInputs?(inputProps: InputProps, index: number): ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* 当前输入框的值长度达到jumpLength时,自动将焦点跳转到下一个输入框,
|
|
15
|
+
* `0`表示不自动跳转,默认为`1`
|
|
16
|
+
*/
|
|
17
|
+
jumpLength?: number;
|
|
18
|
+
/** 所有输入框完成输入后触发,{@link SerialInputProps.jumpLength}不为`0`时有效 */
|
|
19
|
+
onFinish?(value: V[]): void;
|
|
20
|
+
}
|
|
21
|
+
export declare const SerialInput: import("react").MemoExoticComponent<({ separator, count, defaultValue, value, onChange, onItemChange, inputProps, renderInputs, jumpLength, onFinish, ...props }: SerialInputProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createElement as _createElement } from "@emotion/react";
|
|
3
|
+
import { Fragment, memo, useRef } from 'react';
|
|
4
|
+
import { Flex } from '../flex';
|
|
5
|
+
import { classes, style } from './serialInput.style';
|
|
6
|
+
import { Input } from '../input';
|
|
7
|
+
import { clsx, mergeComponentProps, useControlled } from '../../utils';
|
|
8
|
+
export const SerialInput = memo(({ separator, count = 1, defaultValue, value, onChange, onItemChange, inputProps, renderInputs, jumpLength = 1, onFinish, ...props }) => {
|
|
9
|
+
const inputRefs = useRef([]);
|
|
10
|
+
inputRefs.current = [];
|
|
11
|
+
const [innerValue, setInnerValue] = useControlled(defaultValue || Array(count).fill(''), value, onChange);
|
|
12
|
+
return (_jsx(Flex, { alignItems: "center", ...props, css: style, className: clsx(classes.root, props.className), children: Array(count * 2 - 1).fill(void 0).map((_, i) => {
|
|
13
|
+
if (i % 2 === 0) {
|
|
14
|
+
const index = i / 2;
|
|
15
|
+
const _inputProps = mergeComponentProps(inputProps, {
|
|
16
|
+
ref: r => {
|
|
17
|
+
r && inputRefs.current.push(r);
|
|
18
|
+
},
|
|
19
|
+
className: classes.inputItem,
|
|
20
|
+
clearable: false,
|
|
21
|
+
value: innerValue.current[index],
|
|
22
|
+
onChange: ({ target: { value } }) => {
|
|
23
|
+
const prevLength = innerValue.current[index].length || 0;
|
|
24
|
+
const newValue = [...innerValue.current];
|
|
25
|
+
const curr = newValue[index] = value;
|
|
26
|
+
setInnerValue(newValue);
|
|
27
|
+
if (jumpLength > 0 && prevLength === jumpLength - 1 && curr.length === jumpLength) {
|
|
28
|
+
if (index < count - 1) {
|
|
29
|
+
// 聚焦后一个输入框
|
|
30
|
+
inputRefs.current[index + 1].focus();
|
|
31
|
+
}
|
|
32
|
+
else if (index === count - 1) {
|
|
33
|
+
onFinish?.(newValue);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (0 < index && prevLength === 1 && curr.length === 0) {
|
|
37
|
+
// 聚焦前一个输入框
|
|
38
|
+
inputRefs.current[index - 1].focus();
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
onKeyDown: ({ key }) => {
|
|
42
|
+
if (key === 'Backspace' && innerValue.current[index].length === 0 && 0 < index) {
|
|
43
|
+
inputRefs.current[index - 1].focus();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return renderInputs
|
|
48
|
+
? renderInputs(_inputProps, index)
|
|
49
|
+
: _createElement(Input, { ..._inputProps, key: i });
|
|
50
|
+
}
|
|
51
|
+
return separator
|
|
52
|
+
? _jsx(Fragment, { children: typeof separator === 'function' ? separator(i / 2 - 1) : separator }, i)
|
|
53
|
+
: null;
|
|
54
|
+
}) }));
|
|
55
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineCss, defineInnerClasses } from '../../utils';
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
|
+
export const classes = defineInnerClasses('serial-input', [
|
|
4
|
+
'inputItem'
|
|
5
|
+
]);
|
|
6
|
+
export const style = defineCss(() => css `
|
|
7
|
+
.${classes.inputItem} input {
|
|
8
|
+
text-align: center;
|
|
9
|
+
}
|
|
10
|
+
`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement,
|
|
1
|
+
import { ReactElement, ComponentProps } from 'react';
|
|
2
2
|
import { DivProps } from '../../types';
|
|
3
3
|
type SkeletonSharedProps = {
|
|
4
4
|
/** 默认为`rounded` */
|
|
@@ -24,7 +24,7 @@ export interface SkeletonCardProps extends SkeletonSharedProps, DivProps {
|
|
|
24
24
|
rows?: number;
|
|
25
25
|
}
|
|
26
26
|
export declare const SkeletonCard: import("react").MemoExoticComponent<({ showAvatar, showTitle, rows, variant, animation, ...props }: SkeletonCardProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
27
|
-
export interface SkeletonTableProps extends SkeletonSharedProps, Partial<
|
|
27
|
+
export interface SkeletonTableProps extends SkeletonSharedProps, Partial<ComponentProps<'table'>> {
|
|
28
28
|
columns?: number;
|
|
29
29
|
rows?: number;
|
|
30
30
|
}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import { memo, useEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { Button } from '../button';
|
|
4
4
|
import { classes } from './slidableActions.style';
|
|
5
|
-
import {
|
|
5
|
+
import { colorTransfer, mergeComponentProps } from '../../utils';
|
|
6
6
|
import { useTheme } from '../theme';
|
|
7
7
|
import { useSlidableActionsContext } from './slidableActions';
|
|
8
8
|
export const SlidableActionsAction = memo(({ color = 'default', label, icon, buttonProps, _index, ...props }) => {
|
|
@@ -29,12 +29,21 @@ export const SlidableActionsAction = memo(({ color = 'default', label, icon, but
|
|
|
29
29
|
? '#aaaaaa'
|
|
30
30
|
: colorTransfer(color, theme);
|
|
31
31
|
}, [color, theme]);
|
|
32
|
-
const
|
|
33
|
-
props.onClick?.(e);
|
|
32
|
+
const onClick = (e) => {
|
|
34
33
|
autoReturn && resetTranslate();
|
|
35
34
|
};
|
|
36
|
-
return (_jsx("div", { ...props,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
return (_jsx("div", { ...mergeComponentProps(props, {
|
|
36
|
+
className: classes.actionItem,
|
|
37
|
+
style: {
|
|
38
|
+
translate: `${currentTranslate}px 0`,
|
|
39
|
+
backgroundColor
|
|
40
|
+
},
|
|
41
|
+
onClick
|
|
42
|
+
}), children: _jsx(Button, { ...mergeComponentProps(buttonProps, {
|
|
43
|
+
ref: innerButtonRef,
|
|
44
|
+
className: classes.actionItemButton,
|
|
45
|
+
prefix: icon,
|
|
46
|
+
color,
|
|
47
|
+
variant: 'flatted'
|
|
48
|
+
}), children: label }) }));
|
|
40
49
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HTMLAttributes, ReactNode,
|
|
1
|
+
import { HTMLAttributes, ReactNode, ComponentProps } from 'react';
|
|
2
2
|
import { GestureOptions } from '../../utils';
|
|
3
3
|
import { ColorPropsValue, DivProps } from '../../types';
|
|
4
4
|
import { TooltipProps } from '../tooltip';
|
|
@@ -26,7 +26,7 @@ interface SliderBaseProps extends Omit<DivProps, 'defaultValue' | 'onChange' | '
|
|
|
26
26
|
renderRail?(value: [number, number], railProps: HTMLAttributes<HTMLDivElement>): ReactNode;
|
|
27
27
|
/** 滑块 */
|
|
28
28
|
handleSize?: number;
|
|
29
|
-
handleProps?:
|
|
29
|
+
handleProps?: ComponentProps<'button'>;
|
|
30
30
|
/** 禁用默认的滑块外边框 */
|
|
31
31
|
disableHandleOutline?: boolean;
|
|
32
32
|
/** 渲染滑块,range模式时,改方法会触发两次 */
|