@douyinfe/semi-ui 2.2.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_base/_story/a11y.jsx +6 -6
- package/_base/_story/a11y.scss +0 -1
- package/_base/_story/index.scss +2 -5
- package/_utils/hooks/usePrevFocus.ts +16 -0
- package/_utils/index.ts +4 -0
- package/anchor/_story/anchor.stories.js +1 -1
- package/anchor/index.tsx +5 -2
- package/anchor/link.tsx +29 -4
- package/autoComplete/index.tsx +28 -1
- package/avatar/_story/avatar.stories.js +4 -4
- package/avatar/index.tsx +6 -4
- package/banner/index.tsx +2 -1
- package/breadcrumb/_story/breadcrumb.stories.js +22 -8
- package/breadcrumb/index.tsx +8 -1
- package/breadcrumb/item.tsx +1 -1
- package/button/Button.tsx +4 -0
- package/button/__test__/button.test.js +1 -1
- package/button/_story/button.stories.js +10 -10
- package/button/buttonGroup.tsx +4 -2
- package/button/splitButtonGroup.tsx +5 -2
- package/card/_story/card.stories.js +8 -1
- package/card/_story/card.stories.tsx +3 -0
- package/card/index.tsx +5 -2
- package/cascader/index.tsx +33 -5
- package/checkbox/_story/checkbox.stories.js +19 -12
- package/checkbox/checkbox.tsx +40 -5
- package/checkbox/checkboxGroup.tsx +30 -5
- package/checkbox/checkboxInner.tsx +25 -2
- package/collapse/index.tsx +1 -1
- package/collapse/item.tsx +12 -7
- package/collapsible/index.tsx +4 -2
- package/configProvider/_story/configProvider.stories.tsx +27 -0
- package/datePicker/__test__/datePicker.test.js +93 -0
- package/datePicker/_story/datePicker.stories.js +84 -1
- package/datePicker/datePicker.tsx +21 -0
- package/datePicker/monthsGrid.tsx +2 -1
- package/dist/css/semi.css +8 -3
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2490 -1255
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/dropdown/dropdownItem.tsx +1 -1
- package/dropdown/dropdownMenu.tsx +1 -1
- package/dropdown/index.tsx +11 -3
- package/empty/index.tsx +4 -4
- package/form/_story/FormApi/formApiDemo.jsx +3 -2
- package/form/_story/Validate/validateDemo.jsx +1 -1
- package/form/_story/demo.jsx +12 -3
- package/form/_story/form.stories.js +0 -7
- package/form/baseForm.tsx +2 -0
- package/form/errorMessage.tsx +13 -2
- package/form/hoc/withField.tsx +37 -8
- package/form/index.tsx +0 -2
- package/form/interface.ts +2 -0
- package/form/label.tsx +4 -2
- package/input/index.tsx +49 -4
- package/input/inputGroup.tsx +9 -4
- package/input/textarea.tsx +25 -6
- package/inputNumber/_story/inputNumber.stories.js +12 -0
- package/inputNumber/index.tsx +35 -3
- package/layout/Sider.tsx +6 -2
- package/layout/index.tsx +4 -3
- package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +6 -1
- package/lib/cjs/anchor/index.d.ts +2 -0
- package/lib/cjs/anchor/index.js +6 -1
- package/lib/cjs/anchor/link.d.ts +4 -1
- package/lib/cjs/anchor/link.js +39 -5
- package/lib/cjs/autoComplete/index.d.ts +17 -0
- package/lib/cjs/autoComplete/index.js +21 -2
- package/lib/cjs/avatar/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +15 -11
- package/lib/cjs/banner/index.js +4 -2
- package/lib/cjs/breadcrumb/index.d.ts +3 -0
- package/lib/cjs/breadcrumb/index.js +10 -4
- package/lib/cjs/breadcrumb/item.js +2 -2
- package/lib/cjs/button/Button.d.ts +2 -0
- package/lib/cjs/button/Button.js +4 -2
- package/lib/cjs/button/buttonGroup.d.ts +3 -0
- package/lib/cjs/button/buttonGroup.js +8 -4
- package/lib/cjs/button/index.d.ts +1 -0
- package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
- package/lib/cjs/button/splitButtonGroup.js +5 -2
- package/lib/cjs/card/index.d.ts +3 -0
- package/lib/cjs/card/index.js +3 -1
- package/lib/cjs/cascader/index.d.ts +14 -0
- package/lib/cjs/cascader/index.js +35 -7
- package/lib/cjs/checkbox/checkbox.d.ts +21 -1
- package/lib/cjs/checkbox/checkbox.js +51 -17
- package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/cjs/checkbox/checkboxGroup.js +16 -3
- package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
- package/lib/cjs/checkbox/checkboxInner.js +20 -3
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +12 -2
- package/lib/cjs/collapsible/index.d.ts +1 -0
- package/lib/cjs/collapsible/index.js +4 -2
- package/lib/cjs/datePicker/datePicker.d.ts +12 -0
- package/lib/cjs/datePicker/datePicker.js +18 -3
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
- package/lib/cjs/datePicker/monthsGrid.js +2 -1
- package/lib/cjs/dropdown/dropdownItem.js +3 -1
- package/lib/cjs/dropdown/dropdownMenu.js +4 -1
- package/lib/cjs/dropdown/index.d.ts +10 -3
- package/lib/cjs/form/baseForm.d.ts +9 -0
- package/lib/cjs/form/baseForm.js +3 -1
- package/lib/cjs/form/errorMessage.d.ts +4 -0
- package/lib/cjs/form/errorMessage.js +21 -3
- package/lib/cjs/form/field.d.ts +7 -0
- package/lib/cjs/form/hoc/withField.js +49 -16
- package/lib/cjs/form/index.d.ts +0 -1
- package/lib/cjs/form/interface.d.ts +2 -0
- package/lib/cjs/form/label.d.ts +2 -0
- package/lib/cjs/form/label.js +5 -2
- package/lib/cjs/input/index.d.ts +16 -0
- package/lib/cjs/input/index.js +51 -15
- package/lib/cjs/input/inputGroup.d.ts +2 -1
- package/lib/cjs/input/inputGroup.js +11 -1
- package/lib/cjs/input/textarea.js +12 -1
- package/lib/cjs/inputNumber/index.d.ts +21 -12
- package/lib/cjs/inputNumber/index.js +40 -5
- package/lib/cjs/layout/Sider.d.ts +4 -0
- package/lib/cjs/layout/Sider.js +4 -1
- package/lib/cjs/layout/index.js +2 -0
- package/lib/cjs/list/index.d.ts +4 -4
- package/lib/cjs/list/item.js +0 -1
- package/lib/cjs/modal/Modal.js +2 -0
- package/lib/cjs/modal/ModalContent.d.ts +3 -1
- package/lib/cjs/modal/ModalContent.js +47 -5
- package/lib/cjs/navigation/Item.d.ts +4 -2
- package/lib/cjs/navigation/Item.js +25 -5
- package/lib/cjs/navigation/SubNav.d.ts +4 -2
- package/lib/cjs/navigation/SubNav.js +8 -1
- package/lib/cjs/navigation/index.js +2 -0
- package/lib/cjs/notification/notice.d.ts +1 -1
- package/lib/cjs/notification/notice.js +32 -22
- package/lib/cjs/pagination/index.js +16 -6
- package/lib/cjs/popover/index.js +7 -3
- package/lib/cjs/progress/index.d.ts +8 -0
- package/lib/cjs/progress/index.js +42 -9
- package/lib/cjs/radio/radio.d.ts +6 -1
- package/lib/cjs/radio/radio.js +17 -5
- package/lib/cjs/radio/radioGroup.d.ts +16 -1
- package/lib/cjs/radio/radioGroup.js +18 -3
- package/lib/cjs/radio/radioInner.d.ts +6 -1
- package/lib/cjs/radio/radioInner.js +11 -3
- package/lib/cjs/rating/index.d.ts +14 -0
- package/lib/cjs/rating/index.js +14 -3
- package/lib/cjs/rating/item.d.ts +2 -0
- package/lib/cjs/rating/item.js +6 -1
- package/lib/cjs/select/index.d.ts +16 -0
- package/lib/cjs/select/index.js +65 -19
- package/lib/cjs/select/option.js +28 -22
- package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
- package/lib/cjs/sideSheet/index.d.ts +1 -0
- package/lib/cjs/sideSheet/index.js +2 -1
- package/lib/cjs/slider/index.d.ts +2 -1
- package/lib/cjs/slider/index.js +64 -17
- package/lib/cjs/spin/icon.js +3 -4
- package/lib/cjs/steps/basicStep.d.ts +3 -0
- package/lib/cjs/steps/basicStep.js +23 -25
- package/lib/cjs/steps/basicSteps.d.ts +1 -0
- package/lib/cjs/steps/basicSteps.js +2 -1
- package/lib/cjs/steps/fillStep.d.ts +3 -0
- package/lib/cjs/steps/fillStep.js +19 -4
- package/lib/cjs/steps/fillSteps.d.ts +1 -0
- package/lib/cjs/steps/fillSteps.js +2 -1
- package/lib/cjs/steps/navStep.d.ts +3 -0
- package/lib/cjs/steps/navStep.js +22 -25
- package/lib/cjs/steps/navSteps.d.ts +1 -0
- package/lib/cjs/steps/navSteps.js +2 -1
- package/lib/cjs/switch/index.d.ts +12 -0
- package/lib/cjs/switch/index.js +19 -4
- package/lib/cjs/table/Body/BaseRow.js +35 -3
- package/lib/cjs/table/Body/index.js +9 -1
- package/lib/cjs/table/ColumnFilter.js +4 -0
- package/lib/cjs/table/ColumnSelection.d.ts +3 -0
- package/lib/cjs/table/ColumnSelection.js +6 -2
- package/lib/cjs/table/ColumnSorter.js +19 -3
- package/lib/cjs/table/CustomExpandIcon.js +7 -1
- package/lib/cjs/table/Table.d.ts +2 -0
- package/lib/cjs/table/Table.js +31 -15
- package/lib/cjs/table/TableCell.d.ts +2 -0
- package/lib/cjs/table/TableCell.js +6 -2
- package/lib/cjs/table/TableHeaderRow.js +8 -2
- package/lib/cjs/tabs/TabBar.js +11 -3
- package/lib/cjs/tabs/TabPane.js +3 -1
- package/lib/cjs/tabs/index.js +0 -1
- package/lib/cjs/tagInput/index.d.ts +4 -1
- package/lib/cjs/tagInput/index.js +29 -3
- package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
- package/lib/cjs/timePicker/TimePicker.js +9 -1
- package/lib/cjs/timePicker/index.d.ts +6 -0
- package/lib/cjs/timeline/index.d.ts +1 -1
- package/lib/cjs/timeline/index.js +1 -0
- package/lib/cjs/timeline/item.js +4 -2
- package/lib/cjs/toast/toast.js +2 -0
- package/lib/cjs/tooltip/TriangleArrow.js +1 -0
- package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/cjs/tooltip/index.d.ts +16 -12
- package/lib/cjs/tooltip/index.js +55 -39
- package/lib/cjs/transfer/index.d.ts +1 -1
- package/lib/cjs/transfer/index.js +35 -17
- package/lib/cjs/tree/index.d.ts +1 -0
- package/lib/cjs/tree/index.js +15 -6
- package/lib/cjs/tree/treeNode.d.ts +12 -4
- package/lib/cjs/tree/treeNode.js +44 -4
- package/lib/cjs/treeSelect/index.d.ts +16 -0
- package/lib/cjs/treeSelect/index.js +60 -12
- package/lib/cjs/typography/base.js +18 -7
- package/lib/cjs/typography/copyable.js +6 -1
- package/lib/cjs/upload/fileCard.js +26 -7
- package/lib/cjs/upload/index.js +19 -4
- package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +4 -1
- package/lib/es/anchor/index.d.ts +2 -0
- package/lib/es/anchor/index.js +6 -1
- package/lib/es/anchor/link.d.ts +4 -1
- package/lib/es/anchor/link.js +38 -5
- package/lib/es/autoComplete/index.d.ts +17 -0
- package/lib/es/autoComplete/index.js +21 -2
- package/lib/es/avatar/index.d.ts +4 -3
- package/lib/es/avatar/index.js +15 -11
- package/lib/es/banner/index.js +4 -2
- package/lib/es/breadcrumb/index.d.ts +3 -0
- package/lib/es/breadcrumb/index.js +10 -4
- package/lib/es/breadcrumb/item.js +2 -2
- package/lib/es/button/Button.d.ts +2 -0
- package/lib/es/button/Button.js +4 -2
- package/lib/es/button/buttonGroup.d.ts +3 -0
- package/lib/es/button/buttonGroup.js +8 -4
- package/lib/es/button/index.d.ts +1 -0
- package/lib/es/button/splitButtonGroup.d.ts +3 -0
- package/lib/es/button/splitButtonGroup.js +5 -2
- package/lib/es/card/index.d.ts +3 -0
- package/lib/es/card/index.js +3 -1
- package/lib/es/cascader/index.d.ts +14 -0
- package/lib/es/cascader/index.js +35 -7
- package/lib/es/checkbox/checkbox.d.ts +21 -1
- package/lib/es/checkbox/checkbox.js +50 -17
- package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/es/checkbox/checkboxGroup.js +18 -5
- package/lib/es/checkbox/checkboxInner.d.ts +15 -0
- package/lib/es/checkbox/checkboxInner.js +20 -3
- package/lib/es/collapse/item.d.ts +2 -1
- package/lib/es/collapse/item.js +11 -2
- package/lib/es/collapsible/index.d.ts +1 -0
- package/lib/es/collapsible/index.js +4 -2
- package/lib/es/datePicker/datePicker.d.ts +12 -0
- package/lib/es/datePicker/datePicker.js +18 -3
- package/lib/es/datePicker/monthsGrid.d.ts +1 -0
- package/lib/es/datePicker/monthsGrid.js +2 -1
- package/lib/es/dropdown/dropdownItem.js +3 -1
- package/lib/es/dropdown/dropdownMenu.js +4 -1
- package/lib/es/dropdown/index.d.ts +10 -3
- package/lib/es/form/baseForm.d.ts +9 -0
- package/lib/es/form/baseForm.js +3 -1
- package/lib/es/form/errorMessage.d.ts +4 -0
- package/lib/es/form/errorMessage.js +21 -3
- package/lib/es/form/field.d.ts +7 -0
- package/lib/es/form/hoc/withField.js +48 -15
- package/lib/es/form/index.d.ts +0 -1
- package/lib/es/form/index.js +0 -1
- package/lib/es/form/interface.d.ts +2 -0
- package/lib/es/form/label.d.ts +2 -0
- package/lib/es/form/label.js +5 -2
- package/lib/es/input/index.d.ts +16 -0
- package/lib/es/input/index.js +51 -15
- package/lib/es/input/inputGroup.d.ts +2 -1
- package/lib/es/input/inputGroup.js +11 -1
- package/lib/es/input/textarea.js +12 -1
- package/lib/es/inputNumber/index.d.ts +21 -12
- package/lib/es/inputNumber/index.js +41 -5
- package/lib/es/layout/Sider.d.ts +4 -0
- package/lib/es/layout/Sider.js +4 -1
- package/lib/es/layout/index.js +2 -0
- package/lib/es/list/index.d.ts +4 -4
- package/lib/es/list/item.js +0 -1
- package/lib/es/modal/Modal.js +2 -0
- package/lib/es/modal/ModalContent.d.ts +3 -1
- package/lib/es/modal/ModalContent.js +46 -5
- package/lib/es/navigation/Item.d.ts +4 -2
- package/lib/es/navigation/Item.js +25 -5
- package/lib/es/navigation/SubNav.d.ts +4 -2
- package/lib/es/navigation/SubNav.js +8 -1
- package/lib/es/navigation/index.js +2 -0
- package/lib/es/notification/notice.d.ts +1 -1
- package/lib/es/notification/notice.js +33 -24
- package/lib/es/pagination/index.js +16 -6
- package/lib/es/popover/index.js +7 -3
- package/lib/es/progress/index.d.ts +8 -0
- package/lib/es/progress/index.js +42 -9
- package/lib/es/radio/radio.d.ts +6 -1
- package/lib/es/radio/radio.js +16 -5
- package/lib/es/radio/radioGroup.d.ts +16 -1
- package/lib/es/radio/radioGroup.js +18 -3
- package/lib/es/radio/radioInner.d.ts +6 -1
- package/lib/es/radio/radioInner.js +11 -3
- package/lib/es/rating/index.d.ts +14 -0
- package/lib/es/rating/index.js +14 -3
- package/lib/es/rating/item.d.ts +2 -0
- package/lib/es/rating/item.js +6 -1
- package/lib/es/select/index.d.ts +16 -0
- package/lib/es/select/index.js +63 -17
- package/lib/es/select/option.js +28 -22
- package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/es/sideSheet/SideSheetContent.js +4 -1
- package/lib/es/sideSheet/index.d.ts +1 -0
- package/lib/es/sideSheet/index.js +2 -1
- package/lib/es/slider/index.d.ts +2 -1
- package/lib/es/slider/index.js +63 -16
- package/lib/es/spin/icon.js +3 -4
- package/lib/es/steps/basicStep.d.ts +3 -0
- package/lib/es/steps/basicStep.js +23 -23
- package/lib/es/steps/basicSteps.d.ts +1 -0
- package/lib/es/steps/basicSteps.js +2 -1
- package/lib/es/steps/fillStep.d.ts +3 -0
- package/lib/es/steps/fillStep.js +19 -4
- package/lib/es/steps/fillSteps.d.ts +1 -0
- package/lib/es/steps/fillSteps.js +2 -1
- package/lib/es/steps/navStep.d.ts +3 -0
- package/lib/es/steps/navStep.js +22 -23
- package/lib/es/steps/navSteps.d.ts +1 -0
- package/lib/es/steps/navSteps.js +2 -1
- package/lib/es/switch/index.d.ts +12 -0
- package/lib/es/switch/index.js +19 -4
- package/lib/es/table/Body/BaseRow.js +35 -3
- package/lib/es/table/Body/index.js +9 -2
- package/lib/es/table/ColumnFilter.js +4 -0
- package/lib/es/table/ColumnSelection.d.ts +3 -0
- package/lib/es/table/ColumnSelection.js +6 -2
- package/lib/es/table/ColumnSorter.js +17 -3
- package/lib/es/table/CustomExpandIcon.js +6 -1
- package/lib/es/table/Table.d.ts +2 -0
- package/lib/es/table/Table.js +31 -15
- package/lib/es/table/TableCell.d.ts +2 -0
- package/lib/es/table/TableCell.js +6 -2
- package/lib/es/table/TableHeaderRow.js +8 -2
- package/lib/es/tabs/TabBar.js +11 -3
- package/lib/es/tabs/TabPane.js +3 -1
- package/lib/es/tabs/index.js +0 -1
- package/lib/es/tagInput/index.d.ts +4 -1
- package/lib/es/tagInput/index.js +29 -3
- package/lib/es/timePicker/TimePicker.d.ts +12 -0
- package/lib/es/timePicker/TimePicker.js +9 -1
- package/lib/es/timePicker/index.d.ts +6 -0
- package/lib/es/timeline/index.d.ts +1 -1
- package/lib/es/timeline/index.js +1 -0
- package/lib/es/timeline/item.js +4 -2
- package/lib/es/toast/toast.js +2 -0
- package/lib/es/tooltip/TriangleArrow.js +1 -0
- package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/es/tooltip/index.d.ts +16 -12
- package/lib/es/tooltip/index.js +53 -39
- package/lib/es/transfer/index.d.ts +1 -1
- package/lib/es/transfer/index.js +35 -17
- package/lib/es/tree/index.d.ts +1 -0
- package/lib/es/tree/index.js +15 -6
- package/lib/es/tree/treeNode.d.ts +12 -4
- package/lib/es/tree/treeNode.js +44 -4
- package/lib/es/treeSelect/index.d.ts +16 -0
- package/lib/es/treeSelect/index.js +57 -10
- package/lib/es/typography/base.js +17 -7
- package/lib/es/typography/copyable.js +5 -1
- package/lib/es/upload/fileCard.js +26 -7
- package/lib/es/upload/index.js +19 -4
- package/list/index.tsx +5 -5
- package/list/item.tsx +0 -1
- package/modal/Modal.tsx +2 -0
- package/modal/ModalContent.tsx +35 -5
- package/navigation/Item.tsx +15 -0
- package/navigation/SubNav.tsx +13 -1
- package/navigation/index.tsx +1 -1
- package/notification/notice.tsx +19 -14
- package/package.json +8 -8
- package/pagination/index.tsx +9 -5
- package/popover/index.tsx +5 -0
- package/progress/_story/progress.stories.js +18 -18
- package/progress/index.tsx +58 -20
- package/radio/radio.tsx +12 -2
- package/radio/radioGroup.tsx +29 -3
- package/radio/radioInner.tsx +10 -1
- package/rating/index.tsx +19 -2
- package/rating/item.tsx +6 -0
- package/select/__test__/select.test.js +45 -0
- package/select/_story/select.stories.js +29 -0
- package/select/index.tsx +52 -4
- package/select/option.tsx +3 -0
- package/sideSheet/SideSheetContent.tsx +6 -4
- package/sideSheet/index.tsx +3 -2
- package/slider/__test__/slider.test.js +9 -0
- package/slider/_story/slider.stories.js +1 -1
- package/slider/index.tsx +44 -7
- package/spin/icon.tsx +4 -3
- package/steps/basicStep.tsx +15 -4
- package/steps/basicSteps.tsx +3 -2
- package/steps/fillStep.tsx +27 -12
- package/steps/fillSteps.tsx +2 -0
- package/steps/navStep.tsx +15 -4
- package/steps/navSteps.tsx +3 -2
- package/switch/_story/switch.stories.js +20 -19
- package/switch/_story/switch.stories.tsx +13 -13
- package/switch/index.tsx +23 -5
- package/table/Body/BaseRow.tsx +25 -1
- package/table/Body/index.tsx +7 -2
- package/table/ColumnFilter.tsx +7 -1
- package/table/ColumnSelection.tsx +4 -1
- package/table/ColumnSorter.tsx +18 -1
- package/table/CustomExpandIcon.tsx +5 -0
- package/table/Table.tsx +26 -13
- package/table/TableCell.tsx +11 -1
- package/table/TableHeaderRow.tsx +16 -2
- package/table/__test__/table.test.js +46 -0
- package/tabs/TabBar.tsx +8 -5
- package/tabs/TabPane.tsx +3 -1
- package/tabs/index.tsx +0 -1
- package/tagInput/__test__/tagInput.test.js +46 -0
- package/tagInput/_story/tagInput.stories.js +2 -2
- package/tagInput/index.tsx +31 -8
- package/timePicker/TimePicker.tsx +14 -1
- package/timeline/_story/timeline.stories.js +1 -1
- package/timeline/index.tsx +2 -2
- package/timeline/item.tsx +2 -1
- package/toast/toast.tsx +2 -0
- package/tooltip/TriangleArrow.tsx +1 -1
- package/tooltip/TriangleArrowVertical.tsx +1 -1
- package/tooltip/_story/tooltip.stories.js +562 -514
- package/tooltip/index.tsx +51 -33
- package/transfer/index.tsx +32 -28
- package/tree/_story/tree.stories.js +3 -3
- package/tree/index.tsx +10 -2
- package/tree/treeNode.tsx +46 -10
- package/treeSelect/__test__/treeMultiple.test.js +5 -0
- package/treeSelect/_story/treeSelect.stories.js +12 -0
- package/treeSelect/index.tsx +58 -7
- package/typography/base.tsx +7 -1
- package/typography/copyable.tsx +10 -1
- package/upload/fileCard.tsx +14 -16
- package/upload/index.tsx +10 -6
package/lib/es/timeline/index.js
CHANGED
package/lib/es/timeline/item.js
CHANGED
|
@@ -38,9 +38,11 @@ export default class Item extends PureComponent {
|
|
|
38
38
|
style: style,
|
|
39
39
|
onClick: onClick
|
|
40
40
|
}, /*#__PURE__*/React.createElement("div", {
|
|
41
|
-
className: "".concat(prefixCls, "-tail")
|
|
41
|
+
className: "".concat(prefixCls, "-tail"),
|
|
42
|
+
"aria-hidden": true
|
|
42
43
|
}), /*#__PURE__*/React.createElement("div", _Object$assign({
|
|
43
|
-
className: dotCls
|
|
44
|
+
className: dotCls,
|
|
45
|
+
"aria-hidden": true
|
|
44
46
|
}, dotStyle), dot), /*#__PURE__*/React.createElement("div", {
|
|
45
47
|
className: "".concat(prefixCls, "-content")
|
|
46
48
|
}, children, extra && /*#__PURE__*/React.createElement("div", {
|
package/lib/es/toast/toast.js
CHANGED
|
@@ -111,6 +111,8 @@ class Toast extends BaseComponent {
|
|
|
111
111
|
const btnTheme = 'borderless';
|
|
112
112
|
const btnSize = 'small';
|
|
113
113
|
return /*#__PURE__*/React.createElement("div", {
|
|
114
|
+
role: 'alert',
|
|
115
|
+
"aria-label": "".concat(type ? type : 'default', " type"),
|
|
114
116
|
className: toastCls,
|
|
115
117
|
style: style,
|
|
116
118
|
onMouseEnter: this.clearCloseTimer,
|
|
@@ -36,6 +36,7 @@ export interface TooltipProps extends BaseProps {
|
|
|
36
36
|
showArrow?: boolean | React.ReactNode;
|
|
37
37
|
zIndex?: number;
|
|
38
38
|
rePosKey?: string | number;
|
|
39
|
+
role?: string;
|
|
39
40
|
arrowBounding?: ArrowBounding;
|
|
40
41
|
transformFromCenter?: boolean;
|
|
41
42
|
arrowPointAtCenter?: boolean;
|
|
@@ -57,6 +58,8 @@ interface TooltipState {
|
|
|
57
58
|
isInsert: boolean;
|
|
58
59
|
placement: Position;
|
|
59
60
|
transitionStyle: Record<string, any>;
|
|
61
|
+
isPositionUpdated: boolean;
|
|
62
|
+
id: string;
|
|
60
63
|
}
|
|
61
64
|
export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
|
|
62
65
|
static contextType: React.Context<import("../configProvider/context").ContextValue>;
|
|
@@ -92,30 +95,32 @@ export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
|
|
|
92
95
|
transformFromCenter: PropTypes.Requireable<boolean>;
|
|
93
96
|
arrowPointAtCenter: PropTypes.Requireable<boolean>;
|
|
94
97
|
stopPropagation: PropTypes.Requireable<boolean>;
|
|
98
|
+
role: PropTypes.Requireable<string>;
|
|
95
99
|
wrapWhenSpecial: PropTypes.Requireable<boolean>;
|
|
96
100
|
};
|
|
97
101
|
static defaultProps: {
|
|
98
|
-
|
|
102
|
+
arrowBounding: {
|
|
103
|
+
readonly offsetX: 0;
|
|
104
|
+
readonly offsetY: 2;
|
|
105
|
+
readonly width: 24;
|
|
106
|
+
readonly height: 7;
|
|
107
|
+
};
|
|
108
|
+
autoAdjustOverflow: boolean;
|
|
99
109
|
arrowPointAtCenter: boolean;
|
|
100
|
-
wrapWhenSpecial: boolean;
|
|
101
|
-
motion: boolean;
|
|
102
|
-
zIndex: 1060;
|
|
103
110
|
trigger: string;
|
|
111
|
+
transformFromCenter: boolean;
|
|
104
112
|
position: string;
|
|
105
113
|
prefixCls: "semi-tooltip";
|
|
106
|
-
|
|
114
|
+
role: string;
|
|
107
115
|
mouseEnterDelay: 50;
|
|
108
116
|
mouseLeaveDelay: 50;
|
|
117
|
+
motion: boolean;
|
|
109
118
|
onVisibleChange: (...args: any[]) => void;
|
|
110
119
|
onClickOutSide: (...args: any[]) => void;
|
|
111
120
|
spacing: 8;
|
|
112
121
|
showArrow: boolean;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
readonly offsetY: 2;
|
|
116
|
-
readonly width: 24;
|
|
117
|
-
readonly height: 7;
|
|
118
|
-
};
|
|
122
|
+
wrapWhenSpecial: boolean;
|
|
123
|
+
zIndex: 1060;
|
|
119
124
|
};
|
|
120
125
|
eventManager: Event;
|
|
121
126
|
triggerEl: React.RefObject<unknown>;
|
|
@@ -135,7 +140,6 @@ export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
|
|
|
135
140
|
componentDidMount(): void;
|
|
136
141
|
componentWillUnmount(): void;
|
|
137
142
|
isSpecial: (elem: React.ReactNode | HTMLElement | any) => boolean | "disabled" | "loading";
|
|
138
|
-
willEnter: () => void;
|
|
139
143
|
didLeave: () => void;
|
|
140
144
|
/** for transition - end */
|
|
141
145
|
rePosition(): any;
|
package/lib/es/tooltip/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import _indexOfInstanceProperty from "@babel/runtime-corejs3/core-js-stable/inst
|
|
|
8
8
|
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
|
9
9
|
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
10
10
|
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
11
|
+
import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
|
|
11
12
|
|
|
12
13
|
var __rest = this && this.__rest || function (s, e) {
|
|
13
14
|
var t = {};
|
|
@@ -32,6 +33,7 @@ import Event from '@douyinfe/semi-foundation/lib/es/utils/Event';
|
|
|
32
33
|
import { convertDOMRectToObject } from '@douyinfe/semi-foundation/lib/es/utils/dom';
|
|
33
34
|
import TooltipFoundation from '@douyinfe/semi-foundation/lib/es/tooltip/foundation';
|
|
34
35
|
import { strings, cssClasses, numbers } from '@douyinfe/semi-foundation/lib/es/tooltip/constants';
|
|
36
|
+
import { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
|
|
35
37
|
import '@douyinfe/semi-foundation/lib/es/tooltip/tooltip.css';
|
|
36
38
|
import BaseComponent from '../_base/baseComponent';
|
|
37
39
|
import { isHTMLElement } from '../_base/reactUtils';
|
|
@@ -79,18 +81,11 @@ export default class Tooltip extends BaseComponent {
|
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
return false;
|
|
82
|
-
};
|
|
84
|
+
}; // willEnter = () => {
|
|
85
|
+
// this.foundation.calcPosition();
|
|
86
|
+
// this.setState({ visible: true });
|
|
87
|
+
// };
|
|
83
88
|
|
|
84
|
-
this.willEnter = () => {
|
|
85
|
-
this.foundation.calcPosition();
|
|
86
|
-
/**
|
|
87
|
-
* Dangerous: remove setState in motion fix #1379
|
|
88
|
-
* because togglePortalVisible callback function will use visible state to notifyVisibleChange
|
|
89
|
-
* if visible state is old value, then notifyVisibleChange function will not be called
|
|
90
|
-
* we should ensure that after calling togglePortalVisible, callback function can get right visible value
|
|
91
|
-
*/
|
|
92
|
-
// this.setState({ visible: true });
|
|
93
|
-
};
|
|
94
89
|
|
|
95
90
|
this.didLeave = () => {
|
|
96
91
|
this.adapter.unregisterClickOutsideHandler();
|
|
@@ -148,7 +143,9 @@ export default class Tooltip extends BaseComponent {
|
|
|
148
143
|
visible,
|
|
149
144
|
portalEventSet,
|
|
150
145
|
placement,
|
|
151
|
-
transitionState
|
|
146
|
+
transitionState,
|
|
147
|
+
id,
|
|
148
|
+
isPositionUpdated
|
|
152
149
|
} = this.state;
|
|
153
150
|
const {
|
|
154
151
|
prefixCls,
|
|
@@ -156,6 +153,7 @@ export default class Tooltip extends BaseComponent {
|
|
|
156
153
|
showArrow,
|
|
157
154
|
style,
|
|
158
155
|
motion,
|
|
156
|
+
role,
|
|
159
157
|
zIndex
|
|
160
158
|
} = this.props;
|
|
161
159
|
const {
|
|
@@ -174,9 +172,8 @@ export default class Tooltip extends BaseComponent {
|
|
|
174
172
|
|
|
175
173
|
const transformOrigin = _get(containerStyle, 'transformOrigin');
|
|
176
174
|
|
|
177
|
-
const inner = motion ? /*#__PURE__*/React.createElement(TooltipTransition, {
|
|
175
|
+
const inner = motion && isPositionUpdated ? /*#__PURE__*/React.createElement(TooltipTransition, {
|
|
178
176
|
position: placement,
|
|
179
|
-
willEnter: this.willEnter,
|
|
180
177
|
didLeave: this.didLeave,
|
|
181
178
|
motion: motion
|
|
182
179
|
}, transitionState === 'enter' ? _ref => {
|
|
@@ -187,13 +184,13 @@ export default class Tooltip extends BaseComponent {
|
|
|
187
184
|
} = _ref;
|
|
188
185
|
return /*#__PURE__*/React.createElement("div", _Object$assign({
|
|
189
186
|
className: classNames(className, animateCls),
|
|
190
|
-
style: _Object$assign(_Object$assign(_Object$assign({
|
|
191
|
-
visibility: 'visible'
|
|
192
|
-
}, animateStyle), {
|
|
187
|
+
style: _Object$assign(_Object$assign(_Object$assign({}, animateStyle), {
|
|
193
188
|
transformOrigin
|
|
194
189
|
}), style)
|
|
195
190
|
}, portalEventSet, animateEvents, {
|
|
196
|
-
|
|
191
|
+
role: role,
|
|
192
|
+
"x-placement": placement,
|
|
193
|
+
id: id
|
|
197
194
|
}), content, icon);
|
|
198
195
|
} : null) : /*#__PURE__*/React.createElement("div", _Object$assign({
|
|
199
196
|
className: className
|
|
@@ -269,7 +266,10 @@ export default class Tooltip extends BaseComponent {
|
|
|
269
266
|
},
|
|
270
267
|
isInsert: false,
|
|
271
268
|
placement: props.position || 'top',
|
|
272
|
-
transitionStyle: {}
|
|
269
|
+
transitionStyle: {},
|
|
270
|
+
isPositionUpdated: false,
|
|
271
|
+
id: getUuidShort() // auto generate id, will be used by children.aria-describedby & content.id, improve a11y
|
|
272
|
+
|
|
273
273
|
};
|
|
274
274
|
this.foundation = new TooltipFoundation(this.adapter);
|
|
275
275
|
this.eventManager = new Event();
|
|
@@ -307,18 +307,16 @@ export default class Tooltip extends BaseComponent {
|
|
|
307
307
|
transitionState: 'enter',
|
|
308
308
|
containerStyle: _Object$assign(_Object$assign({}, this.state.containerStyle), containerStyle)
|
|
309
309
|
}, () => {
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
* then portal can't hide because _togglePortalVisible(false) will found isVisible=false and nowVisible=false(bug here)
|
|
315
|
-
*/
|
|
316
|
-
this.eventManager.emit('portalInserted');
|
|
310
|
+
_setTimeout(() => {
|
|
311
|
+
// waiting child component mounted
|
|
312
|
+
this.eventManager.emit('portalInserted');
|
|
313
|
+
}, 0);
|
|
317
314
|
});
|
|
318
315
|
},
|
|
319
316
|
removePortal: () => {
|
|
320
317
|
this.setState({
|
|
321
|
-
isInsert: false
|
|
318
|
+
isInsert: false,
|
|
319
|
+
isPositionUpdated: false
|
|
322
320
|
});
|
|
323
321
|
},
|
|
324
322
|
getEventName: () => ({
|
|
@@ -399,7 +397,8 @@ export default class Tooltip extends BaseComponent {
|
|
|
399
397
|
|
|
400
398
|
this.setState({
|
|
401
399
|
containerStyle: _Object$assign(_Object$assign({}, this.state.containerStyle), style),
|
|
402
|
-
placement: position
|
|
400
|
+
placement: position,
|
|
401
|
+
isPositionUpdated: true
|
|
403
402
|
}, () => {
|
|
404
403
|
this.eventManager.emit('positionUpdated');
|
|
405
404
|
});
|
|
@@ -557,10 +556,13 @@ export default class Tooltip extends BaseComponent {
|
|
|
557
556
|
render() {
|
|
558
557
|
const {
|
|
559
558
|
isInsert,
|
|
560
|
-
triggerEventSet
|
|
559
|
+
triggerEventSet,
|
|
560
|
+
visible,
|
|
561
|
+
id
|
|
561
562
|
} = this.state;
|
|
562
563
|
const {
|
|
563
|
-
wrapWhenSpecial
|
|
564
|
+
wrapWhenSpecial,
|
|
565
|
+
role
|
|
564
566
|
} = this.props;
|
|
565
567
|
let {
|
|
566
568
|
children
|
|
@@ -589,13 +591,23 @@ export default class Tooltip extends BaseComponent {
|
|
|
589
591
|
children = this.wrapSpan(children);
|
|
590
592
|
this.isWrapped = true;
|
|
591
593
|
}
|
|
594
|
+
} // eslint-disable-next-line prefer-const
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
let ariaAttribute = {}; // Take effect when used by Popover component
|
|
598
|
+
|
|
599
|
+
if (role === 'dialog') {
|
|
600
|
+
ariaAttribute['aria-expanded'] = visible ? 'true' : 'false';
|
|
601
|
+
ariaAttribute['aria-haspopup'] = 'dialog';
|
|
602
|
+
ariaAttribute['aria-controls'] = id;
|
|
603
|
+
} else {
|
|
604
|
+
ariaAttribute['aria-describedby'] = id;
|
|
592
605
|
} // The incoming children is a single valid element, otherwise wrap a layer with span
|
|
593
606
|
|
|
594
607
|
|
|
595
|
-
const newChild = /*#__PURE__*/React.cloneElement(children, _Object$assign(_Object$assign(_Object$assign({}, children.props), this.mergeEvents(children.props, triggerEventSet)), {
|
|
608
|
+
const newChild = /*#__PURE__*/React.cloneElement(children, _Object$assign(_Object$assign(_Object$assign(_Object$assign({}, ariaAttribute), children.props), this.mergeEvents(children.props, triggerEventSet)), {
|
|
596
609
|
style: _Object$assign(_Object$assign({}, _get(children, 'props.style')), extraStyle),
|
|
597
|
-
className: classNames(_get(children, 'props.className')
|
|
598
|
-
),
|
|
610
|
+
className: classNames(_get(children, 'props.className')),
|
|
599
611
|
// to maintain refs with callback
|
|
600
612
|
ref: node => {
|
|
601
613
|
// Keep your own reference
|
|
@@ -648,24 +660,26 @@ Tooltip.propTypes = {
|
|
|
648
660
|
arrowPointAtCenter: PropTypes.bool,
|
|
649
661
|
stopPropagation: PropTypes.bool,
|
|
650
662
|
// private
|
|
663
|
+
role: PropTypes.string,
|
|
651
664
|
wrapWhenSpecial: PropTypes.bool // when trigger has special status such as "disabled" or "loading", wrap span
|
|
652
665
|
|
|
653
666
|
};
|
|
654
667
|
Tooltip.defaultProps = {
|
|
655
|
-
|
|
668
|
+
arrowBounding: numbers.ARROW_BOUNDING,
|
|
669
|
+
autoAdjustOverflow: true,
|
|
656
670
|
arrowPointAtCenter: true,
|
|
657
|
-
wrapWhenSpecial: true,
|
|
658
|
-
motion: true,
|
|
659
|
-
zIndex: numbers.DEFAULT_Z_INDEX,
|
|
660
671
|
trigger: 'hover',
|
|
672
|
+
transformFromCenter: true,
|
|
661
673
|
position: 'top',
|
|
662
674
|
prefixCls: prefix,
|
|
663
|
-
|
|
675
|
+
role: 'tooltip',
|
|
664
676
|
mouseEnterDelay: numbers.MOUSE_ENTER_DELAY,
|
|
665
677
|
mouseLeaveDelay: numbers.MOUSE_LEAVE_DELAY,
|
|
678
|
+
motion: true,
|
|
666
679
|
onVisibleChange: _noop,
|
|
667
680
|
onClickOutSide: _noop,
|
|
668
681
|
spacing: numbers.SPACING,
|
|
669
682
|
showArrow: true,
|
|
670
|
-
|
|
683
|
+
wrapWhenSpecial: true,
|
|
684
|
+
zIndex: numbers.DEFAULT_Z_INDEX
|
|
671
685
|
};
|
|
@@ -152,7 +152,7 @@ declare class Transfer extends BaseComponent<TransferProps, TransferState> {
|
|
|
152
152
|
renderHeader(headerConfig: HeaderConfig): JSX.Element;
|
|
153
153
|
renderLeftItem(item: ResolvedDataItem, index: number): React.ReactNode;
|
|
154
154
|
renderLeft(locale: Locale['Transfer']): React.ReactNode;
|
|
155
|
-
renderGroupTitle(group: GroupItem): JSX.Element;
|
|
155
|
+
renderGroupTitle(group: GroupItem, index: number): JSX.Element;
|
|
156
156
|
renderLeftTree(): JSX.Element;
|
|
157
157
|
renderLeftList(visibileItems: Array<ResolvedDataItem>): JSX.Element;
|
|
158
158
|
renderRightItem(item: ResolvedDataItem): React.ReactNode;
|
package/lib/es/transfer/index.js
CHANGED
|
@@ -167,6 +167,8 @@ class Transfer extends BaseComponent {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
return /*#__PURE__*/React.createElement("div", {
|
|
170
|
+
role: "search",
|
|
171
|
+
"aria-label": "Transfer filter",
|
|
170
172
|
className: "".concat(prefixcls, "-filter")
|
|
171
173
|
}, /*#__PURE__*/React.createElement(Input, _Object$assign({
|
|
172
174
|
prefix: /*#__PURE__*/React.createElement(IconSearch, null),
|
|
@@ -234,6 +236,7 @@ class Transfer extends BaseComponent {
|
|
|
234
236
|
disabled: item.disabled || disabled,
|
|
235
237
|
className: leftItemCls,
|
|
236
238
|
checked: checked,
|
|
239
|
+
role: "listitem",
|
|
237
240
|
onChange: () => this.onSelectOrRemove(item)
|
|
238
241
|
}, item.label);
|
|
239
242
|
}
|
|
@@ -329,11 +332,11 @@ class Transfer extends BaseComponent {
|
|
|
329
332
|
}, inputCom, content);
|
|
330
333
|
}
|
|
331
334
|
|
|
332
|
-
renderGroupTitle(group) {
|
|
335
|
+
renderGroupTitle(group, index) {
|
|
333
336
|
const groupCls = cls("".concat(prefixcls, "-group-title"));
|
|
334
337
|
return /*#__PURE__*/React.createElement("div", {
|
|
335
338
|
className: groupCls,
|
|
336
|
-
key:
|
|
339
|
+
key: "title-".concat(index)
|
|
337
340
|
}, group.title);
|
|
338
341
|
}
|
|
339
342
|
|
|
@@ -390,7 +393,7 @@ class Transfer extends BaseComponent {
|
|
|
390
393
|
// group content already insert
|
|
391
394
|
content.push(optionContent);
|
|
392
395
|
} else if (parentGroup) {
|
|
393
|
-
const groupContent = this.renderGroupTitle(parentGroup);
|
|
396
|
+
const groupContent = this.renderGroupTitle(parentGroup, index);
|
|
394
397
|
groupStatus.set(parentGroup.title, true);
|
|
395
398
|
content.push(groupContent);
|
|
396
399
|
content.push(optionContent);
|
|
@@ -400,7 +403,9 @@ class Transfer extends BaseComponent {
|
|
|
400
403
|
});
|
|
401
404
|
|
|
402
405
|
return /*#__PURE__*/React.createElement("div", {
|
|
403
|
-
className: "".concat(prefixcls, "-left-list")
|
|
406
|
+
className: "".concat(prefixcls, "-left-list"),
|
|
407
|
+
role: "list",
|
|
408
|
+
"aria-label": "Option list"
|
|
404
409
|
}, content);
|
|
405
410
|
}
|
|
406
411
|
|
|
@@ -438,19 +443,27 @@ class Transfer extends BaseComponent {
|
|
|
438
443
|
}
|
|
439
444
|
|
|
440
445
|
const DragHandle = SortableHandle(() => /*#__PURE__*/React.createElement(IconHandle, {
|
|
446
|
+
role: "button",
|
|
447
|
+
"aria-label": "Drag and sort",
|
|
441
448
|
className: "".concat(prefixcls, "-right-item-drag-handler")
|
|
442
449
|
}));
|
|
443
|
-
return
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
})
|
|
453
|
-
|
|
450
|
+
return (
|
|
451
|
+
/*#__PURE__*/
|
|
452
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
|
|
453
|
+
React.createElement("div", {
|
|
454
|
+
role: "listitem",
|
|
455
|
+
className: rightItemCls,
|
|
456
|
+
key: newItem.key
|
|
457
|
+
}, draggable ? /*#__PURE__*/React.createElement(DragHandle, null) : null, /*#__PURE__*/React.createElement("div", {
|
|
458
|
+
className: "".concat(prefixcls, "-right-item-text")
|
|
459
|
+
}, label), /*#__PURE__*/React.createElement(IconClose, {
|
|
460
|
+
onClick: onRemove,
|
|
461
|
+
"aria-disabled": item.disabled,
|
|
462
|
+
className: cls("".concat(prefixcls, "-item-close-icon"), {
|
|
463
|
+
["".concat(prefixcls, "-item-close-icon-disabled")]: item.disabled
|
|
464
|
+
})
|
|
465
|
+
}))
|
|
466
|
+
);
|
|
454
467
|
}
|
|
455
468
|
|
|
456
469
|
renderEmpty(type, emptyText) {
|
|
@@ -460,6 +473,7 @@ class Transfer extends BaseComponent {
|
|
|
460
473
|
["".concat(prefixcls, "-left-empty")]: type === 'left'
|
|
461
474
|
});
|
|
462
475
|
return /*#__PURE__*/React.createElement("div", {
|
|
476
|
+
"aria-label": "empty",
|
|
463
477
|
className: emptyCls
|
|
464
478
|
}, emptyText);
|
|
465
479
|
}
|
|
@@ -472,7 +486,9 @@ class Transfer extends BaseComponent {
|
|
|
472
486
|
items
|
|
473
487
|
} = _ref;
|
|
474
488
|
return /*#__PURE__*/React.createElement("div", {
|
|
475
|
-
className: "".concat(prefixcls, "-right-list")
|
|
489
|
+
className: "".concat(prefixcls, "-right-list"),
|
|
490
|
+
role: "list",
|
|
491
|
+
"aria-label": "Selected list"
|
|
476
492
|
}, _mapInstanceProperty(items).call(items, (item, index) =>
|
|
477
493
|
/*#__PURE__*/
|
|
478
494
|
// sortableElement will take over the property 'key', so use another '_optionKey' to pass
|
|
@@ -540,7 +556,9 @@ class Transfer extends BaseComponent {
|
|
|
540
556
|
|
|
541
557
|
case selectedData.length && !draggable:
|
|
542
558
|
const list = /*#__PURE__*/React.createElement("div", {
|
|
543
|
-
className: "".concat(prefixcls, "-right-list")
|
|
559
|
+
className: "".concat(prefixcls, "-right-list"),
|
|
560
|
+
role: "list",
|
|
561
|
+
"aria-label": "Selected list"
|
|
544
562
|
}, _mapInstanceProperty(selectedData).call(selectedData, item => this.renderRightItem(_Object$assign({}, item))));
|
|
545
563
|
content = list;
|
|
546
564
|
break;
|
package/lib/es/tree/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ declare class Tree extends BaseComponent<TreeProps, TreeState> {
|
|
|
70
70
|
onDragStart: PropTypes.Requireable<(...args: any[]) => any>;
|
|
71
71
|
onDrop: PropTypes.Requireable<(...args: any[]) => any>;
|
|
72
72
|
labelEllipsis: PropTypes.Requireable<boolean>;
|
|
73
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
73
74
|
};
|
|
74
75
|
static defaultProps: {
|
|
75
76
|
showClear: boolean;
|
package/lib/es/tree/index.js
CHANGED
|
@@ -504,6 +504,7 @@ class Tree extends BaseComponent {
|
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
return /*#__PURE__*/React.createElement(Input, _Object$assign({
|
|
507
|
+
"aria-label": 'Filter Tree',
|
|
507
508
|
ref: this.inputRef
|
|
508
509
|
}, inputProps));
|
|
509
510
|
}));
|
|
@@ -606,6 +607,14 @@ class Tree extends BaseComponent {
|
|
|
606
607
|
});
|
|
607
608
|
const searchNoRes = Boolean(inputValue) && !filteredKeys.size;
|
|
608
609
|
const noData = _isEmpty(keyEntities) || showFilteredOnly && searchNoRes;
|
|
610
|
+
const ariaAttr = {
|
|
611
|
+
role: noData ? 'none' : 'tree'
|
|
612
|
+
};
|
|
613
|
+
|
|
614
|
+
if (ariaAttr.role === 'tree') {
|
|
615
|
+
ariaAttr['aria-multiselectable'] = multiple ? true : false;
|
|
616
|
+
}
|
|
617
|
+
|
|
609
618
|
return /*#__PURE__*/React.createElement(TreeContext.Provider, {
|
|
610
619
|
value: {
|
|
611
620
|
treeDisabled: disabled,
|
|
@@ -643,13 +652,12 @@ class Tree extends BaseComponent {
|
|
|
643
652
|
labelEllipsis: typeof labelEllipsis === 'undefined' ? virtualize : labelEllipsis
|
|
644
653
|
}
|
|
645
654
|
}, /*#__PURE__*/React.createElement("div", {
|
|
655
|
+
"aria-label": this.props['aria-label'],
|
|
646
656
|
className: wrapperCls,
|
|
647
|
-
role: "list-box",
|
|
648
657
|
style: style
|
|
649
|
-
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/React.createElement("div", {
|
|
650
|
-
className: listCls
|
|
651
|
-
|
|
652
|
-
}, noData ? this.renderEmpty() : this.renderNodeList())));
|
|
658
|
+
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/React.createElement("div", _Object$assign({
|
|
659
|
+
className: listCls
|
|
660
|
+
}, ariaAttr), noData ? this.renderEmpty() : this.renderNodeList())));
|
|
653
661
|
}
|
|
654
662
|
|
|
655
663
|
}
|
|
@@ -714,7 +722,8 @@ Tree.propTypes = {
|
|
|
714
722
|
onDragOver: PropTypes.func,
|
|
715
723
|
onDragStart: PropTypes.func,
|
|
716
724
|
onDrop: PropTypes.func,
|
|
717
|
-
labelEllipsis: PropTypes.bool
|
|
725
|
+
labelEllipsis: PropTypes.bool,
|
|
726
|
+
'aria-label': PropTypes.string
|
|
718
727
|
};
|
|
719
728
|
Tree.defaultProps = {
|
|
720
729
|
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/es/tree/treeNode.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _get from "lodash/get";
|
|
1
2
|
import _isString from "lodash/isString";
|
|
2
3
|
import _isFunction from "lodash/isFunction";
|
|
3
4
|
import _debounce from "lodash/debounce";
|
|
@@ -22,6 +23,7 @@ import React, { PureComponent } from 'react';
|
|
|
22
23
|
import cls from 'classnames';
|
|
23
24
|
import PropTypes from 'prop-types';
|
|
24
25
|
import { cssClasses } from '@douyinfe/semi-foundation/lib/es/tree/constants';
|
|
26
|
+
import isEnterPress from '@douyinfe/semi-foundation/lib/es/utils/isEnterPress';
|
|
25
27
|
import { IconTreeTriangleDown, IconFile, IconFolder, IconFolderOpen } from '@douyinfe/semi-icons';
|
|
26
28
|
import { Checkbox } from '../checkbox';
|
|
27
29
|
import TreeContext from './treeContext';
|
|
@@ -59,6 +61,16 @@ export default class TreeNode extends PureComponent {
|
|
|
59
61
|
e.nativeEvent.stopImmediatePropagation();
|
|
60
62
|
onNodeCheck(e, this.props);
|
|
61
63
|
};
|
|
64
|
+
/**
|
|
65
|
+
* A11y: simulate checkbox click
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
this.handleCheckEnterPress = e => {
|
|
70
|
+
if (isEnterPress(e)) {
|
|
71
|
+
this.onCheck(e);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
62
74
|
|
|
63
75
|
this.onContextMenu = e => {
|
|
64
76
|
const {
|
|
@@ -83,6 +95,16 @@ export default class TreeNode extends PureComponent {
|
|
|
83
95
|
this.onExpand(e);
|
|
84
96
|
}
|
|
85
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
* A11y: simulate li click
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
this.handleliEnterPress = e => {
|
|
104
|
+
if (isEnterPress(e)) {
|
|
105
|
+
this.onClick(e);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
86
108
|
|
|
87
109
|
this.onDoubleClick = e => {
|
|
88
110
|
const {
|
|
@@ -260,7 +282,8 @@ export default class TreeNode extends PureComponent {
|
|
|
260
282
|
renderArrow() {
|
|
261
283
|
const showIcon = !this.isLeaf();
|
|
262
284
|
const {
|
|
263
|
-
loading
|
|
285
|
+
loading,
|
|
286
|
+
expanded
|
|
264
287
|
} = this.props;
|
|
265
288
|
|
|
266
289
|
if (loading) {
|
|
@@ -271,6 +294,8 @@ export default class TreeNode extends PureComponent {
|
|
|
271
294
|
|
|
272
295
|
if (showIcon) {
|
|
273
296
|
return /*#__PURE__*/React.createElement(IconTreeTriangleDown, {
|
|
297
|
+
role: 'button',
|
|
298
|
+
"aria-label": "".concat(expanded ? 'Expand' : 'Collapse', " the tree item"),
|
|
274
299
|
className: "".concat(prefixcls, "-expand-icon"),
|
|
275
300
|
size: "small",
|
|
276
301
|
onClick: this.onExpand
|
|
@@ -289,8 +314,11 @@ export default class TreeNode extends PureComponent {
|
|
|
289
314
|
} = this.props;
|
|
290
315
|
const disabled = this.isDisabled();
|
|
291
316
|
return /*#__PURE__*/React.createElement("div", {
|
|
292
|
-
|
|
317
|
+
role: 'none',
|
|
318
|
+
onClick: this.onCheck,
|
|
319
|
+
onKeyPress: this.handleCheckEnterPress
|
|
293
320
|
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
321
|
+
"aria-label": 'Toggle the checked state of checkbox',
|
|
294
322
|
indeterminate: halfChecked,
|
|
295
323
|
checked: checked,
|
|
296
324
|
disabled: Boolean(disabled)
|
|
@@ -343,7 +371,7 @@ export default class TreeNode extends PureComponent {
|
|
|
343
371
|
});
|
|
344
372
|
return /*#__PURE__*/React.createElement("ul", {
|
|
345
373
|
className: wrapperCls
|
|
346
|
-
}, /*#__PURE__*/React.createElement("
|
|
374
|
+
}, /*#__PURE__*/React.createElement("li", {
|
|
347
375
|
className: _concatInstanceProperty(_context2 = "".concat(prefixcls, "-label ")).call(_context2, prefixcls, "-label-empty")
|
|
348
376
|
}, emptyContent));
|
|
349
377
|
} // eslint-disable-next-line max-lines-per-function
|
|
@@ -450,11 +478,23 @@ export default class TreeNode extends PureComponent {
|
|
|
450
478
|
["".concat(prefixcls, "-drag-over-gap-top")]: !disabled && dragOverGapTop,
|
|
451
479
|
["".concat(prefixcls, "-drag-over-gap-bottom")]: !disabled && dragOverGapBottom
|
|
452
480
|
});
|
|
481
|
+
|
|
482
|
+
const setsize = _get(rest, ['data', 'children', 'length']);
|
|
483
|
+
|
|
484
|
+
const posinset = _isString(rest.pos) ? Number(rest.pos.split('-')[level + 1]) + 1 : 1;
|
|
453
485
|
return /*#__PURE__*/React.createElement("li", _Object$assign({
|
|
454
486
|
className: nodeCls,
|
|
455
|
-
role: "
|
|
487
|
+
role: "treeitem",
|
|
488
|
+
"aria-disabled": disabled,
|
|
489
|
+
"aria-checked": checked,
|
|
490
|
+
"aria-selected": selected,
|
|
491
|
+
"aria-setsize": setsize,
|
|
492
|
+
"aria-posinset": posinset,
|
|
493
|
+
"aria-expanded": expanded,
|
|
494
|
+
"aria-level": level + 1,
|
|
456
495
|
"data-key": eventKey,
|
|
457
496
|
onClick: this.onClick,
|
|
497
|
+
onKeyPress: this.handleliEnterPress,
|
|
458
498
|
onContextMenu: this.onContextMenu,
|
|
459
499
|
onDoubleClick: this.onDoubleClick,
|
|
460
500
|
ref: this.setRef,
|