@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/treeSelect/index.tsx
CHANGED
|
@@ -99,6 +99,11 @@ export type OverrideCommonProps =
|
|
|
99
99
|
*/
|
|
100
100
|
// eslint-disable-next-line max-len
|
|
101
101
|
export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideCommonProps | 'validateStatus' | 'searchRender'>, Pick<TreeProps, OverrideCommonProps>{
|
|
102
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
103
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
104
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
105
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
106
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
102
107
|
motion?: Motion;
|
|
103
108
|
mouseEnterDelay?: number;
|
|
104
109
|
mouseLeaveDelay?: number;
|
|
@@ -110,6 +115,7 @@ export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideComm
|
|
|
110
115
|
dropdownMatchSelectWidth?: boolean;
|
|
111
116
|
dropdownStyle?: React.CSSProperties;
|
|
112
117
|
insetLabel?: React.ReactNode;
|
|
118
|
+
insetLabelId?: string;
|
|
113
119
|
maxTagCount?: number;
|
|
114
120
|
motionExpand?: boolean;
|
|
115
121
|
optionListStyle?: React.CSSProperties;
|
|
@@ -164,6 +170,11 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
164
170
|
static contextType = ConfigContext;
|
|
165
171
|
|
|
166
172
|
static propTypes = {
|
|
173
|
+
'aria-describedby': PropTypes.string,
|
|
174
|
+
'aria-errormessage': PropTypes.string,
|
|
175
|
+
'aria-invalid': PropTypes.bool,
|
|
176
|
+
'aria-labelledby': PropTypes.string,
|
|
177
|
+
'aria-required': PropTypes.bool,
|
|
167
178
|
loadedKeys: PropTypes.arrayOf(PropTypes.string),
|
|
168
179
|
loadData: PropTypes.func,
|
|
169
180
|
onLoad: PropTypes.func,
|
|
@@ -218,6 +229,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
218
229
|
suffix: PropTypes.node,
|
|
219
230
|
prefix: PropTypes.node,
|
|
220
231
|
insetLabel: PropTypes.node,
|
|
232
|
+
insetLabelId: PropTypes.string,
|
|
221
233
|
zIndex: PropTypes.number,
|
|
222
234
|
getPopupContainer: PropTypes.func,
|
|
223
235
|
dropdownMatchSelectWidth: PropTypes.bool,
|
|
@@ -238,6 +250,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
238
250
|
optionListStyle: PropTypes.object,
|
|
239
251
|
searchRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
|
|
240
252
|
renderSelectedItem: PropTypes.func,
|
|
253
|
+
'aria-label': PropTypes.string,
|
|
241
254
|
};
|
|
242
255
|
|
|
243
256
|
static defaultProps: Partial<TreeSelectProps> = {
|
|
@@ -266,6 +279,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
266
279
|
expandAction: false,
|
|
267
280
|
clickToHide: true,
|
|
268
281
|
searchAutoFocus: false,
|
|
282
|
+
'aria-label': 'TreeSelect'
|
|
269
283
|
};
|
|
270
284
|
inputRef: React.RefObject<typeof Input>;
|
|
271
285
|
tagInputRef: React.RefObject<TagInput>;
|
|
@@ -276,6 +290,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
276
290
|
onNodeClick: any;
|
|
277
291
|
onNodeDoubleClick: any;
|
|
278
292
|
onMotionEnd: any;
|
|
293
|
+
treeSelectID: string;
|
|
279
294
|
|
|
280
295
|
constructor(props: TreeSelectProps) {
|
|
281
296
|
super(props);
|
|
@@ -311,6 +326,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
311
326
|
this.optionsRef = React.createRef();
|
|
312
327
|
this.clickOutsideHandler = null;
|
|
313
328
|
this.foundation = new TreeSelectFoundation(this.adapter);
|
|
329
|
+
this.treeSelectID = Math.random().toString(36).slice(2);
|
|
314
330
|
}
|
|
315
331
|
|
|
316
332
|
// eslint-disable-next-line max-lines-per-function
|
|
@@ -614,7 +630,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
614
630
|
};
|
|
615
631
|
|
|
616
632
|
renderPrefix = () => {
|
|
617
|
-
const { prefix, insetLabel }: any = this.props;
|
|
633
|
+
const { prefix, insetLabel, insetLabelId }: any = this.props;
|
|
618
634
|
const labelNode = prefix || insetLabel;
|
|
619
635
|
const prefixWrapperCls = cls({
|
|
620
636
|
[`${prefixcls}-prefix`]: true,
|
|
@@ -624,7 +640,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
624
640
|
[`${prefixcls}-prefix-icon`]: isSemiIcon(labelNode),
|
|
625
641
|
});
|
|
626
642
|
|
|
627
|
-
return <div className={prefixWrapperCls}>{labelNode}</div>;
|
|
643
|
+
return <div className={prefixWrapperCls} id={insetLabelId}>{labelNode}</div>;
|
|
628
644
|
};
|
|
629
645
|
|
|
630
646
|
renderContent = () => {
|
|
@@ -633,7 +649,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
633
649
|
const style = { minWidth: dropdownMinWidth, ...dropdownStyle };
|
|
634
650
|
const popoverCls = cls(dropdownClassName, `${prefixcls}-popover`);
|
|
635
651
|
return (
|
|
636
|
-
<div className={popoverCls}
|
|
652
|
+
<div className={popoverCls} style={style}>
|
|
637
653
|
{this.renderTree()}
|
|
638
654
|
</div>
|
|
639
655
|
);
|
|
@@ -647,6 +663,10 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
647
663
|
this.foundation.handleClick(e);
|
|
648
664
|
};
|
|
649
665
|
|
|
666
|
+
handleSelectionEnterPress = (e: React.KeyboardEvent<HTMLDivElement>) => {
|
|
667
|
+
this.foundation.handleSelectionEnterPress(e);
|
|
668
|
+
};
|
|
669
|
+
|
|
650
670
|
showClearBtn = () => {
|
|
651
671
|
const { searchPosition } = this.props;
|
|
652
672
|
const { inputValue } = this.state;
|
|
@@ -782,6 +802,11 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
782
802
|
this.foundation.handleClear(e);
|
|
783
803
|
};
|
|
784
804
|
|
|
805
|
+
handleClearEnterPress = (e: React.KeyboardEvent<HTMLDivElement>) => {
|
|
806
|
+
e && e.stopPropagation();
|
|
807
|
+
this.foundation.handleClearEnterPress(e);
|
|
808
|
+
};
|
|
809
|
+
|
|
785
810
|
handleMouseOver = (e: React.MouseEvent) => {
|
|
786
811
|
this.foundation.toggleHoverState(true);
|
|
787
812
|
};
|
|
@@ -812,7 +837,14 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
812
837
|
const clearCls = cls(`${prefixcls}-clearbtn`);
|
|
813
838
|
if (showClearBtn) {
|
|
814
839
|
return (
|
|
815
|
-
<div
|
|
840
|
+
<div
|
|
841
|
+
role='button'
|
|
842
|
+
tabIndex={0}
|
|
843
|
+
aria-label="Clear TreeSelect value"
|
|
844
|
+
className={clearCls}
|
|
845
|
+
onClick={this.handleClear}
|
|
846
|
+
onKeyPress={this.handleClearEnterPress}
|
|
847
|
+
>
|
|
816
848
|
<IconClear />
|
|
817
849
|
</div>
|
|
818
850
|
);
|
|
@@ -902,13 +934,29 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
902
934
|
<Fragment key={'arrow'}>{this.renderArrow()}</Fragment>,
|
|
903
935
|
]
|
|
904
936
|
);
|
|
905
|
-
|
|
937
|
+
const tabIndex = disabled ? null : 0;
|
|
938
|
+
/**
|
|
939
|
+
* Reasons for disabling the a11y eslint rule:
|
|
940
|
+
* The following attributes(aria-controls,aria-expanded) will be automatically added by Tooltip, no need to declare here
|
|
941
|
+
*/
|
|
906
942
|
return (
|
|
907
943
|
<div
|
|
944
|
+
// eslint-disable-next-line jsx-a11y/role-has-required-aria-props
|
|
945
|
+
role='combobox'
|
|
946
|
+
aria-disabled={disabled}
|
|
947
|
+
aria-haspopup="tree"
|
|
948
|
+
tabIndex={tabIndex}
|
|
908
949
|
className={classNames}
|
|
909
950
|
style={style}
|
|
910
951
|
ref={this.triggerRef}
|
|
911
952
|
onClick={this.handleClick}
|
|
953
|
+
onKeyPress={this.handleSelectionEnterPress}
|
|
954
|
+
aria-invalid={this.props['aria-invalid']}
|
|
955
|
+
aria-errormessage={this.props['aria-errormessage']}
|
|
956
|
+
aria-label={this.props['aria-label']}
|
|
957
|
+
aria-labelledby={this.props['aria-labelledby']}
|
|
958
|
+
aria-describedby={this.props['aria-describedby']}
|
|
959
|
+
aria-required={this.props['aria-required']}
|
|
912
960
|
{...mouseEvent}
|
|
913
961
|
>
|
|
914
962
|
{inner}
|
|
@@ -979,6 +1027,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
979
1027
|
size,
|
|
980
1028
|
searchAutoFocus,
|
|
981
1029
|
placeholder,
|
|
1030
|
+
maxTagCount,
|
|
982
1031
|
} = this.props;
|
|
983
1032
|
const {
|
|
984
1033
|
keyEntities,
|
|
@@ -988,6 +1037,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
988
1037
|
const keyList = normalizeKeyList(checkedKeys, keyEntities, leafOnly);
|
|
989
1038
|
return (
|
|
990
1039
|
<TagInput
|
|
1040
|
+
maxTagCount={maxTagCount}
|
|
991
1041
|
disabled={disabled}
|
|
992
1042
|
onInputChange={v => this.search(v)}
|
|
993
1043
|
ref={this.tagInputRef}
|
|
@@ -1054,6 +1104,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1054
1104
|
}
|
|
1055
1105
|
return (
|
|
1056
1106
|
<Input
|
|
1107
|
+
aria-label='Filter TreeSelect item'
|
|
1057
1108
|
ref={this.inputRef as any}
|
|
1058
1109
|
autofocus={searchAutoFocus}
|
|
1059
1110
|
placeholder={placeholder}
|
|
@@ -1232,7 +1283,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1232
1283
|
labelEllipsis: typeof labelEllipsis === 'undefined' ? virtualize : labelEllipsis,
|
|
1233
1284
|
}}
|
|
1234
1285
|
>
|
|
1235
|
-
<div className={wrapperCls}
|
|
1286
|
+
<div className={wrapperCls}>
|
|
1236
1287
|
{outerTopSlot}
|
|
1237
1288
|
{
|
|
1238
1289
|
!outerTopSlot &&
|
|
@@ -1240,7 +1291,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1240
1291
|
isDropdownPositionSearch &&
|
|
1241
1292
|
this.renderInput()
|
|
1242
1293
|
}
|
|
1243
|
-
<div className={listCls} role="tree" style={optionListStyle}>
|
|
1294
|
+
<div className={listCls} role="tree" aria-multiselectable={multiple ? true : false} style={optionListStyle}>
|
|
1244
1295
|
{noData ? this.renderEmpty() : this.renderNodeList()}
|
|
1245
1296
|
</div>
|
|
1246
1297
|
{outerBottomSlot}
|
package/typography/base.tsx
CHANGED
|
@@ -11,6 +11,7 @@ import Tooltip from '../tooltip/index';
|
|
|
11
11
|
import Popover from '../popover/index';
|
|
12
12
|
import getRenderText from './util';
|
|
13
13
|
import warning from '@douyinfe/semi-foundation/utils/warning';
|
|
14
|
+
import isEnterPress from '@douyinfe/semi-foundation/utils/isEnterPress';
|
|
14
15
|
import LocaleConsumer from '../locale/localeConsumer';
|
|
15
16
|
import { Locale } from '../locale/interface';
|
|
16
17
|
import { Ellipsis, EllipsisPos, ShowTooltip, TypographyBaseSize, TypographyBaseType } from './interface';
|
|
@@ -372,13 +373,18 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
|
|
|
372
373
|
}
|
|
373
374
|
if (!noExpandText || !noCollapseText) {
|
|
374
375
|
return (
|
|
376
|
+
// TODO: replace `a` tag with `span` in next major version
|
|
377
|
+
// NOTE: may have effect on style
|
|
378
|
+
// eslint-disable-next-line jsx-a11y/anchor-is-valid
|
|
375
379
|
<a
|
|
380
|
+
role="button"
|
|
381
|
+
tabIndex={0}
|
|
376
382
|
className={`${prefixCls}-ellipsis-expand`}
|
|
377
383
|
key="expand"
|
|
378
384
|
ref={this.expandRef}
|
|
379
385
|
aria-label={text}
|
|
380
386
|
onClick={this.toggleOverflow}
|
|
381
|
-
|
|
387
|
+
onKeyPress={e => isEnterPress(e) && this.toggleOverflow(e as any)}
|
|
382
388
|
>
|
|
383
389
|
{text}
|
|
384
390
|
</a>
|
package/typography/copyable.tsx
CHANGED
|
@@ -9,6 +9,7 @@ import LocaleConsumer from '../locale/localeConsumer';
|
|
|
9
9
|
import { IconCopy, IconTick } from '@douyinfe/semi-icons';
|
|
10
10
|
import { BaseProps } from '../_base/baseComponent';
|
|
11
11
|
import { Locale } from '../locale/interface';
|
|
12
|
+
import isEnterPress from '@douyinfe/semi-foundation/utils/isEnterPress';
|
|
12
13
|
|
|
13
14
|
const prefixCls = cssClasses.PREFIX;
|
|
14
15
|
export interface CopyableProps extends BaseProps {
|
|
@@ -120,8 +121,16 @@ export class Copyable extends React.PureComponent<CopyableProps, CopyableState>
|
|
|
120
121
|
this.renderSuccessTip()
|
|
121
122
|
) : (
|
|
122
123
|
<Tooltip content={typeof copyTip !== 'undefined' ? copyTip : locale.copy}>
|
|
124
|
+
{/* TODO: replace `a` tag with `span` in next major version
|
|
125
|
+
NOTE: may have effect on style */}
|
|
126
|
+
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
|
|
123
127
|
<a className={`${prefixCls}-action-copy-icon`}>
|
|
124
|
-
<IconCopy
|
|
128
|
+
<IconCopy
|
|
129
|
+
role="button"
|
|
130
|
+
tabIndex={0}
|
|
131
|
+
onClick={this.copy}
|
|
132
|
+
onKeyPress={e => isEnterPress(e) && this.copy(e as any)}
|
|
133
|
+
/>
|
|
125
134
|
</a>
|
|
126
135
|
</Tooltip>
|
|
127
136
|
)}
|
package/upload/fileCard.tsx
CHANGED
|
@@ -17,7 +17,7 @@ import { RenderFileItemProps } from './interface';
|
|
|
17
17
|
const prefixCls = cssClasses.PREFIX;
|
|
18
18
|
|
|
19
19
|
const ErrorSvg: FC<SVGProps<SVGSVGElement>> = (props = {}) => (
|
|
20
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
20
|
+
<svg focusable={false} aria-hidden width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
21
21
|
<circle cx="7.99992" cy="7.99992" r="6.66667" fill="white" />
|
|
22
22
|
<path
|
|
23
23
|
fillRule="evenodd"
|
|
@@ -28,7 +28,7 @@ const ErrorSvg: FC<SVGProps<SVGSVGElement>> = (props = {}) => (
|
|
|
28
28
|
);
|
|
29
29
|
|
|
30
30
|
const ReplaceSvg: FC<SVGProps<SVGSVGElement>> = (props = {}) => (
|
|
31
|
-
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
31
|
+
<svg focusable={false} aria-hidden width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
32
32
|
<circle cx="14" cy="14" r="14" fill="#16161A" fillOpacity="0.6" />
|
|
33
33
|
<path d="M9 10.25V18.25L10.25 13.25H17.875V11.75C17.875 11.4739 17.6511 11.25 17.375 11.25H14L12.75 9.75H9.5C9.22386 9.75 9 9.97386 9 10.25Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
|
|
34
34
|
<path d="M18 18.25L19 13.25H10.2031L9 18.25H18Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
|
|
@@ -36,7 +36,7 @@ const ReplaceSvg: FC<SVGProps<SVGSVGElement>> = (props = {}) => (
|
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
const DirectorySvg: FC<SVGProps<SVGSVGElement>> = (props = {}) => (
|
|
39
|
-
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
39
|
+
<svg focusable={false} aria-hidden width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
40
40
|
<path d="M6 17V7.58824C6 7.26336 6.26863 7 6.6 7H10.5L12 8.76471H16.05C16.3814 8.76471 16.65 9.02806 16.65 9.35294V11.1176H7.5L6 17ZM6 17L7.44375 11.1176H18L16.8 17L6 17Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
|
|
41
41
|
</svg>
|
|
42
42
|
|
|
@@ -136,15 +136,13 @@ class FileCard extends PureComponent<FileCardProps> {
|
|
|
136
136
|
});
|
|
137
137
|
const closeCls = `${prefixCls}-picture-file-card-close`;
|
|
138
138
|
const retry = (
|
|
139
|
-
<div
|
|
140
|
-
className={`${prefixCls}-picture-file-card-retry`} onClick={e => this.onRetry(e)}>
|
|
139
|
+
<div role="button" tabIndex={0} className={`${prefixCls}-picture-file-card-retry`} onClick={e => this.onRetry(e)}>
|
|
141
140
|
<IconRefresh className={`${prefixCls}-picture-file-card-icon-retry`} />
|
|
142
141
|
</div>
|
|
143
142
|
);
|
|
144
143
|
const replace = (
|
|
145
144
|
<Tooltip trigger="hover" position="top" content={locale.replace} showArrow={false} spacing={4}>
|
|
146
|
-
<div
|
|
147
|
-
className={`${prefixCls}-picture-file-card-replace`} onClick={(e): void => this.onReplace(e)}>
|
|
145
|
+
<div role="button" tabIndex={0} className={`${prefixCls}-picture-file-card-replace`} onClick={(e): void => this.onReplace(e)}>
|
|
148
146
|
<ReplaceSvg className={`${prefixCls}-picture-file-card-icon-replace`} />
|
|
149
147
|
</div>
|
|
150
148
|
</Tooltip>
|
|
@@ -155,18 +153,18 @@ class FileCard extends PureComponent<FileCardProps> {
|
|
|
155
153
|
<div className={`${prefixCls }-picture-file-card-pic-info`}>{index + 1}</div>
|
|
156
154
|
);
|
|
157
155
|
|
|
158
|
-
const thumbnail = typeof renderThumbnail === 'function' ? renderThumbnail(this.props) : <img src={url} alt={
|
|
156
|
+
const thumbnail = typeof renderThumbnail === 'function' ? renderThumbnail(this.props) : <img src={url} alt={name} />;
|
|
159
157
|
|
|
160
158
|
return (
|
|
161
|
-
<div className={filePicCardCls} style={style} onClick={onPreviewClick}>
|
|
159
|
+
<div role="listitem" className={filePicCardCls} style={style} onClick={onPreviewClick}>
|
|
162
160
|
{thumbnail}
|
|
163
|
-
{showProgress ? <Progress percent={percent} type="circle" size="small" orbitStroke={'#FFF'} /> : null}
|
|
161
|
+
{showProgress ? <Progress percent={percent} type="circle" size="small" orbitStroke={'#FFF'} aria-label="uploading file progress" /> : null}
|
|
164
162
|
{showRetry ? retry : null}
|
|
165
163
|
{showReplace && replace}
|
|
166
164
|
{showPicInfo && picInfo}
|
|
167
165
|
{!disabled && (
|
|
168
|
-
<div className={closeCls}>
|
|
169
|
-
<IconClose size="extra-small"
|
|
166
|
+
<div className={closeCls} onClick={e => this.onRemove(e)}>
|
|
167
|
+
<IconClose tabIndex={0} role="button" size="extra-small" />
|
|
170
168
|
</div>
|
|
171
169
|
)}
|
|
172
170
|
{this.renderPicValidateMsg()}
|
|
@@ -193,12 +191,12 @@ class FileCard extends PureComponent<FileCardProps> {
|
|
|
193
191
|
const showRetry = status === strings.FILE_STATUS_UPLOAD_FAIL && propsShowRetry;
|
|
194
192
|
const showReplace = status === strings.FILE_STATUS_SUCCESS && propsShowReplace;
|
|
195
193
|
const fileSize = this.transSize(size);
|
|
196
|
-
let previewContent: ReactNode = preview ? (<img src={url} />) : (<IconFile size="large" />);
|
|
194
|
+
let previewContent: ReactNode = preview ? (<img src={url} alt={name} />) : (<IconFile size="large" />);
|
|
197
195
|
if (previewFile) {
|
|
198
196
|
previewContent = previewFile(this.props);
|
|
199
197
|
}
|
|
200
198
|
return (
|
|
201
|
-
<div className={fileCardCls} style={style} onClick={onPreviewClick}>
|
|
199
|
+
<div role="listitem" className={fileCardCls} style={style} onClick={onPreviewClick}>
|
|
202
200
|
<div className={previewCls}>
|
|
203
201
|
{previewContent}
|
|
204
202
|
</div>
|
|
@@ -225,12 +223,12 @@ class FileCard extends PureComponent<FileCardProps> {
|
|
|
225
223
|
</span>
|
|
226
224
|
|
|
227
225
|
</div>
|
|
228
|
-
{showProgress ? (<Progress percent={percent} style={{ width: '100%' }} />) : null}
|
|
226
|
+
{showProgress ? (<Progress percent={percent} style={{ width: '100%' }} aria-label="uploading file progress" />) : null}
|
|
229
227
|
<div className={`${infoCls}-main-control`}>
|
|
230
228
|
<span className={`${infoCls}-validate-message`}>
|
|
231
229
|
{this.renderValidateMessage()}
|
|
232
230
|
</span>
|
|
233
|
-
{showRetry ? <span className={`${infoCls}-retry`} onClick={e => this.onRetry(e)}>{locale.retry}</span> : null}
|
|
231
|
+
{showRetry ? <span role="button" tabIndex={0} className={`${infoCls}-retry`} onClick={e => this.onRetry(e)}>{locale.retry}</span> : null}
|
|
234
232
|
</div>
|
|
235
233
|
</div>
|
|
236
234
|
<IconButton
|
package/upload/index.tsx
CHANGED
|
@@ -400,6 +400,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
400
400
|
});
|
|
401
401
|
const mainCls = `${prefixCls}-file-list-main`;
|
|
402
402
|
const addContentProps = {
|
|
403
|
+
role: 'button',
|
|
403
404
|
className: uploadAddCls,
|
|
404
405
|
onClick: this.onClick,
|
|
405
406
|
};
|
|
@@ -432,7 +433,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
432
433
|
<LocaleConsumer componentName="Upload">
|
|
433
434
|
{(locale: Locale['Upload']) => (
|
|
434
435
|
<div {...containerProps}>
|
|
435
|
-
<div className={mainCls}>
|
|
436
|
+
<div className={mainCls} role="list" aria-label="picture list">
|
|
436
437
|
{fileList.map((file, index) => this.renderFile(file, index, locale))}
|
|
437
438
|
{showAddTriggerInList ? addContent : null}
|
|
438
439
|
</div>
|
|
@@ -467,14 +468,14 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
467
468
|
<div className={titleCls}>
|
|
468
469
|
<span className={`${titleCls}-choosen`}>{locale.selectedFiles}</span>
|
|
469
470
|
{showClear ? (
|
|
470
|
-
<span onClick={this.clear} className={`${titleCls}-clear`}>
|
|
471
|
+
<span role="button" tabIndex={0} onClick={this.clear} className={`${titleCls}-clear`}>
|
|
471
472
|
{locale.clear}
|
|
472
473
|
</span>
|
|
473
474
|
) : null}
|
|
474
475
|
</div>
|
|
475
476
|
) : null}
|
|
476
477
|
|
|
477
|
-
<div className={mainCls}>
|
|
478
|
+
<div className={mainCls} role="list" aria-label="file list">
|
|
478
479
|
{fileList.map((file, index) => this.renderFile(file, index, locale))}
|
|
479
480
|
</div>
|
|
480
481
|
</div>
|
|
@@ -501,7 +502,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
501
502
|
};
|
|
502
503
|
|
|
503
504
|
renderAddContent = () => {
|
|
504
|
-
const { draggable, children, listType } = this.props;
|
|
505
|
+
const { draggable, children, listType, disabled } = this.props;
|
|
505
506
|
const uploadAddCls = cls(`${prefixCls}-add`);
|
|
506
507
|
if (listType === strings.FILE_LIST_PIC) {
|
|
507
508
|
return null;
|
|
@@ -510,7 +511,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
510
511
|
return this.renderDragArea();
|
|
511
512
|
}
|
|
512
513
|
return (
|
|
513
|
-
<div className={uploadAddCls} onClick={this.onClick}>
|
|
514
|
+
<div role="button" tabIndex={0} aria-disabled={disabled} className={uploadAddCls} onClick={this.onClick}>
|
|
514
515
|
{children}
|
|
515
516
|
</div>
|
|
516
517
|
);
|
|
@@ -518,7 +519,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
518
519
|
|
|
519
520
|
renderDragArea = (): ReactNode => {
|
|
520
521
|
const { dragAreaStatus } = this.state;
|
|
521
|
-
const { children, dragIcon, dragMainText, dragSubText } = this.props;
|
|
522
|
+
const { children, dragIcon, dragMainText, dragSubText, disabled } = this.props;
|
|
522
523
|
const dragAreaBaseCls = `${prefixCls}-drag-area`;
|
|
523
524
|
const dragAreaCls = cls(dragAreaBaseCls, {
|
|
524
525
|
[`${dragAreaBaseCls}-legal`]: dragAreaStatus === strings.DRAG_AREA_LEGAL,
|
|
@@ -530,6 +531,9 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
530
531
|
<LocaleConsumer componentName="Upload">
|
|
531
532
|
{(locale: Locale['Upload']): ReactNode => (
|
|
532
533
|
<div
|
|
534
|
+
role="button"
|
|
535
|
+
tabIndex={0}
|
|
536
|
+
aria-disabled={disabled}
|
|
533
537
|
className={dragAreaCls}
|
|
534
538
|
onDrop={this.onDrop}
|
|
535
539
|
onDragOver={this.onDragOver}
|