@douyinfe/semi-ui 2.2.2 → 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/datePicker.tsx +19 -0
- package/dist/css/semi.css +8 -3
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2470 -1242
- 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/index.tsx +28 -1
- 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 +14 -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 +8 -0
- package/lib/cjs/inputNumber/index.js +32 -2
- 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 +0 -1
- package/lib/cjs/tagInput/index.d.ts +4 -1
- package/lib/cjs/tagInput/index.js +29 -3
- package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
- package/lib/cjs/timePicker/TimePicker.js +9 -1
- package/lib/cjs/timePicker/index.d.ts +6 -0
- package/lib/cjs/timeline/index.d.ts +1 -1
- package/lib/cjs/timeline/index.js +1 -0
- package/lib/cjs/timeline/item.js +4 -2
- package/lib/cjs/toast/toast.js +2 -0
- package/lib/cjs/tooltip/TriangleArrow.js +1 -0
- package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/cjs/tooltip/index.d.ts +16 -12
- package/lib/cjs/tooltip/index.js +55 -39
- package/lib/cjs/transfer/index.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 +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 +14 -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 +8 -0
- package/lib/es/inputNumber/index.js +33 -2
- 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 +0 -1
- package/lib/es/tagInput/index.d.ts +4 -1
- package/lib/es/tagInput/index.js +29 -3
- package/lib/es/timePicker/TimePicker.d.ts +12 -0
- package/lib/es/timePicker/TimePicker.js +9 -1
- package/lib/es/timePicker/index.d.ts +6 -0
- package/lib/es/timeline/index.d.ts +1 -1
- package/lib/es/timeline/index.js +1 -0
- package/lib/es/timeline/item.js +4 -2
- package/lib/es/toast/toast.js +2 -0
- package/lib/es/tooltip/TriangleArrow.js +1 -0
- package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/es/tooltip/index.d.ts +16 -12
- package/lib/es/tooltip/index.js +53 -39
- package/lib/es/transfer/index.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 +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 +0 -1
- package/tagInput/__test__/tagInput.test.js +46 -0
- package/tagInput/_story/tagInput.stories.js +2 -2
- package/tagInput/index.tsx +31 -8
- package/timePicker/TimePicker.tsx +14 -1
- package/timeline/_story/timeline.stories.js +1 -1
- package/timeline/index.tsx +2 -2
- package/timeline/item.tsx +2 -1
- package/toast/toast.tsx +2 -0
- package/tooltip/TriangleArrow.tsx +1 -1
- package/tooltip/TriangleArrowVertical.tsx +1 -1
- package/tooltip/_story/tooltip.stories.js +562 -514
- package/tooltip/index.tsx +50 -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 +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/lib/cjs/input/index.d.ts
CHANGED
|
@@ -9,6 +9,12 @@ export declare type InputSize = 'small' | 'large' | 'default';
|
|
|
9
9
|
export declare type InputMode = 'password';
|
|
10
10
|
export declare type ValidateStatus = "default" | "error" | "warning" | "success";
|
|
11
11
|
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'prefix' | 'size' | 'autoFocus' | 'placeholder' | 'onFocus' | 'onBlur'> {
|
|
12
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
13
|
+
'aria-describedby'?: React.AriaAttributes['aria-describedby'];
|
|
14
|
+
'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
|
|
15
|
+
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
16
|
+
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
17
|
+
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
12
18
|
addonBefore?: React.ReactNode;
|
|
13
19
|
addonAfter?: React.ReactNode;
|
|
14
20
|
prefix?: React.ReactNode;
|
|
@@ -24,6 +30,7 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
|
|
|
24
30
|
hideSuffix?: boolean;
|
|
25
31
|
placeholder?: React.ReactText;
|
|
26
32
|
insetLabel?: React.ReactNode;
|
|
33
|
+
insetLabelId?: string;
|
|
27
34
|
size?: InputSize;
|
|
28
35
|
className?: string;
|
|
29
36
|
style?: React.CSSProperties;
|
|
@@ -54,6 +61,12 @@ export interface InputState {
|
|
|
54
61
|
}
|
|
55
62
|
declare class Input extends BaseComponent<InputProps, InputState> {
|
|
56
63
|
static propTypes: {
|
|
64
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
65
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
66
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
67
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
68
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
69
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
57
70
|
addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
58
71
|
addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
59
72
|
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
@@ -82,6 +95,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
|
|
|
82
95
|
onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
|
|
83
96
|
onEnterPress: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
97
|
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
98
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
85
99
|
inputStyle: PropTypes.Requireable<object>;
|
|
86
100
|
getValueLength: PropTypes.Requireable<(...args: any[]) => any>;
|
|
87
101
|
};
|
|
@@ -147,6 +161,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
|
|
|
147
161
|
static getDerivedStateFromProps(props: InputProps, state: InputState): Partial<InputState>;
|
|
148
162
|
componentDidUpdate(prevProps: InputProps): void;
|
|
149
163
|
handleClear: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
164
|
+
handleClearEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
150
165
|
handleClick: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
151
166
|
handleMouseOver: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
152
167
|
handleMouseLeave: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
@@ -154,6 +169,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
|
|
|
154
169
|
handleClickEye: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
155
170
|
handleMouseDown: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
156
171
|
handleMouseUp: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
172
|
+
handleModeEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
157
173
|
handleClickPrefixOrSuffix: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
158
174
|
handlePreventMouseDown: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
159
175
|
renderPrepend(): JSX.Element;
|
package/lib/cjs/input/index.js
CHANGED
|
@@ -68,6 +68,10 @@ class Input extends _baseComponent.default {
|
|
|
68
68
|
this.foundation.handleClear(e);
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
+
this.handleClearEnterPress = e => {
|
|
72
|
+
this.foundation.handleClearEnterPress(e);
|
|
73
|
+
};
|
|
74
|
+
|
|
71
75
|
this.handleClick = e => {
|
|
72
76
|
this.foundation.handleClick(e);
|
|
73
77
|
};
|
|
@@ -100,6 +104,10 @@ class Input extends _baseComponent.default {
|
|
|
100
104
|
this.foundation.handleMouseUp(e);
|
|
101
105
|
};
|
|
102
106
|
|
|
107
|
+
this.handleModeEnterPress = e => {
|
|
108
|
+
this.foundation.handleModeEnterPress(e);
|
|
109
|
+
};
|
|
110
|
+
|
|
103
111
|
this.handleClickPrefixOrSuffix = e => {
|
|
104
112
|
this.foundation.handleClickPrefixOrSuffix(e);
|
|
105
113
|
};
|
|
@@ -234,8 +242,12 @@ class Input extends _baseComponent.default {
|
|
|
234
242
|
|
|
235
243
|
if (allowClear) {
|
|
236
244
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
245
|
+
role: "button",
|
|
246
|
+
tabIndex: 0,
|
|
247
|
+
"aria-label": "Clear input value",
|
|
237
248
|
className: clearCls,
|
|
238
|
-
onMouseDown: this.handleClear
|
|
249
|
+
onMouseDown: this.handleClear,
|
|
250
|
+
onKeyPress: this.handleClearEnterPress
|
|
239
251
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null));
|
|
240
252
|
}
|
|
241
253
|
|
|
@@ -256,13 +268,18 @@ class Input extends _baseComponent.default {
|
|
|
256
268
|
const modeCls = (0, _classnames.default)("".concat(prefixCls, "-modebtn"));
|
|
257
269
|
const modeIcon = eyeClosed ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconEyeClosedSolid, null) : /*#__PURE__*/_react.default.createElement(_semiIcons.IconEyeOpened, null);
|
|
258
270
|
const showModeBtn = mode === 'password' && value && !disabled && (isFocus || isHovering);
|
|
271
|
+
const ariaLabel = eyeClosed ? 'Show password' : 'Hidden password';
|
|
259
272
|
|
|
260
273
|
if (showModeBtn) {
|
|
261
274
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
275
|
+
role: "button",
|
|
276
|
+
tabIndex: 0,
|
|
277
|
+
"aria-label": ariaLabel,
|
|
262
278
|
className: modeCls,
|
|
263
279
|
onClick: this.handleClickEye,
|
|
264
280
|
onMouseDown: this.handleMouseDown,
|
|
265
|
-
onMouseUp: this.handleMouseUp
|
|
281
|
+
onMouseUp: this.handleMouseUp,
|
|
282
|
+
onKeyPress: this.handleModeEnterPress
|
|
266
283
|
}, modeIcon);
|
|
267
284
|
}
|
|
268
285
|
|
|
@@ -272,7 +289,8 @@ class Input extends _baseComponent.default {
|
|
|
272
289
|
renderPrefix() {
|
|
273
290
|
const {
|
|
274
291
|
prefix,
|
|
275
|
-
insetLabel
|
|
292
|
+
insetLabel,
|
|
293
|
+
insetLabelId
|
|
276
294
|
} = this.props;
|
|
277
295
|
const labelNode = prefix || insetLabel;
|
|
278
296
|
|
|
@@ -285,11 +303,13 @@ class Input extends _baseComponent.default {
|
|
|
285
303
|
["".concat(prefixCls, "-inset-label")]: insetLabel,
|
|
286
304
|
["".concat(prefixCls, "-prefix-text")]: labelNode && (0, _isString2.default)(labelNode),
|
|
287
305
|
["".concat(prefixCls, "-prefix-icon")]: (0, _utils.isSemiIcon)(labelNode)
|
|
288
|
-
});
|
|
306
|
+
}); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
307
|
+
|
|
289
308
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
290
309
|
className: prefixWrapperCls,
|
|
291
310
|
onMouseDown: this.handlePreventMouseDown,
|
|
292
|
-
onClick: this.handleClickPrefixOrSuffix
|
|
311
|
+
onClick: this.handleClickPrefixOrSuffix,
|
|
312
|
+
id: insetLabelId
|
|
293
313
|
}, labelNode);
|
|
294
314
|
}
|
|
295
315
|
|
|
@@ -321,7 +341,8 @@ class Input extends _baseComponent.default {
|
|
|
321
341
|
["".concat(prefixCls, "-suffix-text")]: suffix && (0, _isString2.default)(suffix),
|
|
322
342
|
["".concat(prefixCls, "-suffix-icon")]: (0, _utils.isSemiIcon)(suffix),
|
|
323
343
|
["".concat(prefixCls, "-suffix-hidden")]: suffixAllowClear && Boolean(hideSuffix)
|
|
324
|
-
});
|
|
344
|
+
}); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
345
|
+
|
|
325
346
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
326
347
|
className: suffixWrapperCls,
|
|
327
348
|
onMouseDown: this.handlePreventMouseDown,
|
|
@@ -424,21 +445,35 @@ class Input extends _baseComponent.default {
|
|
|
424
445
|
inputProps.minLength = stateMinLength;
|
|
425
446
|
}
|
|
426
447
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
448
|
+
if (validateStatus === 'error') {
|
|
449
|
+
inputProps['aria-invalid'] = "true";
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
return (
|
|
453
|
+
/*#__PURE__*/
|
|
454
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
455
|
+
_react.default.createElement("div", {
|
|
456
|
+
className: wrapperCls,
|
|
457
|
+
style: style,
|
|
458
|
+
onMouseEnter: e => this.handleMouseOver(e),
|
|
459
|
+
onMouseLeave: e => this.handleMouseLeave(e),
|
|
460
|
+
onClick: e => this.handleClick(e)
|
|
461
|
+
}, this.renderPrepend(), this.renderPrefix(), /*#__PURE__*/_react.default.createElement("input", (0, _assign.default)({}, inputProps, {
|
|
462
|
+
ref: ref
|
|
463
|
+
})), this.renderClearBtn(), this.renderSuffix(suffixAllowClear), this.renderModeBtn(), this.renderAppend())
|
|
464
|
+
);
|
|
436
465
|
}
|
|
437
466
|
|
|
438
467
|
}
|
|
439
468
|
|
|
440
469
|
exports.Input = Input;
|
|
441
470
|
Input.propTypes = {
|
|
471
|
+
'aria-label': _propTypes.default.string,
|
|
472
|
+
'aria-labelledby': _propTypes.default.string,
|
|
473
|
+
'aria-invalid': _propTypes.default.bool,
|
|
474
|
+
'aria-errormessage': _propTypes.default.string,
|
|
475
|
+
'aria-describedby': _propTypes.default.string,
|
|
476
|
+
'aria-required': _propTypes.default.bool,
|
|
442
477
|
addonBefore: _propTypes.default.node,
|
|
443
478
|
addonAfter: _propTypes.default.node,
|
|
444
479
|
prefix: _propTypes.default.node,
|
|
@@ -467,6 +502,7 @@ Input.propTypes = {
|
|
|
467
502
|
onKeyPress: _propTypes.default.func,
|
|
468
503
|
onEnterPress: _propTypes.default.func,
|
|
469
504
|
insetLabel: _propTypes.default.node,
|
|
505
|
+
insetLabelId: _propTypes.default.string,
|
|
470
506
|
inputStyle: _propTypes.default.object,
|
|
471
507
|
getValueLength: _propTypes.default.func
|
|
472
508
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import BaseComponent from '../_base/baseComponent';
|
|
4
|
+
import { LabelProps } from '../form/label';
|
|
4
5
|
import { noop } from '@douyinfe/semi-foundation/lib/cjs/utils/function';
|
|
5
6
|
export declare type InputSize = 'small' | 'large' | 'default';
|
|
6
7
|
export interface InputGroupProps {
|
|
@@ -10,7 +11,7 @@ export interface InputGroupProps {
|
|
|
10
11
|
style?: Record<string, any>;
|
|
11
12
|
onBlur?: (e: React.FocusEvent<HTMLSpanElement>) => void;
|
|
12
13
|
onFocus?: (e: React.FocusEvent<HTMLSpanElement>) => void;
|
|
13
|
-
label?:
|
|
14
|
+
label?: LabelProps;
|
|
14
15
|
labelPosition?: string;
|
|
15
16
|
disabled?: boolean;
|
|
16
17
|
}
|
|
@@ -77,9 +77,16 @@ class inputGroup extends _baseComponent.default {
|
|
|
77
77
|
[(0, _concat.default)(_context = "".concat(prefixCls, "-")).call(_context, size)]: size !== 'default'
|
|
78
78
|
}); // const labelCls = cls(label.className, '');
|
|
79
79
|
|
|
80
|
+
const defaultName = 'input-group';
|
|
80
81
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
82
|
+
role: "group",
|
|
83
|
+
"aria-label": "Input group",
|
|
84
|
+
"aria-disabled": this.props.disabled,
|
|
81
85
|
className: groupWrapperCls
|
|
82
|
-
}, label && label.text ? /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
|
|
86
|
+
}, label && label.text ? /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
|
|
87
|
+
name: defaultName
|
|
88
|
+
}, label)) : null, /*#__PURE__*/_react.default.createElement("span", {
|
|
89
|
+
id: label && label.name || defaultName,
|
|
83
90
|
className: groupCls,
|
|
84
91
|
style: this.props.style,
|
|
85
92
|
onFocus: this.props.onFocus,
|
|
@@ -135,6 +142,9 @@ class inputGroup extends _baseComponent.default {
|
|
|
135
142
|
}
|
|
136
143
|
|
|
137
144
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
145
|
+
role: "group",
|
|
146
|
+
"aria-label": "Input group",
|
|
147
|
+
"aria-disabled": this.props.disabled,
|
|
138
148
|
className: groupCls,
|
|
139
149
|
style: style,
|
|
140
150
|
onFocus: this.props.onFocus,
|
|
@@ -63,6 +63,10 @@ class TextArea extends _baseComponent.default {
|
|
|
63
63
|
this.foundation.handleClear(e);
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
+
this.handleClearEnterPress = e => {
|
|
67
|
+
this.foundation.handleClearEnterPress(e);
|
|
68
|
+
};
|
|
69
|
+
|
|
66
70
|
this.setRef = node => {
|
|
67
71
|
this.libRef.current = node;
|
|
68
72
|
const {
|
|
@@ -188,8 +192,12 @@ class TextArea extends _baseComponent.default {
|
|
|
188
192
|
|
|
189
193
|
if (showClear) {
|
|
190
194
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
195
|
+
role: "button",
|
|
196
|
+
tabIndex: 0,
|
|
197
|
+
"aria-label": "Clear textarea value",
|
|
191
198
|
className: clearCls,
|
|
192
|
-
onClick: this.handleClear
|
|
199
|
+
onClick: this.handleClear,
|
|
200
|
+
onKeyPress: this.handleClearEnterPress
|
|
193
201
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null));
|
|
194
202
|
}
|
|
195
203
|
|
|
@@ -215,6 +223,9 @@ class TextArea extends _baseComponent.default {
|
|
|
215
223
|
["".concat(prefixCls, "-textarea-counter-exceed")]: current > total
|
|
216
224
|
});
|
|
217
225
|
counter = /*#__PURE__*/_react.default.createElement("div", {
|
|
226
|
+
"aria-label": "Textarea value length counter",
|
|
227
|
+
"aria-valuemax": maxCount,
|
|
228
|
+
"aria-valuenow": current,
|
|
218
229
|
className: countCls
|
|
219
230
|
}, current, total ? '/' : null, total);
|
|
220
231
|
} else {
|
|
@@ -16,6 +16,7 @@ export interface InputNumberProps extends InputProps {
|
|
|
16
16
|
hideButtons?: boolean;
|
|
17
17
|
innerButtons?: boolean;
|
|
18
18
|
insetLabel?: React.ReactNode;
|
|
19
|
+
insetLabelId?: string;
|
|
19
20
|
keepFocus?: boolean;
|
|
20
21
|
max?: number;
|
|
21
22
|
min?: number;
|
|
@@ -47,6 +48,12 @@ export interface InputNumberState {
|
|
|
47
48
|
}
|
|
48
49
|
declare class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
49
50
|
static propTypes: {
|
|
51
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
52
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
53
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
54
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
55
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
56
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
50
57
|
autofocus: PropTypes.Requireable<boolean>;
|
|
51
58
|
className: PropTypes.Requireable<string>;
|
|
52
59
|
defaultValue: PropTypes.Requireable<string | number>;
|
|
@@ -56,6 +63,7 @@ declare class InputNumber extends BaseComponent<InputNumberProps, InputNumberSta
|
|
|
56
63
|
hideButtons: PropTypes.Requireable<boolean>;
|
|
57
64
|
innerButtons: PropTypes.Requireable<boolean>;
|
|
58
65
|
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
66
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
59
67
|
keepFocus: PropTypes.Requireable<boolean>;
|
|
60
68
|
max: PropTypes.Requireable<number>;
|
|
61
69
|
min: PropTypes.Requireable<number>;
|
|
@@ -140,6 +140,8 @@ class InputNumber extends _baseComponent.default {
|
|
|
140
140
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
141
141
|
className: suffixChildrenCls
|
|
142
142
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
143
|
+
role: "button",
|
|
144
|
+
tabIndex: -1,
|
|
143
145
|
className: upClassName,
|
|
144
146
|
onMouseDown: notAllowedUp ? _noop2.default : this.handleUpClick,
|
|
145
147
|
onMouseUp: this.handleMouseUp,
|
|
@@ -147,6 +149,8 @@ class InputNumber extends _baseComponent.default {
|
|
|
147
149
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronUp, {
|
|
148
150
|
size: "extra-small"
|
|
149
151
|
})), /*#__PURE__*/_react.default.createElement("span", {
|
|
152
|
+
role: "button",
|
|
153
|
+
tabIndex: -1,
|
|
150
154
|
className: downClassName,
|
|
151
155
|
onMouseDown: notAllowedDown ? _noop2.default : this.handleDownClick,
|
|
152
156
|
onMouseUp: this.handleMouseUp,
|
|
@@ -442,12 +446,29 @@ class InputNumber extends _baseComponent.default {
|
|
|
442
446
|
rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus"]);
|
|
443
447
|
|
|
444
448
|
const {
|
|
445
|
-
value
|
|
449
|
+
value,
|
|
450
|
+
number
|
|
446
451
|
} = this.state;
|
|
447
452
|
const inputNumberCls = (0, _classnames.default)(className, "".concat(prefixCls, "-number"), {
|
|
448
453
|
[(0, _concat.default)(_context = "".concat(prefixCls, "-number-size-")).call(_context, size)]: size
|
|
449
454
|
});
|
|
450
455
|
const buttons = this.renderButtons();
|
|
456
|
+
const ariaProps = {
|
|
457
|
+
'aria-disabled': disabled,
|
|
458
|
+
step
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
if (number) {
|
|
462
|
+
ariaProps['aria-valuenow'] = number;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
if (max !== Infinity) {
|
|
466
|
+
ariaProps['aria-valuemax'] = max;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
if (min !== -Infinity) {
|
|
470
|
+
ariaProps['aria-valuemin'] = min;
|
|
471
|
+
}
|
|
451
472
|
|
|
452
473
|
const input = /*#__PURE__*/_react.default.createElement("div", {
|
|
453
474
|
className: inputNumberCls,
|
|
@@ -455,7 +476,9 @@ class InputNumber extends _baseComponent.default {
|
|
|
455
476
|
onMouseMove: e => this.handleInputMouseMove(e),
|
|
456
477
|
onMouseEnter: e => this.handleInputMouseEnter(e),
|
|
457
478
|
onMouseLeave: e => this.handleInputMouseLeave(e)
|
|
458
|
-
}, /*#__PURE__*/_react.default.createElement(_input.default, (0, _assign.default)({
|
|
479
|
+
}, /*#__PURE__*/_react.default.createElement(_input.default, (0, _assign.default)({
|
|
480
|
+
role: "spinbutton"
|
|
481
|
+
}, ariaProps, rest, {
|
|
459
482
|
size: size,
|
|
460
483
|
disabled: disabled,
|
|
461
484
|
ref: this.setInputRef,
|
|
@@ -474,6 +497,12 @@ class InputNumber extends _baseComponent.default {
|
|
|
474
497
|
|
|
475
498
|
exports.InputNumber = InputNumber;
|
|
476
499
|
InputNumber.propTypes = {
|
|
500
|
+
'aria-label': _propTypes.default.string,
|
|
501
|
+
'aria-labelledby': _propTypes.default.string,
|
|
502
|
+
'aria-invalid': _propTypes.default.bool,
|
|
503
|
+
'aria-errormessage': _propTypes.default.string,
|
|
504
|
+
'aria-describedby': _propTypes.default.string,
|
|
505
|
+
'aria-required': _propTypes.default.bool,
|
|
477
506
|
autofocus: _propTypes.default.bool,
|
|
478
507
|
className: _propTypes.default.string,
|
|
479
508
|
defaultValue: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -483,6 +512,7 @@ InputNumber.propTypes = {
|
|
|
483
512
|
hideButtons: _propTypes.default.bool,
|
|
484
513
|
innerButtons: _propTypes.default.bool,
|
|
485
514
|
insetLabel: _propTypes.default.node,
|
|
515
|
+
insetLabelId: _propTypes.default.string,
|
|
486
516
|
keepFocus: _propTypes.default.bool,
|
|
487
517
|
max: _propTypes.default.number,
|
|
488
518
|
min: _propTypes.default.number,
|
|
@@ -14,6 +14,8 @@ export interface SiderProps {
|
|
|
14
14
|
className?: string;
|
|
15
15
|
breakpoint?: Array<keyof ResponsiveMap>;
|
|
16
16
|
onBreakpoint?: (screen: keyof ResponsiveMap, match: boolean) => void;
|
|
17
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
18
|
+
'role'?: React.AriaRole;
|
|
17
19
|
}
|
|
18
20
|
declare class Sider extends React.PureComponent<SiderProps> {
|
|
19
21
|
static propTypes: {
|
|
@@ -22,6 +24,8 @@ declare class Sider extends React.PureComponent<SiderProps> {
|
|
|
22
24
|
className: PropTypes.Requireable<string>;
|
|
23
25
|
breakpoint: PropTypes.Requireable<string[]>;
|
|
24
26
|
onBreakpoint: PropTypes.Requireable<(...args: any[]) => any>;
|
|
27
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
28
|
+
role: PropTypes.Requireable<string>;
|
|
25
29
|
};
|
|
26
30
|
static defaultProps: {
|
|
27
31
|
prefixCls: string;
|
package/lib/cjs/layout/Sider.js
CHANGED
|
@@ -137,6 +137,7 @@ class Sider extends _react.default.PureComponent {
|
|
|
137
137
|
});
|
|
138
138
|
return /*#__PURE__*/_react.default.createElement("aside", (0, _assign.default)({
|
|
139
139
|
className: classString,
|
|
140
|
+
"aria-label": this.props['aria-label'],
|
|
140
141
|
style: style
|
|
141
142
|
}, (0, _getDataAttr.default)(others)), /*#__PURE__*/_react.default.createElement("div", {
|
|
142
143
|
className: "".concat(prefixCls, "-sider-children")
|
|
@@ -150,7 +151,9 @@ Sider.propTypes = {
|
|
|
150
151
|
style: _propTypes.default.object,
|
|
151
152
|
className: _propTypes.default.string,
|
|
152
153
|
breakpoint: _propTypes.default.arrayOf(_propTypes.default.oneOf(bpt)),
|
|
153
|
-
onBreakpoint: _propTypes.default.func
|
|
154
|
+
onBreakpoint: _propTypes.default.func,
|
|
155
|
+
'aria-label': _propTypes.default.string,
|
|
156
|
+
role: _propTypes.default.string
|
|
154
157
|
};
|
|
155
158
|
Sider.defaultProps = {
|
|
156
159
|
prefixCls: _constants.cssClasses.PREFIX
|
package/lib/cjs/layout/index.js
CHANGED
|
@@ -58,6 +58,8 @@ function generator(type) {
|
|
|
58
58
|
return BasicComponent => class Adapter extends _react.default.PureComponent {
|
|
59
59
|
render() {
|
|
60
60
|
return /*#__PURE__*/_react.default.createElement(BasicComponent, (0, _assign.default)({
|
|
61
|
+
role: this.props.role,
|
|
62
|
+
"aria-label": this.props['aria-label'],
|
|
61
63
|
type: typeName,
|
|
62
64
|
tagName: tagName
|
|
63
65
|
}, this.props));
|
package/lib/cjs/list/item.js
CHANGED
package/lib/cjs/modal/Modal.js
CHANGED
|
@@ -114,6 +114,7 @@ class Modal extends _baseComponent.default {
|
|
|
114
114
|
return null;
|
|
115
115
|
} else {
|
|
116
116
|
return /*#__PURE__*/_react.default.createElement(_button.default, (0, _assign.default)({
|
|
117
|
+
"aria-label": "cancel",
|
|
117
118
|
onClick: this.handleCancel,
|
|
118
119
|
loading: cancelLoading,
|
|
119
120
|
type: "tertiary"
|
|
@@ -124,6 +125,7 @@ class Modal extends _baseComponent.default {
|
|
|
124
125
|
return /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
|
|
125
126
|
componentName: "Modal"
|
|
126
127
|
}, (locale, localeCode) => /*#__PURE__*/_react.default.createElement("div", null, getCancelButton(locale), /*#__PURE__*/_react.default.createElement(_button.default, (0, _assign.default)({
|
|
128
|
+
"aria-label": "confirm",
|
|
127
129
|
type: okType,
|
|
128
130
|
theme: "solid",
|
|
129
131
|
loading: confirmLoading,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import BaseComponent from '../_base/baseComponent';
|
|
4
|
-
import { ModalContentAdapter, ModalContentProps, ModalContentState } from '@douyinfe/semi-foundation/lib/cjs/modal/modalContentFoundation';
|
|
4
|
+
import ModalContentFoundation, { ModalContentAdapter, ModalContentProps, ModalContentState } from '@douyinfe/semi-foundation/lib/cjs/modal/modalContentFoundation';
|
|
5
5
|
export default class ModalContent extends BaseComponent<ModalContentProps, ModalContentState> {
|
|
6
6
|
static contextType: React.Context<import("../configProvider/context").ContextValue>;
|
|
7
7
|
static propTypes: {
|
|
@@ -19,6 +19,8 @@ export default class ModalContent extends BaseComponent<ModalContentProps, Modal
|
|
|
19
19
|
};
|
|
20
20
|
dialogId: string;
|
|
21
21
|
private timeoutId;
|
|
22
|
+
modalDialogRef: React.MutableRefObject<HTMLDivElement>;
|
|
23
|
+
foundation: ModalContentFoundation;
|
|
22
24
|
constructor(props: ModalContentProps);
|
|
23
25
|
get adapter(): ModalContentAdapter;
|
|
24
26
|
componentDidMount(): void;
|
|
@@ -22,6 +22,10 @@ var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-j
|
|
|
22
22
|
|
|
23
23
|
var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
|
|
24
24
|
|
|
25
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
26
|
+
|
|
27
|
+
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
28
|
+
|
|
25
29
|
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
26
30
|
|
|
27
31
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -44,6 +48,8 @@ var _modalContentFoundation = _interopRequireDefault(require("@douyinfe/semi-fou
|
|
|
44
48
|
|
|
45
49
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
46
50
|
|
|
51
|
+
var _utils = require("../_utils");
|
|
52
|
+
|
|
47
53
|
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
48
54
|
var t = {};
|
|
49
55
|
|
|
@@ -118,6 +124,7 @@ class ModalContent extends _baseComponent.default {
|
|
|
118
124
|
const iconType = closeIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null);
|
|
119
125
|
|
|
120
126
|
closer = /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
127
|
+
"aria-label": "close",
|
|
121
128
|
className: "".concat(_constants.cssClasses.DIALOG, "-close"),
|
|
122
129
|
key: "close-btn",
|
|
123
130
|
onClick: this.close,
|
|
@@ -154,7 +161,8 @@ class ModalContent extends _baseComponent.default {
|
|
|
154
161
|
className: "".concat(_constants.cssClasses.DIALOG, "-header")
|
|
155
162
|
}, icon, /*#__PURE__*/_react.default.createElement(_typography.default.Title, {
|
|
156
163
|
heading: 5,
|
|
157
|
-
className: "".concat(_constants.cssClasses.DIALOG, "-title")
|
|
164
|
+
className: "".concat(_constants.cssClasses.DIALOG, "-title"),
|
|
165
|
+
id: "".concat(_constants.cssClasses.DIALOG, "-title")
|
|
158
166
|
}, title), closer);
|
|
159
167
|
};
|
|
160
168
|
|
|
@@ -172,6 +180,7 @@ class ModalContent extends _baseComponent.default {
|
|
|
172
180
|
const hasHeader = title !== null && title !== undefined || 'header' in this.props;
|
|
173
181
|
return hasHeader ? /*#__PURE__*/_react.default.createElement("div", {
|
|
174
182
|
className: bodyCls,
|
|
183
|
+
id: "".concat(_constants.cssClasses.DIALOG, "-body"),
|
|
175
184
|
style: bodyStyle
|
|
176
185
|
}, children) : /*#__PURE__*/_react.default.createElement("div", {
|
|
177
186
|
className: "".concat(_constants.cssClasses.DIALOG, "-body-wrapper")
|
|
@@ -212,13 +221,21 @@ class ModalContent extends _baseComponent.default {
|
|
|
212
221
|
className: "".concat(_constants.cssClasses.DIALOG, "-footer")
|
|
213
222
|
}, props.footer) : null;
|
|
214
223
|
|
|
215
|
-
const dialogElement =
|
|
224
|
+
const dialogElement =
|
|
225
|
+
/*#__PURE__*/
|
|
226
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
227
|
+
_react.default.createElement("div", {
|
|
216
228
|
key: "dialog-element",
|
|
217
229
|
className: digCls,
|
|
218
230
|
onMouseDown: this.onDialogMouseDown,
|
|
219
231
|
style: (0, _assign.default)((0, _assign.default)({}, props.style), style),
|
|
220
232
|
id: this.dialogId
|
|
221
233
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
234
|
+
role: "dialog",
|
|
235
|
+
ref: this.modalDialogRef,
|
|
236
|
+
"aria-modal": "true",
|
|
237
|
+
"aria-labelledby": "".concat(_constants.cssClasses.DIALOG, "-title"),
|
|
238
|
+
"aria-describedby": "".concat(_constants.cssClasses.DIALOG, "-body"),
|
|
222
239
|
onAnimationEnd: props.onAnimationEnd,
|
|
223
240
|
className: (0, _classnames.default)(["".concat(_constants.cssClasses.DIALOG, "-content"), props.contentClassName, {
|
|
224
241
|
["".concat(_constants.cssClasses.DIALOG, "-content-fullScreen")]: props.isFullScreen
|
|
@@ -230,10 +247,12 @@ class ModalContent extends _baseComponent.default {
|
|
|
230
247
|
};
|
|
231
248
|
|
|
232
249
|
this.state = {
|
|
233
|
-
dialogMouseDown: false
|
|
250
|
+
dialogMouseDown: false,
|
|
251
|
+
prevFocusElement: (0, _utils.getActiveElement)()
|
|
234
252
|
};
|
|
235
253
|
this.foundation = new _modalContentFoundation.default(this.adapter);
|
|
236
254
|
this.dialogId = "dialog-".concat(uuid++);
|
|
255
|
+
this.modalDialogRef = /*#__PURE__*/_react.default.createRef();
|
|
237
256
|
}
|
|
238
257
|
|
|
239
258
|
get adapter() {
|
|
@@ -270,12 +289,35 @@ class ModalContent extends _baseComponent.default {
|
|
|
270
289
|
document.removeEventListener('keydown', (0, _bind.default)(_context3 = this.foundation.handleKeyDown).call(_context3, this.foundation));
|
|
271
290
|
}
|
|
272
291
|
},
|
|
273
|
-
getMouseState: () => this.state.dialogMouseDown
|
|
292
|
+
getMouseState: () => this.state.dialogMouseDown,
|
|
293
|
+
modalDialogFocus: () => {
|
|
294
|
+
let activeElementInDialog;
|
|
295
|
+
|
|
296
|
+
if (this.modalDialogRef) {
|
|
297
|
+
const activeElement = (0, _utils.getActiveElement)();
|
|
298
|
+
activeElementInDialog = this.modalDialogRef.current.contains(activeElement);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (!activeElementInDialog) {
|
|
302
|
+
this.modalDialogRef && this.modalDialogRef.current.focus();
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
modalDialogBlur: () => {
|
|
306
|
+
this.modalDialogRef && this.modalDialogRef.current.blur();
|
|
307
|
+
},
|
|
308
|
+
prevFocusElementReFocus: () => {
|
|
309
|
+
const {
|
|
310
|
+
prevFocusElement
|
|
311
|
+
} = this.state;
|
|
312
|
+
const focus = (0, _get2.default)(prevFocusElement, 'focus');
|
|
313
|
+
(0, _isFunction2.default)(focus) && prevFocusElement.focus();
|
|
314
|
+
}
|
|
274
315
|
});
|
|
275
316
|
}
|
|
276
317
|
|
|
277
318
|
componentDidMount() {
|
|
278
319
|
this.foundation.handleKeyDownEventListenerMount();
|
|
320
|
+
this.foundation.modalDialogFocus();
|
|
279
321
|
}
|
|
280
322
|
|
|
281
323
|
componentWillUnmount() {
|
|
@@ -304,7 +346,7 @@ class ModalContent extends _baseComponent.default {
|
|
|
304
346
|
const elem = /*#__PURE__*/_react.default.createElement("div", {
|
|
305
347
|
className: classList
|
|
306
348
|
}, this.getMaskElement(), /*#__PURE__*/_react.default.createElement("div", {
|
|
307
|
-
role: "
|
|
349
|
+
role: "none",
|
|
308
350
|
tabIndex: -1,
|
|
309
351
|
className: "".concat(_constants.cssClasses.DIALOG, "-wrap"),
|
|
310
352
|
onClick: maskClosable ? this.onMaskClick : null,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseComponent, { BaseProps } from '../_base/baseComponent';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
-
import { ItemProps, SelectedItemProps, ItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/navigation/itemFoundation';
|
|
4
|
+
import ItemFoundation, { ItemProps, SelectedItemProps, ItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/navigation/itemFoundation';
|
|
5
5
|
export interface NavItemProps extends ItemProps, BaseProps {
|
|
6
6
|
children?: React.ReactNode;
|
|
7
7
|
disabled?: boolean;
|
|
@@ -59,12 +59,14 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
|
|
|
59
59
|
onMouseLeave: (...args: any[]) => void;
|
|
60
60
|
disabled: boolean;
|
|
61
61
|
};
|
|
62
|
+
foundation: ItemFoundation;
|
|
62
63
|
constructor(props: NavItemProps);
|
|
63
64
|
_invokeContextFunc(funcName: string, ...args: any[]): any;
|
|
64
65
|
get adapter(): ItemAdapter<NavItemProps, NavItemState>;
|
|
65
66
|
renderIcon(icon: React.ReactNode, pos: string, isToggleIcon?: boolean): JSX.Element;
|
|
66
67
|
setItemRef: (ref: HTMLLIElement) => void;
|
|
67
68
|
wrapTooltip: (node: React.ReactNode) => JSX.Element;
|
|
68
|
-
handleClick: (e: React.MouseEvent) =>
|
|
69
|
+
handleClick: (e: React.MouseEvent) => void;
|
|
70
|
+
handleKeyPress: (e: React.KeyboardEvent) => void;
|
|
69
71
|
render(): {} | React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
70
72
|
}
|