@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/es/input/index.js
CHANGED
|
@@ -41,6 +41,10 @@ class Input extends BaseComponent {
|
|
|
41
41
|
this.foundation.handleClear(e);
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
+
this.handleClearEnterPress = e => {
|
|
45
|
+
this.foundation.handleClearEnterPress(e);
|
|
46
|
+
};
|
|
47
|
+
|
|
44
48
|
this.handleClick = e => {
|
|
45
49
|
this.foundation.handleClick(e);
|
|
46
50
|
};
|
|
@@ -73,6 +77,10 @@ class Input extends BaseComponent {
|
|
|
73
77
|
this.foundation.handleMouseUp(e);
|
|
74
78
|
};
|
|
75
79
|
|
|
80
|
+
this.handleModeEnterPress = e => {
|
|
81
|
+
this.foundation.handleModeEnterPress(e);
|
|
82
|
+
};
|
|
83
|
+
|
|
76
84
|
this.handleClickPrefixOrSuffix = e => {
|
|
77
85
|
this.foundation.handleClickPrefixOrSuffix(e);
|
|
78
86
|
};
|
|
@@ -207,8 +215,12 @@ class Input extends BaseComponent {
|
|
|
207
215
|
|
|
208
216
|
if (allowClear) {
|
|
209
217
|
return /*#__PURE__*/React.createElement("div", {
|
|
218
|
+
role: "button",
|
|
219
|
+
tabIndex: 0,
|
|
220
|
+
"aria-label": "Clear input value",
|
|
210
221
|
className: clearCls,
|
|
211
|
-
onMouseDown: this.handleClear
|
|
222
|
+
onMouseDown: this.handleClear,
|
|
223
|
+
onKeyPress: this.handleClearEnterPress
|
|
212
224
|
}, /*#__PURE__*/React.createElement(IconClear, null));
|
|
213
225
|
}
|
|
214
226
|
|
|
@@ -229,13 +241,18 @@ class Input extends BaseComponent {
|
|
|
229
241
|
const modeCls = cls("".concat(prefixCls, "-modebtn"));
|
|
230
242
|
const modeIcon = eyeClosed ? /*#__PURE__*/React.createElement(IconEyeClosedSolid, null) : /*#__PURE__*/React.createElement(IconEyeOpened, null);
|
|
231
243
|
const showModeBtn = mode === 'password' && value && !disabled && (isFocus || isHovering);
|
|
244
|
+
const ariaLabel = eyeClosed ? 'Show password' : 'Hidden password';
|
|
232
245
|
|
|
233
246
|
if (showModeBtn) {
|
|
234
247
|
return /*#__PURE__*/React.createElement("div", {
|
|
248
|
+
role: "button",
|
|
249
|
+
tabIndex: 0,
|
|
250
|
+
"aria-label": ariaLabel,
|
|
235
251
|
className: modeCls,
|
|
236
252
|
onClick: this.handleClickEye,
|
|
237
253
|
onMouseDown: this.handleMouseDown,
|
|
238
|
-
onMouseUp: this.handleMouseUp
|
|
254
|
+
onMouseUp: this.handleMouseUp,
|
|
255
|
+
onKeyPress: this.handleModeEnterPress
|
|
239
256
|
}, modeIcon);
|
|
240
257
|
}
|
|
241
258
|
|
|
@@ -245,7 +262,8 @@ class Input extends BaseComponent {
|
|
|
245
262
|
renderPrefix() {
|
|
246
263
|
const {
|
|
247
264
|
prefix,
|
|
248
|
-
insetLabel
|
|
265
|
+
insetLabel,
|
|
266
|
+
insetLabelId
|
|
249
267
|
} = this.props;
|
|
250
268
|
const labelNode = prefix || insetLabel;
|
|
251
269
|
|
|
@@ -258,11 +276,13 @@ class Input extends BaseComponent {
|
|
|
258
276
|
["".concat(prefixCls, "-inset-label")]: insetLabel,
|
|
259
277
|
["".concat(prefixCls, "-prefix-text")]: labelNode && _isString(labelNode),
|
|
260
278
|
["".concat(prefixCls, "-prefix-icon")]: isSemiIcon(labelNode)
|
|
261
|
-
});
|
|
279
|
+
}); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
280
|
+
|
|
262
281
|
return /*#__PURE__*/React.createElement("div", {
|
|
263
282
|
className: prefixWrapperCls,
|
|
264
283
|
onMouseDown: this.handlePreventMouseDown,
|
|
265
|
-
onClick: this.handleClickPrefixOrSuffix
|
|
284
|
+
onClick: this.handleClickPrefixOrSuffix,
|
|
285
|
+
id: insetLabelId
|
|
266
286
|
}, labelNode);
|
|
267
287
|
}
|
|
268
288
|
|
|
@@ -294,7 +314,8 @@ class Input extends BaseComponent {
|
|
|
294
314
|
["".concat(prefixCls, "-suffix-text")]: suffix && _isString(suffix),
|
|
295
315
|
["".concat(prefixCls, "-suffix-icon")]: isSemiIcon(suffix),
|
|
296
316
|
["".concat(prefixCls, "-suffix-hidden")]: suffixAllowClear && Boolean(hideSuffix)
|
|
297
|
-
});
|
|
317
|
+
}); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
318
|
+
|
|
298
319
|
return /*#__PURE__*/React.createElement("div", {
|
|
299
320
|
className: suffixWrapperCls,
|
|
300
321
|
onMouseDown: this.handlePreventMouseDown,
|
|
@@ -398,20 +419,34 @@ class Input extends BaseComponent {
|
|
|
398
419
|
inputProps.minLength = stateMinLength;
|
|
399
420
|
}
|
|
400
421
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
422
|
+
if (validateStatus === 'error') {
|
|
423
|
+
inputProps['aria-invalid'] = "true";
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
return (
|
|
427
|
+
/*#__PURE__*/
|
|
428
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
429
|
+
React.createElement("div", {
|
|
430
|
+
className: wrapperCls,
|
|
431
|
+
style: style,
|
|
432
|
+
onMouseEnter: e => this.handleMouseOver(e),
|
|
433
|
+
onMouseLeave: e => this.handleMouseLeave(e),
|
|
434
|
+
onClick: e => this.handleClick(e)
|
|
435
|
+
}, this.renderPrepend(), this.renderPrefix(), /*#__PURE__*/React.createElement("input", _Object$assign({}, inputProps, {
|
|
436
|
+
ref: ref
|
|
437
|
+
})), this.renderClearBtn(), this.renderSuffix(suffixAllowClear), this.renderModeBtn(), this.renderAppend())
|
|
438
|
+
);
|
|
410
439
|
}
|
|
411
440
|
|
|
412
441
|
}
|
|
413
442
|
|
|
414
443
|
Input.propTypes = {
|
|
444
|
+
'aria-label': PropTypes.string,
|
|
445
|
+
'aria-labelledby': PropTypes.string,
|
|
446
|
+
'aria-invalid': PropTypes.bool,
|
|
447
|
+
'aria-errormessage': PropTypes.string,
|
|
448
|
+
'aria-describedby': PropTypes.string,
|
|
449
|
+
'aria-required': PropTypes.bool,
|
|
415
450
|
addonBefore: PropTypes.node,
|
|
416
451
|
addonAfter: PropTypes.node,
|
|
417
452
|
prefix: PropTypes.node,
|
|
@@ -440,6 +475,7 @@ Input.propTypes = {
|
|
|
440
475
|
onKeyPress: PropTypes.func,
|
|
441
476
|
onEnterPress: PropTypes.func,
|
|
442
477
|
insetLabel: PropTypes.node,
|
|
478
|
+
insetLabelId: PropTypes.string,
|
|
443
479
|
inputStyle: PropTypes.object,
|
|
444
480
|
getValueLength: PropTypes.func
|
|
445
481
|
};
|
|
@@ -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/es/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
|
}
|
|
@@ -51,9 +51,16 @@ export default class inputGroup extends BaseComponent {
|
|
|
51
51
|
[_concatInstanceProperty(_context = "".concat(prefixCls, "-")).call(_context, size)]: size !== 'default'
|
|
52
52
|
}); // const labelCls = cls(label.className, '');
|
|
53
53
|
|
|
54
|
+
const defaultName = 'input-group';
|
|
54
55
|
return /*#__PURE__*/React.createElement("div", {
|
|
56
|
+
role: "group",
|
|
57
|
+
"aria-label": "Input group",
|
|
58
|
+
"aria-disabled": this.props.disabled,
|
|
55
59
|
className: groupWrapperCls
|
|
56
|
-
}, label && label.text ? /*#__PURE__*/React.createElement(Label, _Object$assign({
|
|
60
|
+
}, label && label.text ? /*#__PURE__*/React.createElement(Label, _Object$assign({
|
|
61
|
+
name: defaultName
|
|
62
|
+
}, label)) : null, /*#__PURE__*/React.createElement("span", {
|
|
63
|
+
id: label && label.name || defaultName,
|
|
57
64
|
className: groupCls,
|
|
58
65
|
style: this.props.style,
|
|
59
66
|
onFocus: this.props.onFocus,
|
|
@@ -109,6 +116,9 @@ export default class inputGroup extends BaseComponent {
|
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
return /*#__PURE__*/React.createElement("span", {
|
|
119
|
+
role: "group",
|
|
120
|
+
"aria-label": "Input group",
|
|
121
|
+
"aria-disabled": this.props.disabled,
|
|
112
122
|
className: groupCls,
|
|
113
123
|
style: style,
|
|
114
124
|
onFocus: this.props.onFocus,
|
package/lib/es/input/textarea.js
CHANGED
|
@@ -37,6 +37,10 @@ class TextArea extends BaseComponent {
|
|
|
37
37
|
this.foundation.handleClear(e);
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
this.handleClearEnterPress = e => {
|
|
41
|
+
this.foundation.handleClearEnterPress(e);
|
|
42
|
+
};
|
|
43
|
+
|
|
40
44
|
this.setRef = node => {
|
|
41
45
|
this.libRef.current = node;
|
|
42
46
|
const {
|
|
@@ -162,8 +166,12 @@ class TextArea extends BaseComponent {
|
|
|
162
166
|
|
|
163
167
|
if (showClear) {
|
|
164
168
|
return /*#__PURE__*/React.createElement("div", {
|
|
169
|
+
role: "button",
|
|
170
|
+
tabIndex: 0,
|
|
171
|
+
"aria-label": "Clear textarea value",
|
|
165
172
|
className: clearCls,
|
|
166
|
-
onClick: this.handleClear
|
|
173
|
+
onClick: this.handleClear,
|
|
174
|
+
onKeyPress: this.handleClearEnterPress
|
|
167
175
|
}, /*#__PURE__*/React.createElement(IconClear, null));
|
|
168
176
|
}
|
|
169
177
|
|
|
@@ -189,6 +197,9 @@ class TextArea extends BaseComponent {
|
|
|
189
197
|
["".concat(prefixCls, "-textarea-counter-exceed")]: current > total
|
|
190
198
|
});
|
|
191
199
|
counter = /*#__PURE__*/React.createElement("div", {
|
|
200
|
+
"aria-label": "Textarea value length counter",
|
|
201
|
+
"aria-valuemax": maxCount,
|
|
202
|
+
"aria-valuenow": current,
|
|
192
203
|
className: countCls
|
|
193
204
|
}, current, total ? '/' : null, total);
|
|
194
205
|
} 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>;
|
|
@@ -110,6 +110,8 @@ class InputNumber extends BaseComponent {
|
|
|
110
110
|
return /*#__PURE__*/React.createElement("div", {
|
|
111
111
|
className: suffixChildrenCls
|
|
112
112
|
}, /*#__PURE__*/React.createElement("span", {
|
|
113
|
+
role: "button",
|
|
114
|
+
tabIndex: -1,
|
|
113
115
|
className: upClassName,
|
|
114
116
|
onMouseDown: notAllowedUp ? _noop : this.handleUpClick,
|
|
115
117
|
onMouseUp: this.handleMouseUp,
|
|
@@ -117,6 +119,8 @@ class InputNumber extends BaseComponent {
|
|
|
117
119
|
}, /*#__PURE__*/React.createElement(IconChevronUp, {
|
|
118
120
|
size: "extra-small"
|
|
119
121
|
})), /*#__PURE__*/React.createElement("span", {
|
|
122
|
+
role: "button",
|
|
123
|
+
tabIndex: -1,
|
|
120
124
|
className: downClassName,
|
|
121
125
|
onMouseDown: notAllowedDown ? _noop : this.handleDownClick,
|
|
122
126
|
onMouseUp: this.handleMouseUp,
|
|
@@ -413,19 +417,39 @@ class InputNumber extends BaseComponent {
|
|
|
413
417
|
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"]);
|
|
414
418
|
|
|
415
419
|
const {
|
|
416
|
-
value
|
|
420
|
+
value,
|
|
421
|
+
number
|
|
417
422
|
} = this.state;
|
|
418
423
|
const inputNumberCls = classnames(className, "".concat(prefixCls, "-number"), {
|
|
419
424
|
[_concatInstanceProperty(_context = "".concat(prefixCls, "-number-size-")).call(_context, size)]: size
|
|
420
425
|
});
|
|
421
426
|
const buttons = this.renderButtons();
|
|
427
|
+
const ariaProps = {
|
|
428
|
+
'aria-disabled': disabled,
|
|
429
|
+
step
|
|
430
|
+
};
|
|
431
|
+
|
|
432
|
+
if (number) {
|
|
433
|
+
ariaProps['aria-valuenow'] = number;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (max !== Infinity) {
|
|
437
|
+
ariaProps['aria-valuemax'] = max;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
if (min !== -Infinity) {
|
|
441
|
+
ariaProps['aria-valuemin'] = min;
|
|
442
|
+
}
|
|
443
|
+
|
|
422
444
|
const input = /*#__PURE__*/React.createElement("div", {
|
|
423
445
|
className: inputNumberCls,
|
|
424
446
|
style: style,
|
|
425
447
|
onMouseMove: e => this.handleInputMouseMove(e),
|
|
426
448
|
onMouseEnter: e => this.handleInputMouseEnter(e),
|
|
427
449
|
onMouseLeave: e => this.handleInputMouseLeave(e)
|
|
428
|
-
}, /*#__PURE__*/React.createElement(Input, _Object$assign({
|
|
450
|
+
}, /*#__PURE__*/React.createElement(Input, _Object$assign({
|
|
451
|
+
role: "spinbutton"
|
|
452
|
+
}, ariaProps, rest, {
|
|
429
453
|
size: size,
|
|
430
454
|
disabled: disabled,
|
|
431
455
|
ref: this.setInputRef,
|
|
@@ -442,6 +466,12 @@ class InputNumber extends BaseComponent {
|
|
|
442
466
|
}
|
|
443
467
|
|
|
444
468
|
InputNumber.propTypes = {
|
|
469
|
+
'aria-label': PropTypes.string,
|
|
470
|
+
'aria-labelledby': PropTypes.string,
|
|
471
|
+
'aria-invalid': PropTypes.bool,
|
|
472
|
+
'aria-errormessage': PropTypes.string,
|
|
473
|
+
'aria-describedby': PropTypes.string,
|
|
474
|
+
'aria-required': PropTypes.bool,
|
|
445
475
|
autofocus: PropTypes.bool,
|
|
446
476
|
className: PropTypes.string,
|
|
447
477
|
defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -451,6 +481,7 @@ InputNumber.propTypes = {
|
|
|
451
481
|
hideButtons: PropTypes.bool,
|
|
452
482
|
innerButtons: PropTypes.bool,
|
|
453
483
|
insetLabel: PropTypes.node,
|
|
484
|
+
insetLabelId: PropTypes.string,
|
|
454
485
|
keepFocus: PropTypes.bool,
|
|
455
486
|
max: PropTypes.number,
|
|
456
487
|
min: PropTypes.number,
|
package/lib/es/layout/Sider.d.ts
CHANGED
|
@@ -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/es/layout/Sider.js
CHANGED
|
@@ -114,6 +114,7 @@ class Sider extends React.PureComponent {
|
|
|
114
114
|
});
|
|
115
115
|
return /*#__PURE__*/React.createElement("aside", _Object$assign({
|
|
116
116
|
className: classString,
|
|
117
|
+
"aria-label": this.props['aria-label'],
|
|
117
118
|
style: style
|
|
118
119
|
}, getDataAttr(others)), /*#__PURE__*/React.createElement("div", {
|
|
119
120
|
className: "".concat(prefixCls, "-sider-children")
|
|
@@ -127,7 +128,9 @@ Sider.propTypes = {
|
|
|
127
128
|
style: PropTypes.object,
|
|
128
129
|
className: PropTypes.string,
|
|
129
130
|
breakpoint: PropTypes.arrayOf(PropTypes.oneOf(bpt)),
|
|
130
|
-
onBreakpoint: PropTypes.func
|
|
131
|
+
onBreakpoint: PropTypes.func,
|
|
132
|
+
'aria-label': PropTypes.string,
|
|
133
|
+
role: PropTypes.string
|
|
131
134
|
};
|
|
132
135
|
Sider.defaultProps = {
|
|
133
136
|
prefixCls: cssClasses.PREFIX
|
package/lib/es/layout/index.js
CHANGED
|
@@ -35,6 +35,8 @@ function generator(type) {
|
|
|
35
35
|
return BasicComponent => class Adapter extends React.PureComponent {
|
|
36
36
|
render() {
|
|
37
37
|
return /*#__PURE__*/React.createElement(BasicComponent, _Object$assign({
|
|
38
|
+
role: this.props.role,
|
|
39
|
+
"aria-label": this.props['aria-label'],
|
|
38
40
|
type: typeName,
|
|
39
41
|
tagName: tagName
|
|
40
42
|
}, this.props));
|
package/lib/es/list/item.js
CHANGED
package/lib/es/modal/Modal.js
CHANGED
|
@@ -75,6 +75,7 @@ class Modal extends BaseComponent {
|
|
|
75
75
|
return null;
|
|
76
76
|
} else {
|
|
77
77
|
return /*#__PURE__*/React.createElement(Button, _Object$assign({
|
|
78
|
+
"aria-label": "cancel",
|
|
78
79
|
onClick: this.handleCancel,
|
|
79
80
|
loading: cancelLoading,
|
|
80
81
|
type: "tertiary"
|
|
@@ -85,6 +86,7 @@ class Modal extends BaseComponent {
|
|
|
85
86
|
return /*#__PURE__*/React.createElement(LocaleConsumer, {
|
|
86
87
|
componentName: "Modal"
|
|
87
88
|
}, (locale, localeCode) => /*#__PURE__*/React.createElement("div", null, getCancelButton(locale), /*#__PURE__*/React.createElement(Button, _Object$assign({
|
|
89
|
+
"aria-label": "confirm",
|
|
88
90
|
type: okType,
|
|
89
91
|
theme: "solid",
|
|
90
92
|
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/es/modal/modalContentFoundation';
|
|
4
|
+
import ModalContentFoundation, { ModalContentAdapter, ModalContentProps, ModalContentState } from '@douyinfe/semi-foundation/lib/es/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;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _get from "lodash/get";
|
|
2
|
+
import _isFunction from "lodash/isFunction";
|
|
1
3
|
import _noop from "lodash/noop";
|
|
2
4
|
import _indexOfInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/index-of";
|
|
3
5
|
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
|
@@ -30,6 +32,7 @@ import BaseComponent from '../_base/baseComponent'; // eslint-disable-next-line
|
|
|
30
32
|
|
|
31
33
|
import ModalContentFoundation from '@douyinfe/semi-foundation/lib/es/modal/modalContentFoundation';
|
|
32
34
|
import { IconClose } from '@douyinfe/semi-icons';
|
|
35
|
+
import { getActiveElement } from '../_utils';
|
|
33
36
|
let uuid = 0;
|
|
34
37
|
export default class ModalContent extends BaseComponent {
|
|
35
38
|
constructor(props) {
|
|
@@ -89,6 +92,7 @@ export default class ModalContent extends BaseComponent {
|
|
|
89
92
|
if (closable) {
|
|
90
93
|
const iconType = closeIcon || /*#__PURE__*/React.createElement(IconClose, null);
|
|
91
94
|
closer = /*#__PURE__*/React.createElement(Button, {
|
|
95
|
+
"aria-label": "close",
|
|
92
96
|
className: "".concat(cssClasses.DIALOG, "-close"),
|
|
93
97
|
key: "close-btn",
|
|
94
98
|
onClick: this.close,
|
|
@@ -125,7 +129,8 @@ export default class ModalContent extends BaseComponent {
|
|
|
125
129
|
className: "".concat(cssClasses.DIALOG, "-header")
|
|
126
130
|
}, icon, /*#__PURE__*/React.createElement(Typography.Title, {
|
|
127
131
|
heading: 5,
|
|
128
|
-
className: "".concat(cssClasses.DIALOG, "-title")
|
|
132
|
+
className: "".concat(cssClasses.DIALOG, "-title"),
|
|
133
|
+
id: "".concat(cssClasses.DIALOG, "-title")
|
|
129
134
|
}, title), closer);
|
|
130
135
|
};
|
|
131
136
|
|
|
@@ -143,6 +148,7 @@ export default class ModalContent extends BaseComponent {
|
|
|
143
148
|
const hasHeader = title !== null && title !== undefined || 'header' in this.props;
|
|
144
149
|
return hasHeader ? /*#__PURE__*/React.createElement("div", {
|
|
145
150
|
className: bodyCls,
|
|
151
|
+
id: "".concat(cssClasses.DIALOG, "-body"),
|
|
146
152
|
style: bodyStyle
|
|
147
153
|
}, children) : /*#__PURE__*/React.createElement("div", {
|
|
148
154
|
className: "".concat(cssClasses.DIALOG, "-body-wrapper")
|
|
@@ -182,13 +188,21 @@ export default class ModalContent extends BaseComponent {
|
|
|
182
188
|
const footer = props.footer ? /*#__PURE__*/React.createElement("div", {
|
|
183
189
|
className: "".concat(cssClasses.DIALOG, "-footer")
|
|
184
190
|
}, props.footer) : null;
|
|
185
|
-
const dialogElement =
|
|
191
|
+
const dialogElement =
|
|
192
|
+
/*#__PURE__*/
|
|
193
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
194
|
+
React.createElement("div", {
|
|
186
195
|
key: "dialog-element",
|
|
187
196
|
className: digCls,
|
|
188
197
|
onMouseDown: this.onDialogMouseDown,
|
|
189
198
|
style: _Object$assign(_Object$assign({}, props.style), style),
|
|
190
199
|
id: this.dialogId
|
|
191
200
|
}, /*#__PURE__*/React.createElement("div", {
|
|
201
|
+
role: "dialog",
|
|
202
|
+
ref: this.modalDialogRef,
|
|
203
|
+
"aria-modal": "true",
|
|
204
|
+
"aria-labelledby": "".concat(cssClasses.DIALOG, "-title"),
|
|
205
|
+
"aria-describedby": "".concat(cssClasses.DIALOG, "-body"),
|
|
192
206
|
onAnimationEnd: props.onAnimationEnd,
|
|
193
207
|
className: cls(["".concat(cssClasses.DIALOG, "-content"), props.contentClassName, {
|
|
194
208
|
["".concat(cssClasses.DIALOG, "-content-fullScreen")]: props.isFullScreen
|
|
@@ -199,10 +213,12 @@ export default class ModalContent extends BaseComponent {
|
|
|
199
213
|
};
|
|
200
214
|
|
|
201
215
|
this.state = {
|
|
202
|
-
dialogMouseDown: false
|
|
216
|
+
dialogMouseDown: false,
|
|
217
|
+
prevFocusElement: getActiveElement()
|
|
203
218
|
};
|
|
204
219
|
this.foundation = new ModalContentFoundation(this.adapter);
|
|
205
220
|
this.dialogId = "dialog-".concat(uuid++);
|
|
221
|
+
this.modalDialogRef = /*#__PURE__*/React.createRef();
|
|
206
222
|
}
|
|
207
223
|
|
|
208
224
|
get adapter() {
|
|
@@ -239,12 +255,37 @@ export default class ModalContent extends BaseComponent {
|
|
|
239
255
|
document.removeEventListener('keydown', _bindInstanceProperty(_context3 = this.foundation.handleKeyDown).call(_context3, this.foundation));
|
|
240
256
|
}
|
|
241
257
|
},
|
|
242
|
-
getMouseState: () => this.state.dialogMouseDown
|
|
258
|
+
getMouseState: () => this.state.dialogMouseDown,
|
|
259
|
+
modalDialogFocus: () => {
|
|
260
|
+
let activeElementInDialog;
|
|
261
|
+
|
|
262
|
+
if (this.modalDialogRef) {
|
|
263
|
+
const activeElement = getActiveElement();
|
|
264
|
+
activeElementInDialog = this.modalDialogRef.current.contains(activeElement);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (!activeElementInDialog) {
|
|
268
|
+
this.modalDialogRef && this.modalDialogRef.current.focus();
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
modalDialogBlur: () => {
|
|
272
|
+
this.modalDialogRef && this.modalDialogRef.current.blur();
|
|
273
|
+
},
|
|
274
|
+
prevFocusElementReFocus: () => {
|
|
275
|
+
const {
|
|
276
|
+
prevFocusElement
|
|
277
|
+
} = this.state;
|
|
278
|
+
|
|
279
|
+
const focus = _get(prevFocusElement, 'focus');
|
|
280
|
+
|
|
281
|
+
_isFunction(focus) && prevFocusElement.focus();
|
|
282
|
+
}
|
|
243
283
|
});
|
|
244
284
|
}
|
|
245
285
|
|
|
246
286
|
componentDidMount() {
|
|
247
287
|
this.foundation.handleKeyDownEventListenerMount();
|
|
288
|
+
this.foundation.modalDialogFocus();
|
|
248
289
|
}
|
|
249
290
|
|
|
250
291
|
componentWillUnmount() {
|
|
@@ -272,7 +313,7 @@ export default class ModalContent extends BaseComponent {
|
|
|
272
313
|
const elem = /*#__PURE__*/React.createElement("div", {
|
|
273
314
|
className: classList
|
|
274
315
|
}, this.getMaskElement(), /*#__PURE__*/React.createElement("div", {
|
|
275
|
-
role: "
|
|
316
|
+
role: "none",
|
|
276
317
|
tabIndex: -1,
|
|
277
318
|
className: "".concat(cssClasses.DIALOG, "-wrap"),
|
|
278
319
|
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/es/navigation/itemFoundation';
|
|
4
|
+
import ItemFoundation, { ItemProps, SelectedItemProps, ItemAdapter } from '@douyinfe/semi-foundation/lib/es/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
|
}
|
|
@@ -45,6 +45,8 @@ export default class NavItem extends BaseComponent {
|
|
|
45
45
|
|
|
46
46
|
this.handleClick = e => this.foundation.handleClick(e);
|
|
47
47
|
|
|
48
|
+
this.handleKeyPress = e => this.foundation.handleKeyPress(e);
|
|
49
|
+
|
|
48
50
|
this.state = {
|
|
49
51
|
tooltipShow: false
|
|
50
52
|
};
|
|
@@ -103,12 +105,17 @@ export default class NavItem extends BaseComponent {
|
|
|
103
105
|
var _context;
|
|
104
106
|
|
|
105
107
|
return Boolean(this.context && this.context.selectedKeys && _includesInstanceProperty(_context = this.context.selectedKeys).call(_context, this.props.itemKey));
|
|
108
|
+
},
|
|
109
|
+
getIsOpen: () => {
|
|
110
|
+
var _context2;
|
|
111
|
+
|
|
112
|
+
return Boolean(this.context && this.context.openKeys && _includesInstanceProperty(_context2 = this.context.openKeys).call(_context2, this.props.itemKey));
|
|
106
113
|
}
|
|
107
114
|
});
|
|
108
115
|
}
|
|
109
116
|
|
|
110
117
|
renderIcon(icon, pos) {
|
|
111
|
-
var
|
|
118
|
+
var _context3;
|
|
112
119
|
|
|
113
120
|
let isToggleIcon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
114
121
|
|
|
@@ -127,7 +134,7 @@ export default class NavItem extends BaseComponent {
|
|
|
127
134
|
}
|
|
128
135
|
|
|
129
136
|
const className = cls("".concat(clsPrefix, "-icon"), {
|
|
130
|
-
[_concatInstanceProperty(
|
|
137
|
+
[_concatInstanceProperty(_context3 = "".concat(clsPrefix, "-icon-toggle-")).call(_context3, this.context.toggleIconPosition)]: isToggleIcon,
|
|
131
138
|
["".concat(clsPrefix, "-icon-info")]: !isToggleIcon
|
|
132
139
|
});
|
|
133
140
|
return /*#__PURE__*/React.createElement("i", {
|
|
@@ -215,14 +222,27 @@ export default class NavItem extends BaseComponent {
|
|
|
215
222
|
["".concat(clsPrefix, "-collapsed")]: isCollapsed,
|
|
216
223
|
["".concat(clsPrefix, "-disabled")]: disabled
|
|
217
224
|
});
|
|
218
|
-
|
|
225
|
+
const ariaProps = {
|
|
226
|
+
'aria-disabled': disabled
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
if (isSubNav) {
|
|
230
|
+
const isOpen = this.adapter.getIsOpen();
|
|
231
|
+
ariaProps['aria-expanded'] = isOpen;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
itemDom = /*#__PURE__*/React.createElement("li", _Object$assign({
|
|
235
|
+
role: "menuitem",
|
|
236
|
+
tabIndex: -1
|
|
237
|
+
}, ariaProps, {
|
|
219
238
|
style: style,
|
|
220
239
|
ref: this.setItemRef,
|
|
221
240
|
className: popoverItemCls,
|
|
222
241
|
onClick: this.handleClick,
|
|
223
242
|
onMouseEnter: onMouseEnter,
|
|
224
|
-
onMouseLeave: onMouseLeave
|
|
225
|
-
|
|
243
|
+
onMouseLeave: onMouseLeave,
|
|
244
|
+
onKeyPress: this.handleKeyPress
|
|
245
|
+
}), itemChildren);
|
|
226
246
|
} // Display Tooltip when disabled and SubNav
|
|
227
247
|
|
|
228
248
|
|
|
@@ -2,7 +2,7 @@ import BaseComponent, { BaseProps } from '../_base/baseComponent';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import '@douyinfe/semi-foundation/lib/es/navigation/navigation.css';
|
|
5
|
-
import { SubNavAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/subNavFoundation';
|
|
5
|
+
import SubNavFoundation, { SubNavAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/subNavFoundation';
|
|
6
6
|
export interface ToggleIcon {
|
|
7
7
|
open?: string;
|
|
8
8
|
closed?: string;
|
|
@@ -88,13 +88,15 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
|
|
|
88
88
|
};
|
|
89
89
|
titleRef: React.RefObject<HTMLDivElement>;
|
|
90
90
|
itemRef: React.RefObject<HTMLLIElement>;
|
|
91
|
+
foundation: SubNavFoundation;
|
|
91
92
|
constructor(props: SubNavProps);
|
|
92
93
|
setItemRef: (ref: HTMLLIElement | React.RefObject<HTMLLIElement>) => void;
|
|
93
94
|
setTitleRef: (ref: HTMLDivElement | React.RefObject<HTMLDivElement>) => void;
|
|
94
95
|
_invokeContextFunc(funcName: string, ...args: any[]): any;
|
|
95
96
|
get adapter(): SubNavAdapter<SubNavProps, SubNavState>;
|
|
96
97
|
handleClick: (e: React.MouseEvent) => void;
|
|
97
|
-
|
|
98
|
+
handleKeyPress: (e: React.KeyboardEvent) => void;
|
|
99
|
+
handleDropdownVisible: (visible: boolean) => void;
|
|
98
100
|
renderIcon(icon: React.ReactNode, pos: string, withTransition?: boolean, isToggleIcon?: boolean, key?: number | string): JSX.Element;
|
|
99
101
|
renderTitleDiv(): JSX.Element;
|
|
100
102
|
renderSubUl(): JSX.Element;
|