@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/tree/index.js
CHANGED
|
@@ -563,6 +563,7 @@ class Tree extends _baseComponent.default {
|
|
|
563
563
|
}
|
|
564
564
|
|
|
565
565
|
return /*#__PURE__*/_react.default.createElement(_index.default, (0, _assign.default)({
|
|
566
|
+
"aria-label": 'Filter Tree',
|
|
566
567
|
ref: this.inputRef
|
|
567
568
|
}, inputProps));
|
|
568
569
|
}));
|
|
@@ -665,6 +666,14 @@ class Tree extends _baseComponent.default {
|
|
|
665
666
|
});
|
|
666
667
|
const searchNoRes = Boolean(inputValue) && !filteredKeys.size;
|
|
667
668
|
const noData = (0, _isEmpty2.default)(keyEntities) || showFilteredOnly && searchNoRes;
|
|
669
|
+
const ariaAttr = {
|
|
670
|
+
role: noData ? 'none' : 'tree'
|
|
671
|
+
};
|
|
672
|
+
|
|
673
|
+
if (ariaAttr.role === 'tree') {
|
|
674
|
+
ariaAttr['aria-multiselectable'] = multiple ? true : false;
|
|
675
|
+
}
|
|
676
|
+
|
|
668
677
|
return /*#__PURE__*/_react.default.createElement(_treeContext.default.Provider, {
|
|
669
678
|
value: {
|
|
670
679
|
treeDisabled: disabled,
|
|
@@ -702,13 +711,12 @@ class Tree extends _baseComponent.default {
|
|
|
702
711
|
labelEllipsis: typeof labelEllipsis === 'undefined' ? virtualize : labelEllipsis
|
|
703
712
|
}
|
|
704
713
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
714
|
+
"aria-label": this.props['aria-label'],
|
|
705
715
|
className: wrapperCls,
|
|
706
|
-
role: "list-box",
|
|
707
716
|
style: style
|
|
708
|
-
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
709
|
-
className: listCls
|
|
710
|
-
|
|
711
|
-
}, noData ? this.renderEmpty() : this.renderNodeList())));
|
|
717
|
+
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
718
|
+
className: listCls
|
|
719
|
+
}, ariaAttr), noData ? this.renderEmpty() : this.renderNodeList())));
|
|
712
720
|
}
|
|
713
721
|
|
|
714
722
|
}
|
|
@@ -773,7 +781,8 @@ Tree.propTypes = {
|
|
|
773
781
|
onDragOver: _propTypes.default.func,
|
|
774
782
|
onDragStart: _propTypes.default.func,
|
|
775
783
|
onDrop: _propTypes.default.func,
|
|
776
|
-
labelEllipsis: _propTypes.default.bool
|
|
784
|
+
labelEllipsis: _propTypes.default.bool,
|
|
785
|
+
'aria-label': _propTypes.default.string
|
|
777
786
|
};
|
|
778
787
|
Tree.defaultProps = {
|
|
779
788
|
showClear: true,
|
|
@@ -29,11 +29,19 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
|
|
|
29
29
|
debounceSelect: any;
|
|
30
30
|
refNode: HTMLElement;
|
|
31
31
|
constructor(props: TreeNodeProps);
|
|
32
|
-
onSelect: (e: React.MouseEvent) => void;
|
|
33
|
-
onExpand: (e: React.MouseEvent) => void;
|
|
34
|
-
onCheck: (e: React.MouseEvent) => void;
|
|
32
|
+
onSelect: (e: React.MouseEvent | React.KeyboardEvent) => void;
|
|
33
|
+
onExpand: (e: React.MouseEvent | React.KeyboardEvent) => void;
|
|
34
|
+
onCheck: (e: React.MouseEvent | React.KeyboardEvent) => void;
|
|
35
|
+
/**
|
|
36
|
+
* A11y: simulate checkbox click
|
|
37
|
+
*/
|
|
38
|
+
handleCheckEnterPress: (e: React.KeyboardEvent) => void;
|
|
35
39
|
onContextMenu: (e: React.MouseEvent) => void;
|
|
36
|
-
onClick: (e: React.MouseEvent) => void;
|
|
40
|
+
onClick: (e: React.MouseEvent | React.KeyboardEvent) => void;
|
|
41
|
+
/**
|
|
42
|
+
* A11y: simulate li click
|
|
43
|
+
*/
|
|
44
|
+
handleliEnterPress: (e: React.KeyboardEvent) => void;
|
|
37
45
|
onDoubleClick: (e: React.MouseEvent) => void;
|
|
38
46
|
onDragStart: (e: React.DragEvent) => void;
|
|
39
47
|
onDragEnter: (e: React.DragEvent) => void;
|
package/lib/cjs/tree/treeNode.js
CHANGED
|
@@ -24,6 +24,8 @@ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
24
24
|
|
|
25
25
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
26
26
|
|
|
27
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
28
|
+
|
|
27
29
|
var _isString2 = _interopRequireDefault(require("lodash/isString"));
|
|
28
30
|
|
|
29
31
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
@@ -38,6 +40,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
38
40
|
|
|
39
41
|
var _constants = require("@douyinfe/semi-foundation/lib/cjs/tree/constants");
|
|
40
42
|
|
|
43
|
+
var _isEnterPress = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/isEnterPress"));
|
|
44
|
+
|
|
41
45
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
42
46
|
|
|
43
47
|
var _checkbox = require("../checkbox");
|
|
@@ -95,6 +99,16 @@ class TreeNode extends _react.PureComponent {
|
|
|
95
99
|
e.nativeEvent.stopImmediatePropagation();
|
|
96
100
|
onNodeCheck(e, this.props);
|
|
97
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* A11y: simulate checkbox click
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
this.handleCheckEnterPress = e => {
|
|
108
|
+
if ((0, _isEnterPress.default)(e)) {
|
|
109
|
+
this.onCheck(e);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
98
112
|
|
|
99
113
|
this.onContextMenu = e => {
|
|
100
114
|
const {
|
|
@@ -119,6 +133,16 @@ class TreeNode extends _react.PureComponent {
|
|
|
119
133
|
this.onExpand(e);
|
|
120
134
|
}
|
|
121
135
|
};
|
|
136
|
+
/**
|
|
137
|
+
* A11y: simulate li click
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
this.handleliEnterPress = e => {
|
|
142
|
+
if ((0, _isEnterPress.default)(e)) {
|
|
143
|
+
this.onClick(e);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
122
146
|
|
|
123
147
|
this.onDoubleClick = e => {
|
|
124
148
|
const {
|
|
@@ -294,7 +318,8 @@ class TreeNode extends _react.PureComponent {
|
|
|
294
318
|
renderArrow() {
|
|
295
319
|
const showIcon = !this.isLeaf();
|
|
296
320
|
const {
|
|
297
|
-
loading
|
|
321
|
+
loading,
|
|
322
|
+
expanded
|
|
298
323
|
} = this.props;
|
|
299
324
|
|
|
300
325
|
if (loading) {
|
|
@@ -305,6 +330,8 @@ class TreeNode extends _react.PureComponent {
|
|
|
305
330
|
|
|
306
331
|
if (showIcon) {
|
|
307
332
|
return /*#__PURE__*/_react.default.createElement(_semiIcons.IconTreeTriangleDown, {
|
|
333
|
+
role: 'button',
|
|
334
|
+
"aria-label": "".concat(expanded ? 'Expand' : 'Collapse', " the tree item"),
|
|
308
335
|
className: "".concat(prefixcls, "-expand-icon"),
|
|
309
336
|
size: "small",
|
|
310
337
|
onClick: this.onExpand
|
|
@@ -323,8 +350,11 @@ class TreeNode extends _react.PureComponent {
|
|
|
323
350
|
} = this.props;
|
|
324
351
|
const disabled = this.isDisabled();
|
|
325
352
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
326
|
-
|
|
353
|
+
role: 'none',
|
|
354
|
+
onClick: this.onCheck,
|
|
355
|
+
onKeyPress: this.handleCheckEnterPress
|
|
327
356
|
}, /*#__PURE__*/_react.default.createElement(_checkbox.Checkbox, {
|
|
357
|
+
"aria-label": 'Toggle the checked state of checkbox',
|
|
328
358
|
indeterminate: halfChecked,
|
|
329
359
|
checked: checked,
|
|
330
360
|
disabled: Boolean(disabled)
|
|
@@ -377,7 +407,7 @@ class TreeNode extends _react.PureComponent {
|
|
|
377
407
|
});
|
|
378
408
|
return /*#__PURE__*/_react.default.createElement("ul", {
|
|
379
409
|
className: wrapperCls
|
|
380
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
410
|
+
}, /*#__PURE__*/_react.default.createElement("li", {
|
|
381
411
|
className: (0, _concat.default)(_context2 = "".concat(prefixcls, "-label ")).call(_context2, prefixcls, "-label-empty")
|
|
382
412
|
}, emptyContent));
|
|
383
413
|
} // eslint-disable-next-line max-lines-per-function
|
|
@@ -484,11 +514,21 @@ class TreeNode extends _react.PureComponent {
|
|
|
484
514
|
["".concat(prefixcls, "-drag-over-gap-top")]: !disabled && dragOverGapTop,
|
|
485
515
|
["".concat(prefixcls, "-drag-over-gap-bottom")]: !disabled && dragOverGapBottom
|
|
486
516
|
});
|
|
517
|
+
const setsize = (0, _get2.default)(rest, ['data', 'children', 'length']);
|
|
518
|
+
const posinset = (0, _isString2.default)(rest.pos) ? Number(rest.pos.split('-')[level + 1]) + 1 : 1;
|
|
487
519
|
return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({
|
|
488
520
|
className: nodeCls,
|
|
489
|
-
role: "
|
|
521
|
+
role: "treeitem",
|
|
522
|
+
"aria-disabled": disabled,
|
|
523
|
+
"aria-checked": checked,
|
|
524
|
+
"aria-selected": selected,
|
|
525
|
+
"aria-setsize": setsize,
|
|
526
|
+
"aria-posinset": posinset,
|
|
527
|
+
"aria-expanded": expanded,
|
|
528
|
+
"aria-level": level + 1,
|
|
490
529
|
"data-key": eventKey,
|
|
491
530
|
onClick: this.onClick,
|
|
531
|
+
onKeyPress: this.handleliEnterPress,
|
|
492
532
|
onContextMenu: this.onContextMenu,
|
|
493
533
|
onDoubleClick: this.onDoubleClick,
|
|
494
534
|
ref: this.setRef,
|
|
@@ -34,6 +34,11 @@ export declare type OverrideCommonProps = 'renderFullLabel' | 'renderLabel' | 'd
|
|
|
34
34
|
* TreeSelectProps inherits some properties from BasicTreeSelectProps (from foundation) and TreeProps (from semi-ui-react).
|
|
35
35
|
*/
|
|
36
36
|
export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideCommonProps | 'validateStatus' | 'searchRender'>, Pick<TreeProps, OverrideCommonProps> {
|
|
37
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
38
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
39
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
40
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
41
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
37
42
|
motion?: Motion;
|
|
38
43
|
mouseEnterDelay?: number;
|
|
39
44
|
mouseLeaveDelay?: number;
|
|
@@ -45,6 +50,7 @@ export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideComm
|
|
|
45
50
|
dropdownMatchSelectWidth?: boolean;
|
|
46
51
|
dropdownStyle?: React.CSSProperties;
|
|
47
52
|
insetLabel?: React.ReactNode;
|
|
53
|
+
insetLabelId?: string;
|
|
48
54
|
maxTagCount?: number;
|
|
49
55
|
motionExpand?: boolean;
|
|
50
56
|
optionListStyle?: React.CSSProperties;
|
|
@@ -85,6 +91,11 @@ export interface TreeSelectState extends Omit<BasicTreeSelectInnerData, Override
|
|
|
85
91
|
declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
86
92
|
static contextType: React.Context<import("../configProvider/context").ContextValue>;
|
|
87
93
|
static propTypes: {
|
|
94
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
95
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
96
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
97
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
98
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
88
99
|
loadedKeys: PropTypes.Requireable<string[]>;
|
|
89
100
|
loadData: PropTypes.Requireable<(...args: any[]) => any>;
|
|
90
101
|
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -136,6 +147,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
136
147
|
suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
137
148
|
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
138
149
|
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
150
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
139
151
|
zIndex: PropTypes.Requireable<number>;
|
|
140
152
|
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
141
153
|
dropdownMatchSelectWidth: PropTypes.Requireable<boolean>;
|
|
@@ -156,6 +168,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
156
168
|
optionListStyle: PropTypes.Requireable<object>;
|
|
157
169
|
searchRender: PropTypes.Requireable<boolean | ((...args: any[]) => any)>;
|
|
158
170
|
renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
|
|
171
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
159
172
|
};
|
|
160
173
|
static defaultProps: Partial<TreeSelectProps>;
|
|
161
174
|
inputRef: React.RefObject<typeof Input>;
|
|
@@ -167,6 +180,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
167
180
|
onNodeClick: any;
|
|
168
181
|
onNodeDoubleClick: any;
|
|
169
182
|
onMotionEnd: any;
|
|
183
|
+
treeSelectID: string;
|
|
170
184
|
constructor(props: TreeSelectProps);
|
|
171
185
|
static getDerivedStateFromProps(props: TreeSelectProps, prevState: TreeSelectState): Partial<TreeSelectState>;
|
|
172
186
|
get adapter(): TreeSelectAdapter<TreeSelectProps, TreeSelectState>;
|
|
@@ -177,6 +191,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
177
191
|
renderContent: () => JSX.Element;
|
|
178
192
|
removeTag: (removedKey: TreeNodeData['key']) => void;
|
|
179
193
|
handleClick: (e: React.MouseEvent) => void;
|
|
194
|
+
handleSelectionEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
180
195
|
showClearBtn: () => boolean;
|
|
181
196
|
renderTagList: () => React.ReactNode[];
|
|
182
197
|
/**
|
|
@@ -189,6 +204,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
189
204
|
renderSingleTriggerSearch: () => JSX.Element;
|
|
190
205
|
renderSelectContent: () => JSX.Element;
|
|
191
206
|
handleClear: (e: React.MouseEvent) => void;
|
|
207
|
+
handleClearEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
192
208
|
handleMouseOver: (e: React.MouseEvent) => void;
|
|
193
209
|
handleMouseLeave: (e: React.MouseEvent) => void;
|
|
194
210
|
search: (value: string) => void;
|
|
@@ -26,6 +26,8 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
26
26
|
|
|
27
27
|
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
28
28
|
|
|
29
|
+
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
30
|
+
|
|
29
31
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
30
32
|
|
|
31
33
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
@@ -64,7 +66,7 @@ require("@douyinfe/semi-foundation/lib/cjs/treeSelect/treeSelect.css");
|
|
|
64
66
|
|
|
65
67
|
var _baseComponent = _interopRequireDefault(require("../_base/baseComponent"));
|
|
66
68
|
|
|
67
|
-
var
|
|
69
|
+
var _context3 = _interopRequireDefault(require("../configProvider/context"));
|
|
68
70
|
|
|
69
71
|
var _group = _interopRequireDefault(require("../tag/group"));
|
|
70
72
|
|
|
@@ -104,6 +106,8 @@ const key = 0;
|
|
|
104
106
|
|
|
105
107
|
class TreeSelect extends _baseComponent.default {
|
|
106
108
|
constructor(props) {
|
|
109
|
+
var _context2;
|
|
110
|
+
|
|
107
111
|
super(props);
|
|
108
112
|
|
|
109
113
|
this.renderSuffix = () => {
|
|
@@ -123,7 +127,8 @@ class TreeSelect extends _baseComponent.default {
|
|
|
123
127
|
this.renderPrefix = () => {
|
|
124
128
|
const {
|
|
125
129
|
prefix,
|
|
126
|
-
insetLabel
|
|
130
|
+
insetLabel,
|
|
131
|
+
insetLabelId
|
|
127
132
|
} = this.props;
|
|
128
133
|
const labelNode = prefix || insetLabel;
|
|
129
134
|
const prefixWrapperCls = (0, _classnames.default)({
|
|
@@ -134,7 +139,8 @@ class TreeSelect extends _baseComponent.default {
|
|
|
134
139
|
["".concat(prefixcls, "-prefix-icon")]: (0, _utils.isSemiIcon)(labelNode)
|
|
135
140
|
});
|
|
136
141
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
137
|
-
className: prefixWrapperCls
|
|
142
|
+
className: prefixWrapperCls,
|
|
143
|
+
id: insetLabelId
|
|
138
144
|
}, labelNode);
|
|
139
145
|
};
|
|
140
146
|
|
|
@@ -152,7 +158,6 @@ class TreeSelect extends _baseComponent.default {
|
|
|
152
158
|
const popoverCls = (0, _classnames.default)(dropdownClassName, "".concat(prefixcls, "-popover"));
|
|
153
159
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
154
160
|
className: popoverCls,
|
|
155
|
-
role: "list-box",
|
|
156
161
|
style: style
|
|
157
162
|
}, this.renderTree());
|
|
158
163
|
};
|
|
@@ -165,6 +170,10 @@ class TreeSelect extends _baseComponent.default {
|
|
|
165
170
|
this.foundation.handleClick(e);
|
|
166
171
|
};
|
|
167
172
|
|
|
173
|
+
this.handleSelectionEnterPress = e => {
|
|
174
|
+
this.foundation.handleSelectionEnterPress(e);
|
|
175
|
+
};
|
|
176
|
+
|
|
168
177
|
this.showClearBtn = () => {
|
|
169
178
|
const {
|
|
170
179
|
searchPosition
|
|
@@ -332,6 +341,11 @@ class TreeSelect extends _baseComponent.default {
|
|
|
332
341
|
this.foundation.handleClear(e);
|
|
333
342
|
};
|
|
334
343
|
|
|
344
|
+
this.handleClearEnterPress = e => {
|
|
345
|
+
e && e.stopPropagation();
|
|
346
|
+
this.foundation.handleClearEnterPress(e);
|
|
347
|
+
};
|
|
348
|
+
|
|
335
349
|
this.handleMouseOver = e => {
|
|
336
350
|
this.foundation.toggleHoverState(true);
|
|
337
351
|
};
|
|
@@ -369,8 +383,12 @@ class TreeSelect extends _baseComponent.default {
|
|
|
369
383
|
|
|
370
384
|
if (showClearBtn) {
|
|
371
385
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
386
|
+
role: 'button',
|
|
387
|
+
tabIndex: 0,
|
|
388
|
+
"aria-label": "Clear TreeSelect value",
|
|
372
389
|
className: clearCls,
|
|
373
|
-
onClick: this.handleClear
|
|
390
|
+
onClick: this.handleClear,
|
|
391
|
+
onKeyPress: this.handleClearEnterPress
|
|
374
392
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null));
|
|
375
393
|
}
|
|
376
394
|
|
|
@@ -452,11 +470,29 @@ class TreeSelect extends _baseComponent.default {
|
|
|
452
470
|
}, showClear || isTriggerPositionSearch && inputValue ? this.renderClearBtn() : null), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
453
471
|
key: 'arrow'
|
|
454
472
|
}, this.renderArrow())];
|
|
473
|
+
const tabIndex = disabled ? null : 0;
|
|
474
|
+
/**
|
|
475
|
+
* Reasons for disabling the a11y eslint rule:
|
|
476
|
+
* The following attributes(aria-controls,aria-expanded) will be automatically added by Tooltip, no need to declare here
|
|
477
|
+
*/
|
|
478
|
+
|
|
455
479
|
return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
480
|
+
// eslint-disable-next-line jsx-a11y/role-has-required-aria-props
|
|
481
|
+
role: 'combobox',
|
|
482
|
+
"aria-disabled": disabled,
|
|
483
|
+
"aria-haspopup": "tree",
|
|
484
|
+
tabIndex: tabIndex,
|
|
456
485
|
className: classNames,
|
|
457
486
|
style: style,
|
|
458
487
|
ref: this.triggerRef,
|
|
459
|
-
onClick: this.handleClick
|
|
488
|
+
onClick: this.handleClick,
|
|
489
|
+
onKeyPress: this.handleSelectionEnterPress,
|
|
490
|
+
"aria-invalid": this.props['aria-invalid'],
|
|
491
|
+
"aria-errormessage": this.props['aria-errormessage'],
|
|
492
|
+
"aria-label": this.props['aria-label'],
|
|
493
|
+
"aria-labelledby": this.props['aria-labelledby'],
|
|
494
|
+
"aria-describedby": this.props['aria-describedby'],
|
|
495
|
+
"aria-required": this.props['aria-required']
|
|
460
496
|
}, mouseEvent), inner);
|
|
461
497
|
}; // eslint-disable-next-line @typescript-eslint/no-shadow
|
|
462
498
|
|
|
@@ -531,7 +567,8 @@ class TreeSelect extends _baseComponent.default {
|
|
|
531
567
|
disabled,
|
|
532
568
|
size,
|
|
533
569
|
searchAutoFocus,
|
|
534
|
-
placeholder
|
|
570
|
+
placeholder,
|
|
571
|
+
maxTagCount
|
|
535
572
|
} = this.props;
|
|
536
573
|
const {
|
|
537
574
|
keyEntities,
|
|
@@ -540,6 +577,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
540
577
|
} = this.state;
|
|
541
578
|
const keyList = (0, _treeUtil.normalizeKeyList)(checkedKeys, keyEntities, leafOnly);
|
|
542
579
|
return /*#__PURE__*/_react.default.createElement(_tagInput.default, {
|
|
580
|
+
maxTagCount: maxTagCount,
|
|
543
581
|
disabled: disabled,
|
|
544
582
|
onInputChange: v => this.search(v),
|
|
545
583
|
ref: this.tagInputRef,
|
|
@@ -611,6 +649,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
611
649
|
}
|
|
612
650
|
|
|
613
651
|
return /*#__PURE__*/_react.default.createElement(_index2.default, (0, _assign.default)({
|
|
652
|
+
"aria-label": 'Filter TreeSelect item',
|
|
614
653
|
ref: this.inputRef,
|
|
615
654
|
autofocus: searchAutoFocus,
|
|
616
655
|
placeholder: placeholder
|
|
@@ -839,11 +878,11 @@ class TreeSelect extends _baseComponent.default {
|
|
|
839
878
|
labelEllipsis: typeof labelEllipsis === 'undefined' ? virtualize : labelEllipsis
|
|
840
879
|
}
|
|
841
880
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
842
|
-
className: wrapperCls
|
|
843
|
-
role: "list-box"
|
|
881
|
+
className: wrapperCls
|
|
844
882
|
}, outerTopSlot, !outerTopSlot && filterTreeNode && isDropdownPositionSearch && this.renderInput(), /*#__PURE__*/_react.default.createElement("div", {
|
|
845
883
|
className: listCls,
|
|
846
884
|
role: "tree",
|
|
885
|
+
"aria-multiselectable": multiple ? true : false,
|
|
847
886
|
style: optionListStyle
|
|
848
887
|
}, noData ? this.renderEmpty() : this.renderNodeList()), outerBottomSlot));
|
|
849
888
|
};
|
|
@@ -880,6 +919,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
880
919
|
this.optionsRef = /*#__PURE__*/_react.default.createRef();
|
|
881
920
|
this.clickOutsideHandler = null;
|
|
882
921
|
this.foundation = new _foundation.default(this.adapter);
|
|
922
|
+
this.treeSelectID = (0, _slice.default)(_context2 = Math.random().toString(36)).call(_context2, 2);
|
|
883
923
|
} // eslint-disable-next-line max-lines-per-function
|
|
884
924
|
|
|
885
925
|
|
|
@@ -1179,8 +1219,13 @@ class TreeSelect extends _baseComponent.default {
|
|
|
1179
1219
|
|
|
1180
1220
|
}
|
|
1181
1221
|
|
|
1182
|
-
TreeSelect.contextType =
|
|
1222
|
+
TreeSelect.contextType = _context3.default;
|
|
1183
1223
|
TreeSelect.propTypes = {
|
|
1224
|
+
'aria-describedby': _propTypes.default.string,
|
|
1225
|
+
'aria-errormessage': _propTypes.default.string,
|
|
1226
|
+
'aria-invalid': _propTypes.default.bool,
|
|
1227
|
+
'aria-labelledby': _propTypes.default.string,
|
|
1228
|
+
'aria-required': _propTypes.default.bool,
|
|
1184
1229
|
loadedKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
1185
1230
|
loadData: _propTypes.default.func,
|
|
1186
1231
|
onLoad: _propTypes.default.func,
|
|
@@ -1233,6 +1278,7 @@ TreeSelect.propTypes = {
|
|
|
1233
1278
|
suffix: _propTypes.default.node,
|
|
1234
1279
|
prefix: _propTypes.default.node,
|
|
1235
1280
|
insetLabel: _propTypes.default.node,
|
|
1281
|
+
insetLabelId: _propTypes.default.string,
|
|
1236
1282
|
zIndex: _propTypes.default.number,
|
|
1237
1283
|
getPopupContainer: _propTypes.default.func,
|
|
1238
1284
|
dropdownMatchSelectWidth: _propTypes.default.bool,
|
|
@@ -1252,7 +1298,8 @@ TreeSelect.propTypes = {
|
|
|
1252
1298
|
labelEllipsis: _propTypes.default.bool,
|
|
1253
1299
|
optionListStyle: _propTypes.default.object,
|
|
1254
1300
|
searchRender: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.bool]),
|
|
1255
|
-
renderSelectedItem: _propTypes.default.func
|
|
1301
|
+
renderSelectedItem: _propTypes.default.func,
|
|
1302
|
+
'aria-label': _propTypes.default.string
|
|
1256
1303
|
};
|
|
1257
1304
|
TreeSelect.defaultProps = {
|
|
1258
1305
|
searchPosition: _constants.strings.SEARCH_POSITION_DROPDOWN,
|
|
@@ -1279,7 +1326,8 @@ TreeSelect.defaultProps = {
|
|
|
1279
1326
|
onVisibleChange: _noop2.default,
|
|
1280
1327
|
expandAction: false,
|
|
1281
1328
|
clickToHide: true,
|
|
1282
|
-
searchAutoFocus: false
|
|
1329
|
+
searchAutoFocus: false,
|
|
1330
|
+
'aria-label': 'TreeSelect'
|
|
1283
1331
|
};
|
|
1284
1332
|
var _default = TreeSelect;
|
|
1285
1333
|
exports.default = _default;
|
|
@@ -58,6 +58,8 @@ var _util = _interopRequireDefault(require("./util"));
|
|
|
58
58
|
|
|
59
59
|
var _warning = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/warning"));
|
|
60
60
|
|
|
61
|
+
var _isEnterPress = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/isEnterPress"));
|
|
62
|
+
|
|
61
63
|
var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
|
|
62
64
|
|
|
63
65
|
var _utils = require("../_utils");
|
|
@@ -271,13 +273,22 @@ class Base extends _react.Component {
|
|
|
271
273
|
}
|
|
272
274
|
|
|
273
275
|
if (!noExpandText || !noCollapseText) {
|
|
274
|
-
return
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
276
|
+
return (
|
|
277
|
+
/*#__PURE__*/
|
|
278
|
+
// TODO: replace `a` tag with `span` in next major version
|
|
279
|
+
// NOTE: may have effect on style
|
|
280
|
+
// eslint-disable-next-line jsx-a11y/anchor-is-valid
|
|
281
|
+
_react.default.createElement("a", {
|
|
282
|
+
role: "button",
|
|
283
|
+
tabIndex: 0,
|
|
284
|
+
className: "".concat(prefixCls, "-ellipsis-expand"),
|
|
285
|
+
key: "expand",
|
|
286
|
+
ref: this.expandRef,
|
|
287
|
+
"aria-label": text,
|
|
288
|
+
onClick: this.toggleOverflow,
|
|
289
|
+
onKeyPress: e => (0, _isEnterPress.default)(e) && this.toggleOverflow(e)
|
|
290
|
+
}, text)
|
|
291
|
+
);
|
|
281
292
|
}
|
|
282
293
|
|
|
283
294
|
return null;
|
|
@@ -32,6 +32,8 @@ var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer")
|
|
|
32
32
|
|
|
33
33
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
34
34
|
|
|
35
|
+
var _isEnterPress = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/isEnterPress"));
|
|
36
|
+
|
|
35
37
|
const prefixCls = _constants.cssClasses.PREFIX;
|
|
36
38
|
|
|
37
39
|
class Copyable extends _react.default.PureComponent {
|
|
@@ -124,7 +126,10 @@ class Copyable extends _react.default.PureComponent {
|
|
|
124
126
|
}, /*#__PURE__*/_react.default.createElement("a", {
|
|
125
127
|
className: "".concat(prefixCls, "-action-copy-icon")
|
|
126
128
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconCopy, {
|
|
127
|
-
|
|
129
|
+
role: "button",
|
|
130
|
+
tabIndex: 0,
|
|
131
|
+
onClick: this.copy,
|
|
132
|
+
onKeyPress: e => (0, _isEnterPress.default)(e) && this.copy(e)
|
|
128
133
|
})))));
|
|
129
134
|
}
|
|
130
135
|
|
|
@@ -49,6 +49,8 @@ const prefixCls = _constants.cssClasses.PREFIX;
|
|
|
49
49
|
const ErrorSvg = function () {
|
|
50
50
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
51
51
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _assign.default)({
|
|
52
|
+
focusable: false,
|
|
53
|
+
"aria-hidden": true,
|
|
52
54
|
width: "16",
|
|
53
55
|
height: "16",
|
|
54
56
|
viewBox: "0 0 16 16",
|
|
@@ -70,6 +72,8 @@ const ErrorSvg = function () {
|
|
|
70
72
|
const ReplaceSvg = function () {
|
|
71
73
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
72
74
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _assign.default)({
|
|
75
|
+
focusable: false,
|
|
76
|
+
"aria-hidden": true,
|
|
73
77
|
width: "28",
|
|
74
78
|
height: "28",
|
|
75
79
|
viewBox: "0 0 28 28",
|
|
@@ -97,6 +101,8 @@ const ReplaceSvg = function () {
|
|
|
97
101
|
const DirectorySvg = function () {
|
|
98
102
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
99
103
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _assign.default)({
|
|
104
|
+
focusable: false,
|
|
105
|
+
"aria-hidden": true,
|
|
100
106
|
width: "24",
|
|
101
107
|
height: "24",
|
|
102
108
|
viewBox: "0 0 24 24",
|
|
@@ -211,6 +217,8 @@ class FileCard extends _react.PureComponent {
|
|
|
211
217
|
const closeCls = "".concat(prefixCls, "-picture-file-card-close");
|
|
212
218
|
|
|
213
219
|
const retry = /*#__PURE__*/_react.default.createElement("div", {
|
|
220
|
+
role: "button",
|
|
221
|
+
tabIndex: 0,
|
|
214
222
|
className: "".concat(prefixCls, "-picture-file-card-retry"),
|
|
215
223
|
onClick: e => this.onRetry(e)
|
|
216
224
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconRefresh, {
|
|
@@ -224,6 +232,8 @@ class FileCard extends _react.PureComponent {
|
|
|
224
232
|
showArrow: false,
|
|
225
233
|
spacing: 4
|
|
226
234
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
235
|
+
role: "button",
|
|
236
|
+
tabIndex: 0,
|
|
227
237
|
className: "".concat(prefixCls, "-picture-file-card-replace"),
|
|
228
238
|
onClick: e => this.onReplace(e)
|
|
229
239
|
}, /*#__PURE__*/_react.default.createElement(ReplaceSvg, {
|
|
@@ -235,9 +245,10 @@ class FileCard extends _react.PureComponent {
|
|
|
235
245
|
}, index + 1);
|
|
236
246
|
const thumbnail = typeof renderThumbnail === 'function' ? renderThumbnail(this.props) : /*#__PURE__*/_react.default.createElement("img", {
|
|
237
247
|
src: url,
|
|
238
|
-
alt:
|
|
248
|
+
alt: name
|
|
239
249
|
});
|
|
240
250
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
251
|
+
role: "listitem",
|
|
241
252
|
className: filePicCardCls,
|
|
242
253
|
style: style,
|
|
243
254
|
onClick: onPreviewClick
|
|
@@ -245,12 +256,15 @@ class FileCard extends _react.PureComponent {
|
|
|
245
256
|
percent: percent,
|
|
246
257
|
type: "circle",
|
|
247
258
|
size: "small",
|
|
248
|
-
orbitStroke: '#FFF'
|
|
259
|
+
orbitStroke: '#FFF',
|
|
260
|
+
"aria-label": "uploading file progress"
|
|
249
261
|
}) : null, showRetry ? retry : null, showReplace && replace, showPicInfo && picInfo, !disabled && /*#__PURE__*/_react.default.createElement("div", {
|
|
250
|
-
className: closeCls
|
|
251
|
-
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
|
|
252
|
-
size: "extra-small",
|
|
262
|
+
className: closeCls,
|
|
253
263
|
onClick: e => this.onRemove(e)
|
|
264
|
+
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
|
|
265
|
+
tabIndex: 0,
|
|
266
|
+
role: "button",
|
|
267
|
+
size: "extra-small"
|
|
254
268
|
})), this.renderPicValidateMsg());
|
|
255
269
|
}
|
|
256
270
|
|
|
@@ -286,7 +300,8 @@ class FileCard extends _react.PureComponent {
|
|
|
286
300
|
const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && propsShowReplace;
|
|
287
301
|
const fileSize = this.transSize(size);
|
|
288
302
|
let previewContent = preview ? /*#__PURE__*/_react.default.createElement("img", {
|
|
289
|
-
src: url
|
|
303
|
+
src: url,
|
|
304
|
+
alt: name
|
|
290
305
|
}) : /*#__PURE__*/_react.default.createElement(_semiIcons.IconFile, {
|
|
291
306
|
size: "large"
|
|
292
307
|
});
|
|
@@ -296,6 +311,7 @@ class FileCard extends _react.PureComponent {
|
|
|
296
311
|
}
|
|
297
312
|
|
|
298
313
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
314
|
+
role: "listitem",
|
|
299
315
|
className: fileCardCls,
|
|
300
316
|
style: style,
|
|
301
317
|
onClick: onPreviewClick
|
|
@@ -325,12 +341,15 @@ class FileCard extends _react.PureComponent {
|
|
|
325
341
|
percent: percent,
|
|
326
342
|
style: {
|
|
327
343
|
width: '100%'
|
|
328
|
-
}
|
|
344
|
+
},
|
|
345
|
+
"aria-label": "uploading file progress"
|
|
329
346
|
}) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
330
347
|
className: "".concat(infoCls, "-main-control")
|
|
331
348
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
332
349
|
className: "".concat(infoCls, "-validate-message")
|
|
333
350
|
}, this.renderValidateMessage()), showRetry ? /*#__PURE__*/_react.default.createElement("span", {
|
|
351
|
+
role: "button",
|
|
352
|
+
tabIndex: 0,
|
|
334
353
|
className: "".concat(infoCls, "-retry"),
|
|
335
354
|
onClick: e => this.onRetry(e)
|
|
336
355
|
}, locale.retry) : null)), /*#__PURE__*/_react.default.createElement(_index.default, {
|