@douyinfe/semi-ui 2.2.0 → 2.3.0
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 +108 -0
- package/datePicker/_story/datePicker.stories.js +146 -2
- package/datePicker/datePicker.tsx +24 -0
- package/datePicker/monthsGrid.tsx +2 -1
- package/dist/css/semi.css +34 -7
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2768 -1501
- 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/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 +33 -2
- 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 +22 -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/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 +37 -3
- 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/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 +22 -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/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 +38 -3
- 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/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/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
package/lib/cjs/radio/radio.js
CHANGED
|
@@ -26,6 +26,8 @@ var _radioFoundation = _interopRequireDefault(require("@douyinfe/semi-foundation
|
|
|
26
26
|
|
|
27
27
|
var _constants = require("@douyinfe/semi-foundation/lib/cjs/radio/constants");
|
|
28
28
|
|
|
29
|
+
var _uuid = require("@douyinfe/semi-foundation/lib/cjs/utils/uuid");
|
|
30
|
+
|
|
29
31
|
require("@douyinfe/semi-foundation/lib/cjs/radio/radio.css");
|
|
30
32
|
|
|
31
33
|
var _baseComponent = _interopRequireDefault(require("../_base/baseComponent"));
|
|
@@ -69,6 +71,12 @@ class Radio extends _baseComponent.default {
|
|
|
69
71
|
};
|
|
70
72
|
this.foundation = new _radioFoundation.default(this.adapter);
|
|
71
73
|
this.radioEntity = null;
|
|
74
|
+
this.addonId = (0, _uuid.getUuidShort)({
|
|
75
|
+
prefix: 'addon'
|
|
76
|
+
});
|
|
77
|
+
this.extraId = (0, _uuid.getUuidShort)({
|
|
78
|
+
prefix: 'extra'
|
|
79
|
+
});
|
|
72
80
|
}
|
|
73
81
|
|
|
74
82
|
get adapter() {
|
|
@@ -165,9 +173,11 @@ class Radio extends _baseComponent.default {
|
|
|
165
173
|
|
|
166
174
|
const renderContent = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children ? /*#__PURE__*/_react.default.createElement("span", {
|
|
167
175
|
className: addonCls,
|
|
168
|
-
style: addonStyle
|
|
176
|
+
style: addonStyle,
|
|
177
|
+
id: this.addonId
|
|
169
178
|
}, children) : null, extra && !isButtonRadio ? /*#__PURE__*/_react.default.createElement("div", {
|
|
170
|
-
className: "".concat(prefix, "-extra")
|
|
179
|
+
className: "".concat(prefix, "-extra"),
|
|
180
|
+
id: this.extraId
|
|
171
181
|
}, extra) : null);
|
|
172
182
|
|
|
173
183
|
return /*#__PURE__*/_react.default.createElement("label", {
|
|
@@ -183,7 +193,9 @@ class Radio extends _baseComponent.default {
|
|
|
183
193
|
onChange: this.onChange,
|
|
184
194
|
ref: ref => {
|
|
185
195
|
this.radioEntity = ref;
|
|
186
|
-
}
|
|
196
|
+
},
|
|
197
|
+
addonId: children && this.addonId,
|
|
198
|
+
extraId: extra && this.extraId
|
|
187
199
|
})), isCardRadioGroup ? /*#__PURE__*/_react.default.createElement("div", {
|
|
188
200
|
className: "".concat(prefix, "-isCardRadioGroup_content")
|
|
189
201
|
}, renderContent()) : renderContent());
|
|
@@ -209,8 +221,8 @@ Radio.propTypes = {
|
|
|
209
221
|
extra: _propTypes.default.node,
|
|
210
222
|
addonStyle: _propTypes.default.object,
|
|
211
223
|
addonClassName: _propTypes.default.string,
|
|
212
|
-
type: _propTypes.default.oneOf([_constants.strings.TYPE_DEFAULT, _constants.strings.TYPE_BUTTON, _constants.strings.TYPE_CARD, _constants.strings.TYPE_PURECARD])
|
|
213
|
-
|
|
224
|
+
type: _propTypes.default.oneOf([_constants.strings.TYPE_DEFAULT, _constants.strings.TYPE_BUTTON, _constants.strings.TYPE_CARD, _constants.strings.TYPE_PURECARD]),
|
|
225
|
+
'aria-label': _propTypes.default.string
|
|
214
226
|
};
|
|
215
227
|
Radio.defaultProps = {
|
|
216
228
|
autoFocus: false,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { strings } from '@douyinfe/semi-foundation/lib/cjs/radio/constants';
|
|
4
|
-
import { RadioGroupAdapter } from '@douyinfe/semi-foundation/lib/cjs/radio/radioGroupFoundation';
|
|
4
|
+
import RadioGroupFoundation, { RadioGroupAdapter } from '@douyinfe/semi-foundation/lib/cjs/radio/radioGroupFoundation';
|
|
5
5
|
import { RadioChangeEvent } from '@douyinfe/semi-foundation/lib/cjs/radio/radioInnerFoundation';
|
|
6
6
|
import BaseComponent from '../_base/baseComponent';
|
|
7
7
|
import { ArrayElement } from '../_base/base';
|
|
@@ -30,6 +30,13 @@ export declare type RadioGroupProps = {
|
|
|
30
30
|
type?: RadioType;
|
|
31
31
|
buttonSize?: RadioGroupButtonSize;
|
|
32
32
|
prefixCls?: string;
|
|
33
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
34
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
35
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
36
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
37
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
38
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
39
|
+
id?: string;
|
|
33
40
|
};
|
|
34
41
|
export interface RadioGroupState {
|
|
35
42
|
value?: any;
|
|
@@ -50,8 +57,16 @@ declare class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState>
|
|
|
50
57
|
style: PropTypes.Requireable<object>;
|
|
51
58
|
direction: PropTypes.Requireable<"horizontal" | "vertical">;
|
|
52
59
|
mode: PropTypes.Requireable<"" | "advanced">;
|
|
60
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
61
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
62
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
63
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
64
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
65
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
66
|
+
id: PropTypes.Requireable<string>;
|
|
53
67
|
};
|
|
54
68
|
static defaultProps: Partial<RadioGroupProps>;
|
|
69
|
+
foundation: RadioGroupFoundation;
|
|
55
70
|
constructor(props: RadioGroupProps);
|
|
56
71
|
componentDidMount(): void;
|
|
57
72
|
componentDidUpdate(prevProps: RadioGroupProps): void;
|
|
@@ -91,7 +91,8 @@ class RadioGroup extends _baseComponent.default {
|
|
|
91
91
|
style,
|
|
92
92
|
direction,
|
|
93
93
|
type,
|
|
94
|
-
buttonSize
|
|
94
|
+
buttonSize,
|
|
95
|
+
id
|
|
95
96
|
} = this.props;
|
|
96
97
|
const isButtonRadio = type === _constants.strings.TYPE_BUTTON;
|
|
97
98
|
const isPureCardRadio = type === _constants.strings.TYPE_PURECARD;
|
|
@@ -140,7 +141,14 @@ class RadioGroup extends _baseComponent.default {
|
|
|
140
141
|
|
|
141
142
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
142
143
|
className: prefixClsDisplay,
|
|
143
|
-
style: style
|
|
144
|
+
style: style,
|
|
145
|
+
id: id,
|
|
146
|
+
"aria-label": this.props['aria-label'],
|
|
147
|
+
"aria-invalid": this.props['aria-invalid'],
|
|
148
|
+
"aria-errormessage": this.props['aria-errormessage'],
|
|
149
|
+
"aria-labelledby": this.props['aria-labelledby'],
|
|
150
|
+
"aria-describedby": this.props['aria-describedby'],
|
|
151
|
+
"aria-required": this.props['aria-required']
|
|
144
152
|
}, /*#__PURE__*/_react.default.createElement(_context6.default.Provider, {
|
|
145
153
|
value: {
|
|
146
154
|
radioGroup: {
|
|
@@ -175,7 +183,14 @@ RadioGroup.propTypes = {
|
|
|
175
183
|
className: _propTypes.default.string,
|
|
176
184
|
style: _propTypes.default.object,
|
|
177
185
|
direction: _propTypes.default.oneOf(_constants.strings.DIRECTION_SET),
|
|
178
|
-
mode: _propTypes.default.oneOf(_constants.strings.MODE)
|
|
186
|
+
mode: _propTypes.default.oneOf(_constants.strings.MODE),
|
|
187
|
+
'aria-label': _propTypes.default.string,
|
|
188
|
+
'aria-describedby': _propTypes.default.string,
|
|
189
|
+
'aria-errormessage': _propTypes.default.string,
|
|
190
|
+
'aria-invalid': _propTypes.default.bool,
|
|
191
|
+
'aria-labelledby': _propTypes.default.string,
|
|
192
|
+
'aria-required': _propTypes.default.bool,
|
|
193
|
+
id: _propTypes.default.string
|
|
179
194
|
};
|
|
180
195
|
RadioGroup.defaultProps = {
|
|
181
196
|
disabled: false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { RadioChangeEvent, RadioInnerAdapter } from '@douyinfe/semi-foundation/lib/cjs/radio/radioInnerFoundation';
|
|
3
|
+
import RadioInnerFoundation, { RadioChangeEvent, RadioInnerAdapter } from '@douyinfe/semi-foundation/lib/cjs/radio/radioInnerFoundation';
|
|
4
4
|
import BaseComponent, { BaseProps } from '../_base/baseComponent';
|
|
5
5
|
export declare type RadioInnerMode = 'advanced' | '';
|
|
6
6
|
export interface RadioInnerProps extends BaseProps {
|
|
@@ -14,6 +14,9 @@ export interface RadioInnerProps extends BaseProps {
|
|
|
14
14
|
prefixCls?: string;
|
|
15
15
|
ref?: React.MutableRefObject<RadioInner> | ((instance: RadioInner) => void);
|
|
16
16
|
isPureCardRadioGroup?: boolean;
|
|
17
|
+
addonId?: string;
|
|
18
|
+
extraId?: string;
|
|
19
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
17
20
|
}
|
|
18
21
|
interface RadioInnerState {
|
|
19
22
|
checked?: boolean;
|
|
@@ -26,12 +29,14 @@ declare class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState>
|
|
|
26
29
|
isButtonRadio: PropTypes.Requireable<boolean>;
|
|
27
30
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
28
31
|
mode: PropTypes.Requireable<string>;
|
|
32
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
29
33
|
};
|
|
30
34
|
static defaultProps: {
|
|
31
35
|
onChange: (...args: any[]) => void;
|
|
32
36
|
isButtonRadio: boolean;
|
|
33
37
|
};
|
|
34
38
|
inputEntity: HTMLInputElement;
|
|
39
|
+
foundation: RadioInnerFoundation;
|
|
35
40
|
constructor(props: RadioInnerProps);
|
|
36
41
|
get adapter(): RadioInnerAdapter;
|
|
37
42
|
componentDidMount(): void;
|
|
@@ -90,7 +90,10 @@ class RadioInner extends _baseComponent.default {
|
|
|
90
90
|
autoFocus,
|
|
91
91
|
name,
|
|
92
92
|
isButtonRadio,
|
|
93
|
-
isPureCardRadioGroup
|
|
93
|
+
isPureCardRadioGroup,
|
|
94
|
+
addonId,
|
|
95
|
+
extraId,
|
|
96
|
+
'aria-label': ariaLabel
|
|
94
97
|
} = this.props;
|
|
95
98
|
const {
|
|
96
99
|
checked
|
|
@@ -111,12 +114,16 @@ class RadioInner extends _baseComponent.default {
|
|
|
111
114
|
ref: ref => {
|
|
112
115
|
this.inputEntity = ref;
|
|
113
116
|
},
|
|
117
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
114
118
|
autoFocus: autoFocus,
|
|
115
119
|
type: mode === 'advanced' ? 'checkbox' : 'radio',
|
|
116
120
|
checked: Boolean(checked),
|
|
117
121
|
disabled: disabled,
|
|
118
122
|
onChange: this.onChange,
|
|
119
|
-
name: name
|
|
123
|
+
name: name,
|
|
124
|
+
"aria-label": ariaLabel,
|
|
125
|
+
"aria-labelledby": addonId,
|
|
126
|
+
"aria-describedby": extraId
|
|
120
127
|
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
121
128
|
className: inner
|
|
122
129
|
}, checked ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconRadio, null) : null));
|
|
@@ -130,7 +137,8 @@ RadioInner.propTypes = {
|
|
|
130
137
|
disabled: _propTypes.default.bool,
|
|
131
138
|
isButtonRadio: _propTypes.default.bool,
|
|
132
139
|
onChange: _propTypes.default.func,
|
|
133
|
-
mode: _propTypes.default.oneOf(['advanced', ''])
|
|
140
|
+
mode: _propTypes.default.oneOf(['advanced', '']),
|
|
141
|
+
'aria-label': _propTypes.default.string
|
|
134
142
|
};
|
|
135
143
|
RadioInner.defaultProps = {
|
|
136
144
|
onChange: _noop2.default,
|
|
@@ -7,6 +7,12 @@ import RatingFoundation, { RatingAdapter } from '@douyinfe/semi-foundation/lib/c
|
|
|
7
7
|
import '@douyinfe/semi-foundation/lib/cjs/rating/rating.css';
|
|
8
8
|
export { RatingItemProps } from './item';
|
|
9
9
|
export interface RatingProps {
|
|
10
|
+
'aria-describedby'?: string;
|
|
11
|
+
'aria-errormessage'?: string;
|
|
12
|
+
'aria-invalid'?: boolean;
|
|
13
|
+
'aria-label'?: string;
|
|
14
|
+
'aria-labelledby'?: string;
|
|
15
|
+
'aria-required'?: boolean;
|
|
10
16
|
disabled?: boolean;
|
|
11
17
|
value?: number;
|
|
12
18
|
defaultValue?: number;
|
|
@@ -27,6 +33,7 @@ export interface RatingProps {
|
|
|
27
33
|
autoFocus?: boolean;
|
|
28
34
|
size?: 'small' | 'default' | number;
|
|
29
35
|
tooltips?: string[];
|
|
36
|
+
id?: string;
|
|
30
37
|
}
|
|
31
38
|
export interface RatingState {
|
|
32
39
|
value: number;
|
|
@@ -37,6 +44,12 @@ export interface RatingState {
|
|
|
37
44
|
export default class Rating extends BaseComponent<RatingProps, RatingState> {
|
|
38
45
|
static contextType: React.Context<import("../configProvider/context").ContextValue>;
|
|
39
46
|
static propTypes: {
|
|
47
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
48
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
49
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
50
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
51
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
52
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
40
53
|
disabled: PropTypes.Requireable<boolean>;
|
|
41
54
|
value: PropTypes.Requireable<number>;
|
|
42
55
|
defaultValue: PropTypes.Requireable<number>;
|
|
@@ -56,6 +69,7 @@ export default class Rating extends BaseComponent<RatingProps, RatingState> {
|
|
|
56
69
|
autoFocus: PropTypes.Requireable<boolean>;
|
|
57
70
|
size: PropTypes.Requireable<number | "default" | "small">;
|
|
58
71
|
tooltips: PropTypes.Requireable<string[]>;
|
|
72
|
+
id: PropTypes.Requireable<string>;
|
|
59
73
|
};
|
|
60
74
|
static defaultProps: {
|
|
61
75
|
defaultValue: number;
|
package/lib/cjs/rating/index.js
CHANGED
|
@@ -218,7 +218,8 @@ class Rating extends _baseComponent.default {
|
|
|
218
218
|
character,
|
|
219
219
|
tabIndex,
|
|
220
220
|
size,
|
|
221
|
-
tooltips
|
|
221
|
+
tooltips,
|
|
222
|
+
id
|
|
222
223
|
} = this.props;
|
|
223
224
|
const {
|
|
224
225
|
value,
|
|
@@ -261,6 +262,9 @@ class Rating extends _baseComponent.default {
|
|
|
261
262
|
["".concat(prefixCls, "-disabled")]: disabled
|
|
262
263
|
}, className);
|
|
263
264
|
return /*#__PURE__*/_react.default.createElement("ul", {
|
|
265
|
+
"aria-label": this.props['aria-label'],
|
|
266
|
+
"aria-labelledby": this.props['aria-labelledby'],
|
|
267
|
+
"aria-describedby": this.props['aria-describedby'],
|
|
264
268
|
className: listCls,
|
|
265
269
|
style: style,
|
|
266
270
|
onMouseLeave: disabled ? null : this.onMouseLeave,
|
|
@@ -269,7 +273,7 @@ class Rating extends _baseComponent.default {
|
|
|
269
273
|
onBlur: disabled ? null : this.onBlur,
|
|
270
274
|
onKeyDown: disabled ? null : this.onKeyDown,
|
|
271
275
|
ref: this.saveRate,
|
|
272
|
-
|
|
276
|
+
id: id
|
|
273
277
|
}, itemList);
|
|
274
278
|
}
|
|
275
279
|
|
|
@@ -278,6 +282,12 @@ class Rating extends _baseComponent.default {
|
|
|
278
282
|
exports.default = Rating;
|
|
279
283
|
Rating.contextType = _context4.default;
|
|
280
284
|
Rating.propTypes = {
|
|
285
|
+
'aria-describedby': _propTypes.default.string,
|
|
286
|
+
'aria-errormessage': _propTypes.default.string,
|
|
287
|
+
'aria-invalid': _propTypes.default.bool,
|
|
288
|
+
'aria-label': _propTypes.default.string,
|
|
289
|
+
'aria-labelledby': _propTypes.default.string,
|
|
290
|
+
'aria-required': _propTypes.default.bool,
|
|
281
291
|
disabled: _propTypes.default.bool,
|
|
282
292
|
value: _propTypes.default.number,
|
|
283
293
|
defaultValue: _propTypes.default.number,
|
|
@@ -296,7 +306,8 @@ Rating.propTypes = {
|
|
|
296
306
|
onKeyDown: _propTypes.default.func,
|
|
297
307
|
autoFocus: _propTypes.default.bool,
|
|
298
308
|
size: _propTypes.default.oneOfType([_propTypes.default.oneOf(_constants.strings.SIZE_SET), _propTypes.default.number]),
|
|
299
|
-
tooltips: _propTypes.default.arrayOf(_propTypes.default.string)
|
|
309
|
+
tooltips: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
310
|
+
id: _propTypes.default.string
|
|
300
311
|
};
|
|
301
312
|
Rating.defaultProps = {
|
|
302
313
|
defaultValue: 0,
|
package/lib/cjs/rating/item.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface RatingItemProps {
|
|
|
15
15
|
disabled: boolean;
|
|
16
16
|
count: number;
|
|
17
17
|
size: number | ArrayElement<typeof strings.SIZE_SET>;
|
|
18
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
18
19
|
}
|
|
19
20
|
export default class Item extends PureComponent<RatingItemProps> {
|
|
20
21
|
static propTypes: {
|
|
@@ -29,6 +30,7 @@ export default class Item extends PureComponent<RatingItemProps> {
|
|
|
29
30
|
disabled: PropTypes.Requireable<boolean>;
|
|
30
31
|
count: PropTypes.Requireable<number>;
|
|
31
32
|
size: PropTypes.Requireable<number | "default" | "small">;
|
|
33
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
32
34
|
};
|
|
33
35
|
onHover: React.MouseEventHandler;
|
|
34
36
|
onClick: React.MouseEventHandler;
|
package/lib/cjs/rating/item.js
CHANGED
|
@@ -114,6 +114,10 @@ class Item extends _react.PureComponent {
|
|
|
114
114
|
"aria-checked": value > index ? 'true' : 'false',
|
|
115
115
|
"aria-posinset": index + 1,
|
|
116
116
|
"aria-setsize": count,
|
|
117
|
+
"aria-disabled": disabled,
|
|
118
|
+
"aria-label": "Rating ".concat(index + (isHalf ? 0.5 : 1)),
|
|
119
|
+
"aria-labelledby": this.props['aria-describedby'],
|
|
120
|
+
"aria-describedby": this.props['aria-describedby'],
|
|
117
121
|
tabIndex: 0,
|
|
118
122
|
className: "".concat(prefixCls, "-wrapper")
|
|
119
123
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -140,5 +144,6 @@ Item.propTypes = {
|
|
|
140
144
|
focused: _propTypes.default.bool,
|
|
141
145
|
disabled: _propTypes.default.bool,
|
|
142
146
|
count: _propTypes.default.number,
|
|
143
|
-
size: _propTypes.default.oneOfType([_propTypes.default.oneOf(_constants.strings.SIZE_SET), _propTypes.default.number])
|
|
147
|
+
size: _propTypes.default.oneOfType([_propTypes.default.oneOf(_constants.strings.SIZE_SET), _propTypes.default.number]),
|
|
148
|
+
'aria-describedby': _propTypes.default.string
|
|
144
149
|
};
|
|
@@ -55,8 +55,14 @@ export declare type RenderMultipleSelectedItemFn = (optionNode: Record<string, a
|
|
|
55
55
|
};
|
|
56
56
|
export declare type RenderSelectedItemFn = RenderSingleSelectedItemFn | RenderMultipleSelectedItemFn;
|
|
57
57
|
export declare type SelectProps = {
|
|
58
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
59
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
60
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
61
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
62
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
58
63
|
id?: string;
|
|
59
64
|
autoFocus?: boolean;
|
|
65
|
+
autoClearSearchValue?: boolean;
|
|
60
66
|
arrowIcon?: React.ReactNode;
|
|
61
67
|
defaultValue?: string | number | any[] | Record<string, any>;
|
|
62
68
|
value?: string | number | any[] | Record<string, any>;
|
|
@@ -92,6 +98,7 @@ export declare type SelectProps = {
|
|
|
92
98
|
suffix?: React.ReactNode;
|
|
93
99
|
prefix?: React.ReactNode;
|
|
94
100
|
insetLabel?: React.ReactNode;
|
|
101
|
+
insetLabelId?: string;
|
|
95
102
|
inputProps?: Subtract<InputProps, ExcludeInputType>;
|
|
96
103
|
showClear?: boolean;
|
|
97
104
|
showArrow?: boolean;
|
|
@@ -134,7 +141,13 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
134
141
|
static Option: typeof Option;
|
|
135
142
|
static OptGroup: typeof OptionGroup;
|
|
136
143
|
static propTypes: {
|
|
144
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
145
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
146
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
147
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
148
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
137
149
|
autoFocus: PropTypes.Requireable<boolean>;
|
|
150
|
+
autoClearSearchValue: PropTypes.Requireable<boolean>;
|
|
138
151
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
139
152
|
defaultValue: PropTypes.Requireable<string | number | object>;
|
|
140
153
|
value: PropTypes.Requireable<string | number | object>;
|
|
@@ -175,6 +188,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
175
188
|
suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
176
189
|
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
177
190
|
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
191
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
178
192
|
showClear: PropTypes.Requireable<boolean>;
|
|
179
193
|
showArrow: PropTypes.Requireable<boolean>;
|
|
180
194
|
renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -223,6 +237,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
223
237
|
focus(): void;
|
|
224
238
|
onSelect(option: OptionProps, optionIndex: number, e: any): void;
|
|
225
239
|
onClear(e: React.MouseEvent): void;
|
|
240
|
+
onClearBtnEnterPress(e: React.KeyboardEvent): void;
|
|
226
241
|
renderEmpty(): JSX.Element;
|
|
227
242
|
renderLoading(): JSX.Element;
|
|
228
243
|
renderOption(option: OptionProps, optionIndex: number, style?: React.CSSProperties): any;
|
|
@@ -235,6 +250,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
235
250
|
renderMultipleSelection(selections: Map<OptionProps['label'], any>, filterable: boolean): JSX.Element;
|
|
236
251
|
onMouseEnter(e: MouseEvent): void;
|
|
237
252
|
onMouseLeave(e: MouseEvent): void;
|
|
253
|
+
onKeyPress(e: React.KeyboardEvent): void;
|
|
238
254
|
handlePopoverVisibleChange(status: any): void;
|
|
239
255
|
renderSuffix(): JSX.Element;
|
|
240
256
|
renderPrefix(): JSX.Element;
|
package/lib/cjs/select/index.js
CHANGED
|
@@ -56,7 +56,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
56
56
|
|
|
57
57
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
58
58
|
|
|
59
|
-
var
|
|
59
|
+
var _context15 = _interopRequireDefault(require("../configProvider/context"));
|
|
60
60
|
|
|
61
61
|
var _foundation = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/select/foundation"));
|
|
62
62
|
|
|
@@ -110,7 +110,7 @@ const key = 0; // Notes: Use the label of the option as the identifier, that is,
|
|
|
110
110
|
|
|
111
111
|
class Select extends _baseComponent.default {
|
|
112
112
|
constructor(props) {
|
|
113
|
-
var _context, _context2, _context3, _context4, _context5, _context6;
|
|
113
|
+
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8;
|
|
114
114
|
|
|
115
115
|
super(props);
|
|
116
116
|
|
|
@@ -143,6 +143,8 @@ class Select extends _baseComponent.default {
|
|
|
143
143
|
this.onMouseEnter = (0, _bind.default)(_context4 = this.onMouseEnter).call(_context4, this);
|
|
144
144
|
this.onMouseLeave = (0, _bind.default)(_context5 = this.onMouseLeave).call(_context5, this);
|
|
145
145
|
this.renderOption = (0, _bind.default)(_context6 = this.renderOption).call(_context6, this);
|
|
146
|
+
this.onKeyPress = (0, _bind.default)(_context7 = this.onKeyPress).call(_context7, this);
|
|
147
|
+
this.onClearBtnEnterPress = (0, _bind.default)(_context8 = this.onClearBtnEnterPress).call(_context8, this);
|
|
146
148
|
this.foundation = new _foundation.default(this.adapter);
|
|
147
149
|
(0, _warning.default)('optionLabelProp' in this.props, '[Semi Select] \'optionLabelProp\' has already been deprecated, please use \'renderSelectedItem\' instead.');
|
|
148
150
|
(0, _warning.default)('labelInValue' in this.props, '[Semi Select] \'labelInValue\' has already been deprecated, please use \'onChangeWithObject\' instead.');
|
|
@@ -346,10 +348,10 @@ class Select extends _baseComponent.default {
|
|
|
346
348
|
} catch (error) {}
|
|
347
349
|
},
|
|
348
350
|
updateScrollTop: () => {
|
|
349
|
-
var
|
|
351
|
+
var _context9, _context10;
|
|
350
352
|
|
|
351
353
|
// eslint-disable-next-line max-len
|
|
352
|
-
let destNode = document.querySelector((0, _concat.default)(
|
|
354
|
+
let destNode = document.querySelector((0, _concat.default)(_context9 = (0, _concat.default)(_context10 = "#".concat(prefixcls, "-")).call(_context10, this.selectOptionListID, " .")).call(_context9, prefixcls, "-option-selected"));
|
|
353
355
|
|
|
354
356
|
if ((0, _isArray.default)(destNode)) {
|
|
355
357
|
// eslint-disable-next-line prefer-destructuring
|
|
@@ -377,10 +379,10 @@ class Select extends _baseComponent.default {
|
|
|
377
379
|
}
|
|
378
380
|
|
|
379
381
|
componentDidUpdate(prevProps, prevState) {
|
|
380
|
-
var
|
|
382
|
+
var _context11, _context12;
|
|
381
383
|
|
|
382
|
-
const prevChildrenKeys = (0, _map2.default)(
|
|
383
|
-
const nowChildrenKeys = (0, _map2.default)(
|
|
384
|
+
const prevChildrenKeys = (0, _map2.default)(_context11 = _react.default.Children.toArray(prevProps.children)).call(_context11, child => child.key);
|
|
385
|
+
const nowChildrenKeys = (0, _map2.default)(_context12 = _react.default.Children.toArray(this.props.children)).call(_context12, child => child.key);
|
|
384
386
|
let isOptionsChanged = false;
|
|
385
387
|
|
|
386
388
|
if (!(0, _isEqual2.default)(prevChildrenKeys, nowChildrenKeys) || !(0, _isEqual2.default)(prevProps.optionList, this.props.optionList)) {
|
|
@@ -471,6 +473,10 @@ class Select extends _baseComponent.default {
|
|
|
471
473
|
this.foundation.handleClearClick(e);
|
|
472
474
|
}
|
|
473
475
|
|
|
476
|
+
onClearBtnEnterPress(e) {
|
|
477
|
+
this.foundation.handleClearBtnEnterPress(e);
|
|
478
|
+
}
|
|
479
|
+
|
|
474
480
|
renderEmpty() {
|
|
475
481
|
return /*#__PURE__*/_react.default.createElement(_option.default, {
|
|
476
482
|
empty: true,
|
|
@@ -550,10 +556,16 @@ class Select extends _baseComponent.default {
|
|
|
550
556
|
}
|
|
551
557
|
|
|
552
558
|
const customCreateItem = renderCreateItem(option.value, isFocused);
|
|
553
|
-
return
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
559
|
+
return (
|
|
560
|
+
/*#__PURE__*/
|
|
561
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/interactive-supports-focus
|
|
562
|
+
_react.default.createElement("div", {
|
|
563
|
+
role: "button",
|
|
564
|
+
"aria-label": "Use the input box to create an optional item",
|
|
565
|
+
onClick: e => this.onSelect(option, optionIndex, e),
|
|
566
|
+
key: new Date().valueOf()
|
|
567
|
+
}, customCreateItem)
|
|
568
|
+
);
|
|
557
569
|
}
|
|
558
570
|
|
|
559
571
|
onOptionHover(optionIndex) {
|
|
@@ -615,7 +627,7 @@ class Select extends _baseComponent.default {
|
|
|
615
627
|
}
|
|
616
628
|
|
|
617
629
|
renderOptions(children) {
|
|
618
|
-
var
|
|
630
|
+
var _context13;
|
|
619
631
|
|
|
620
632
|
const {
|
|
621
633
|
dropdownMinWidth,
|
|
@@ -631,7 +643,8 @@ class Select extends _baseComponent.default {
|
|
|
631
643
|
outerBottomSlot,
|
|
632
644
|
innerBottomSlot,
|
|
633
645
|
loading,
|
|
634
|
-
virtualize
|
|
646
|
+
virtualize,
|
|
647
|
+
multiple
|
|
635
648
|
} = this.props; // Do a filter first, instead of directly judging in forEach, so that the focusIndex can correspond to
|
|
636
649
|
|
|
637
650
|
const visibileOptions = (0, _filter.default)(options).call(options, item => item._show);
|
|
@@ -650,7 +663,7 @@ class Select extends _baseComponent.default {
|
|
|
650
663
|
});
|
|
651
664
|
const isEmpty = !options.length || !(0, _some.default)(options).call(options, item => item._show);
|
|
652
665
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
653
|
-
id: (0, _concat.default)(
|
|
666
|
+
id: (0, _concat.default)(_context13 = "".concat(prefixcls, "-")).call(_context13, this.selectOptionListID),
|
|
654
667
|
className: dropdownClassName,
|
|
655
668
|
style: style
|
|
656
669
|
}, outerTopSlot, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -659,6 +672,7 @@ class Select extends _baseComponent.default {
|
|
|
659
672
|
},
|
|
660
673
|
className: optionListCls,
|
|
661
674
|
role: "listbox",
|
|
675
|
+
"aria-multiselectable": multiple,
|
|
662
676
|
onScroll: e => this.foundation.handleListScroll(e)
|
|
663
677
|
}, innerTopSlot, !loading ? listContent : this.renderLoading(), isEmpty && !loading ? this.renderEmpty() : null, innerBottomSlot), outerBottomSlot);
|
|
664
678
|
}
|
|
@@ -803,6 +817,10 @@ class Select extends _baseComponent.default {
|
|
|
803
817
|
onMouseLeave(e) {
|
|
804
818
|
this.foundation.handleMouseLeave(e);
|
|
805
819
|
}
|
|
820
|
+
|
|
821
|
+
onKeyPress(e) {
|
|
822
|
+
this.foundation.handleKeyPress(e);
|
|
823
|
+
}
|
|
806
824
|
/* Processing logic when popover visible changes */
|
|
807
825
|
|
|
808
826
|
|
|
@@ -856,7 +874,8 @@ class Select extends _baseComponent.default {
|
|
|
856
874
|
renderPrefix() {
|
|
857
875
|
const {
|
|
858
876
|
prefix,
|
|
859
|
-
insetLabel
|
|
877
|
+
insetLabel,
|
|
878
|
+
insetLabelId
|
|
860
879
|
} = this.props;
|
|
861
880
|
const labelNode = prefix || insetLabel;
|
|
862
881
|
const prefixWrapperCls = (0, _classnames.default)({
|
|
@@ -866,11 +885,14 @@ class Select extends _baseComponent.default {
|
|
|
866
885
|
["".concat(prefixcls, "-prefix-icon")]: (0, _utils2.isSemiIcon)(labelNode)
|
|
867
886
|
});
|
|
868
887
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
869
|
-
className: prefixWrapperCls
|
|
888
|
+
className: prefixWrapperCls,
|
|
889
|
+
id: insetLabelId
|
|
870
890
|
}, labelNode);
|
|
871
891
|
}
|
|
872
892
|
|
|
873
893
|
renderSelection() {
|
|
894
|
+
var _context14;
|
|
895
|
+
|
|
874
896
|
const {
|
|
875
897
|
disabled,
|
|
876
898
|
multiple,
|
|
@@ -939,13 +961,28 @@ class Select extends _baseComponent.default {
|
|
|
939
961
|
}, multiple ? this.renderMultipleSelection(selections, filterable) : this.renderSingleSelection(selections, filterable))), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
940
962
|
key: "clearicon"
|
|
941
963
|
}, showClear ? /*#__PURE__*/_react.default.createElement("div", {
|
|
964
|
+
role: "button",
|
|
965
|
+
"aria-label": "Clear selected value",
|
|
966
|
+
tabIndex: 0,
|
|
942
967
|
className: (0, _classnames.default)("".concat(prefixcls, "-clear")),
|
|
943
|
-
onClick: this.onClear
|
|
968
|
+
onClick: this.onClear,
|
|
969
|
+
onKeyPress: this.onClearBtnEnterPress
|
|
944
970
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null)) : arrowContent), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
945
971
|
key: "suffix"
|
|
946
972
|
}, suffix ? this.renderSuffix() : null)];
|
|
947
973
|
const tabIndex = disabled ? null : 0;
|
|
948
974
|
return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
975
|
+
role: "combobox",
|
|
976
|
+
"aria-disabled": disabled,
|
|
977
|
+
"aria-expanded": isOpen,
|
|
978
|
+
"aria-controls": (0, _concat.default)(_context14 = "".concat(prefixcls, "-")).call(_context14, this.selectOptionListID),
|
|
979
|
+
"aria-haspopup": "listbox",
|
|
980
|
+
"aria-label": "select value",
|
|
981
|
+
"aria-invalid": this.props['aria-invalid'],
|
|
982
|
+
"aria-errormessage": this.props['aria-errormessage'],
|
|
983
|
+
"aria-labelledby": this.props['aria-labelledby'],
|
|
984
|
+
"aria-describedby": this.props['aria-describedby'],
|
|
985
|
+
"aria-required": this.props['aria-required'],
|
|
949
986
|
className: selectionCls,
|
|
950
987
|
ref: ref => this.triggerRef.current = ref,
|
|
951
988
|
onClick: e => this.foundation.handleClick(e),
|
|
@@ -955,7 +992,8 @@ class Select extends _baseComponent.default {
|
|
|
955
992
|
onMouseEnter: this.onMouseEnter,
|
|
956
993
|
onMouseLeave: this.onMouseLeave,
|
|
957
994
|
// onFocus={e => this.foundation.handleTriggerFocus(e)}
|
|
958
|
-
onBlur: e => this.foundation.handleTriggerBlur(e)
|
|
995
|
+
onBlur: e => this.foundation.handleTriggerBlur(e),
|
|
996
|
+
onKeyPress: this.onKeyPress
|
|
959
997
|
}, keyboardEventSet), inner);
|
|
960
998
|
}
|
|
961
999
|
|
|
@@ -1004,11 +1042,17 @@ class Select extends _baseComponent.default {
|
|
|
1004
1042
|
|
|
1005
1043
|
}
|
|
1006
1044
|
|
|
1007
|
-
Select.contextType =
|
|
1045
|
+
Select.contextType = _context15.default;
|
|
1008
1046
|
Select.Option = _option.default;
|
|
1009
1047
|
Select.OptGroup = _optionGroup.default;
|
|
1010
1048
|
Select.propTypes = {
|
|
1049
|
+
'aria-describedby': _propTypes.default.string,
|
|
1050
|
+
'aria-errormessage': _propTypes.default.string,
|
|
1051
|
+
'aria-invalid': _propTypes.default.bool,
|
|
1052
|
+
'aria-labelledby': _propTypes.default.string,
|
|
1053
|
+
'aria-required': _propTypes.default.bool,
|
|
1011
1054
|
autoFocus: _propTypes.default.bool,
|
|
1055
|
+
autoClearSearchValue: _propTypes.default.bool,
|
|
1012
1056
|
children: _propTypes.default.node,
|
|
1013
1057
|
defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.array, _propTypes.default.object]),
|
|
1014
1058
|
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.array, _propTypes.default.object]),
|
|
@@ -1053,6 +1097,7 @@ Select.propTypes = {
|
|
|
1053
1097
|
suffix: _propTypes.default.node,
|
|
1054
1098
|
prefix: _propTypes.default.node,
|
|
1055
1099
|
insetLabel: _propTypes.default.node,
|
|
1100
|
+
insetLabelId: _propTypes.default.string,
|
|
1056
1101
|
showClear: _propTypes.default.bool,
|
|
1057
1102
|
showArrow: _propTypes.default.bool,
|
|
1058
1103
|
renderSelectedItem: _propTypes.default.func,
|
|
@@ -1113,6 +1158,7 @@ Select.defaultProps = {
|
|
|
1113
1158
|
showClear: false,
|
|
1114
1159
|
remote: false,
|
|
1115
1160
|
autoAdjustOverflow: true,
|
|
1161
|
+
autoClearSearchValue: true,
|
|
1116
1162
|
arrowIcon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, null) // Radio selection is different from the default renderSelectedItem for multiple selection, so it is not declared here
|
|
1117
1163
|
// renderSelectedItem: (optionNode) => optionNode.label,
|
|
1118
1164
|
// The default creator rendering is related to i18, so it is not declared here
|