@douyinfe/semi-ui 2.2.0-beta.1 → 2.3.0-beta.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/_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/avatarGroup.tsx +1 -1
- package/avatar/index.tsx +10 -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 +21 -14
- package/checkbox/checkbox.tsx +40 -5
- package/checkbox/checkboxGroup.tsx +30 -5
- package/checkbox/checkboxInner.tsx +25 -2
- package/collapse/index.tsx +2 -2
- package/collapse/item.tsx +15 -8
- 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 +2785 -1508
- 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 +5 -5
- 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/avatarGroup.js +2 -1
- package/lib/cjs/avatar/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +20 -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/index.js +2 -1
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +17 -3
- 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/empty/index.js +2 -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 +12 -5
- 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 +2 -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 +3 -8
- 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 +23 -4
- 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/avatarGroup.js +2 -1
- package/lib/es/avatar/index.d.ts +4 -3
- package/lib/es/avatar/index.js +20 -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/index.js +2 -1
- package/lib/es/collapse/item.d.ts +2 -1
- package/lib/es/collapse/item.js +16 -3
- 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/empty/index.js +2 -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 +12 -5
- 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 +2 -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 +1 -6
- 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 +23 -4
- 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 +13 -9
- 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 +3 -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 +1 -2
- 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 +50 -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 +13 -15
- package/upload/index.tsx +10 -6
package/notification/notice.tsx
CHANGED
|
@@ -3,19 +3,20 @@ import React from 'react';
|
|
|
3
3
|
import cls from 'classnames';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import ConfigContext from '../configProvider/context';
|
|
6
|
-
import {
|
|
6
|
+
import { cssClasses, numbers, strings } from '@douyinfe/semi-foundation/notification/constants';
|
|
7
7
|
import NotificationFoundation, {
|
|
8
8
|
NoticeAdapter,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
NoticeProps,
|
|
10
|
+
NoticeState
|
|
11
11
|
} from '@douyinfe/semi-foundation/notification/notificationFoundation';
|
|
12
12
|
import Button from '../iconButton';
|
|
13
13
|
import BaseComponent from '../_base/baseComponent';
|
|
14
14
|
import { isSemiIcon } from '../_utils';
|
|
15
15
|
import { noop } from 'lodash';
|
|
16
|
-
import {
|
|
16
|
+
import { IconAlertCircle, IconAlertTriangle, IconClose, IconInfoCircle, IconTickCircle } from '@douyinfe/semi-icons';
|
|
17
|
+
import { getUuidShort } from '@douyinfe/semi-foundation/utils/uuid';
|
|
17
18
|
|
|
18
|
-
export interface NoticeReactProps extends NoticeProps{
|
|
19
|
+
export interface NoticeReactProps extends NoticeProps {
|
|
19
20
|
style?: React.CSSProperties;
|
|
20
21
|
title?: React.ReactNode;
|
|
21
22
|
content?: React.ReactNode;
|
|
@@ -88,15 +89,15 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
|
|
|
88
89
|
renderTypeIcon() {
|
|
89
90
|
const { type, icon } = this.props;
|
|
90
91
|
const iconMap = {
|
|
91
|
-
warning: <IconAlertTriangle size="large"
|
|
92
|
-
success: <IconTickCircle size="large"
|
|
93
|
-
info: <IconInfoCircle size="large"
|
|
94
|
-
error: <IconAlertCircle size="large"
|
|
92
|
+
warning: <IconAlertTriangle size="large"/>,
|
|
93
|
+
success: <IconTickCircle size="large"/>,
|
|
94
|
+
info: <IconInfoCircle size="large"/>,
|
|
95
|
+
error: <IconAlertCircle size="large"/>,
|
|
95
96
|
};
|
|
96
97
|
let iconType = iconMap[type];
|
|
97
98
|
const iconCls = cls({
|
|
98
|
-
[`${prefixCls
|
|
99
|
-
[`${prefixCls
|
|
99
|
+
[`${prefixCls}-icon`]: true,
|
|
100
|
+
[`${prefixCls}-${type}`]: true,
|
|
100
101
|
});
|
|
101
102
|
if (icon) {
|
|
102
103
|
iconType = icon;
|
|
@@ -104,7 +105,7 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
|
|
|
104
105
|
if (iconType) {
|
|
105
106
|
return (
|
|
106
107
|
<div className={iconCls}>
|
|
107
|
-
{isSemiIcon(iconType) ? React.cloneElement(iconType, {size
|
|
108
|
+
{isSemiIcon(iconType) ? React.cloneElement(iconType, { size: iconType.props.size || 'large' }) : iconType}
|
|
108
109
|
</div>
|
|
109
110
|
);
|
|
110
111
|
}
|
|
@@ -152,25 +153,29 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
|
|
|
152
153
|
[`${prefixCls}-${theme}`]: theme === 'light',
|
|
153
154
|
[`${prefixCls}-rtl`]: direction === 'rtl',
|
|
154
155
|
});
|
|
156
|
+
const titleID = getUuidShort({});
|
|
155
157
|
return (
|
|
158
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
156
159
|
<div
|
|
157
160
|
className={wrapper}
|
|
158
161
|
style={style}
|
|
159
162
|
onMouseEnter={this.clearCloseTimer}
|
|
160
163
|
onMouseLeave={this.startCloseTimer}
|
|
161
164
|
onClick={this.notifyClick}
|
|
165
|
+
aria-labelledby={titleID}
|
|
166
|
+
role={'alert'}
|
|
162
167
|
>
|
|
163
168
|
<div>{this.renderTypeIcon()}</div>
|
|
164
169
|
<div className={`${prefixCls}-inner`}>
|
|
165
170
|
<div className={`${prefixCls}-content-wrapper`}>
|
|
166
|
-
{title ? <div className={`${prefixCls}-title`}>{title}</div> : ''}
|
|
171
|
+
{title ? <div id={titleID} className={`${prefixCls}-title`}>{title}</div> : ''}
|
|
167
172
|
{content ? <div className={`${prefixCls}-content`}>{content}</div> : ''}
|
|
168
173
|
</div>
|
|
169
174
|
{showClose && (
|
|
170
175
|
<Button
|
|
171
176
|
className={`${prefixCls}-icon-close`}
|
|
172
177
|
type="tertiary"
|
|
173
|
-
icon={<IconClose
|
|
178
|
+
icon={<IconClose/>}
|
|
174
179
|
theme="borderless"
|
|
175
180
|
size="small"
|
|
176
181
|
onClick={this.close}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0-beta.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/runtime-corejs3": "^7.15.4",
|
|
17
|
-
"@douyinfe/semi-animation-react": "2.
|
|
18
|
-
"@douyinfe/semi-foundation": "2.
|
|
19
|
-
"@douyinfe/semi-icons": "2.
|
|
20
|
-
"@douyinfe/semi-illustrations": "2.
|
|
21
|
-
"@douyinfe/semi-theme-default": "2.
|
|
17
|
+
"@douyinfe/semi-animation-react": "2.3.0-beta.0",
|
|
18
|
+
"@douyinfe/semi-foundation": "2.3.0-beta.0",
|
|
19
|
+
"@douyinfe/semi-icons": "2.3.0-beta.0",
|
|
20
|
+
"@douyinfe/semi-illustrations": "2.3.0-beta.0",
|
|
21
|
+
"@douyinfe/semi-theme-default": "2.3.0-beta.0",
|
|
22
22
|
"@types/react-window": "^1.8.2",
|
|
23
23
|
"async-validator": "^3.5.0",
|
|
24
24
|
"classnames": "^2.2.6",
|
|
@@ -68,13 +68,13 @@
|
|
|
68
68
|
],
|
|
69
69
|
"author": "",
|
|
70
70
|
"license": "MIT",
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "5847f92fd90bc37f1fed5c7d2d6d64f6ebf632bc",
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
74
74
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
75
75
|
"@babel/preset-env": "^7.15.8",
|
|
76
76
|
"@babel/preset-react": "^7.14.5",
|
|
77
|
-
"@douyinfe/semi-scss-compile": "2.
|
|
77
|
+
"@douyinfe/semi-scss-compile": "2.3.0-beta.0",
|
|
78
78
|
"@storybook/addon-knobs": "^6.3.1",
|
|
79
79
|
"@types/lodash": "^4.14.176",
|
|
80
80
|
"babel-loader": "^8.2.2",
|
package/pagination/index.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
|
+
/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import classNames from 'classnames';
|
|
4
5
|
import PropTypes from 'prop-types';
|
|
@@ -213,7 +214,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
213
214
|
[`${prefixCls}-item-disabled`]: prevDisabled,
|
|
214
215
|
});
|
|
215
216
|
return (
|
|
216
|
-
<li onClick={e => !prevDisabled && this.foundation.goPrev(e)} className={preClassName}
|
|
217
|
+
<li role="button" aria-disabled={prevDisabled ? true : false} aria-label="Previous" onClick={e => !prevDisabled && this.foundation.goPrev(e)} className={preClassName}>
|
|
217
218
|
{prevText || <IconChevronLeft size="large" />}
|
|
218
219
|
</li>
|
|
219
220
|
);
|
|
@@ -228,7 +229,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
228
229
|
[`${prefixCls}-next`]: true,
|
|
229
230
|
});
|
|
230
231
|
return (
|
|
231
|
-
<li onClick={e => !nextDisabled && this.foundation.goNext(e)} className={nextClassName}
|
|
232
|
+
<li role="button" aria-disabled={nextDisabled ? true : false} aria-label="Next" onClick={e => !nextDisabled && this.foundation.goNext(e)} className={nextClassName}>
|
|
232
233
|
{nextText || <IconChevronRight size="large" />}
|
|
233
234
|
</li>
|
|
234
235
|
);
|
|
@@ -257,6 +258,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
257
258
|
return (
|
|
258
259
|
<div className={switchCls}>
|
|
259
260
|
<Select
|
|
261
|
+
aria-label="Page size selector"
|
|
260
262
|
onChange={newPageSize => this.foundation.changePageSize(newPageSize)}
|
|
261
263
|
value={pageSize}
|
|
262
264
|
key={pageSizeText}
|
|
@@ -319,8 +321,8 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
319
321
|
key={`${page}${i}`}
|
|
320
322
|
onClick={() => this.foundation.goPage(page, i)}
|
|
321
323
|
className={pageListClassName}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
+
aria-label={page === '...' ? 'More' : `Page ${page}`}
|
|
325
|
+
aria-current={currentPage === page ? "page" : false}
|
|
324
326
|
>
|
|
325
327
|
{page}
|
|
326
328
|
</li>
|
|
@@ -355,10 +357,12 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
355
357
|
const page = restList[index];
|
|
356
358
|
return (
|
|
357
359
|
<div
|
|
360
|
+
role="listitem"
|
|
358
361
|
key={`${page}${index}`}
|
|
359
362
|
className={className}
|
|
360
363
|
onClick={() => this.foundation.goPage(page, index)}
|
|
361
364
|
style={style}
|
|
365
|
+
aria-label={`${page}`}
|
|
362
366
|
>
|
|
363
367
|
{page}
|
|
364
368
|
</div>
|
|
@@ -417,7 +421,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
|
|
|
417
421
|
const { total, pageSize } = this.state;
|
|
418
422
|
const { showTotal, className, style, hideOnSinglePage, showSizeChanger } = this.props;
|
|
419
423
|
const paginationCls = classNames(className, `${prefixCls}`);
|
|
420
|
-
const showTotalCls = `${prefixCls
|
|
424
|
+
const showTotalCls = `${prefixCls}-total`;
|
|
421
425
|
const totalPageNum = Math.ceil(total / pageSize);
|
|
422
426
|
if (totalPageNum < 2 && hideOnSinglePage && !showSizeChanger) {
|
|
423
427
|
return null;
|
package/popover/index.tsx
CHANGED
|
@@ -118,6 +118,7 @@ class Popover extends React.PureComponent<PopoverProps, PopoverState> {
|
|
|
118
118
|
arrowBounding,
|
|
119
119
|
position,
|
|
120
120
|
style,
|
|
121
|
+
trigger,
|
|
121
122
|
...attr
|
|
122
123
|
} = this.props;
|
|
123
124
|
let { spacing } = this.props;
|
|
@@ -136,9 +137,12 @@ class Popover extends React.PureComponent<PopoverProps, PopoverState> {
|
|
|
136
137
|
spacing = showArrow ? numbers.SPACING_WITH_ARROW : numbers.SPACING;
|
|
137
138
|
}
|
|
138
139
|
|
|
140
|
+
const role = trigger === 'click' || trigger === 'custom' ? 'dialog' : 'tooltip';
|
|
141
|
+
|
|
139
142
|
return (
|
|
140
143
|
<Tooltip
|
|
141
144
|
{...(attr as any)}
|
|
145
|
+
trigger={trigger}
|
|
142
146
|
position={position}
|
|
143
147
|
style={style}
|
|
144
148
|
content={popContent}
|
|
@@ -146,6 +150,7 @@ class Popover extends React.PureComponent<PopoverProps, PopoverState> {
|
|
|
146
150
|
spacing={spacing}
|
|
147
151
|
showArrow={arrow}
|
|
148
152
|
arrowBounding={arrowBounding}
|
|
153
|
+
role={role}
|
|
149
154
|
>
|
|
150
155
|
{children}
|
|
151
156
|
</Tooltip>
|
|
@@ -8,9 +8,9 @@ export default {
|
|
|
8
8
|
export const _Progress = () => (
|
|
9
9
|
<div style={{ width: 200 }}>
|
|
10
10
|
{/* <Progress percent={10} style= {{ height: 10 }}/> */}
|
|
11
|
-
<Progress percent={25} />
|
|
12
|
-
<Progress percent={50} />
|
|
13
|
-
<Progress percent={80} />
|
|
11
|
+
<Progress percent={25} aria-label="disk usage"/>
|
|
12
|
+
<Progress percent={50} aria-label="disk usage"/>
|
|
13
|
+
<Progress percent={80} aria-label="disk usage"/>
|
|
14
14
|
</div>
|
|
15
15
|
);
|
|
16
16
|
|
|
@@ -20,10 +20,10 @@ _Progress.story = {
|
|
|
20
20
|
|
|
21
21
|
export const Vertical = () => (
|
|
22
22
|
<div style={{ height: 200 }}>
|
|
23
|
-
<Progress percent={10} direction="vertical" style={{ width: 10 }} />
|
|
24
|
-
<Progress percent={25} direction="vertical" />
|
|
25
|
-
<Progress percent={50} direction="vertical" />
|
|
26
|
-
<Progress percent={80} direction="vertical" />
|
|
23
|
+
<Progress percent={10} direction="vertical" style={{ width: 10 }} aria-label="disk usage"/>
|
|
24
|
+
<Progress percent={25} direction="vertical" aria-label="disk usage"/>
|
|
25
|
+
<Progress percent={50} direction="vertical" aria-label="disk usage"/>
|
|
26
|
+
<Progress percent={80} direction="vertical" aria-label="disk usage"/>
|
|
27
27
|
</div>
|
|
28
28
|
);
|
|
29
29
|
|
|
@@ -33,10 +33,10 @@ Vertical.story = {
|
|
|
33
33
|
|
|
34
34
|
export const CircleProgress = () => (
|
|
35
35
|
<React.Fragment>
|
|
36
|
-
<Progress percent={10} type="circle" />
|
|
37
|
-
<Progress percent={25} type="circle" />
|
|
38
|
-
<Progress percent={50} type="circle" />
|
|
39
|
-
<Progress percent={80} type="circle" />
|
|
36
|
+
<Progress percent={10} type="circle" aria-label="disk usage"/>
|
|
37
|
+
<Progress percent={25} type="circle" aria-label="disk usage"/>
|
|
38
|
+
<Progress percent={50} type="circle" aria-label="disk usage"/>
|
|
39
|
+
<Progress percent={80} type="circle" aria-label="disk usage"/>
|
|
40
40
|
</React.Fragment>
|
|
41
41
|
);
|
|
42
42
|
|
|
@@ -46,10 +46,10 @@ CircleProgress.story = {
|
|
|
46
46
|
|
|
47
47
|
export const CircleProgressSmall = () => (
|
|
48
48
|
<React.Fragment>
|
|
49
|
-
<Progress percent={10} type="circle" size="small" />
|
|
50
|
-
<Progress percent={25} type="circle" size="small" />
|
|
51
|
-
<Progress percent={50} type="circle" size="small" />
|
|
52
|
-
<Progress percent={80} type="circle" size="small" />
|
|
49
|
+
<Progress percent={10} type="circle" size="small" aria-label="disk usage"/>
|
|
50
|
+
<Progress percent={25} type="circle" size="small" aria-label="disk usage"/>
|
|
51
|
+
<Progress percent={50} type="circle" size="small" aria-label="disk usage"/>
|
|
52
|
+
<Progress percent={80} type="circle" size="small" aria-label="disk usage"/>
|
|
53
53
|
</React.Fragment>
|
|
54
54
|
);
|
|
55
55
|
|
|
@@ -60,9 +60,9 @@ CircleProgressSmall.story = {
|
|
|
60
60
|
export const ProgressShowInfo = () => (
|
|
61
61
|
<div style={{ width: 200 }}>
|
|
62
62
|
{/* <Progress percent={10} style= {{ height: 10 }}/> */}
|
|
63
|
-
<Progress percent={25} showInfo />
|
|
64
|
-
<Progress percent={50} showInfo />
|
|
65
|
-
<Progress percent={80} showInfo />
|
|
63
|
+
<Progress percent={25} showInfo aria-label="disk usage"/>
|
|
64
|
+
<Progress percent={50} showInfo aria-label="disk usage"/>
|
|
65
|
+
<Progress percent={80} showInfo aria-label="disk usage"/>
|
|
66
66
|
</div>
|
|
67
67
|
);
|
|
68
68
|
|
package/progress/index.tsx
CHANGED
|
@@ -9,9 +9,13 @@ import { Motion } from '../_base/base';
|
|
|
9
9
|
const prefixCls = cssClasses.PREFIX;
|
|
10
10
|
|
|
11
11
|
export interface ProgressProps {
|
|
12
|
+
'aria-label'?: string | undefined;
|
|
13
|
+
'aria-labelledby'?: string | undefined;
|
|
14
|
+
'aria-valuetext'?: string | undefined;
|
|
12
15
|
className?: string;
|
|
13
16
|
direction?: 'horizontal' | 'vertical';
|
|
14
17
|
format?: (percent: number) => React.ReactNode;
|
|
18
|
+
id?: string;
|
|
15
19
|
motion?: Motion;
|
|
16
20
|
orbitStroke?: string;
|
|
17
21
|
percent?: number;
|
|
@@ -31,9 +35,13 @@ export interface ProgressState {
|
|
|
31
35
|
|
|
32
36
|
class Progress extends Component<ProgressProps, ProgressState> {
|
|
33
37
|
static propTypes = {
|
|
38
|
+
'aria-label': PropTypes.string,
|
|
39
|
+
'aria-labelledby': PropTypes.string,
|
|
40
|
+
'aria-valuetext': PropTypes.string,
|
|
34
41
|
className: PropTypes.string,
|
|
35
42
|
direction: PropTypes.oneOf(strings.directions),
|
|
36
43
|
format: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
44
|
+
id: PropTypes.string,
|
|
37
45
|
motion: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object]),
|
|
38
46
|
orbitStroke: PropTypes.string,
|
|
39
47
|
percent: PropTypes.number,
|
|
@@ -51,7 +59,7 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
51
59
|
static defaultProps = {
|
|
52
60
|
className: '',
|
|
53
61
|
direction: strings.DEFAULT_DIRECTION,
|
|
54
|
-
format: (text: string): string => `${text
|
|
62
|
+
format: (text: string): string => `${text}%`,
|
|
55
63
|
motion: true,
|
|
56
64
|
orbitStroke: 'var(--semi-color-fill-0)',
|
|
57
65
|
percent: 0,
|
|
@@ -124,12 +132,15 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
124
132
|
}
|
|
125
133
|
|
|
126
134
|
renderCircleProgress(): ReactNode {
|
|
127
|
-
const { strokeLinecap, style, className, strokeWidth, format, size, stroke, showInfo, percent, orbitStroke } = this.props;
|
|
135
|
+
const { strokeLinecap, style, className, strokeWidth, format, size, stroke, showInfo, percent, orbitStroke, id } = this.props;
|
|
136
|
+
const ariaLabel = this.props['aria-label'];
|
|
137
|
+
const ariaLabelledBy = this.props['aria-labelledby'];
|
|
138
|
+
const ariaValueText = this.props['aria-valuetext'];
|
|
128
139
|
const { percentNumber } = this.state;
|
|
129
140
|
const classNames = {
|
|
130
|
-
wrapper: cls(`${prefixCls
|
|
131
|
-
svg: cls(`${prefixCls
|
|
132
|
-
circle: cls(`${prefixCls
|
|
141
|
+
wrapper: cls(`${prefixCls}-circle`, className),
|
|
142
|
+
svg: cls(`${prefixCls}-circle-ring`),
|
|
143
|
+
circle: cls(`${prefixCls}-circle-ring-inner`)
|
|
133
144
|
};
|
|
134
145
|
const perc = this.calcPercent(percent);
|
|
135
146
|
const percNumber = this.calcPercent(percentNumber);
|
|
@@ -152,8 +163,19 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
152
163
|
const text = format(percNumber);
|
|
153
164
|
|
|
154
165
|
return (
|
|
155
|
-
<div
|
|
156
|
-
|
|
166
|
+
<div
|
|
167
|
+
id={id}
|
|
168
|
+
className={classNames.wrapper}
|
|
169
|
+
style={style}
|
|
170
|
+
role='progressbar'
|
|
171
|
+
aria-valuemin={0}
|
|
172
|
+
aria-valuemax={100}
|
|
173
|
+
aria-valuenow={percNumber}
|
|
174
|
+
aria-labelledby={ariaLabelledBy}
|
|
175
|
+
aria-label={ariaLabel}
|
|
176
|
+
aria-valuetext={ariaValueText}
|
|
177
|
+
>
|
|
178
|
+
<svg key={size} className={classNames.svg} height={width} width={width} aria-hidden>
|
|
157
179
|
<circle
|
|
158
180
|
strokeDashoffset={0}
|
|
159
181
|
strokeWidth={strokeWidth}
|
|
@@ -164,6 +186,7 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
164
186
|
r={radius}
|
|
165
187
|
cx={cx}
|
|
166
188
|
cy={cy}
|
|
189
|
+
aria-hidden
|
|
167
190
|
/>
|
|
168
191
|
<circle
|
|
169
192
|
className={classNames.circle}
|
|
@@ -176,9 +199,10 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
176
199
|
r={radius}
|
|
177
200
|
cx={cx}
|
|
178
201
|
cy={cy}
|
|
202
|
+
aria-hidden
|
|
179
203
|
/>
|
|
180
204
|
</svg>
|
|
181
|
-
{showInfo && size !== 'small' ? (<span className={`${prefixCls
|
|
205
|
+
{showInfo && size !== 'small' ? (<span className={`${prefixCls}-circle-text`}>{text}</span>) : null}
|
|
182
206
|
</div>
|
|
183
207
|
);
|
|
184
208
|
}
|
|
@@ -196,17 +220,20 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
196
220
|
}
|
|
197
221
|
|
|
198
222
|
renderLineProgress(): ReactNode {
|
|
199
|
-
const { className, style, stroke, direction, format, showInfo, size, percent, orbitStroke } = this.props;
|
|
223
|
+
const { className, style, stroke, direction, format, showInfo, size, percent, orbitStroke, id } = this.props;
|
|
224
|
+
const ariaLabel = this.props['aria-label'];
|
|
225
|
+
const ariaLabelledBy = this.props['aria-labelledby'];
|
|
226
|
+
const ariaValueText = this.props['aria-valuetext'];
|
|
200
227
|
const { percentNumber } = this.state;
|
|
201
228
|
const progressWrapperCls = cls(prefixCls, className, {
|
|
202
|
-
[`${prefixCls
|
|
203
|
-
[`${prefixCls
|
|
204
|
-
[`${prefixCls
|
|
229
|
+
[`${prefixCls}-horizontal`]: direction === strings.DEFAULT_DIRECTION,
|
|
230
|
+
[`${prefixCls}-vertical`]: direction !== strings.DEFAULT_DIRECTION,
|
|
231
|
+
[`${prefixCls}-large`]: size === 'large',
|
|
205
232
|
});
|
|
206
233
|
const progressTrackCls = cls({
|
|
207
|
-
[`${prefixCls
|
|
234
|
+
[`${prefixCls}-track`]: true,
|
|
208
235
|
});
|
|
209
|
-
const innerCls = cls(`${prefixCls
|
|
236
|
+
const innerCls = cls(`${prefixCls}-track-inner`);
|
|
210
237
|
|
|
211
238
|
const perc = this.calcPercent(percent);
|
|
212
239
|
const percNumber = this.calcPercent(percentNumber);
|
|
@@ -215,19 +242,30 @@ class Progress extends Component<ProgressProps, ProgressState> {
|
|
|
215
242
|
backgroundColor: stroke
|
|
216
243
|
};
|
|
217
244
|
if (direction === strings.DEFAULT_DIRECTION) {
|
|
218
|
-
innerStyle.width = `${perc
|
|
245
|
+
innerStyle.width = `${perc}%`;
|
|
219
246
|
} else {
|
|
220
|
-
innerStyle.height = `${perc
|
|
247
|
+
innerStyle.height = `${perc}%`;
|
|
221
248
|
}
|
|
222
249
|
|
|
223
250
|
const text = format(percNumber);
|
|
224
251
|
|
|
225
252
|
return (
|
|
226
|
-
<div
|
|
227
|
-
|
|
228
|
-
|
|
253
|
+
<div
|
|
254
|
+
id={id}
|
|
255
|
+
className={progressWrapperCls}
|
|
256
|
+
style={style}
|
|
257
|
+
role='progressbar'
|
|
258
|
+
aria-valuemin={0}
|
|
259
|
+
aria-valuemax={100}
|
|
260
|
+
aria-valuenow={perc}
|
|
261
|
+
aria-labelledby={ariaLabelledBy}
|
|
262
|
+
aria-label={ariaLabel}
|
|
263
|
+
aria-valuetext={ariaValueText}
|
|
264
|
+
>
|
|
265
|
+
<div className={progressTrackCls} style={orbitStroke ? { backgroundColor: orbitStroke } : {}} aria-hidden>
|
|
266
|
+
<div className={innerCls} style={innerStyle} aria-hidden />
|
|
229
267
|
</div>
|
|
230
|
-
{showInfo ? <div className={`${prefixCls
|
|
268
|
+
{showInfo ? <div className={`${prefixCls}-line-text`}>{text}</div> : null}
|
|
231
269
|
</div>
|
|
232
270
|
);
|
|
233
271
|
}
|
package/radio/radio.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import { noop } from 'lodash';
|
|
|
7
7
|
import RadioFoundation, { RadioAdapter } from '@douyinfe/semi-foundation/radio/radioFoundation';
|
|
8
8
|
import { RadioChangeEvent } from '@douyinfe/semi-foundation/radio/radioInnerFoundation';
|
|
9
9
|
import { strings, radioClasses as css } from '@douyinfe/semi-foundation/radio/constants';
|
|
10
|
+
import { getUuidShort } from '@douyinfe/semi-foundation/utils/uuid';
|
|
10
11
|
import '@douyinfe/semi-foundation/radio/radio.scss';
|
|
11
12
|
|
|
12
13
|
import BaseComponent from '../_base/baseComponent';
|
|
@@ -38,6 +39,7 @@ export type RadioProps = {
|
|
|
38
39
|
addonStyle?: React.CSSProperties;
|
|
39
40
|
addonClassName?: string;
|
|
40
41
|
type?: RadioType;
|
|
42
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
41
43
|
};
|
|
42
44
|
|
|
43
45
|
export interface RadioState {
|
|
@@ -67,6 +69,7 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
|
|
|
67
69
|
addonStyle: PropTypes.object,
|
|
68
70
|
addonClassName: PropTypes.string,
|
|
69
71
|
type: PropTypes.oneOf([strings.TYPE_DEFAULT, strings.TYPE_BUTTON, strings.TYPE_CARD, strings.TYPE_PURECARD]), // Button style type
|
|
72
|
+
'aria-label': PropTypes.string,
|
|
70
73
|
};
|
|
71
74
|
|
|
72
75
|
static defaultProps: Partial<RadioProps> = {
|
|
@@ -82,6 +85,9 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
|
|
|
82
85
|
|
|
83
86
|
radioEntity: RadioInner;
|
|
84
87
|
context!: RadioContextValue;
|
|
88
|
+
foundation: RadioFoundation;
|
|
89
|
+
addonId: string;
|
|
90
|
+
extraId: string;
|
|
85
91
|
|
|
86
92
|
constructor(props: RadioProps) {
|
|
87
93
|
super(props);
|
|
@@ -90,6 +96,8 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
|
|
|
90
96
|
};
|
|
91
97
|
this.foundation = new RadioFoundation(this.adapter);
|
|
92
98
|
this.radioEntity = null;
|
|
99
|
+
this.addonId = getUuidShort({ prefix: 'addon' });
|
|
100
|
+
this.extraId = getUuidShort({ prefix: 'extra' });
|
|
93
101
|
}
|
|
94
102
|
|
|
95
103
|
get adapter(): RadioAdapter {
|
|
@@ -209,8 +217,8 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
|
|
|
209
217
|
}, addonClassName);
|
|
210
218
|
const renderContent = () => (
|
|
211
219
|
<>
|
|
212
|
-
{children ? <span className={addonCls} style={addonStyle}>{children}</span> : null}
|
|
213
|
-
{extra && !isButtonRadio ? <div className={`${prefix}-extra`}>{extra}</div> : null}
|
|
220
|
+
{children ? <span className={addonCls} style={addonStyle} id={this.addonId}>{children}</span> : null}
|
|
221
|
+
{extra && !isButtonRadio ? <div className={`${prefix}-extra`} id={this.extraId}>{extra}</div> : null}
|
|
214
222
|
</>
|
|
215
223
|
);
|
|
216
224
|
return (
|
|
@@ -231,6 +239,8 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
|
|
|
231
239
|
ref={(ref: RadioInner) => {
|
|
232
240
|
this.radioEntity = ref;
|
|
233
241
|
}}
|
|
242
|
+
addonId={children && this.addonId}
|
|
243
|
+
extraId={extra && this.extraId}
|
|
234
244
|
/>
|
|
235
245
|
{
|
|
236
246
|
isCardRadioGroup ?
|
package/radio/radioGroup.tsx
CHANGED
|
@@ -36,6 +36,13 @@ export type RadioGroupProps = {
|
|
|
36
36
|
type?: RadioType;
|
|
37
37
|
buttonSize?: RadioGroupButtonSize;
|
|
38
38
|
prefixCls?: string;
|
|
39
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
40
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
41
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
42
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
43
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
44
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
45
|
+
id?: string;
|
|
39
46
|
};
|
|
40
47
|
|
|
41
48
|
export interface RadioGroupState {
|
|
@@ -57,7 +64,14 @@ class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState> {
|
|
|
57
64
|
className: PropTypes.string,
|
|
58
65
|
style: PropTypes.object,
|
|
59
66
|
direction: PropTypes.oneOf(strings.DIRECTION_SET),
|
|
60
|
-
mode: PropTypes.oneOf(strings.MODE)
|
|
67
|
+
mode: PropTypes.oneOf(strings.MODE),
|
|
68
|
+
'aria-label': PropTypes.string,
|
|
69
|
+
'aria-describedby': PropTypes.string,
|
|
70
|
+
'aria-errormessage': PropTypes.string,
|
|
71
|
+
'aria-invalid': PropTypes.bool,
|
|
72
|
+
'aria-labelledby': PropTypes.string,
|
|
73
|
+
'aria-required': PropTypes.bool,
|
|
74
|
+
id: PropTypes.string,
|
|
61
75
|
};
|
|
62
76
|
|
|
63
77
|
static defaultProps: Partial<RadioGroupProps> = {
|
|
@@ -69,6 +83,7 @@ class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState> {
|
|
|
69
83
|
buttonSize: 'middle'
|
|
70
84
|
};
|
|
71
85
|
|
|
86
|
+
foundation: RadioGroupFoundation;
|
|
72
87
|
constructor(props: RadioGroupProps) {
|
|
73
88
|
super(props);
|
|
74
89
|
this.state = {
|
|
@@ -121,7 +136,8 @@ class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState> {
|
|
|
121
136
|
style,
|
|
122
137
|
direction,
|
|
123
138
|
type,
|
|
124
|
-
buttonSize
|
|
139
|
+
buttonSize,
|
|
140
|
+
id,
|
|
125
141
|
} = this.props;
|
|
126
142
|
|
|
127
143
|
const isButtonRadio = type === strings.TYPE_BUTTON;
|
|
@@ -177,7 +193,17 @@ class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState> {
|
|
|
177
193
|
}
|
|
178
194
|
|
|
179
195
|
return (
|
|
180
|
-
<div
|
|
196
|
+
<div
|
|
197
|
+
className={prefixClsDisplay}
|
|
198
|
+
style={style}
|
|
199
|
+
id={id}
|
|
200
|
+
aria-label={this.props['aria-label']}
|
|
201
|
+
aria-invalid={this.props['aria-invalid']}
|
|
202
|
+
aria-errormessage={this.props['aria-errormessage']}
|
|
203
|
+
aria-labelledby={this.props['aria-labelledby']}
|
|
204
|
+
aria-describedby={this.props['aria-describedby']}
|
|
205
|
+
aria-required={this.props['aria-required']}
|
|
206
|
+
>
|
|
181
207
|
<Context.Provider
|
|
182
208
|
value={{
|
|
183
209
|
radioGroup: {
|
package/radio/radioInner.tsx
CHANGED
|
@@ -20,6 +20,9 @@ export interface RadioInnerProps extends BaseProps {
|
|
|
20
20
|
prefixCls?: string;
|
|
21
21
|
ref?: React.MutableRefObject<RadioInner> | ((instance: RadioInner) => void);
|
|
22
22
|
isPureCardRadioGroup?: boolean;
|
|
23
|
+
addonId?: string;
|
|
24
|
+
extraId?: string;
|
|
25
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
interface RadioInnerState {
|
|
@@ -35,6 +38,7 @@ class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState> {
|
|
|
35
38
|
isButtonRadio: PropTypes.bool,
|
|
36
39
|
onChange: PropTypes.func,
|
|
37
40
|
mode: PropTypes.oneOf(['advanced', '']),
|
|
41
|
+
'aria-label': PropTypes.string,
|
|
38
42
|
};
|
|
39
43
|
|
|
40
44
|
static defaultProps = {
|
|
@@ -44,6 +48,7 @@ class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState> {
|
|
|
44
48
|
|
|
45
49
|
|
|
46
50
|
inputEntity!: HTMLInputElement;
|
|
51
|
+
foundation: RadioInnerFoundation;
|
|
47
52
|
constructor(props: RadioInnerProps) {
|
|
48
53
|
super(props);
|
|
49
54
|
this.state = {
|
|
@@ -92,7 +97,7 @@ class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState> {
|
|
|
92
97
|
}
|
|
93
98
|
|
|
94
99
|
render() {
|
|
95
|
-
const { disabled, mode, autoFocus, name, isButtonRadio, isPureCardRadioGroup } = this.props;
|
|
100
|
+
const { disabled, mode, autoFocus, name, isButtonRadio, isPureCardRadioGroup, addonId, extraId, 'aria-label': ariaLabel } = this.props;
|
|
96
101
|
const { checked } = this.state;
|
|
97
102
|
|
|
98
103
|
const prefix = this.props.prefixCls || css.PREFIX;
|
|
@@ -114,12 +119,16 @@ class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState> {
|
|
|
114
119
|
ref={ref => {
|
|
115
120
|
this.inputEntity = ref;
|
|
116
121
|
}}
|
|
122
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
117
123
|
autoFocus={autoFocus}
|
|
118
124
|
type={mode === 'advanced' ? 'checkbox' : 'radio'}
|
|
119
125
|
checked={Boolean(checked)}
|
|
120
126
|
disabled={disabled}
|
|
121
127
|
onChange={this.onChange}
|
|
122
128
|
name={name}
|
|
129
|
+
aria-label={ariaLabel}
|
|
130
|
+
aria-labelledby={addonId}
|
|
131
|
+
aria-describedby={extraId}
|
|
123
132
|
/>
|
|
124
133
|
<span className={inner}>{checked ? <IconRadio /> : null}</span>
|
|
125
134
|
</span>
|