@douyinfe/semi-ui 2.2.2 → 2.4.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/_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/datePicker.tsx +19 -0
- package/dist/css/semi.css +23 -12
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2502 -1249
- 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 +30 -9
- package/inputNumber/__test__/inputNumber.test.js +36 -8
- package/inputNumber/index.tsx +30 -2
- package/layout/Sider.tsx +6 -2
- package/layout/index.tsx +4 -3
- package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +6 -1
- package/lib/cjs/anchor/index.d.ts +2 -0
- package/lib/cjs/anchor/index.js +6 -1
- package/lib/cjs/anchor/link.d.ts +4 -1
- package/lib/cjs/anchor/link.js +39 -5
- package/lib/cjs/autoComplete/index.d.ts +17 -0
- package/lib/cjs/autoComplete/index.js +21 -2
- package/lib/cjs/avatar/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +15 -11
- package/lib/cjs/banner/index.js +4 -2
- package/lib/cjs/breadcrumb/index.d.ts +3 -0
- package/lib/cjs/breadcrumb/index.js +10 -4
- package/lib/cjs/breadcrumb/item.js +2 -2
- package/lib/cjs/button/Button.d.ts +2 -0
- package/lib/cjs/button/Button.js +4 -2
- package/lib/cjs/button/buttonGroup.d.ts +3 -0
- package/lib/cjs/button/buttonGroup.js +8 -4
- package/lib/cjs/button/index.d.ts +1 -0
- package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
- package/lib/cjs/button/splitButtonGroup.js +5 -2
- package/lib/cjs/card/index.d.ts +3 -0
- package/lib/cjs/card/index.js +3 -1
- package/lib/cjs/cascader/index.d.ts +14 -0
- package/lib/cjs/cascader/index.js +35 -7
- package/lib/cjs/checkbox/checkbox.d.ts +21 -1
- package/lib/cjs/checkbox/checkbox.js +51 -17
- package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/cjs/checkbox/checkboxGroup.js +16 -3
- package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
- package/lib/cjs/checkbox/checkboxInner.js +20 -3
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +12 -2
- package/lib/cjs/collapsible/index.d.ts +1 -0
- package/lib/cjs/collapsible/index.js +4 -2
- package/lib/cjs/datePicker/datePicker.d.ts +12 -0
- package/lib/cjs/datePicker/datePicker.js +14 -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 +16 -3
- package/lib/cjs/inputNumber/index.d.ts +8 -0
- package/lib/cjs/inputNumber/index.js +35 -4
- 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 +35 -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 +14 -0
- package/lib/cjs/timePicker/TimePicker.js +11 -4
- package/lib/cjs/timePicker/index.d.ts +7 -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.js +32 -14
- 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 +54 -5
- 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 +14 -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 +16 -3
- package/lib/es/inputNumber/index.d.ts +8 -0
- package/lib/es/inputNumber/index.js +36 -4
- 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 +35 -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 +14 -0
- package/lib/es/timePicker/TimePicker.js +11 -4
- package/lib/es/timePicker/index.d.ts +7 -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.js +32 -14
- 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 +53 -5
- 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 +57 -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 +30 -14
- package/table/TableCell.tsx +11 -1
- package/table/TableHeaderRow.tsx +16 -2
- package/table/__test__/table.test.js +46 -0
- package/table/_story/table.stories.js +2 -0
- package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
- package/table/_story/v2/FixedZIndex/index.jsx +87 -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 +17 -2
- package/timePicker/__test__/timePicker.test.js +34 -3
- package/timePicker/_story/timepicker.stories.js +18 -0
- 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 +29 -25
- package/tree/_story/tree.stories.js +3 -3
- package/tree/index.tsx +10 -2
- package/tree/treeNode.tsx +54 -11
- 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
|
@@ -5,6 +5,7 @@ import sinon from 'sinon';
|
|
|
5
5
|
import keyCode from '@douyinfe/semi-foundation/utils/keyCode';
|
|
6
6
|
import * as _ from 'lodash';
|
|
7
7
|
import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
|
|
8
|
+
import { numbers } from '@douyinfe/semi-foundation/inputNumber/constants';
|
|
8
9
|
import { Form, withField } from '../../index';
|
|
9
10
|
|
|
10
11
|
const log = (...args) => console.log(...args);
|
|
@@ -216,8 +217,8 @@ describe(`InputNumber`, () => {
|
|
|
216
217
|
const addCount = 3;
|
|
217
218
|
const minusCount = 1;
|
|
218
219
|
|
|
219
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
220
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
220
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
221
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
221
222
|
|
|
222
223
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
223
224
|
expect(onUpClick.called).toBe(true);
|
|
@@ -243,8 +244,8 @@ describe(`InputNumber`, () => {
|
|
|
243
244
|
const addCount = 3;
|
|
244
245
|
const minusCount = 1;
|
|
245
246
|
|
|
246
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
247
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
247
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
248
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
248
249
|
|
|
249
250
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
250
251
|
expect(onUpClick.called).toBe(true);
|
|
@@ -283,9 +284,9 @@ describe(`InputNumber`, () => {
|
|
|
283
284
|
// click button focus
|
|
284
285
|
const addCount = 3;
|
|
285
286
|
const minusCount = 1;
|
|
286
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
287
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
287
288
|
_.times(addCount, () => addBtn.simulate('mouseup'));
|
|
288
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
289
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
289
290
|
_.times(minusCount, () => minusBtn.simulate('mouseup'));
|
|
290
291
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
291
292
|
expect(inputNumber.find(BaseInputNumber).state('focusing')).toBeTruthy();
|
|
@@ -338,7 +339,7 @@ describe(`InputNumber`, () => {
|
|
|
338
339
|
const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
|
|
339
340
|
const inputElem = inputNumber.find('input');
|
|
340
341
|
const addBtn = btns.first();
|
|
341
|
-
addBtn.simulate('mousedown');
|
|
342
|
+
addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT });
|
|
342
343
|
expect(inputElem.instance().value).toBe("1");
|
|
343
344
|
})
|
|
344
345
|
|
|
@@ -366,5 +367,32 @@ describe(`InputNumber`, () => {
|
|
|
366
367
|
inputElem.simulate('change', newEvent);
|
|
367
368
|
expect(onNumberChange.calledOnce).toBe(true);
|
|
368
369
|
expect(inputElem.instance().value).toBe('123');
|
|
369
|
-
})
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* test buttons right click
|
|
374
|
+
*/
|
|
375
|
+
it(`right click add/minus button`, async () => {
|
|
376
|
+
const defaultValue = 1000;
|
|
377
|
+
const onUpClick = sinon.spy();
|
|
378
|
+
const onDownClick = sinon.spy();
|
|
379
|
+
const MOUSE_BUTTON_RIGHT = 2;
|
|
380
|
+
|
|
381
|
+
const inputNumber = mount(
|
|
382
|
+
<InputNumber defaultValue={defaultValue} onUpClick={onUpClick} onDownClick={onDownClick} />
|
|
383
|
+
);
|
|
384
|
+
const inputElem = inputNumber.find('input');
|
|
385
|
+
|
|
386
|
+
const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
|
|
387
|
+
|
|
388
|
+
const addBtn = btns.first();
|
|
389
|
+
const minusBtn = btns.last();
|
|
390
|
+
|
|
391
|
+
_.times(1, () => addBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
|
|
392
|
+
_.times(3, () => minusBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
|
|
393
|
+
|
|
394
|
+
expect(inputElem.instance().value).toBe(String(defaultValue));
|
|
395
|
+
expect(onUpClick.called).toBe(false);
|
|
396
|
+
expect(onDownClick.called).toBe(false);
|
|
397
|
+
});
|
|
370
398
|
});
|
package/inputNumber/index.tsx
CHANGED
|
@@ -29,6 +29,7 @@ export interface InputNumberProps extends InputProps {
|
|
|
29
29
|
hideButtons?: boolean;
|
|
30
30
|
innerButtons?: boolean;
|
|
31
31
|
insetLabel?: React.ReactNode;
|
|
32
|
+
insetLabelId?: string;
|
|
32
33
|
keepFocus?: boolean;
|
|
33
34
|
max?: number;
|
|
34
35
|
min?: number;
|
|
@@ -62,6 +63,12 @@ export interface InputNumberState {
|
|
|
62
63
|
|
|
63
64
|
class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
64
65
|
static propTypes = {
|
|
66
|
+
'aria-label': PropTypes.string,
|
|
67
|
+
'aria-labelledby': PropTypes.string,
|
|
68
|
+
'aria-invalid': PropTypes.bool,
|
|
69
|
+
'aria-errormessage': PropTypes.string,
|
|
70
|
+
'aria-describedby': PropTypes.string,
|
|
71
|
+
'aria-required': PropTypes.bool,
|
|
65
72
|
autofocus: PropTypes.bool,
|
|
66
73
|
className: PropTypes.string,
|
|
67
74
|
defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -71,6 +78,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
71
78
|
hideButtons: PropTypes.bool,
|
|
72
79
|
innerButtons: PropTypes.bool,
|
|
73
80
|
insetLabel: PropTypes.node,
|
|
81
|
+
insetLabelId: PropTypes.string,
|
|
74
82
|
keepFocus: PropTypes.bool,
|
|
75
83
|
max: PropTypes.number,
|
|
76
84
|
min: PropTypes.number,
|
|
@@ -381,6 +389,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
381
389
|
return (
|
|
382
390
|
<div className={suffixChildrenCls}>
|
|
383
391
|
<span
|
|
392
|
+
role="button"
|
|
393
|
+
tabIndex={-1}
|
|
384
394
|
className={upClassName}
|
|
385
395
|
onMouseDown={notAllowedUp ? noop : this.handleUpClick}
|
|
386
396
|
onMouseUp={this.handleMouseUp}
|
|
@@ -389,6 +399,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
389
399
|
<IconChevronUp size="extra-small" />
|
|
390
400
|
</span>
|
|
391
401
|
<span
|
|
402
|
+
role="button"
|
|
403
|
+
tabIndex={-1}
|
|
392
404
|
className={downClassName}
|
|
393
405
|
onMouseDown={notAllowedDown ? noop : this.handleDownClick}
|
|
394
406
|
onMouseUp={this.handleMouseUp}
|
|
@@ -435,15 +447,29 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
435
447
|
style,
|
|
436
448
|
onNumberChange,
|
|
437
449
|
keepFocus,
|
|
450
|
+
defaultValue,
|
|
438
451
|
...rest
|
|
439
452
|
} = this.props;
|
|
440
|
-
const { value } = this.state;
|
|
453
|
+
const { value, number } = this.state;
|
|
441
454
|
|
|
442
455
|
const inputNumberCls = classnames(className, `${prefixCls}-number`, {
|
|
443
456
|
[`${prefixCls}-number-size-${size}`]: size,
|
|
444
457
|
});
|
|
445
458
|
|
|
446
459
|
const buttons = this.renderButtons();
|
|
460
|
+
const ariaProps = {
|
|
461
|
+
'aria-disabled': disabled,
|
|
462
|
+
step,
|
|
463
|
+
};
|
|
464
|
+
if (number) {
|
|
465
|
+
ariaProps['aria-valuenow'] = number;
|
|
466
|
+
}
|
|
467
|
+
if (max !== Infinity) {
|
|
468
|
+
ariaProps['aria-valuemax'] = max;
|
|
469
|
+
}
|
|
470
|
+
if (min !== -Infinity) {
|
|
471
|
+
ariaProps['aria-valuemin'] = min;
|
|
472
|
+
}
|
|
447
473
|
|
|
448
474
|
const input = (
|
|
449
475
|
<div
|
|
@@ -454,6 +480,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
454
480
|
onMouseLeave={e => this.handleInputMouseLeave(e)}
|
|
455
481
|
>
|
|
456
482
|
<Input
|
|
483
|
+
role="spinbutton"
|
|
484
|
+
{...ariaProps}
|
|
457
485
|
{...rest}
|
|
458
486
|
size={size}
|
|
459
487
|
disabled={disabled}
|
|
@@ -481,4 +509,4 @@ export default forwardStatics(
|
|
|
481
509
|
InputNumber
|
|
482
510
|
);
|
|
483
511
|
|
|
484
|
-
export { InputNumber };
|
|
512
|
+
export { InputNumber };
|
package/layout/Sider.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { CSSProperties } from 'react';
|
|
1
|
+
import React, { AriaRole, CSSProperties } from 'react';
|
|
2
2
|
import cls from 'classnames';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { cssClasses, strings } from '@douyinfe/semi-foundation/layout/constants';
|
|
@@ -40,6 +40,8 @@ export interface SiderProps {
|
|
|
40
40
|
className?: string;
|
|
41
41
|
breakpoint?: Array<keyof ResponsiveMap>;
|
|
42
42
|
onBreakpoint?: (screen: keyof ResponsiveMap, match: boolean) => void;
|
|
43
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
44
|
+
'role'?:React.AriaRole
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
class Sider extends React.PureComponent<SiderProps> {
|
|
@@ -49,6 +51,8 @@ class Sider extends React.PureComponent<SiderProps> {
|
|
|
49
51
|
className: PropTypes.string,
|
|
50
52
|
breakpoint: PropTypes.arrayOf(PropTypes.oneOf(bpt)),
|
|
51
53
|
onBreakpoint: PropTypes.func,
|
|
54
|
+
'aria-label': PropTypes.string,
|
|
55
|
+
role: PropTypes.string,
|
|
52
56
|
};
|
|
53
57
|
|
|
54
58
|
static defaultProps = {
|
|
@@ -104,7 +108,7 @@ class Sider extends React.PureComponent<SiderProps> {
|
|
|
104
108
|
[`${prefixCls}-sider`]: true,
|
|
105
109
|
});
|
|
106
110
|
return (
|
|
107
|
-
<aside className={classString} style={style} {...getDataAttr(others)}>
|
|
111
|
+
<aside className={classString} aria-label={this.props['aria-label']} style={style} {...getDataAttr(others)}>
|
|
108
112
|
<div className={`${prefixCls}-sider-children`}>
|
|
109
113
|
{children}
|
|
110
114
|
</div>
|
package/layout/index.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { AriaRole, ComponentClass, CSSProperties } from 'react';
|
|
2
2
|
import cls from 'classnames';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { cssClasses } from '@douyinfe/semi-foundation/layout/constants';
|
|
@@ -15,12 +15,13 @@ const htmlTag = {
|
|
|
15
15
|
Layout: 'section'
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
function generator<P extends { type?: string; tagName?: string }>(type: string): (ComponentType: ComponentClass<{ type?: string; tagName?: string } & P>) => ComponentClass<P> {
|
|
18
|
+
function generator<P extends { type?: string; tagName?: string; role?: AriaRole; 'aria-label'?: string }>(type: string): (ComponentType: ComponentClass<{ type?: string; tagName?: string } & P>) => ComponentClass<P> {
|
|
19
19
|
const tagName = htmlTag[type];
|
|
20
20
|
const typeName = type.toLowerCase();
|
|
21
21
|
return (BasicComponent): ComponentClass<P> => class Adapter extends React.PureComponent<P> {
|
|
22
22
|
render() {
|
|
23
|
-
return <BasicComponent
|
|
23
|
+
return <BasicComponent role={this.props.role} aria-label={this.props['aria-label']} type={typeName}
|
|
24
|
+
tagName={tagName} {...this.props} />;
|
|
24
25
|
}
|
|
25
26
|
};
|
|
26
27
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
exports.usePrevFocus = usePrevFocus;
|
|
12
|
+
|
|
13
|
+
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
14
|
+
|
|
15
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
16
|
+
|
|
17
|
+
var _react = require("react");
|
|
18
|
+
|
|
19
|
+
var _index = require("../index");
|
|
20
|
+
|
|
21
|
+
function usePrevFocus() {
|
|
22
|
+
const [prevFocusElement, setPrevFocus] = (0, _react.useState)((0, _index.getActiveElement)());
|
|
23
|
+
(0, _react.useEffect)(() => {
|
|
24
|
+
return function cleanup() {
|
|
25
|
+
const blur = (0, _get2.default)(prevFocusElement, 'blur');
|
|
26
|
+
(0, _isFunction2.default)(blur) && blur();
|
|
27
|
+
};
|
|
28
|
+
}, [prevFocusElement]);
|
|
29
|
+
return [prevFocusElement, setPrevFocus];
|
|
30
|
+
}
|
package/lib/cjs/_utils/index.js
CHANGED
|
@@ -9,6 +9,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
exports.cloneDeep = cloneDeep;
|
|
12
|
+
exports.getActiveElement = getActiveElement;
|
|
12
13
|
exports.registerMediaQuery = exports.isSemiIcon = exports.getHighLightTextHTML = void 0;
|
|
13
14
|
exports.stopPropagation = stopPropagation;
|
|
14
15
|
|
|
@@ -197,4 +198,8 @@ exports.registerMediaQuery = registerMediaQuery;
|
|
|
197
198
|
|
|
198
199
|
const isSemiIcon = icon => /*#__PURE__*/_react.default.isValidElement(icon) && (0, _get2.default)(icon.type, 'elementType') === 'Icon';
|
|
199
200
|
|
|
200
|
-
exports.isSemiIcon = isSemiIcon;
|
|
201
|
+
exports.isSemiIcon = isSemiIcon;
|
|
202
|
+
|
|
203
|
+
function getActiveElement() {
|
|
204
|
+
return document ? document.activeElement : null;
|
|
205
|
+
}
|
|
@@ -24,6 +24,7 @@ export interface AnchorProps {
|
|
|
24
24
|
targetOffset?: number;
|
|
25
25
|
onChange?: (currentLink: string, previousLink: string) => void;
|
|
26
26
|
onClick?: (e: React.MouseEvent<HTMLElement>, currentLink: string) => void;
|
|
27
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
27
28
|
}
|
|
28
29
|
export interface AnchorState {
|
|
29
30
|
activeLink: string;
|
|
@@ -51,6 +52,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
|
|
|
51
52
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
52
53
|
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
53
54
|
defaultAnchor: PropTypes.Requireable<string>;
|
|
55
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
54
56
|
};
|
|
55
57
|
static defaultProps: {
|
|
56
58
|
size: string;
|
package/lib/cjs/anchor/index.js
CHANGED
|
@@ -247,6 +247,7 @@ class Anchor extends _baseComponent.default {
|
|
|
247
247
|
position,
|
|
248
248
|
autoCollapse
|
|
249
249
|
} = this.props;
|
|
250
|
+
const ariaLabel = this.props['aria-label'];
|
|
250
251
|
const {
|
|
251
252
|
activeLink,
|
|
252
253
|
scrollHeight,
|
|
@@ -279,10 +280,13 @@ class Anchor extends _baseComponent.default {
|
|
|
279
280
|
removeLink: this.removeLink
|
|
280
281
|
}
|
|
281
282
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
283
|
+
role: "navigation",
|
|
284
|
+
"aria-label": ariaLabel || 'Side navigation',
|
|
282
285
|
className: wrapperCls,
|
|
283
286
|
style: wrapperStyle,
|
|
284
287
|
id: this.anchorID
|
|
285
288
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
289
|
+
"aria-hidden": true,
|
|
286
290
|
className: slideCls,
|
|
287
291
|
style: {
|
|
288
292
|
height: scrollHeight
|
|
@@ -316,7 +320,8 @@ Anchor.PropTypes = {
|
|
|
316
320
|
getContainer: _propTypes.default.func,
|
|
317
321
|
onChange: _propTypes.default.func,
|
|
318
322
|
onClick: _propTypes.default.func,
|
|
319
|
-
defaultAnchor: _propTypes.default.string
|
|
323
|
+
defaultAnchor: _propTypes.default.string,
|
|
324
|
+
'aria-label': _propTypes.default.string
|
|
320
325
|
};
|
|
321
326
|
Anchor.defaultProps = {
|
|
322
327
|
size: 'default',
|
package/lib/cjs/anchor/link.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import BaseComponent from '../_base/baseComponent';
|
|
4
4
|
import LinkFoundation, { LinkAdapter } from '@douyinfe/semi-foundation/lib/cjs/anchor/linkFoundation';
|
|
5
|
+
import { AnchorContextType } from './anchor-context';
|
|
5
6
|
export interface LinkProps {
|
|
6
7
|
href?: string;
|
|
7
8
|
title?: string | React.ReactNode;
|
|
@@ -21,13 +22,15 @@ export default class Link extends BaseComponent<LinkProps, {}> {
|
|
|
21
22
|
title: string;
|
|
22
23
|
className: string;
|
|
23
24
|
};
|
|
24
|
-
static contextType: React.Context<
|
|
25
|
+
static contextType: React.Context<AnchorContextType>;
|
|
25
26
|
foundation: LinkFoundation;
|
|
27
|
+
context: AnchorContextType;
|
|
26
28
|
constructor(props: LinkProps);
|
|
27
29
|
get adapter(): LinkAdapter;
|
|
28
30
|
handleAddLink(): void;
|
|
29
31
|
handleRemoveLink(): void;
|
|
30
32
|
handleUpdateLink(href: string, prevHref: string): void;
|
|
33
|
+
handleClick(e: React.KeyboardEvent | React.MouseEvent): void;
|
|
31
34
|
componentDidMount(): void;
|
|
32
35
|
componentDidUpdate(prevProps: LinkProps): void;
|
|
33
36
|
componentWillUnmount(): void;
|
package/lib/cjs/anchor/link.js
CHANGED
|
@@ -12,6 +12,8 @@ exports.default = void 0;
|
|
|
12
12
|
|
|
13
13
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
14
14
|
|
|
15
|
+
var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
|
|
16
|
+
|
|
15
17
|
var _react = _interopRequireDefault(require("react"));
|
|
16
18
|
|
|
17
19
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -32,6 +34,8 @@ const prefixCls = _constants.cssClasses.PREFIX; // eslint-disable-next-line @typ
|
|
|
32
34
|
|
|
33
35
|
class Link extends _baseComponent.default {
|
|
34
36
|
constructor(props) {
|
|
37
|
+
var _context;
|
|
38
|
+
|
|
35
39
|
super(props);
|
|
36
40
|
|
|
37
41
|
this.renderTitle = () => {
|
|
@@ -90,6 +94,7 @@ class Link extends _baseComponent.default {
|
|
|
90
94
|
};
|
|
91
95
|
|
|
92
96
|
this.foundation = new _linkFoundation.default(this.adapter);
|
|
97
|
+
this.handleClick = (0, _bind.default)(_context = this.handleClick).call(_context, this);
|
|
93
98
|
}
|
|
94
99
|
|
|
95
100
|
get adapter() {
|
|
@@ -115,6 +120,17 @@ class Link extends _baseComponent.default {
|
|
|
115
120
|
this.foundation.handleUpdateLink(href, prevHref);
|
|
116
121
|
}
|
|
117
122
|
|
|
123
|
+
handleClick(e) {
|
|
124
|
+
const {
|
|
125
|
+
disabled,
|
|
126
|
+
href
|
|
127
|
+
} = this.props;
|
|
128
|
+
const {
|
|
129
|
+
onClick
|
|
130
|
+
} = this.context;
|
|
131
|
+
!disabled && onClick(e, href);
|
|
132
|
+
}
|
|
133
|
+
|
|
118
134
|
componentDidMount() {
|
|
119
135
|
this.handleAddLink();
|
|
120
136
|
}
|
|
@@ -136,11 +152,12 @@ class Link extends _baseComponent.default {
|
|
|
136
152
|
href,
|
|
137
153
|
className,
|
|
138
154
|
style,
|
|
139
|
-
disabled = false
|
|
155
|
+
disabled = false,
|
|
156
|
+
title
|
|
140
157
|
} = this.props;
|
|
141
158
|
const {
|
|
142
159
|
activeLink,
|
|
143
|
-
|
|
160
|
+
showTooltip
|
|
144
161
|
} = this.context;
|
|
145
162
|
const active = activeLink === href;
|
|
146
163
|
const linkCls = (0, _classnames.default)("".concat(prefixCls, "-link"), className);
|
|
@@ -148,13 +165,30 @@ class Link extends _baseComponent.default {
|
|
|
148
165
|
["".concat(prefixCls, "-link-title-active")]: active,
|
|
149
166
|
["".concat(prefixCls, "-link-title-disabled")]: disabled
|
|
150
167
|
});
|
|
168
|
+
const ariaProps = {
|
|
169
|
+
'aria-disabled': disabled,
|
|
170
|
+
'aria-label': href
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
if (active) {
|
|
174
|
+
ariaProps['aria-details'] = 'active';
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (!showTooltip && typeof title === 'string') {
|
|
178
|
+
ariaProps['title'] = title;
|
|
179
|
+
}
|
|
180
|
+
|
|
151
181
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
152
182
|
className: linkCls,
|
|
153
183
|
style: style
|
|
154
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
184
|
+
}, /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
185
|
+
role: "link",
|
|
186
|
+
tabIndex: 0
|
|
187
|
+
}, ariaProps, {
|
|
155
188
|
className: linkTitleCls,
|
|
156
|
-
onClick: e =>
|
|
157
|
-
|
|
189
|
+
onClick: e => this.handleClick(e),
|
|
190
|
+
onKeyPress: e => this.handleClick(e)
|
|
191
|
+
}), this.renderTitle()), this.renderChildren());
|
|
158
192
|
}
|
|
159
193
|
|
|
160
194
|
}
|
|
@@ -18,6 +18,12 @@ export interface BaseDataItem extends DataItem {
|
|
|
18
18
|
}
|
|
19
19
|
export declare type AutoCompleteItems = BaseDataItem | string | number;
|
|
20
20
|
export interface AutoCompleteProps<T extends AutoCompleteItems> {
|
|
21
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
22
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
23
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
24
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
25
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
26
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
21
27
|
autoAdjustOverflow?: boolean;
|
|
22
28
|
autoFocus?: boolean;
|
|
23
29
|
className?: string;
|
|
@@ -33,6 +39,8 @@ export interface AutoCompleteProps<T extends AutoCompleteItems> {
|
|
|
33
39
|
emptyContent?: React.ReactNode | null;
|
|
34
40
|
getPopupContainer?: () => HTMLElement;
|
|
35
41
|
insetLabel?: React.ReactNode;
|
|
42
|
+
insetLabelId?: string;
|
|
43
|
+
id?: string;
|
|
36
44
|
loading?: boolean;
|
|
37
45
|
motion?: Motion;
|
|
38
46
|
maxHeight?: string | number;
|
|
@@ -77,6 +85,12 @@ interface AutoCompleteState {
|
|
|
77
85
|
}
|
|
78
86
|
declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<AutoCompleteProps<T>, AutoCompleteState> {
|
|
79
87
|
static propTypes: {
|
|
88
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
89
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
90
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
91
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
92
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
93
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
80
94
|
autoFocus: PropTypes.Requireable<boolean>;
|
|
81
95
|
autoAdjustOverflow: PropTypes.Requireable<boolean>;
|
|
82
96
|
className: PropTypes.Requireable<string>;
|
|
@@ -90,6 +104,9 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
|
|
|
90
104
|
dropdownClassName: PropTypes.Requireable<string>;
|
|
91
105
|
dropdownStyle: PropTypes.Requireable<object>;
|
|
92
106
|
emptyContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
107
|
+
id: PropTypes.Requireable<string>;
|
|
108
|
+
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
109
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
93
110
|
onSearch: PropTypes.Requireable<(...args: any[]) => any>;
|
|
94
111
|
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
95
112
|
onClear: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -208,6 +208,7 @@ class AutoComplete extends _baseComponent.default {
|
|
|
208
208
|
size,
|
|
209
209
|
prefix,
|
|
210
210
|
insetLabel,
|
|
211
|
+
insetLabelId,
|
|
211
212
|
suffix,
|
|
212
213
|
placeholder,
|
|
213
214
|
style,
|
|
@@ -217,7 +218,8 @@ class AutoComplete extends _baseComponent.default {
|
|
|
217
218
|
triggerRender,
|
|
218
219
|
validateStatus,
|
|
219
220
|
autoFocus,
|
|
220
|
-
value
|
|
221
|
+
value,
|
|
222
|
+
id
|
|
221
223
|
} = this.props;
|
|
222
224
|
const {
|
|
223
225
|
inputValue,
|
|
@@ -232,7 +234,8 @@ class AutoComplete extends _baseComponent.default {
|
|
|
232
234
|
["".concat(prefixCls, "-disabled")]: disabled
|
|
233
235
|
}, className),
|
|
234
236
|
onClick: this.handleInputClick,
|
|
235
|
-
ref: this.triggerRef
|
|
237
|
+
ref: this.triggerRef,
|
|
238
|
+
id
|
|
236
239
|
}, keyboardEventSet);
|
|
237
240
|
const innerProps = {
|
|
238
241
|
disabled,
|
|
@@ -240,9 +243,16 @@ class AutoComplete extends _baseComponent.default {
|
|
|
240
243
|
autofocus: autoFocus,
|
|
241
244
|
onChange: this.onSearch,
|
|
242
245
|
onClear: this.onInputClear,
|
|
246
|
+
'aria-label': this.props['aria-label'],
|
|
247
|
+
'aria-labelledby': this.props['aria-labelledby'],
|
|
248
|
+
'aria-invalid': this.props['aria-invalid'],
|
|
249
|
+
'aria-errormessage': this.props['aria-errormessage'],
|
|
250
|
+
'aria-describedby': this.props['aria-describedby'],
|
|
251
|
+
'aria-required': this.props['aria-required'],
|
|
243
252
|
// TODO: remove in next major version
|
|
244
253
|
suffix,
|
|
245
254
|
prefix: prefix || insetLabel,
|
|
255
|
+
insetLabelId,
|
|
246
256
|
showClear,
|
|
247
257
|
validateStatus,
|
|
248
258
|
size,
|
|
@@ -356,6 +366,12 @@ class AutoComplete extends _baseComponent.default {
|
|
|
356
366
|
}
|
|
357
367
|
|
|
358
368
|
AutoComplete.propTypes = {
|
|
369
|
+
'aria-label': _propTypes.default.string,
|
|
370
|
+
'aria-labelledby': _propTypes.default.string,
|
|
371
|
+
'aria-invalid': _propTypes.default.bool,
|
|
372
|
+
'aria-errormessage': _propTypes.default.string,
|
|
373
|
+
'aria-describedby': _propTypes.default.string,
|
|
374
|
+
'aria-required': _propTypes.default.bool,
|
|
359
375
|
autoFocus: _propTypes.default.bool,
|
|
360
376
|
autoAdjustOverflow: _propTypes.default.bool,
|
|
361
377
|
className: _propTypes.default.string,
|
|
@@ -369,6 +385,9 @@ AutoComplete.propTypes = {
|
|
|
369
385
|
dropdownClassName: _propTypes.default.string,
|
|
370
386
|
dropdownStyle: _propTypes.default.object,
|
|
371
387
|
emptyContent: _propTypes.default.node,
|
|
388
|
+
id: _propTypes.default.string,
|
|
389
|
+
insetLabel: _propTypes.default.node,
|
|
390
|
+
insetLabelId: _propTypes.default.string,
|
|
372
391
|
onSearch: _propTypes.default.func,
|
|
373
392
|
onSelect: _propTypes.default.func,
|
|
374
393
|
onClear: _propTypes.default.func,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { AvatarAdapter } from '@douyinfe/semi-foundation/lib/cjs/avatar/foundation';
|
|
3
|
+
import AvatarFoundation, { AvatarAdapter } from '@douyinfe/semi-foundation/lib/cjs/avatar/foundation';
|
|
4
4
|
import '@douyinfe/semi-foundation/lib/cjs/avatar/avatar.css';
|
|
5
5
|
import { noop } from '@douyinfe/semi-foundation/lib/cjs/utils/function';
|
|
6
6
|
import BaseComponent from '../_base/baseComponent';
|
|
@@ -36,13 +36,14 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
|
36
36
|
onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
|
|
37
37
|
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
38
38
|
};
|
|
39
|
+
foundation: AvatarFoundation;
|
|
39
40
|
constructor(props: AvatarProps);
|
|
40
41
|
get adapter(): AvatarAdapter<AvatarProps, AvatarState>;
|
|
41
42
|
componentDidMount(): void;
|
|
42
43
|
componentDidUpdate(prevProps: AvatarProps): void;
|
|
43
44
|
componentWillUnmount(): void;
|
|
44
|
-
onEnter(): void;
|
|
45
|
-
onLeave(): void;
|
|
45
|
+
onEnter(e: React.MouseEvent): void;
|
|
46
|
+
onLeave(e: React.MouseEvent): void;
|
|
46
47
|
handleError(): void;
|
|
47
48
|
render(): JSX.Element;
|
|
48
49
|
}
|
package/lib/cjs/avatar/index.js
CHANGED
|
@@ -156,12 +156,12 @@ class Avatar extends _baseComponent.default {
|
|
|
156
156
|
this.foundation.destroy();
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
onEnter() {
|
|
160
|
-
this.foundation.handleEnter();
|
|
159
|
+
onEnter(e) {
|
|
160
|
+
this.foundation.handleEnter(e);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
onLeave() {
|
|
164
|
-
this.foundation.handleLeave();
|
|
163
|
+
onLeave(e) {
|
|
164
|
+
this.foundation.handleLeave(e);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
handleError() {
|
|
@@ -220,13 +220,17 @@ class Avatar extends _baseComponent.default {
|
|
|
220
220
|
}, children));
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
return
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
223
|
+
return (
|
|
224
|
+
/*#__PURE__*/
|
|
225
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
|
|
226
|
+
_react.default.createElement("span", (0, _assign.default)({}, others, {
|
|
227
|
+
style: style,
|
|
228
|
+
className: avatarCls,
|
|
229
|
+
onClick: onClick,
|
|
230
|
+
onMouseEnter: this.onEnter,
|
|
231
|
+
onMouseLeave: this.onLeave
|
|
232
|
+
}), content, hoverRender)
|
|
233
|
+
);
|
|
230
234
|
}
|
|
231
235
|
|
|
232
236
|
}
|
package/lib/cjs/banner/index.js
CHANGED
|
@@ -95,7 +95,8 @@ class Banner extends _baseComponent.default {
|
|
|
95
95
|
icon: closeIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
|
|
96
96
|
theme: "borderless",
|
|
97
97
|
size: "small",
|
|
98
|
-
type: "tertiary"
|
|
98
|
+
type: "tertiary",
|
|
99
|
+
"aria-label": 'Close'
|
|
99
100
|
});
|
|
100
101
|
|
|
101
102
|
return closer;
|
|
@@ -163,7 +164,8 @@ class Banner extends _baseComponent.default {
|
|
|
163
164
|
});
|
|
164
165
|
const banner = visible ? /*#__PURE__*/_react.default.createElement("div", {
|
|
165
166
|
className: wrapper,
|
|
166
|
-
style: style
|
|
167
|
+
style: style,
|
|
168
|
+
role: "alert"
|
|
167
169
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
168
170
|
className: "".concat(prefixCls, "-content-wrapper")
|
|
169
171
|
}, /*#__PURE__*/_react.default.createElement("div", {
|