@douyinfe/semi-ui 2.2.1 → 2.3.1
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/_base/_story/a11y.jsx +6 -6
- package/_base/_story/a11y.scss +0 -1
- package/_base/_story/index.scss +2 -5
- package/_utils/hooks/usePrevFocus.ts +16 -0
- package/_utils/index.ts +4 -0
- package/anchor/_story/anchor.stories.js +1 -1
- package/anchor/index.tsx +5 -2
- package/anchor/link.tsx +29 -4
- package/autoComplete/index.tsx +28 -1
- package/avatar/_story/avatar.stories.js +4 -4
- package/avatar/index.tsx +6 -4
- package/banner/index.tsx +2 -1
- package/breadcrumb/_story/breadcrumb.stories.js +22 -8
- package/breadcrumb/index.tsx +8 -1
- package/breadcrumb/item.tsx +1 -1
- package/button/Button.tsx +4 -0
- package/button/__test__/button.test.js +1 -1
- package/button/_story/button.stories.js +10 -10
- package/button/buttonGroup.tsx +4 -2
- package/button/splitButtonGroup.tsx +5 -2
- package/card/_story/card.stories.js +8 -1
- package/card/_story/card.stories.tsx +3 -0
- package/card/index.tsx +5 -2
- package/cascader/index.tsx +33 -5
- package/checkbox/_story/checkbox.stories.js +19 -12
- package/checkbox/checkbox.tsx +40 -5
- package/checkbox/checkboxGroup.tsx +30 -5
- package/checkbox/checkboxInner.tsx +25 -2
- package/collapse/index.tsx +1 -1
- package/collapse/item.tsx +12 -7
- package/collapsible/index.tsx +4 -2
- package/configProvider/_story/configProvider.stories.tsx +27 -0
- package/datePicker/__test__/datePicker.test.js +93 -0
- package/datePicker/_story/datePicker.stories.js +84 -1
- package/datePicker/datePicker.tsx +21 -0
- package/datePicker/monthsGrid.tsx +2 -1
- package/dist/css/semi.css +8 -3
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2490 -1255
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/dropdown/dropdownItem.tsx +1 -1
- package/dropdown/dropdownMenu.tsx +1 -1
- package/dropdown/index.tsx +11 -3
- package/empty/index.tsx +4 -4
- package/form/_story/FormApi/formApiDemo.jsx +3 -2
- package/form/_story/Validate/validateDemo.jsx +1 -1
- package/form/_story/demo.jsx +12 -3
- package/form/_story/form.stories.js +0 -7
- package/form/baseForm.tsx +2 -0
- package/form/errorMessage.tsx +13 -2
- package/form/hoc/withField.tsx +37 -8
- package/form/index.tsx +0 -2
- package/form/interface.ts +2 -0
- package/form/label.tsx +4 -2
- package/input/index.tsx +49 -4
- package/input/inputGroup.tsx +9 -4
- package/input/textarea.tsx +25 -6
- package/inputNumber/_story/inputNumber.stories.js +12 -0
- package/inputNumber/index.tsx +35 -3
- package/layout/Sider.tsx +6 -2
- package/layout/index.tsx +4 -3
- package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +6 -1
- package/lib/cjs/anchor/index.d.ts +2 -0
- package/lib/cjs/anchor/index.js +6 -1
- package/lib/cjs/anchor/link.d.ts +4 -1
- package/lib/cjs/anchor/link.js +39 -5
- package/lib/cjs/autoComplete/index.d.ts +17 -0
- package/lib/cjs/autoComplete/index.js +21 -2
- package/lib/cjs/avatar/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +15 -11
- package/lib/cjs/banner/index.js +4 -2
- package/lib/cjs/breadcrumb/index.d.ts +3 -0
- package/lib/cjs/breadcrumb/index.js +10 -4
- package/lib/cjs/breadcrumb/item.js +2 -2
- package/lib/cjs/button/Button.d.ts +2 -0
- package/lib/cjs/button/Button.js +4 -2
- package/lib/cjs/button/buttonGroup.d.ts +3 -0
- package/lib/cjs/button/buttonGroup.js +8 -4
- package/lib/cjs/button/index.d.ts +1 -0
- package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
- package/lib/cjs/button/splitButtonGroup.js +5 -2
- package/lib/cjs/card/index.d.ts +3 -0
- package/lib/cjs/card/index.js +3 -1
- package/lib/cjs/cascader/index.d.ts +14 -0
- package/lib/cjs/cascader/index.js +35 -7
- package/lib/cjs/checkbox/checkbox.d.ts +21 -1
- package/lib/cjs/checkbox/checkbox.js +51 -17
- package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/cjs/checkbox/checkboxGroup.js +16 -3
- package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
- package/lib/cjs/checkbox/checkboxInner.js +20 -3
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +12 -2
- package/lib/cjs/collapsible/index.d.ts +1 -0
- package/lib/cjs/collapsible/index.js +4 -2
- package/lib/cjs/datePicker/datePicker.d.ts +12 -0
- package/lib/cjs/datePicker/datePicker.js +18 -3
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
- package/lib/cjs/datePicker/monthsGrid.js +2 -1
- package/lib/cjs/dropdown/dropdownItem.js +3 -1
- package/lib/cjs/dropdown/dropdownMenu.js +4 -1
- package/lib/cjs/dropdown/index.d.ts +10 -3
- package/lib/cjs/form/baseForm.d.ts +9 -0
- package/lib/cjs/form/baseForm.js +3 -1
- package/lib/cjs/form/errorMessage.d.ts +4 -0
- package/lib/cjs/form/errorMessage.js +21 -3
- package/lib/cjs/form/field.d.ts +7 -0
- package/lib/cjs/form/hoc/withField.js +49 -16
- package/lib/cjs/form/index.d.ts +0 -1
- package/lib/cjs/form/interface.d.ts +2 -0
- package/lib/cjs/form/label.d.ts +2 -0
- package/lib/cjs/form/label.js +5 -2
- package/lib/cjs/input/index.d.ts +16 -0
- package/lib/cjs/input/index.js +51 -15
- package/lib/cjs/input/inputGroup.d.ts +2 -1
- package/lib/cjs/input/inputGroup.js +11 -1
- package/lib/cjs/input/textarea.js +12 -1
- package/lib/cjs/inputNumber/index.d.ts +21 -12
- package/lib/cjs/inputNumber/index.js +40 -5
- package/lib/cjs/layout/Sider.d.ts +4 -0
- package/lib/cjs/layout/Sider.js +4 -1
- package/lib/cjs/layout/index.js +2 -0
- package/lib/cjs/list/index.d.ts +4 -4
- package/lib/cjs/list/item.js +0 -1
- package/lib/cjs/modal/Modal.js +2 -0
- package/lib/cjs/modal/ModalContent.d.ts +3 -1
- package/lib/cjs/modal/ModalContent.js +47 -5
- package/lib/cjs/navigation/Item.d.ts +4 -2
- package/lib/cjs/navigation/Item.js +25 -5
- package/lib/cjs/navigation/SubNav.d.ts +4 -2
- package/lib/cjs/navigation/SubNav.js +8 -1
- package/lib/cjs/navigation/index.js +2 -0
- package/lib/cjs/notification/notice.d.ts +1 -1
- package/lib/cjs/notification/notice.js +32 -22
- package/lib/cjs/pagination/index.js +16 -6
- package/lib/cjs/popover/index.js +7 -3
- package/lib/cjs/progress/index.d.ts +8 -0
- package/lib/cjs/progress/index.js +42 -9
- package/lib/cjs/radio/radio.d.ts +6 -1
- package/lib/cjs/radio/radio.js +17 -5
- package/lib/cjs/radio/radioGroup.d.ts +16 -1
- package/lib/cjs/radio/radioGroup.js +18 -3
- package/lib/cjs/radio/radioInner.d.ts +6 -1
- package/lib/cjs/radio/radioInner.js +11 -3
- package/lib/cjs/rating/index.d.ts +14 -0
- package/lib/cjs/rating/index.js +14 -3
- package/lib/cjs/rating/item.d.ts +2 -0
- package/lib/cjs/rating/item.js +6 -1
- package/lib/cjs/select/index.d.ts +16 -0
- package/lib/cjs/select/index.js +65 -19
- package/lib/cjs/select/option.js +28 -22
- package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
- package/lib/cjs/sideSheet/index.d.ts +1 -0
- package/lib/cjs/sideSheet/index.js +2 -1
- package/lib/cjs/slider/index.d.ts +2 -1
- package/lib/cjs/slider/index.js +64 -17
- package/lib/cjs/spin/icon.js +3 -4
- package/lib/cjs/steps/basicStep.d.ts +3 -0
- package/lib/cjs/steps/basicStep.js +23 -25
- package/lib/cjs/steps/basicSteps.d.ts +1 -0
- package/lib/cjs/steps/basicSteps.js +2 -1
- package/lib/cjs/steps/fillStep.d.ts +3 -0
- package/lib/cjs/steps/fillStep.js +19 -4
- package/lib/cjs/steps/fillSteps.d.ts +1 -0
- package/lib/cjs/steps/fillSteps.js +2 -1
- package/lib/cjs/steps/navStep.d.ts +3 -0
- package/lib/cjs/steps/navStep.js +22 -25
- package/lib/cjs/steps/navSteps.d.ts +1 -0
- package/lib/cjs/steps/navSteps.js +2 -1
- package/lib/cjs/switch/index.d.ts +12 -0
- package/lib/cjs/switch/index.js +19 -4
- package/lib/cjs/table/Body/BaseRow.js +35 -3
- package/lib/cjs/table/Body/index.js +9 -1
- package/lib/cjs/table/ColumnFilter.js +4 -0
- package/lib/cjs/table/ColumnSelection.d.ts +3 -0
- package/lib/cjs/table/ColumnSelection.js +6 -2
- package/lib/cjs/table/ColumnSorter.js +19 -3
- package/lib/cjs/table/CustomExpandIcon.js +7 -1
- package/lib/cjs/table/Table.d.ts +2 -0
- package/lib/cjs/table/Table.js +31 -15
- package/lib/cjs/table/TableCell.d.ts +2 -0
- package/lib/cjs/table/TableCell.js +6 -2
- package/lib/cjs/table/TableHeaderRow.js +8 -2
- package/lib/cjs/tabs/TabBar.js +11 -3
- package/lib/cjs/tabs/TabPane.js +3 -1
- package/lib/cjs/tabs/index.js +0 -1
- package/lib/cjs/tagInput/index.d.ts +4 -1
- package/lib/cjs/tagInput/index.js +29 -3
- package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
- package/lib/cjs/timePicker/TimePicker.js +9 -1
- package/lib/cjs/timePicker/index.d.ts +6 -0
- package/lib/cjs/timeline/index.d.ts +1 -1
- package/lib/cjs/timeline/index.js +1 -0
- package/lib/cjs/timeline/item.js +4 -2
- package/lib/cjs/toast/toast.js +2 -0
- package/lib/cjs/tooltip/TriangleArrow.js +1 -0
- package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/cjs/tooltip/index.d.ts +16 -12
- package/lib/cjs/tooltip/index.js +55 -39
- package/lib/cjs/transfer/index.d.ts +1 -1
- package/lib/cjs/transfer/index.js +35 -17
- package/lib/cjs/tree/index.d.ts +1 -0
- package/lib/cjs/tree/index.js +15 -6
- package/lib/cjs/tree/treeNode.d.ts +12 -4
- package/lib/cjs/tree/treeNode.js +44 -4
- package/lib/cjs/treeSelect/index.d.ts +16 -0
- package/lib/cjs/treeSelect/index.js +60 -12
- package/lib/cjs/typography/base.js +18 -7
- package/lib/cjs/typography/copyable.js +6 -1
- package/lib/cjs/upload/fileCard.js +26 -7
- package/lib/cjs/upload/index.js +19 -4
- package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +4 -1
- package/lib/es/anchor/index.d.ts +2 -0
- package/lib/es/anchor/index.js +6 -1
- package/lib/es/anchor/link.d.ts +4 -1
- package/lib/es/anchor/link.js +38 -5
- package/lib/es/autoComplete/index.d.ts +17 -0
- package/lib/es/autoComplete/index.js +21 -2
- package/lib/es/avatar/index.d.ts +4 -3
- package/lib/es/avatar/index.js +15 -11
- package/lib/es/banner/index.js +4 -2
- package/lib/es/breadcrumb/index.d.ts +3 -0
- package/lib/es/breadcrumb/index.js +10 -4
- package/lib/es/breadcrumb/item.js +2 -2
- package/lib/es/button/Button.d.ts +2 -0
- package/lib/es/button/Button.js +4 -2
- package/lib/es/button/buttonGroup.d.ts +3 -0
- package/lib/es/button/buttonGroup.js +8 -4
- package/lib/es/button/index.d.ts +1 -0
- package/lib/es/button/splitButtonGroup.d.ts +3 -0
- package/lib/es/button/splitButtonGroup.js +5 -2
- package/lib/es/card/index.d.ts +3 -0
- package/lib/es/card/index.js +3 -1
- package/lib/es/cascader/index.d.ts +14 -0
- package/lib/es/cascader/index.js +35 -7
- package/lib/es/checkbox/checkbox.d.ts +21 -1
- package/lib/es/checkbox/checkbox.js +50 -17
- package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/es/checkbox/checkboxGroup.js +18 -5
- package/lib/es/checkbox/checkboxInner.d.ts +15 -0
- package/lib/es/checkbox/checkboxInner.js +20 -3
- package/lib/es/collapse/item.d.ts +2 -1
- package/lib/es/collapse/item.js +11 -2
- package/lib/es/collapsible/index.d.ts +1 -0
- package/lib/es/collapsible/index.js +4 -2
- package/lib/es/datePicker/datePicker.d.ts +12 -0
- package/lib/es/datePicker/datePicker.js +18 -3
- package/lib/es/datePicker/monthsGrid.d.ts +1 -0
- package/lib/es/datePicker/monthsGrid.js +2 -1
- package/lib/es/dropdown/dropdownItem.js +3 -1
- package/lib/es/dropdown/dropdownMenu.js +4 -1
- package/lib/es/dropdown/index.d.ts +10 -3
- package/lib/es/form/baseForm.d.ts +9 -0
- package/lib/es/form/baseForm.js +3 -1
- package/lib/es/form/errorMessage.d.ts +4 -0
- package/lib/es/form/errorMessage.js +21 -3
- package/lib/es/form/field.d.ts +7 -0
- package/lib/es/form/hoc/withField.js +48 -15
- package/lib/es/form/index.d.ts +0 -1
- package/lib/es/form/index.js +0 -1
- package/lib/es/form/interface.d.ts +2 -0
- package/lib/es/form/label.d.ts +2 -0
- package/lib/es/form/label.js +5 -2
- package/lib/es/input/index.d.ts +16 -0
- package/lib/es/input/index.js +51 -15
- package/lib/es/input/inputGroup.d.ts +2 -1
- package/lib/es/input/inputGroup.js +11 -1
- package/lib/es/input/textarea.js +12 -1
- package/lib/es/inputNumber/index.d.ts +21 -12
- package/lib/es/inputNumber/index.js +41 -5
- package/lib/es/layout/Sider.d.ts +4 -0
- package/lib/es/layout/Sider.js +4 -1
- package/lib/es/layout/index.js +2 -0
- package/lib/es/list/index.d.ts +4 -4
- package/lib/es/list/item.js +0 -1
- package/lib/es/modal/Modal.js +2 -0
- package/lib/es/modal/ModalContent.d.ts +3 -1
- package/lib/es/modal/ModalContent.js +46 -5
- package/lib/es/navigation/Item.d.ts +4 -2
- package/lib/es/navigation/Item.js +25 -5
- package/lib/es/navigation/SubNav.d.ts +4 -2
- package/lib/es/navigation/SubNav.js +8 -1
- package/lib/es/navigation/index.js +2 -0
- package/lib/es/notification/notice.d.ts +1 -1
- package/lib/es/notification/notice.js +33 -24
- package/lib/es/pagination/index.js +16 -6
- package/lib/es/popover/index.js +7 -3
- package/lib/es/progress/index.d.ts +8 -0
- package/lib/es/progress/index.js +42 -9
- package/lib/es/radio/radio.d.ts +6 -1
- package/lib/es/radio/radio.js +16 -5
- package/lib/es/radio/radioGroup.d.ts +16 -1
- package/lib/es/radio/radioGroup.js +18 -3
- package/lib/es/radio/radioInner.d.ts +6 -1
- package/lib/es/radio/radioInner.js +11 -3
- package/lib/es/rating/index.d.ts +14 -0
- package/lib/es/rating/index.js +14 -3
- package/lib/es/rating/item.d.ts +2 -0
- package/lib/es/rating/item.js +6 -1
- package/lib/es/select/index.d.ts +16 -0
- package/lib/es/select/index.js +63 -17
- package/lib/es/select/option.js +28 -22
- package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/es/sideSheet/SideSheetContent.js +4 -1
- package/lib/es/sideSheet/index.d.ts +1 -0
- package/lib/es/sideSheet/index.js +2 -1
- package/lib/es/slider/index.d.ts +2 -1
- package/lib/es/slider/index.js +63 -16
- package/lib/es/spin/icon.js +3 -4
- package/lib/es/steps/basicStep.d.ts +3 -0
- package/lib/es/steps/basicStep.js +23 -23
- package/lib/es/steps/basicSteps.d.ts +1 -0
- package/lib/es/steps/basicSteps.js +2 -1
- package/lib/es/steps/fillStep.d.ts +3 -0
- package/lib/es/steps/fillStep.js +19 -4
- package/lib/es/steps/fillSteps.d.ts +1 -0
- package/lib/es/steps/fillSteps.js +2 -1
- package/lib/es/steps/navStep.d.ts +3 -0
- package/lib/es/steps/navStep.js +22 -23
- package/lib/es/steps/navSteps.d.ts +1 -0
- package/lib/es/steps/navSteps.js +2 -1
- package/lib/es/switch/index.d.ts +12 -0
- package/lib/es/switch/index.js +19 -4
- package/lib/es/table/Body/BaseRow.js +35 -3
- package/lib/es/table/Body/index.js +9 -2
- package/lib/es/table/ColumnFilter.js +4 -0
- package/lib/es/table/ColumnSelection.d.ts +3 -0
- package/lib/es/table/ColumnSelection.js +6 -2
- package/lib/es/table/ColumnSorter.js +17 -3
- package/lib/es/table/CustomExpandIcon.js +6 -1
- package/lib/es/table/Table.d.ts +2 -0
- package/lib/es/table/Table.js +31 -15
- package/lib/es/table/TableCell.d.ts +2 -0
- package/lib/es/table/TableCell.js +6 -2
- package/lib/es/table/TableHeaderRow.js +8 -2
- package/lib/es/tabs/TabBar.js +11 -3
- package/lib/es/tabs/TabPane.js +3 -1
- package/lib/es/tabs/index.js +0 -1
- package/lib/es/tagInput/index.d.ts +4 -1
- package/lib/es/tagInput/index.js +29 -3
- package/lib/es/timePicker/TimePicker.d.ts +12 -0
- package/lib/es/timePicker/TimePicker.js +9 -1
- package/lib/es/timePicker/index.d.ts +6 -0
- package/lib/es/timeline/index.d.ts +1 -1
- package/lib/es/timeline/index.js +1 -0
- package/lib/es/timeline/item.js +4 -2
- package/lib/es/toast/toast.js +2 -0
- package/lib/es/tooltip/TriangleArrow.js +1 -0
- package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/es/tooltip/index.d.ts +16 -12
- package/lib/es/tooltip/index.js +53 -39
- package/lib/es/transfer/index.d.ts +1 -1
- package/lib/es/transfer/index.js +35 -17
- package/lib/es/tree/index.d.ts +1 -0
- package/lib/es/tree/index.js +15 -6
- package/lib/es/tree/treeNode.d.ts +12 -4
- package/lib/es/tree/treeNode.js +44 -4
- package/lib/es/treeSelect/index.d.ts +16 -0
- package/lib/es/treeSelect/index.js +57 -10
- package/lib/es/typography/base.js +17 -7
- package/lib/es/typography/copyable.js +5 -1
- package/lib/es/upload/fileCard.js +26 -7
- package/lib/es/upload/index.js +19 -4
- package/list/index.tsx +5 -5
- package/list/item.tsx +0 -1
- package/modal/Modal.tsx +2 -0
- package/modal/ModalContent.tsx +35 -5
- package/navigation/Item.tsx +15 -0
- package/navigation/SubNav.tsx +13 -1
- package/navigation/index.tsx +1 -1
- package/notification/notice.tsx +19 -14
- package/package.json +8 -8
- package/pagination/index.tsx +9 -5
- package/popover/index.tsx +5 -0
- package/progress/_story/progress.stories.js +18 -18
- package/progress/index.tsx +58 -20
- package/radio/radio.tsx +12 -2
- package/radio/radioGroup.tsx +29 -3
- package/radio/radioInner.tsx +10 -1
- package/rating/index.tsx +19 -2
- package/rating/item.tsx +6 -0
- package/select/__test__/select.test.js +45 -0
- package/select/_story/select.stories.js +29 -0
- package/select/index.tsx +52 -4
- package/select/option.tsx +3 -0
- package/sideSheet/SideSheetContent.tsx +6 -4
- package/sideSheet/index.tsx +3 -2
- package/slider/__test__/slider.test.js +9 -0
- package/slider/_story/slider.stories.js +1 -1
- package/slider/index.tsx +44 -7
- package/spin/icon.tsx +4 -3
- package/steps/basicStep.tsx +15 -4
- package/steps/basicSteps.tsx +3 -2
- package/steps/fillStep.tsx +27 -12
- package/steps/fillSteps.tsx +2 -0
- package/steps/navStep.tsx +15 -4
- package/steps/navSteps.tsx +3 -2
- package/switch/_story/switch.stories.js +20 -19
- package/switch/_story/switch.stories.tsx +13 -13
- package/switch/index.tsx +23 -5
- package/table/Body/BaseRow.tsx +25 -1
- package/table/Body/index.tsx +7 -2
- package/table/ColumnFilter.tsx +7 -1
- package/table/ColumnSelection.tsx +4 -1
- package/table/ColumnSorter.tsx +18 -1
- package/table/CustomExpandIcon.tsx +5 -0
- package/table/Table.tsx +26 -13
- package/table/TableCell.tsx +11 -1
- package/table/TableHeaderRow.tsx +16 -2
- package/table/__test__/table.test.js +46 -0
- package/tabs/TabBar.tsx +8 -5
- package/tabs/TabPane.tsx +3 -1
- package/tabs/index.tsx +0 -1
- package/tagInput/__test__/tagInput.test.js +46 -0
- package/tagInput/_story/tagInput.stories.js +2 -2
- package/tagInput/index.tsx +31 -8
- package/timePicker/TimePicker.tsx +14 -1
- package/timeline/_story/timeline.stories.js +1 -1
- package/timeline/index.tsx +2 -2
- package/timeline/item.tsx +2 -1
- package/toast/toast.tsx +2 -0
- package/tooltip/TriangleArrow.tsx +1 -1
- package/tooltip/TriangleArrowVertical.tsx +1 -1
- package/tooltip/_story/tooltip.stories.js +562 -514
- package/tooltip/index.tsx +51 -33
- package/transfer/index.tsx +32 -28
- package/tree/_story/tree.stories.js +3 -3
- package/tree/index.tsx +10 -2
- package/tree/treeNode.tsx +46 -10
- package/treeSelect/__test__/treeMultiple.test.js +5 -0
- package/treeSelect/_story/treeSelect.stories.js +12 -0
- package/treeSelect/index.tsx +58 -7
- package/typography/base.tsx +7 -1
- package/typography/copyable.tsx +10 -1
- package/upload/fileCard.tsx +14 -16
- package/upload/index.tsx +10 -6
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import classnames from 'classnames';
|
|
5
5
|
import { checkboxGroupClasses as css, strings } from '@douyinfe/semi-foundation/checkbox/constants';
|
|
6
|
-
import
|
|
6
|
+
import CheckboxGroupFoundation, { CheckboxGroupAdapter } from '@douyinfe/semi-foundation/checkbox/checkboxGroupFoundation';
|
|
7
7
|
import BaseComponent from '../_base/baseComponent';
|
|
8
8
|
import { Context } from './context';
|
|
9
9
|
import { isEqual } from 'lodash';
|
|
@@ -13,6 +13,11 @@ export type CheckboxDirection = 'horizontal' | 'vertical';
|
|
|
13
13
|
export type CheckboxType = 'default' | 'card' | 'pureCard';
|
|
14
14
|
|
|
15
15
|
export type CheckboxGroupProps = {
|
|
16
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
17
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
18
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
19
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
20
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
16
21
|
defaultValue?: any[];
|
|
17
22
|
disabled?: boolean;
|
|
18
23
|
name?: string;
|
|
@@ -26,6 +31,7 @@ export type CheckboxGroupProps = {
|
|
|
26
31
|
className?: string;
|
|
27
32
|
type?: CheckboxType;
|
|
28
33
|
id?: string;
|
|
34
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
29
35
|
};
|
|
30
36
|
|
|
31
37
|
export type CheckboxGroupState = {
|
|
@@ -34,6 +40,11 @@ export type CheckboxGroupState = {
|
|
|
34
40
|
class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState> {
|
|
35
41
|
|
|
36
42
|
static propTypes = {
|
|
43
|
+
'aria-describedby': PropTypes.string,
|
|
44
|
+
'aria-errormessage': PropTypes.string,
|
|
45
|
+
'aria-invalid': PropTypes.bool,
|
|
46
|
+
'aria-labelledby': PropTypes.string,
|
|
47
|
+
'aria-required': PropTypes.bool,
|
|
37
48
|
defaultValue: PropTypes.array,
|
|
38
49
|
disabled: PropTypes.bool,
|
|
39
50
|
name: PropTypes.string,
|
|
@@ -69,12 +80,13 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
|
|
|
69
80
|
};
|
|
70
81
|
}
|
|
71
82
|
|
|
83
|
+
foundation: CheckboxGroupFoundation;
|
|
72
84
|
constructor(props: CheckboxGroupProps) {
|
|
73
85
|
super(props);
|
|
74
86
|
this.state = {
|
|
75
87
|
value: props.value || props.defaultValue,
|
|
76
88
|
};
|
|
77
|
-
this.foundation = new
|
|
89
|
+
this.foundation = new CheckboxGroupFoundation(this.adapter);
|
|
78
90
|
this.onChange = this.onChange.bind(this);
|
|
79
91
|
}
|
|
80
92
|
|
|
@@ -97,7 +109,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
|
|
|
97
109
|
}
|
|
98
110
|
|
|
99
111
|
render() {
|
|
100
|
-
const { children, options, prefixCls, direction, className, id, style, type } = this.props;
|
|
112
|
+
const { children, options, prefixCls, direction, className, id, style, type, disabled } = this.props;
|
|
101
113
|
|
|
102
114
|
const isPureCardType = type === strings.TYPE_PURECARD;
|
|
103
115
|
const isCardType = type === strings.TYPE_CARD || isPureCardType;
|
|
@@ -119,6 +131,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
|
|
|
119
131
|
if (typeof option === 'string') {
|
|
120
132
|
return (
|
|
121
133
|
<Checkbox
|
|
134
|
+
role="listitem"
|
|
122
135
|
key={index}
|
|
123
136
|
disabled={this.props.disabled}
|
|
124
137
|
value={option}
|
|
@@ -130,6 +143,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
|
|
|
130
143
|
} else {
|
|
131
144
|
return (
|
|
132
145
|
<Checkbox
|
|
146
|
+
role="listitem"
|
|
133
147
|
key={index}
|
|
134
148
|
disabled={option.disabled || this.props.disabled}
|
|
135
149
|
value={option.value}
|
|
@@ -145,11 +159,22 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
|
|
|
145
159
|
}
|
|
146
160
|
});
|
|
147
161
|
} else if (children) {
|
|
148
|
-
inner = (React.Children.toArray(children) as React.ReactElement[]).map((itm, index) => React.cloneElement(itm, { key: index }));
|
|
162
|
+
inner = (React.Children.toArray(children) as React.ReactElement[]).map((itm, index) => React.cloneElement(itm, { key: index, role: 'listitem' }));
|
|
149
163
|
}
|
|
150
164
|
|
|
151
165
|
return (
|
|
152
|
-
<div
|
|
166
|
+
<div
|
|
167
|
+
id={id}
|
|
168
|
+
role="list"
|
|
169
|
+
aria-label={this.props['aria-label']}
|
|
170
|
+
className={prefixClsDisplay}
|
|
171
|
+
style={style}
|
|
172
|
+
aria-labelledby={this.props['aria-labelledby']}
|
|
173
|
+
aria-describedby={this.props['aria-describedby']}
|
|
174
|
+
// aria-errormessage={this.props['aria-errormessage']}
|
|
175
|
+
// aria-invalid={this.props['aria-invalid']}
|
|
176
|
+
// aria-required={this.props['aria-required']}
|
|
177
|
+
>
|
|
153
178
|
<Context.Provider
|
|
154
179
|
value={{
|
|
155
180
|
checkboxGroup: {
|
|
@@ -8,6 +8,11 @@ import { Context } from './context';
|
|
|
8
8
|
import { IconCheckboxTick, IconCheckboxIndeterminate } from '@douyinfe/semi-icons';
|
|
9
9
|
|
|
10
10
|
export interface CheckboxInnerProps {
|
|
11
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
12
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
13
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
14
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
15
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
11
16
|
indeterminate?: boolean;
|
|
12
17
|
checked?: boolean;
|
|
13
18
|
disabled?: boolean;
|
|
@@ -15,12 +20,20 @@ export interface CheckboxInnerProps {
|
|
|
15
20
|
name?: string;
|
|
16
21
|
isPureCardType?: boolean;
|
|
17
22
|
ref?: React.MutableRefObject<CheckboxInner> | ((ref: CheckboxInner) => void);
|
|
23
|
+
addonId?: string;
|
|
24
|
+
extraId?: string;
|
|
25
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
18
26
|
}
|
|
19
27
|
|
|
20
28
|
class CheckboxInner extends PureComponent<CheckboxInnerProps> {
|
|
21
29
|
static contextType = Context;
|
|
22
30
|
|
|
23
31
|
static propTypes = {
|
|
32
|
+
'aria-describedby': PropTypes.string,
|
|
33
|
+
'aria-errormessage': PropTypes.string,
|
|
34
|
+
'aria-invalid': PropTypes.bool,
|
|
35
|
+
'aria-labelledby': PropTypes.string,
|
|
36
|
+
'aria-required': PropTypes.bool,
|
|
24
37
|
checked: PropTypes.bool,
|
|
25
38
|
disabled: PropTypes.bool,
|
|
26
39
|
onChange: PropTypes.func,
|
|
@@ -28,6 +41,8 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
|
|
|
28
41
|
grouped: PropTypes.bool,
|
|
29
42
|
value: PropTypes.any,
|
|
30
43
|
isPureCardType: PropTypes.bool,
|
|
44
|
+
addonId: PropTypes.string,
|
|
45
|
+
extraId: PropTypes.string,
|
|
31
46
|
};
|
|
32
47
|
|
|
33
48
|
static defaultProps = {
|
|
@@ -44,7 +59,7 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
|
|
|
44
59
|
}
|
|
45
60
|
|
|
46
61
|
render() {
|
|
47
|
-
const { indeterminate, checked, disabled, prefixCls, name, isPureCardType } = this.props;
|
|
62
|
+
const { indeterminate, checked, disabled, prefixCls, name, isPureCardType, addonId, extraId } = this.props;
|
|
48
63
|
const prefix = prefixCls || css.PREFIX;
|
|
49
64
|
|
|
50
65
|
const wrapper = classnames(
|
|
@@ -69,10 +84,18 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
|
|
|
69
84
|
return (
|
|
70
85
|
<span className={wrapper}>
|
|
71
86
|
<input
|
|
87
|
+
type="checkbox"
|
|
88
|
+
aria-label={this.props['aria-label']}
|
|
89
|
+
aria-disabled={disabled}
|
|
90
|
+
aria-checked={checked}
|
|
91
|
+
aria-labelledby={addonId}
|
|
92
|
+
aria-describedby={extraId || this.props['aria-describedby']}
|
|
93
|
+
aria-invalid={this.props['aria-invalid']}
|
|
94
|
+
aria-errormessage={this.props['aria-errormessage']}
|
|
95
|
+
aria-required={this.props['aria-required']}
|
|
72
96
|
ref={ref => {
|
|
73
97
|
this.inputEntity = ref;
|
|
74
98
|
}}
|
|
75
|
-
type="checkbox"
|
|
76
99
|
className={css.INPUT}
|
|
77
100
|
onChange={noop}
|
|
78
101
|
checked={checked}
|
package/collapse/index.tsx
CHANGED
package/collapse/item.tsx
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React, { PureComponent, ReactNode
|
|
1
|
+
import React, { CSSProperties, PureComponent, ReactNode } from 'react';
|
|
2
2
|
import cls from 'classnames';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { cssClasses } from '@douyinfe/semi-foundation/collapse/constants';
|
|
5
5
|
import Collapsible from '../collapsible';
|
|
6
6
|
import CollapseContext, { CollapseContextType } from './collapse-context';
|
|
7
7
|
import { IconChevronDown, IconChevronUp } from '@douyinfe/semi-icons';
|
|
8
|
+
import { getUuidShort } from '@douyinfe/semi-foundation/utils/uuid';
|
|
8
9
|
|
|
9
|
-
export interface CollapsePanelProps{
|
|
10
|
+
export interface CollapsePanelProps {
|
|
10
11
|
itemKey: string;
|
|
11
12
|
extra?: ReactNode;
|
|
12
13
|
header?: ReactNode;
|
|
@@ -32,6 +33,8 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
32
33
|
]),
|
|
33
34
|
};
|
|
34
35
|
|
|
36
|
+
private ariaID = getUuidShort({});
|
|
37
|
+
|
|
35
38
|
renderHeader(active: boolean, expandIconEnable = true) {
|
|
36
39
|
const {
|
|
37
40
|
header,
|
|
@@ -43,13 +46,13 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
43
46
|
} = this.context;
|
|
44
47
|
const { expandIconPosition } = this.context;
|
|
45
48
|
if (typeof expandIcon === 'undefined') {
|
|
46
|
-
expandIcon = (<IconChevronDown
|
|
49
|
+
expandIcon = (<IconChevronDown/>);
|
|
47
50
|
}
|
|
48
51
|
if (typeof collapseIcon === 'undefined') {
|
|
49
|
-
collapseIcon = (<IconChevronUp
|
|
52
|
+
collapseIcon = (<IconChevronUp/>);
|
|
50
53
|
}
|
|
51
54
|
const icon = (
|
|
52
|
-
<span className={cls([`${cssClasses.PREFIX}-header-icon`,
|
|
55
|
+
<span aria-hidden='true' className={cls([`${cssClasses.PREFIX}-header-icon`,
|
|
53
56
|
{ [`${cssClasses.PREFIX}-header-iconDisabled`]: !expandIconEnable }])}>
|
|
54
57
|
{/* eslint-disable-next-line no-nested-ternary */}
|
|
55
58
|
{expandIconEnable ? (active ? collapseIcon : expandIcon) : expandIcon}
|
|
@@ -105,7 +108,6 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
105
108
|
});
|
|
106
109
|
return (
|
|
107
110
|
<div
|
|
108
|
-
role="Collapse-panel"
|
|
109
111
|
className={itemCls}
|
|
110
112
|
{...restProps}
|
|
111
113
|
>
|
|
@@ -114,6 +116,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
114
116
|
tabIndex={0}
|
|
115
117
|
className={headerCls}
|
|
116
118
|
aria-expanded={active ? 'true' : 'false'}
|
|
119
|
+
aria-owns={this.ariaID}
|
|
117
120
|
onClick={e => onClick(itemKey, e)}
|
|
118
121
|
>
|
|
119
122
|
{this.renderHeader(active, children !== undefined)}
|
|
@@ -125,6 +128,8 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
125
128
|
reCalcKey={reCalcKey}>
|
|
126
129
|
<div
|
|
127
130
|
className={contentCls}
|
|
131
|
+
aria-hidden={!active}
|
|
132
|
+
id={this.ariaID}
|
|
128
133
|
>
|
|
129
134
|
<div className={`${cssClasses.PREFIX}-content-wrapper`}>
|
|
130
135
|
{children}
|
|
@@ -136,4 +141,4 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
136
141
|
</div>
|
|
137
142
|
);
|
|
138
143
|
}
|
|
139
|
-
}
|
|
144
|
+
}
|
package/collapsible/index.tsx
CHANGED
|
@@ -19,6 +19,7 @@ export interface CollapsibleProps {
|
|
|
19
19
|
style?: React.CSSProperties;
|
|
20
20
|
collapseHeight?: number;
|
|
21
21
|
reCalcKey?: number | string;
|
|
22
|
+
id?:string,
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
|
|
@@ -32,7 +33,8 @@ const Collapsible = (props: CollapsibleProps) => {
|
|
|
32
33
|
collapseHeight,
|
|
33
34
|
style,
|
|
34
35
|
className,
|
|
35
|
-
reCalcKey
|
|
36
|
+
reCalcKey,
|
|
37
|
+
id
|
|
36
38
|
} = props;
|
|
37
39
|
|
|
38
40
|
const ref = useRef(null);
|
|
@@ -90,7 +92,7 @@ const Collapsible = (props: CollapsibleProps) => {
|
|
|
90
92
|
const wrapperCls = cls(`${cssClasses.PREFIX}-wrapper`, className);
|
|
91
93
|
return (
|
|
92
94
|
<div style={wrapperstyle} className={wrapperCls} ref={ref}>
|
|
93
|
-
<div ref={setHeight} style={{overflow:'hidden'}}>{children}</div>
|
|
95
|
+
<div ref={setHeight} style={{ overflow: 'hidden' }} id={id}>{children}</div>
|
|
94
96
|
</div>
|
|
95
97
|
);
|
|
96
98
|
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { ButtonGroup, Button, ConfigProvider } from '@douyinfe/semi-ui';
|
|
3
|
+
|
|
4
|
+
export default function RTLWrapper({ children, onDirectionChange }: { children: React.ReactNode; onDirectionChange?: (direction: 'ltr' | 'rtl') => void }) {
|
|
5
|
+
const [direction, setDirection] = useState();
|
|
6
|
+
const handleDirectionChange = dir => {
|
|
7
|
+
setDirection(dir);
|
|
8
|
+
|
|
9
|
+
if (typeof onDirectionChange === 'function') {
|
|
10
|
+
onDirectionChange(dir);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
<div style={{ marginBottom: 20 }}>
|
|
17
|
+
<ButtonGroup>
|
|
18
|
+
<Button onClick={() => handleDirectionChange('ltr')}>LTR</Button>
|
|
19
|
+
<Button onClick={() => handleDirectionChange('rtl')}>RTL</Button>
|
|
20
|
+
</ButtonGroup>
|
|
21
|
+
</div>
|
|
22
|
+
<ConfigProvider direction={direction}>
|
|
23
|
+
{children}
|
|
24
|
+
</ConfigProvider>
|
|
25
|
+
</>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -968,4 +968,97 @@ describe(`DatePicker`, () => {
|
|
|
968
968
|
|
|
969
969
|
it('test month sync change dateRange type', () => { testMonthSyncChange('dateRange') });
|
|
970
970
|
it('test month sync change dateTimeRange type', () => { testMonthSyncChange('dateTimeRange')});
|
|
971
|
+
|
|
972
|
+
it(`test preset given null`, async () => {
|
|
973
|
+
const props = {
|
|
974
|
+
presets: [
|
|
975
|
+
{
|
|
976
|
+
text: 'Today',
|
|
977
|
+
start: null,
|
|
978
|
+
end: null,
|
|
979
|
+
}
|
|
980
|
+
],
|
|
981
|
+
defaultValue: baseDate,
|
|
982
|
+
defaultOpen: true,
|
|
983
|
+
motion: false,
|
|
984
|
+
type: 'dateRange'
|
|
985
|
+
}
|
|
986
|
+
const handleChange = sinon.spy();
|
|
987
|
+
const demo = mount(<DatePicker {...props} onChange={handleChange} />);
|
|
988
|
+
const elem = demo.find(BaseDatePicker);
|
|
989
|
+
|
|
990
|
+
const btns = document.querySelectorAll('.semi-datepicker-quick-control-item');
|
|
991
|
+
|
|
992
|
+
btns[0].click();
|
|
993
|
+
expect(handleChange.called).toBeTruthy();
|
|
994
|
+
const args = handleChange.getCall(0).args;
|
|
995
|
+
expect(args[0].length).toEqual(0);
|
|
996
|
+
expect(elem.state('panelShow')).toBeFalsy();
|
|
997
|
+
});
|
|
998
|
+
|
|
999
|
+
it(`test preset given null + needConfirm`, async () => {
|
|
1000
|
+
const props = {
|
|
1001
|
+
presets: [
|
|
1002
|
+
{
|
|
1003
|
+
text: 'Today',
|
|
1004
|
+
start: null,
|
|
1005
|
+
end: null,
|
|
1006
|
+
}
|
|
1007
|
+
],
|
|
1008
|
+
defaultValue: baseDate,
|
|
1009
|
+
defaultOpen: true,
|
|
1010
|
+
motion: false,
|
|
1011
|
+
type: 'dateTimeRange',
|
|
1012
|
+
needConfirm: true,
|
|
1013
|
+
}
|
|
1014
|
+
const handleChange = sinon.spy();
|
|
1015
|
+
const handleConfirm = sinon.spy();
|
|
1016
|
+
const demo = mount(<DatePicker {...props} onChange={handleChange} onConfirm={handleConfirm} />);
|
|
1017
|
+
const elem = demo.find(BaseDatePicker);
|
|
1018
|
+
|
|
1019
|
+
const btns = document.querySelectorAll('.semi-datepicker-quick-control-item');
|
|
1020
|
+
|
|
1021
|
+
// 点击 preset
|
|
1022
|
+
btns[0].click();
|
|
1023
|
+
expect(handleChange.called).toBe(true);
|
|
1024
|
+
const argsChange = handleChange.getCall(0).args;
|
|
1025
|
+
expect(argsChange[0].length).toBe(0);
|
|
1026
|
+
expect(elem.state('panelShow')).toBe(true);
|
|
1027
|
+
// 点击确定
|
|
1028
|
+
const footerBtns = document.querySelectorAll('.semi-datepicker-footer .semi-button');
|
|
1029
|
+
footerBtns[1].click();
|
|
1030
|
+
expect(handleConfirm.called).toBe(true);
|
|
1031
|
+
const argsConfirm = handleConfirm.getCall(0).args;
|
|
1032
|
+
expect(argsConfirm[0].length).toBe(0);
|
|
1033
|
+
expect(elem.state('panelShow')).toBe(false);
|
|
1034
|
+
});
|
|
1035
|
+
|
|
1036
|
+
it('test dateRange triggerRender', async () => {
|
|
1037
|
+
const elem = mount(
|
|
1038
|
+
<DatePicker
|
|
1039
|
+
motion={false}
|
|
1040
|
+
// defaultOpen
|
|
1041
|
+
type="dateRange"
|
|
1042
|
+
triggerRender={({ placeholder }) => (
|
|
1043
|
+
<button>
|
|
1044
|
+
{placeholder}
|
|
1045
|
+
</button>
|
|
1046
|
+
)}
|
|
1047
|
+
/>
|
|
1048
|
+
);
|
|
1049
|
+
const trigger = document.querySelector('button');
|
|
1050
|
+
trigger.click();
|
|
1051
|
+
await sleep();
|
|
1052
|
+
const leftPanel = document.querySelector(`.${BASE_CLASS_PREFIX}-datepicker-month-grid-left`);
|
|
1053
|
+
const leftSecondWeek = leftPanel.querySelectorAll(`.${BASE_CLASS_PREFIX}-datepicker-week`)[1];
|
|
1054
|
+
const leftSecondWeekDays = leftSecondWeek.querySelectorAll(`.${BASE_CLASS_PREFIX}-datepicker-day`);
|
|
1055
|
+
const rightPanel = document.querySelector(`.${BASE_CLASS_PREFIX}-datepicker-month-grid-right`);
|
|
1056
|
+
const rightSecondWeek = rightPanel.querySelectorAll(`.${BASE_CLASS_PREFIX}-datepicker-week`)[1];
|
|
1057
|
+
const rightSecondWeekDays = rightSecondWeek.querySelectorAll(`.${BASE_CLASS_PREFIX}-datepicker-day`);
|
|
1058
|
+
leftSecondWeekDays[0].click();
|
|
1059
|
+
rightSecondWeekDays[0].click();
|
|
1060
|
+
|
|
1061
|
+
const baseElem = elem.find(BaseDatePicker);
|
|
1062
|
+
expect(baseElem.state('panelShow')).toBeFalsy();
|
|
1063
|
+
});
|
|
971
1064
|
});
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
startOfWeek,
|
|
11
11
|
endOfWeek,
|
|
12
12
|
} from 'date-fns';
|
|
13
|
-
import { Space, ConfigProvider, InputGroup, InputNumber, Form, withField } from '../../index';
|
|
13
|
+
import { Space, ConfigProvider, InputGroup, InputNumber, Form, withField, Button } from '../../index';
|
|
14
14
|
|
|
15
15
|
// stores
|
|
16
16
|
import NeedConfirmDemo from './NeedConfirm';
|
|
@@ -723,3 +723,86 @@ export const FixNeedConfirm = () => {
|
|
|
723
723
|
)
|
|
724
724
|
}
|
|
725
725
|
FixNeedConfirm.storyName = '修复 needConfirm 取消后输入框显示错误';
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* fix https://github.com/DouyinFE/semi-design/issues/388
|
|
729
|
+
*/
|
|
730
|
+
export const FixPresetsClick = () => {
|
|
731
|
+
const presets = [
|
|
732
|
+
{
|
|
733
|
+
text: '清空',
|
|
734
|
+
start: '',
|
|
735
|
+
end: '',
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
text: 'Tomorrow',
|
|
739
|
+
start: new Date(new Date().valueOf() + 1000 * 3600 * 24),
|
|
740
|
+
end: new Date(new Date().valueOf() + 1000 * 3600 * 24),
|
|
741
|
+
},
|
|
742
|
+
];
|
|
743
|
+
|
|
744
|
+
const handleChange = v => {
|
|
745
|
+
console.log('change', v);
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
const handleConfirm = v => {
|
|
749
|
+
console.log('confirm', v);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
return (
|
|
753
|
+
<div>
|
|
754
|
+
<div>
|
|
755
|
+
<label>
|
|
756
|
+
<span>不设置 needConfirm</span>
|
|
757
|
+
<DatePicker onChange={console.log} type="dateRange" presets={presets} />
|
|
758
|
+
</label>
|
|
759
|
+
</div>
|
|
760
|
+
<div>
|
|
761
|
+
<label>
|
|
762
|
+
<span>设置 needConfirm</span>
|
|
763
|
+
<DatePicker needConfirm onChange={handleChange} onConfirm={handleConfirm} type="dateTimeRange" presets={presets} />
|
|
764
|
+
</label>
|
|
765
|
+
</div>
|
|
766
|
+
</div>
|
|
767
|
+
);
|
|
768
|
+
};
|
|
769
|
+
FixPresetsClick.storyName = '修复 presets 点击后不收起问题';
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* fix https://github.com/DouyinFE/semi-design/issues/410
|
|
773
|
+
*/
|
|
774
|
+
export const FixTriggerRenderClosePanel = () => {
|
|
775
|
+
const [value, setValue] = useState([]);
|
|
776
|
+
|
|
777
|
+
const handleChange = v => {
|
|
778
|
+
console.log('change', v);
|
|
779
|
+
setValue(v);
|
|
780
|
+
};
|
|
781
|
+
|
|
782
|
+
const formatValue = (dates) => {
|
|
783
|
+
const dateStrs = dates.map(v => String(v));
|
|
784
|
+
return dateStrs.join(' ~ ');
|
|
785
|
+
};
|
|
786
|
+
|
|
787
|
+
const showClear = Array.isArray(value) && value.length > 1;
|
|
788
|
+
|
|
789
|
+
return (
|
|
790
|
+
<Space>
|
|
791
|
+
<DatePicker
|
|
792
|
+
value={value}
|
|
793
|
+
type="dateRange"
|
|
794
|
+
onChange={handleChange}
|
|
795
|
+
motion={false}
|
|
796
|
+
triggerRender={({ placeholder }) => (
|
|
797
|
+
<Button>
|
|
798
|
+
{(value && formatValue(value)) || placeholder}
|
|
799
|
+
</Button>
|
|
800
|
+
)}
|
|
801
|
+
/>
|
|
802
|
+
{showClear && (
|
|
803
|
+
<Button onClick={() => setValue([])}>清除</Button>
|
|
804
|
+
)}
|
|
805
|
+
</Space>
|
|
806
|
+
);
|
|
807
|
+
};
|
|
808
|
+
FixTriggerRenderClosePanel.storyName = "fix triggerRender close bug"
|
|
@@ -21,9 +21,15 @@ import { RangeType } from '@douyinfe/semi-foundation/datePicker/inputFoundation'
|
|
|
21
21
|
import { TimePickerProps } from '../timePicker/TimePicker';
|
|
22
22
|
|
|
23
23
|
export interface DatePickerProps extends DatePickerFoundationProps {
|
|
24
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
25
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
26
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
27
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
28
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
24
29
|
timePickerOpts?: TimePickerProps;
|
|
25
30
|
bottomSlot?: React.ReactNode;
|
|
26
31
|
insetLabel?: React.ReactNode;
|
|
32
|
+
insetLabelId?: string;
|
|
27
33
|
prefix?: React.ReactNode;
|
|
28
34
|
topSlot?: React.ReactNode;
|
|
29
35
|
renderDate?: (dayNumber?: number, fullDate?: string) => React.ReactNode;
|
|
@@ -42,6 +48,11 @@ export type DatePickerState = DatePickerFoundationState;
|
|
|
42
48
|
export default class DatePicker extends BaseComponent<DatePickerProps, DatePickerState> {
|
|
43
49
|
static contextType = ConfigContext;
|
|
44
50
|
static propTypes = {
|
|
51
|
+
'aria-describedby': PropTypes.string,
|
|
52
|
+
'aria-errormessage': PropTypes.string,
|
|
53
|
+
'aria-invalid': PropTypes.bool,
|
|
54
|
+
'aria-labelledby': PropTypes.string,
|
|
55
|
+
'aria-required': PropTypes.bool,
|
|
45
56
|
type: PropTypes.oneOf(strings.TYPE_SET),
|
|
46
57
|
size: PropTypes.oneOf(strings.SIZE_SET),
|
|
47
58
|
density: PropTypes.oneOf(strings.DENSITY_SET),
|
|
@@ -76,6 +87,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
76
87
|
prefixCls: PropTypes.string,
|
|
77
88
|
prefix: PropTypes.node,
|
|
78
89
|
insetLabel: PropTypes.node,
|
|
90
|
+
insetLabelId: PropTypes.string,
|
|
79
91
|
zIndex: PropTypes.number,
|
|
80
92
|
position: PropTypes.oneOf(popoverStrings.POSITION_SET),
|
|
81
93
|
getPopupContainer: PropTypes.func,
|
|
@@ -363,6 +375,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
363
375
|
syncSwitchMonth,
|
|
364
376
|
onPanelChange,
|
|
365
377
|
timeZone,
|
|
378
|
+
triggerRender
|
|
366
379
|
} = this.props;
|
|
367
380
|
const { value, cachedSelectedValue, motionEnd, rangeInputFocus } = this.state;
|
|
368
381
|
|
|
@@ -408,6 +421,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
408
421
|
onPanelChange={onPanelChange}
|
|
409
422
|
timeZone={timeZone}
|
|
410
423
|
focusRecordsRef={this.focusRecordsRef}
|
|
424
|
+
triggerRender={triggerRender}
|
|
411
425
|
/>
|
|
412
426
|
);
|
|
413
427
|
}
|
|
@@ -450,6 +464,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
450
464
|
disabled,
|
|
451
465
|
showClear,
|
|
452
466
|
insetLabel,
|
|
467
|
+
insetLabelId,
|
|
453
468
|
placeholder,
|
|
454
469
|
validateStatus,
|
|
455
470
|
inputStyle,
|
|
@@ -486,6 +501,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
486
501
|
inputStyle,
|
|
487
502
|
showClear,
|
|
488
503
|
insetLabel,
|
|
504
|
+
insetLabelId,
|
|
489
505
|
type,
|
|
490
506
|
format,
|
|
491
507
|
multiple,
|
|
@@ -640,6 +656,11 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
640
656
|
style,
|
|
641
657
|
className: classnames(className, { [prefixCls]: true }),
|
|
642
658
|
ref: this.setTriggerRef,
|
|
659
|
+
'aria-invalid': this.props['aria-invalid'],
|
|
660
|
+
'aria-errormessage': this.props['aria-errormessage'],
|
|
661
|
+
'aria-labelledby': this.props['aria-labelledby'],
|
|
662
|
+
'aria-describedby': this.props['aria-describedby'],
|
|
663
|
+
'aria-required': this.props['aria-required'],
|
|
643
664
|
};
|
|
644
665
|
|
|
645
666
|
const inner = this.renderInner();
|
|
@@ -71,7 +71,8 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
|
|
|
71
71
|
syncSwitchMonth: PropTypes.bool,
|
|
72
72
|
// Callback function for panel date switching
|
|
73
73
|
onPanelChange: PropTypes.func,
|
|
74
|
-
focusRecordsRef: PropTypes.object
|
|
74
|
+
focusRecordsRef: PropTypes.object,
|
|
75
|
+
triggerRender: PropTypes.func,
|
|
75
76
|
};
|
|
76
77
|
|
|
77
78
|
static defaultProps = {
|
package/dist/css/semi.css
CHANGED
|
@@ -13919,7 +13919,13 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
13919
13919
|
}
|
|
13920
13920
|
.semi-radio .semi-radio-inner-buttonRadio,
|
|
13921
13921
|
.semi-radio .semi-radio-inner-pureCardRadio {
|
|
13922
|
-
|
|
13922
|
+
position: absolute;
|
|
13923
|
+
top: 0;
|
|
13924
|
+
left: 0;
|
|
13925
|
+
width: 100%;
|
|
13926
|
+
height: 100%;
|
|
13927
|
+
z-index: -1;
|
|
13928
|
+
opacity: 0;
|
|
13923
13929
|
}
|
|
13924
13930
|
.semi-radio-disabled, .semi-radio-disabled:hover {
|
|
13925
13931
|
cursor: not-allowed;
|
|
@@ -15059,6 +15065,7 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
15059
15065
|
}
|
|
15060
15066
|
.semi-slider-handle-clicked {
|
|
15061
15067
|
border: solid 1px var(--semi-color-focus-border);
|
|
15068
|
+
cursor: grabbing;
|
|
15062
15069
|
}
|
|
15063
15070
|
.semi-slider-track {
|
|
15064
15071
|
height: 4px;
|
|
@@ -18246,8 +18253,6 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
18246
18253
|
background-color: inherit;
|
|
18247
18254
|
}
|
|
18248
18255
|
.semi-transfer-item .semi-transfer-item-close-icon {
|
|
18249
|
-
width: 12px;
|
|
18250
|
-
height: 12px;
|
|
18251
18256
|
font-size: 12px;
|
|
18252
18257
|
cursor: pointer;
|
|
18253
18258
|
visibility: hidden;
|