@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
package/dist/cjs/utils/utils.js
CHANGED
|
@@ -22,6 +22,7 @@ exports.listenAllPredecessorsScroll = listenAllPredecessorsScroll;
|
|
|
22
22
|
exports.range = range;
|
|
23
23
|
exports.queryDeep = queryDeep;
|
|
24
24
|
exports.filterProperties = filterProperties;
|
|
25
|
+
exports.mergeComponentProps = mergeComponentProps;
|
|
25
26
|
/**
|
|
26
27
|
* 生成最简易的随机ID
|
|
27
28
|
* @param namespace
|
|
@@ -79,10 +80,6 @@ function humpToSegmented(str, separator = '-') {
|
|
|
79
80
|
return index ? separator + $1.toLowerCase() : $1;
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
|
-
/**
|
|
83
|
-
* 将某个值统一转换成数组或undefined
|
|
84
|
-
* @param value
|
|
85
|
-
*/
|
|
86
83
|
function toArray(value) {
|
|
87
84
|
return isUnset(value)
|
|
88
85
|
? null
|
|
@@ -246,9 +243,9 @@ function isChildOf(target, container) {
|
|
|
246
243
|
return false;
|
|
247
244
|
}
|
|
248
245
|
/**
|
|
249
|
-
*
|
|
246
|
+
* 从某个元素开始,一直向上查找
|
|
250
247
|
* @param target
|
|
251
|
-
* @param callback
|
|
248
|
+
* @param callback 返回true表示找到,会停止递归
|
|
252
249
|
*/
|
|
253
250
|
function findPredecessor(target, callback) {
|
|
254
251
|
while (target) {
|
|
@@ -290,18 +287,17 @@ function listenAllPredecessorsScroll(target, listener) {
|
|
|
290
287
|
function range(value, min = -Infinity, max = Infinity) {
|
|
291
288
|
return Math.max(min, Math.min(max, value));
|
|
292
289
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
function queryDeep(obj, keyPath, setValue, separator = '.') {
|
|
290
|
+
function queryDeep(obj, keyPath, a, b) {
|
|
291
|
+
const setValue = typeof b === 'function' ? b
|
|
292
|
+
: typeof a === 'function' ? a
|
|
293
|
+
: void 0;
|
|
294
|
+
const separator = typeof b === 'string' ? b
|
|
295
|
+
: typeof a === 'string' ? a
|
|
296
|
+
: '.';
|
|
301
297
|
if (Array.isArray(keyPath)) {
|
|
302
298
|
let result = obj;
|
|
303
299
|
for (let i = 0, { length } = keyPath; i < length; i++) {
|
|
304
|
-
if (typeof result !== 'object' ||
|
|
300
|
+
if (typeof result !== 'object' || result === null) {
|
|
305
301
|
result = void 0;
|
|
306
302
|
break;
|
|
307
303
|
}
|
|
@@ -311,7 +307,10 @@ function queryDeep(obj, keyPath, setValue, separator = '.') {
|
|
|
311
307
|
result[k] = setValue(result[k]);
|
|
312
308
|
}
|
|
313
309
|
else if (!(k in result)) {
|
|
314
|
-
|
|
310
|
+
const nextKey = keyPath[i + 1];
|
|
311
|
+
result[k] = (typeof nextKey === 'string' && isNaN(+nextKey)) || typeof nextKey === 'symbol'
|
|
312
|
+
? {}
|
|
313
|
+
: [];
|
|
315
314
|
}
|
|
316
315
|
}
|
|
317
316
|
result = result[k];
|
|
@@ -339,3 +338,47 @@ function filterProperties(obj, undefinedValue) {
|
|
|
339
338
|
}
|
|
340
339
|
return obj;
|
|
341
340
|
}
|
|
341
|
+
function mergeComponentProps(...props) {
|
|
342
|
+
const { length } = props;
|
|
343
|
+
if (length <= 1) {
|
|
344
|
+
return props[0];
|
|
345
|
+
}
|
|
346
|
+
const fn = (target, source) => {
|
|
347
|
+
if (!source) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
for (const p in source) {
|
|
351
|
+
if (p in target) {
|
|
352
|
+
switch (p) {
|
|
353
|
+
case 'css':
|
|
354
|
+
target.css = [...toArray(target.css), ...toArray(source.css)];
|
|
355
|
+
continue;
|
|
356
|
+
case 'ref':
|
|
357
|
+
target.ref = cloneRef(target.ref, source.ref);
|
|
358
|
+
continue;
|
|
359
|
+
case 'className':
|
|
360
|
+
target.className = clsx(target.className, source.className);
|
|
361
|
+
continue;
|
|
362
|
+
case 'style':
|
|
363
|
+
target.style = { ...source.style, ...target.style };
|
|
364
|
+
continue;
|
|
365
|
+
default:
|
|
366
|
+
const v = source[p];
|
|
367
|
+
if (typeof v === 'function') {
|
|
368
|
+
target[p] = (...args) => {
|
|
369
|
+
target[p](...args);
|
|
370
|
+
v(...args);
|
|
371
|
+
};
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
target[p] = source[p];
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
const merged = { ...props[0] };
|
|
380
|
+
for (let i = 1; i < length; i++) {
|
|
381
|
+
fn(merged, props[i]);
|
|
382
|
+
}
|
|
383
|
+
return merged;
|
|
384
|
+
}
|
|
@@ -2,7 +2,7 @@ import { createElement as _createElement } from "@emotion/react";
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
3
3
|
import { memo } from 'react';
|
|
4
4
|
import { classes, style } from './actionSheet.style';
|
|
5
|
-
import { clsx,
|
|
5
|
+
import { clsx, useControlled, useEscapeClosable, mergeComponentProps } from '../../utils';
|
|
6
6
|
import { OverlayBase } from '../overlayBase';
|
|
7
7
|
import { Slide } from '../transitionBase';
|
|
8
8
|
import { MenuItem } from '../menuItem';
|
|
@@ -10,22 +10,27 @@ const placementToDirection = {
|
|
|
10
10
|
top: 'down',
|
|
11
11
|
bottom: 'up'
|
|
12
12
|
};
|
|
13
|
-
export const ActionSheet = memo(({
|
|
13
|
+
export const ActionSheet = memo(({ title, actions, placement = 'bottom', maskClosable, escapeClosable = true, onAction, onConfirm, onCancel, defaultOpen = false, open, onClose, showConfirm, confirmText = '确 定', confirmProps, showCancel = true, cancelText = '取 消', cancelProps, slideProps, ...props }) => {
|
|
14
14
|
const [innerOpen, setInnerOpen] = useControlled(defaultOpen, open);
|
|
15
15
|
const close = (reason) => {
|
|
16
16
|
onClose?.(reason);
|
|
17
17
|
setInnerOpen(false);
|
|
18
18
|
};
|
|
19
19
|
const overlayRef = useEscapeClosable({ escapeClosable, close }, onCancel);
|
|
20
|
-
const onMaskClick = (
|
|
21
|
-
props.onMaskClick?.(e);
|
|
20
|
+
const onMaskClick = () => {
|
|
22
21
|
maskClosable && close('maskClicked');
|
|
23
22
|
};
|
|
24
23
|
const cancelHandler = (e) => {
|
|
25
24
|
onCancel?.(e);
|
|
26
25
|
close('canceled');
|
|
27
26
|
};
|
|
28
|
-
return (_jsx(OverlayBase, { ...
|
|
27
|
+
return (_jsx(OverlayBase, { ...mergeComponentProps(props, {
|
|
28
|
+
css: style,
|
|
29
|
+
ref: overlayRef,
|
|
30
|
+
className: classes.root,
|
|
31
|
+
open: innerOpen.current,
|
|
32
|
+
onMaskClick
|
|
33
|
+
}), "data-placement": placement, children: _jsxs(Slide, { direction: placementToDirection[placement], ...slideProps, className: clsx(classes.sheet, slideProps?.className), in: innerOpen.current, children: [!!(title || showConfirm || actions?.length) &&
|
|
29
34
|
_jsxs("div", { className: classes.card, children: [!!title &&
|
|
30
35
|
_jsx("div", { className: classes.title, children: title }), showConfirm &&
|
|
31
36
|
_jsx(MenuItem, { className: classes.action, size: "large", label: confirmText, ...confirmProps, onClick: e => {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ColorPropsValue } from '../../types';
|
|
2
2
|
export declare const classes: {
|
|
3
3
|
title: string;
|
|
4
|
-
icon: string;
|
|
5
4
|
content: string;
|
|
5
|
+
close: string;
|
|
6
6
|
prefix: string;
|
|
7
|
+
icon: string;
|
|
7
8
|
suffix: string;
|
|
8
|
-
close: string;
|
|
9
9
|
description: string;
|
|
10
10
|
} & {
|
|
11
11
|
root: string;
|
|
@@ -16,30 +16,34 @@ export class AppDialogMethods {
|
|
|
16
16
|
}
|
|
17
17
|
export const AppDialog = memo(({ methods }) => {
|
|
18
18
|
const [stacks, setStacks] = useState([]);
|
|
19
|
-
const defineMethod = (type) =>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
const defineMethod = (type) => {
|
|
20
|
+
return (props, ...args) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
setStacks(o => [
|
|
23
|
+
...o,
|
|
24
|
+
{
|
|
25
|
+
...props,
|
|
26
|
+
type,
|
|
27
|
+
async onConfirm() {
|
|
28
|
+
await props.onConfirm?.(...args);
|
|
29
|
+
resolve();
|
|
30
|
+
},
|
|
31
|
+
onCancel() {
|
|
32
|
+
props.onCancel?.(...args);
|
|
33
|
+
reject();
|
|
34
|
+
},
|
|
35
|
+
onClosed() {
|
|
36
|
+
props.onClosed?.();
|
|
37
|
+
setStacks(_o => {
|
|
38
|
+
_o.splice(o.length, 1);
|
|
39
|
+
return [..._o];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
};
|
|
43
47
|
methods.info = defineMethod('info');
|
|
44
48
|
methods.success = defineMethod('success');
|
|
45
49
|
methods.warning = defineMethod('warning');
|
|
@@ -3,7 +3,7 @@ import { Children, isValidElement, memo, useCallback, useEffect, useMemo, useRef
|
|
|
3
3
|
import { Popper } from '../popper';
|
|
4
4
|
import { OptionsBase } from '../optionsBase';
|
|
5
5
|
import { Input } from '../input';
|
|
6
|
-
import {
|
|
6
|
+
import { isUnset, useControlled, useDerivedState, useLoading, useSync, mergeComponentProps } from '../../utils';
|
|
7
7
|
import { classes } from './autocomplete.style';
|
|
8
8
|
import { popperStyle } from '../popper/popper.style';
|
|
9
9
|
export const Autocomplete = memo(({ children, loading, options, loadOptions, primaryKey = 'value', labelKey = 'label', onSelect, renderInput, popperProps, popperRef, defaultValue = '', value, onChange, ...props }) => {
|
|
@@ -50,7 +50,6 @@ export const Autocomplete = memo(({ children, loading, options, loadOptions, pri
|
|
|
50
50
|
const setOpen = (open) => {
|
|
51
51
|
if (!props.disabled && !props.readOnly && (!open || optionsMap.size)) {
|
|
52
52
|
// 必须有选项才能打开下拉框
|
|
53
|
-
popperProps?.onOpenChange?.(open);
|
|
54
53
|
_setOpen(open);
|
|
55
54
|
}
|
|
56
55
|
};
|
|
@@ -66,35 +65,30 @@ export const Autocomplete = memo(({ children, loading, options, loadOptions, pri
|
|
|
66
65
|
currentTarget: innerInputRef.current
|
|
67
66
|
}, true);
|
|
68
67
|
setOpen(false);
|
|
69
|
-
}, [optionsMap]);
|
|
70
|
-
const inputProps = {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
className: clsx(classes.root, props.className),
|
|
68
|
+
}, [optionsMap, labelKey]);
|
|
69
|
+
const inputProps = mergeComponentProps(props, {
|
|
70
|
+
ref: innerInputRef,
|
|
71
|
+
className: classes.root,
|
|
74
72
|
loading: innerLoading.current,
|
|
75
73
|
value: innerValue.current,
|
|
76
74
|
onChange: changeHandler,
|
|
77
|
-
onInput(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return (_jsx(Popper, { css: popperStyle, open: open.current, placement: "bottom", variant: "collapse", trigger: false, content: _jsx(OptionsBase, { onToggleSelected: optionSelectHandler, loading: innerLoading.current, options: actualOptions, labelKey: labelKey, primaryKey: primaryKey, children: children }), ...popperProps, popperRef: popperRef, onOpenChange: setOpen, onPointerDown: e => {
|
|
95
|
-
popperProps?.onPointerDown?.(e);
|
|
96
|
-
e.preventDefault();
|
|
97
|
-
}, children: renderInput
|
|
75
|
+
onInput: () => setOpen(true),
|
|
76
|
+
onClick: () => setOpen(true),
|
|
77
|
+
onFocus: () => setFocused(true),
|
|
78
|
+
onBlur: () => setFocused(false)
|
|
79
|
+
});
|
|
80
|
+
return (_jsx(Popper, { ...mergeComponentProps({
|
|
81
|
+
placement: 'bottom',
|
|
82
|
+
variant: 'collapse',
|
|
83
|
+
trigger: false,
|
|
84
|
+
content: (_jsx(OptionsBase, { onToggleSelected: optionSelectHandler, loading: innerLoading.current, options: actualOptions, labelKey: labelKey, primaryKey: primaryKey, children: children }))
|
|
85
|
+
}, popperProps, {
|
|
86
|
+
css: popperStyle,
|
|
87
|
+
open: open.current,
|
|
88
|
+
popperRef,
|
|
89
|
+
onOpenChange: setOpen,
|
|
90
|
+
onPointerDown: e => e.preventDefault()
|
|
91
|
+
}), children: renderInput
|
|
98
92
|
? renderInput(inputProps)
|
|
99
93
|
: _jsx(Input, { ...inputProps }) }));
|
|
100
94
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement,
|
|
1
|
+
import { ReactElement, ComponentProps } from 'react';
|
|
2
2
|
import { ColorPropsValue, DivProps, Size } from '../../types';
|
|
3
3
|
import { AvatarGroup } from './avatarGroup';
|
|
4
4
|
export interface AvatarProps extends DivProps {
|
|
@@ -6,7 +6,7 @@ export interface AvatarProps extends DivProps {
|
|
|
6
6
|
size?: Size | number | string;
|
|
7
7
|
shape?: 'circular' | 'square';
|
|
8
8
|
src?: string;
|
|
9
|
-
imgProps?:
|
|
9
|
+
imgProps?: ComponentProps<'img'>;
|
|
10
10
|
}
|
|
11
11
|
export declare function useAvatarStyle(props: Pick<AvatarProps, 'color' | 'size'>): {
|
|
12
12
|
color: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { memo, useMemo } from 'react';
|
|
3
3
|
import { classes, useStyle } from './avatar.style';
|
|
4
|
-
import {
|
|
4
|
+
import { mergeComponentProps } from '../../utils';
|
|
5
5
|
import { useTheme } from '../theme';
|
|
6
6
|
import { AvatarGroup } from './avatarGroup';
|
|
7
7
|
export function useAvatarStyle(props) {
|
|
@@ -18,11 +18,12 @@ export function useAvatarStyle(props) {
|
|
|
18
18
|
}
|
|
19
19
|
export const Avatar = memo(({ color, size, shape = 'circular', src, imgProps, ...props }) => {
|
|
20
20
|
const style = useAvatarStyle({ color, size });
|
|
21
|
-
return (_jsx("div", { ...
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
return (_jsx("div", { ...mergeComponentProps(props, {
|
|
22
|
+
css: useStyle({ color: style.color }),
|
|
23
|
+
className: classes.root,
|
|
24
|
+
style: { width: style.size }
|
|
25
|
+
}), "data-shape": shape, children: src
|
|
26
|
+
? _jsx("img", { ...mergeComponentProps({ src, alt: '' }, imgProps, { className: classes.img }) })
|
|
26
27
|
: props.children }));
|
|
27
28
|
});
|
|
28
29
|
Avatar.Group = AvatarGroup;
|
|
@@ -36,5 +36,5 @@ export const AvatarGroup = memo(({ color, size, shape = 'circular', imgProps, it
|
|
|
36
36
|
}
|
|
37
37
|
return _jsxs(Avatar, { children: ["+", surplus] });
|
|
38
38
|
};
|
|
39
|
-
return (_jsx("div", { ...props, css: style, className: clsx(classes.root), "data-hoverable": hoverable, children: _jsxs("div", { className: classes.wrap, children: [renderSurplusFn(), renderItems()] }) }));
|
|
39
|
+
return (_jsx("div", { ...props, css: style, className: clsx(classes.root, props.className), "data-hoverable": hoverable, children: _jsxs("div", { className: classes.wrap, children: [renderSurplusFn(), renderItems()] }) }));
|
|
40
40
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { Popper } from '../popper';
|
|
3
3
|
import { classes, style } from './bubbleConfirm.style';
|
|
4
|
-
import {
|
|
4
|
+
import { mergeComponentProps, useControlled, useLoading } from '../../utils';
|
|
5
5
|
import { Button } from '../button';
|
|
6
6
|
import { useTheme } from '../theme';
|
|
7
7
|
import { Icon } from '../icon';
|
|
@@ -18,6 +18,13 @@ export function BubbleConfirm({ icon = _jsx(Icon, { icon: faCircleQuestion }), t
|
|
|
18
18
|
await onConfirm?.(e);
|
|
19
19
|
_setInnerOpen(false);
|
|
20
20
|
}, loading);
|
|
21
|
-
return (_jsx(Popper, {
|
|
22
|
-
|
|
21
|
+
return (_jsx(Popper, { ...mergeComponentProps({ trigger: 'click' }, props, {
|
|
22
|
+
css: style,
|
|
23
|
+
className: classes.root,
|
|
24
|
+
offset,
|
|
25
|
+
open: innerOpen.current,
|
|
26
|
+
onOpenChange: setInnerOpen,
|
|
27
|
+
content: (_jsxs("div", { className: classes.bubble, "data-show-arrow": showArrow, children: [_jsx("div", { className: classes.icon, children: icon }), _jsxs("div", { className: classes.info, children: [_jsx("div", { className: classes.title, children: title }), _jsx("div", { className: classes.content, children: props.content }), _jsx("div", { className: classes.footer, children: footer ??
|
|
28
|
+
_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outlined", size: "small", onClick: () => setInnerOpen(false), children: "\u53D6\u6D88" }), _jsx(Button, { size: "small", loading: innerLoading.current, onClick: confirmHandler, children: "\u786E\u5B9A" })] }) })] })] }))
|
|
29
|
+
}) }));
|
|
23
30
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dispatch, ReactElement, ReactNode, Ref, SetStateAction,
|
|
1
|
+
import { Dispatch, ReactElement, ReactNode, Ref, SetStateAction, ComponentProps } from 'react';
|
|
2
2
|
import { InputProps } from '../input';
|
|
3
3
|
import { InputBaseProps } from '../inputBase';
|
|
4
4
|
import { PopperProps, PopperRef } from '../popper';
|
|
@@ -7,7 +7,7 @@ import { MenuOptionType, OptionsBaseSharedProps } from '../optionsBase';
|
|
|
7
7
|
import { Id, SelectableMultipleProps, SelectableSingleProps } from '../../types';
|
|
8
8
|
export interface CascadeBaseProps<O extends MenuOptionType<V>, V extends Id = Id> extends Omit<OptionsBaseSharedProps<O>, 'filterPredicate'>, Omit<InputBaseProps<'input'>, 'children' | 'defaultValue' | 'value' | 'onChange'> {
|
|
9
9
|
/** cascade内部由<input />实现 */
|
|
10
|
-
inputProps?:
|
|
10
|
+
inputProps?: ComponentProps<'input'>;
|
|
11
11
|
defaultOpen?: boolean;
|
|
12
12
|
open?: boolean;
|
|
13
13
|
onOpenChange?(open: boolean): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { createContext, memo, useContext, useDeferredValue, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
import { useControlled, useLoading, useKeyboard, joinNodes, clsx,
|
|
3
|
+
import { useControlled, useLoading, useKeyboard, joinNodes, clsx, toArray, mergeComponentProps } from '../../utils';
|
|
4
4
|
import { Input } from '../input';
|
|
5
5
|
import { InputBase } from '../inputBase';
|
|
6
6
|
import { Popper } from '../popper';
|
|
@@ -33,12 +33,7 @@ loading, options, labelKey = 'label', primaryKey = 'value', childrenKey = 'child
|
|
|
33
33
|
* 打开的弹框与面板
|
|
34
34
|
*/
|
|
35
35
|
const [innerOpen, setInnerOpen] = useControlled(defaultOpen, open, onOpenChange);
|
|
36
|
-
const openChangeHandler = (open) => {
|
|
37
|
-
popperProps?.onOpenChange?.(open);
|
|
38
|
-
setInnerOpen(open);
|
|
39
|
-
};
|
|
40
36
|
const onOpenChangeEnd = (open) => {
|
|
41
|
-
popperProps?.onOpenChangeEnd?.(open);
|
|
42
37
|
// 关闭动画结束后清空搜索框
|
|
43
38
|
searchable && !open && setInnerSearchValue('');
|
|
44
39
|
};
|
|
@@ -113,8 +108,7 @@ loading, options, labelKey = 'label', primaryKey = 'value', childrenKey = 'child
|
|
|
113
108
|
clearable,
|
|
114
109
|
integration
|
|
115
110
|
});
|
|
116
|
-
const
|
|
117
|
-
props.onClear?.();
|
|
111
|
+
const onClear = () => {
|
|
118
112
|
setInnerValue([]);
|
|
119
113
|
setOpenedPanels([]);
|
|
120
114
|
};
|
|
@@ -191,19 +185,37 @@ loading, options, labelKey = 'label', primaryKey = 'value', childrenKey = 'child
|
|
|
191
185
|
return (_jsx("div", { className: classes.backfillWrap, children: joinNodes(pathifiedValue.current, v => optionsMap.get(v)?.[labelKey] ?? v.toString()) }));
|
|
192
186
|
}
|
|
193
187
|
};
|
|
194
|
-
return (_jsx(Popper, {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
188
|
+
return (_jsx(Popper, { ...mergeComponentProps({
|
|
189
|
+
css: cascadePopperStyle,
|
|
190
|
+
open: innerOpen.current,
|
|
191
|
+
placement: 'bottomLeft',
|
|
192
|
+
trigger: ['click', 'enter'],
|
|
193
|
+
disabled: props.disabled,
|
|
194
|
+
content: (_jsxs("div", { children: [searchable &&
|
|
195
|
+
_jsx(Input, { prefix: _jsx(Icon, { icon: faMagnifyingGlass }), placeholder: "\u641C\u7D22", value: innerSearchValue.current, ...searchInputProps, className: clsx(classes.searchInput, searchInputProps?.className), onChange: e => {
|
|
196
|
+
searchInputProps?.onChange?.(e);
|
|
197
|
+
setInnerSearchValue(e.target.value);
|
|
198
|
+
} }), deferredSearchValue
|
|
199
|
+
? _jsx(SearchResult, { primaryKey: primaryKey, labelKey: labelKey, childrenKey: childrenKey, searchTokenKey: searchTokenKey, options: actualOptions, searchValue: deferredSearchValue, onSelect: toggleSelected, selectionStatus: selectionStatus })
|
|
200
|
+
: _jsx("div", { className: classes.panelContainer, children: _jsx(CascadeContext, { value: {
|
|
201
|
+
innerLoading: innerLoading.current, loadingOption, multiple, showCheckbox,
|
|
202
|
+
primaryKey, labelKey, childrenKey, pathifiedValue: pathifiedValue.current,
|
|
203
|
+
selectionStatus, optionsMap,
|
|
204
|
+
openedPanels, onOptionClick, onCheckboxClick,
|
|
205
|
+
verticalIndex: verticalIndex.current, setVerticalIndex, horizontalIndex: horizontalIndex.current
|
|
206
|
+
}, children: _jsx(CascadePanel, { options: actualOptions }) }) })] }))
|
|
207
|
+
}, popperProps, {
|
|
208
|
+
popperRef,
|
|
209
|
+
onOpenChange: setInnerOpen,
|
|
210
|
+
onOpenChangeEnd
|
|
211
|
+
}), children: _jsx(InputBase, { ...mergeComponentProps(props, {
|
|
212
|
+
css: style,
|
|
213
|
+
className: classes.root,
|
|
214
|
+
onClear,
|
|
215
|
+
clearable,
|
|
216
|
+
value: pathifiedValue.current,
|
|
217
|
+
loading: innerLoading.current
|
|
218
|
+
}), "data-focused": innerOpen.current, children: inputBaseProps => _jsxs("div", { className: classes.contentWrap, children: [!pathifiedValue.current?.length
|
|
207
219
|
? _jsx("div", { className: classes.placeholder, children: props.placeholder })
|
|
208
|
-
: _jsx("div", { className: classes.backfill, children: renderBackfillFn() }), _jsx("input", { ...
|
|
220
|
+
: _jsx("div", { className: classes.backfill, children: renderBackfillFn() }), _jsx("input", { ...mergeComponentProps(inputBaseProps, inputProps), "data-hidden": "true" }), _jsx("div", { className: classes.arrow, "data-open": innerOpen.current, children: _jsx(Icon, { icon: faCaretDown }) })] }) }) }));
|
|
209
221
|
});
|
|
@@ -6,7 +6,7 @@ import { Placeholder } from '../placeholder';
|
|
|
6
6
|
import { classes } from './cascade.style';
|
|
7
7
|
import { Collapse } from '../transitionBase';
|
|
8
8
|
import { useCascadeContext } from './cascade';
|
|
9
|
-
import { isUnset } from '../../utils';
|
|
9
|
+
import { isUnset, mergeComponentProps } from '../../utils';
|
|
10
10
|
import { Icon } from '../icon';
|
|
11
11
|
import { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';
|
|
12
12
|
export function CascadePanel({ options, index = 0 }) {
|
|
@@ -36,20 +36,30 @@ export function CascadePanel({ options, index = 0 }) {
|
|
|
36
36
|
const status = selectionStatus?.get(optVal);
|
|
37
37
|
const opened = openedPanels[index] === optVal;
|
|
38
38
|
const hasChildren = !!opt[childrenKey]?.length;
|
|
39
|
-
return (_jsx(MenuItem, {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
return (_jsx(MenuItem, { ...mergeComponentProps({
|
|
40
|
+
showCheckbox,
|
|
41
|
+
key: optVal
|
|
42
|
+
}, opt, {
|
|
43
|
+
checkboxProps: mergeComponentProps(opt?.checkboxProps, showCheckbox
|
|
44
|
+
? {
|
|
45
|
+
indeterminate: status === 1,
|
|
46
|
+
checked: status === 2,
|
|
47
|
+
async onClick(e) {
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
onCheckboxClick(opt, index);
|
|
50
|
+
}
|
|
48
51
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
:
|
|
52
|
+
: void 0),
|
|
53
|
+
selected: isSelected(optVal) || (opened && hasChildren),
|
|
54
|
+
focused: horizontalIndex === index && verticalIndex === i,
|
|
55
|
+
label: opt[labelKey],
|
|
56
|
+
onClick: () => onOptionClick(opt, index),
|
|
57
|
+
onPointerEnter,
|
|
58
|
+
suffix: innerLoading && loadingOption === optVal
|
|
59
|
+
? _jsx(LoadingIndicator, {})
|
|
60
|
+
: hasChildren && _jsx(Icon, { icon: faChevronRight }),
|
|
61
|
+
children: null
|
|
62
|
+
}) }));
|
|
53
63
|
});
|
|
54
64
|
};
|
|
55
65
|
const nextOptions = optionsMap.get(openedPanels[index])?.[childrenKey];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React, { ReactNode,
|
|
1
|
+
import React, { ReactNode, ComponentProps } from 'react';
|
|
2
2
|
import { ColorPropsValue, DivProps, Id, Size } from '../../types';
|
|
3
3
|
export interface CheckboxBaseProps extends DivProps {
|
|
4
|
-
inputProps?:
|
|
4
|
+
inputProps?: ComponentProps<'input'>;
|
|
5
5
|
/** @private 内部使用 */
|
|
6
6
|
_type: 'checkbox' | 'radio';
|
|
7
7
|
size?: Size;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { memo, useRef } from 'react';
|
|
3
|
-
import { clsx,
|
|
3
|
+
import { clsx, useControlled, useTouchSpread, mergeComponentProps } from '../../utils';
|
|
4
4
|
import { classes, useStyle } from './checkboxBase.style';
|
|
5
5
|
import { useCheckboxBaseGroupContext } from '../checkboxBaseGroup';
|
|
6
6
|
import { Icon } from '../icon';
|
|
@@ -28,7 +28,7 @@ export const CheckboxBase = memo(({ inputProps, _type, size, color, label, value
|
|
|
28
28
|
onChange?.(e);
|
|
29
29
|
setInnerChecked(newChecked);
|
|
30
30
|
};
|
|
31
|
-
const
|
|
31
|
+
const onKeyDown = (e) => {
|
|
32
32
|
inputProps?.onKeyDown?.(e);
|
|
33
33
|
e.key === 'Enter' && clickHandler(e);
|
|
34
34
|
};
|
|
@@ -41,5 +41,12 @@ export const CheckboxBase = memo(({ inputProps, _type, size, color, label, value
|
|
|
41
41
|
: _jsx("div", { ref: checkboxRef, className: `${classes.checkbox} ${classes.radio}`, children: innerChecked.current
|
|
42
42
|
? _jsx("div", { className: classes.radioChecked })
|
|
43
43
|
: null }), !!label &&
|
|
44
|
-
_jsx("div", { className: classes.label, children: label }), _jsx("input", {
|
|
44
|
+
_jsx("div", { className: classes.label, children: label }), _jsx("input", { ...mergeComponentProps({
|
|
45
|
+
type: _type,
|
|
46
|
+
disabled,
|
|
47
|
+
readOnly,
|
|
48
|
+
ref: innerInputRef,
|
|
49
|
+
className: classes.input,
|
|
50
|
+
onKeyDown
|
|
51
|
+
}, inputProps) })] }));
|
|
45
52
|
});
|
|
@@ -7,20 +7,20 @@ import { classes } from './checkboxBaseGroup.style';
|
|
|
7
7
|
import { Checkbox } from '../checkbox';
|
|
8
8
|
import { Radio } from '../radio';
|
|
9
9
|
import { useTheme } from '../theme';
|
|
10
|
-
import {
|
|
10
|
+
import { useFlatSelection } from '../selectionContext';
|
|
11
11
|
const CheckboxBaseGroupContext = createContext({});
|
|
12
12
|
export function useCheckboxBaseGroupContext() {
|
|
13
13
|
return useContext(CheckboxBaseGroupContext);
|
|
14
14
|
}
|
|
15
15
|
export const CheckboxBaseGroup = (({ size, color, items, primaryKey = 'value', multiple, defaultValue, value, onChange, ...props }) => {
|
|
16
16
|
const { spacing } = useTheme();
|
|
17
|
-
const [innerValue, toggleSelected] =
|
|
17
|
+
const [innerValue, toggleSelected] = useFlatSelection({ multiple, defaultValue, value, onChange });
|
|
18
18
|
const renderItems = () => {
|
|
19
19
|
if (items) {
|
|
20
20
|
return items.map((p, i) => {
|
|
21
21
|
const Component = multiple ? Checkbox : Radio;
|
|
22
22
|
const itemValue = p[primaryKey];
|
|
23
|
-
return (_createElement(Component, { ...p, key: p.key ?? itemValue ?? i,
|
|
23
|
+
return (_createElement(Component, { size: size, color: color, ...p, key: p.key ?? itemValue ?? i, checked: isSelected(itemValue, innerValue), onChange: e => {
|
|
24
24
|
p.onChange?.(e);
|
|
25
25
|
toggleSelected(itemValue);
|
|
26
26
|
} }));
|