@douyinfe/semi-ui 2.2.0-beta.1 → 2.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_base/_story/a11y.jsx +6 -6
- package/_utils/hooks/usePrevFocus.ts +16 -0
- package/_utils/index.ts +4 -0
- package/anchor/_story/anchor.stories.js +1 -1
- package/anchor/index.tsx +5 -2
- package/anchor/link.tsx +29 -4
- package/autoComplete/index.tsx +28 -1
- package/avatar/_story/avatar.stories.js +4 -4
- package/avatar/avatarGroup.tsx +1 -1
- package/avatar/index.tsx +10 -4
- package/banner/index.tsx +2 -1
- package/breadcrumb/_story/breadcrumb.stories.js +22 -8
- package/breadcrumb/index.tsx +8 -1
- package/breadcrumb/item.tsx +1 -1
- package/button/Button.tsx +4 -0
- package/button/__test__/button.test.js +1 -1
- package/button/_story/button.stories.js +10 -10
- package/button/buttonGroup.tsx +4 -2
- package/button/splitButtonGroup.tsx +5 -2
- package/card/_story/card.stories.js +8 -1
- package/card/_story/card.stories.tsx +3 -0
- package/card/index.tsx +5 -2
- package/cascader/index.tsx +33 -5
- package/checkbox/_story/checkbox.stories.js +21 -14
- package/checkbox/checkbox.tsx +40 -5
- package/checkbox/checkboxGroup.tsx +30 -5
- package/checkbox/checkboxInner.tsx +25 -2
- package/collapse/index.tsx +2 -2
- package/collapse/item.tsx +15 -8
- package/collapsible/index.tsx +4 -2
- package/configProvider/_story/configProvider.stories.tsx +27 -0
- package/datePicker/__test__/datePicker.test.js +108 -0
- package/datePicker/_story/datePicker.stories.js +146 -2
- package/datePicker/datePicker.tsx +24 -0
- package/datePicker/monthsGrid.tsx +2 -1
- package/dist/css/semi.css +34 -7
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2785 -1508
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/dropdown/dropdownItem.tsx +1 -1
- package/dropdown/dropdownMenu.tsx +1 -1
- package/empty/index.tsx +5 -5
- package/form/_story/FormApi/formApiDemo.jsx +3 -2
- package/form/_story/Validate/validateDemo.jsx +1 -1
- package/form/_story/demo.jsx +12 -3
- package/form/_story/form.stories.js +0 -7
- package/form/baseForm.tsx +2 -0
- package/form/errorMessage.tsx +13 -2
- package/form/hoc/withField.tsx +37 -8
- package/form/index.tsx +0 -2
- package/form/interface.ts +2 -0
- package/form/label.tsx +4 -2
- package/input/index.tsx +49 -4
- package/input/inputGroup.tsx +9 -4
- package/input/textarea.tsx +25 -6
- package/inputNumber/_story/inputNumber.stories.js +12 -0
- package/inputNumber/index.tsx +33 -2
- package/layout/Sider.tsx +6 -2
- package/layout/index.tsx +4 -3
- package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +6 -1
- package/lib/cjs/anchor/index.d.ts +2 -0
- package/lib/cjs/anchor/index.js +6 -1
- package/lib/cjs/anchor/link.d.ts +4 -1
- package/lib/cjs/anchor/link.js +39 -5
- package/lib/cjs/autoComplete/index.d.ts +17 -0
- package/lib/cjs/autoComplete/index.js +21 -2
- package/lib/cjs/avatar/avatarGroup.js +2 -1
- package/lib/cjs/avatar/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +20 -11
- package/lib/cjs/banner/index.js +4 -2
- package/lib/cjs/breadcrumb/index.d.ts +3 -0
- package/lib/cjs/breadcrumb/index.js +10 -4
- package/lib/cjs/breadcrumb/item.js +2 -2
- package/lib/cjs/button/Button.d.ts +2 -0
- package/lib/cjs/button/Button.js +4 -2
- package/lib/cjs/button/buttonGroup.d.ts +3 -0
- package/lib/cjs/button/buttonGroup.js +8 -4
- package/lib/cjs/button/index.d.ts +1 -0
- package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
- package/lib/cjs/button/splitButtonGroup.js +5 -2
- package/lib/cjs/card/index.d.ts +3 -0
- package/lib/cjs/card/index.js +3 -1
- package/lib/cjs/cascader/index.d.ts +14 -0
- package/lib/cjs/cascader/index.js +35 -7
- package/lib/cjs/checkbox/checkbox.d.ts +21 -1
- package/lib/cjs/checkbox/checkbox.js +51 -17
- package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/cjs/checkbox/checkboxGroup.js +16 -3
- package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
- package/lib/cjs/checkbox/checkboxInner.js +20 -3
- package/lib/cjs/collapse/index.js +2 -1
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +17 -3
- package/lib/cjs/collapsible/index.d.ts +1 -0
- package/lib/cjs/collapsible/index.js +4 -2
- package/lib/cjs/datePicker/datePicker.d.ts +12 -0
- package/lib/cjs/datePicker/datePicker.js +22 -3
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
- package/lib/cjs/datePicker/monthsGrid.js +2 -1
- package/lib/cjs/dropdown/dropdownItem.js +3 -1
- package/lib/cjs/dropdown/dropdownMenu.js +4 -1
- package/lib/cjs/empty/index.js +2 -1
- package/lib/cjs/form/baseForm.d.ts +9 -0
- package/lib/cjs/form/baseForm.js +3 -1
- package/lib/cjs/form/errorMessage.d.ts +4 -0
- package/lib/cjs/form/errorMessage.js +21 -3
- package/lib/cjs/form/field.d.ts +7 -0
- package/lib/cjs/form/hoc/withField.js +49 -16
- package/lib/cjs/form/index.d.ts +0 -1
- package/lib/cjs/form/interface.d.ts +2 -0
- package/lib/cjs/form/label.d.ts +2 -0
- package/lib/cjs/form/label.js +5 -2
- package/lib/cjs/input/index.d.ts +16 -0
- package/lib/cjs/input/index.js +51 -15
- package/lib/cjs/input/inputGroup.d.ts +2 -1
- package/lib/cjs/input/inputGroup.js +11 -1
- package/lib/cjs/input/textarea.js +12 -1
- package/lib/cjs/inputNumber/index.d.ts +21 -12
- package/lib/cjs/inputNumber/index.js +37 -3
- package/lib/cjs/layout/Sider.d.ts +4 -0
- package/lib/cjs/layout/Sider.js +4 -1
- package/lib/cjs/layout/index.js +2 -0
- package/lib/cjs/list/item.js +0 -1
- package/lib/cjs/modal/Modal.js +2 -0
- package/lib/cjs/modal/ModalContent.d.ts +3 -1
- package/lib/cjs/modal/ModalContent.js +47 -5
- package/lib/cjs/navigation/Item.d.ts +4 -2
- package/lib/cjs/navigation/Item.js +25 -5
- package/lib/cjs/navigation/SubNav.d.ts +4 -2
- package/lib/cjs/navigation/SubNav.js +8 -1
- package/lib/cjs/navigation/index.js +2 -0
- package/lib/cjs/notification/notice.d.ts +1 -1
- package/lib/cjs/notification/notice.js +32 -22
- package/lib/cjs/pagination/index.js +16 -6
- package/lib/cjs/popover/index.js +7 -3
- package/lib/cjs/progress/index.d.ts +8 -0
- package/lib/cjs/progress/index.js +42 -9
- package/lib/cjs/radio/radio.d.ts +6 -1
- package/lib/cjs/radio/radio.js +17 -5
- package/lib/cjs/radio/radioGroup.d.ts +16 -1
- package/lib/cjs/radio/radioGroup.js +18 -3
- package/lib/cjs/radio/radioInner.d.ts +6 -1
- package/lib/cjs/radio/radioInner.js +11 -3
- package/lib/cjs/rating/index.d.ts +14 -0
- package/lib/cjs/rating/index.js +14 -3
- package/lib/cjs/rating/item.d.ts +2 -0
- package/lib/cjs/rating/item.js +6 -1
- package/lib/cjs/select/index.d.ts +16 -0
- package/lib/cjs/select/index.js +65 -19
- package/lib/cjs/select/option.js +28 -22
- package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
- package/lib/cjs/sideSheet/index.d.ts +1 -0
- package/lib/cjs/sideSheet/index.js +2 -1
- package/lib/cjs/slider/index.d.ts +2 -1
- package/lib/cjs/slider/index.js +64 -17
- package/lib/cjs/spin/icon.js +2 -4
- package/lib/cjs/steps/basicStep.d.ts +3 -0
- package/lib/cjs/steps/basicStep.js +23 -25
- package/lib/cjs/steps/basicSteps.d.ts +1 -0
- package/lib/cjs/steps/basicSteps.js +2 -1
- package/lib/cjs/steps/fillStep.d.ts +3 -0
- package/lib/cjs/steps/fillStep.js +19 -4
- package/lib/cjs/steps/fillSteps.d.ts +1 -0
- package/lib/cjs/steps/fillSteps.js +2 -1
- package/lib/cjs/steps/navStep.d.ts +3 -0
- package/lib/cjs/steps/navStep.js +22 -25
- package/lib/cjs/steps/navSteps.d.ts +1 -0
- package/lib/cjs/steps/navSteps.js +2 -1
- package/lib/cjs/switch/index.d.ts +12 -0
- package/lib/cjs/switch/index.js +19 -4
- package/lib/cjs/table/Body/BaseRow.js +35 -3
- package/lib/cjs/table/Body/index.js +9 -1
- package/lib/cjs/table/ColumnFilter.js +4 -0
- package/lib/cjs/table/ColumnSelection.d.ts +3 -0
- package/lib/cjs/table/ColumnSelection.js +6 -2
- package/lib/cjs/table/ColumnSorter.js +19 -3
- package/lib/cjs/table/CustomExpandIcon.js +7 -1
- package/lib/cjs/table/Table.d.ts +2 -0
- package/lib/cjs/table/Table.js +31 -15
- package/lib/cjs/table/TableCell.d.ts +2 -0
- package/lib/cjs/table/TableCell.js +6 -2
- package/lib/cjs/table/TableHeaderRow.js +8 -2
- package/lib/cjs/tabs/TabBar.js +11 -3
- package/lib/cjs/tabs/TabPane.js +3 -1
- package/lib/cjs/tabs/index.js +3 -8
- package/lib/cjs/tagInput/index.d.ts +4 -1
- package/lib/cjs/tagInput/index.js +29 -3
- package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
- package/lib/cjs/timePicker/TimePicker.js +9 -1
- package/lib/cjs/timePicker/index.d.ts +6 -0
- package/lib/cjs/timeline/index.d.ts +1 -1
- package/lib/cjs/timeline/index.js +1 -0
- package/lib/cjs/timeline/item.js +4 -2
- package/lib/cjs/toast/toast.js +2 -0
- package/lib/cjs/tooltip/TriangleArrow.js +1 -0
- package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/cjs/tooltip/index.d.ts +16 -12
- package/lib/cjs/tooltip/index.js +55 -39
- package/lib/cjs/transfer/index.d.ts +1 -1
- package/lib/cjs/transfer/index.js +35 -17
- package/lib/cjs/tree/index.d.ts +1 -0
- package/lib/cjs/tree/index.js +15 -6
- package/lib/cjs/tree/treeNode.d.ts +12 -4
- package/lib/cjs/tree/treeNode.js +44 -4
- package/lib/cjs/treeSelect/index.d.ts +16 -0
- package/lib/cjs/treeSelect/index.js +60 -12
- package/lib/cjs/typography/base.js +18 -7
- package/lib/cjs/typography/copyable.js +6 -1
- package/lib/cjs/upload/fileCard.js +23 -4
- package/lib/cjs/upload/index.js +19 -4
- package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +4 -1
- package/lib/es/anchor/index.d.ts +2 -0
- package/lib/es/anchor/index.js +6 -1
- package/lib/es/anchor/link.d.ts +4 -1
- package/lib/es/anchor/link.js +38 -5
- package/lib/es/autoComplete/index.d.ts +17 -0
- package/lib/es/autoComplete/index.js +21 -2
- package/lib/es/avatar/avatarGroup.js +2 -1
- package/lib/es/avatar/index.d.ts +4 -3
- package/lib/es/avatar/index.js +20 -11
- package/lib/es/banner/index.js +4 -2
- package/lib/es/breadcrumb/index.d.ts +3 -0
- package/lib/es/breadcrumb/index.js +10 -4
- package/lib/es/breadcrumb/item.js +2 -2
- package/lib/es/button/Button.d.ts +2 -0
- package/lib/es/button/Button.js +4 -2
- package/lib/es/button/buttonGroup.d.ts +3 -0
- package/lib/es/button/buttonGroup.js +8 -4
- package/lib/es/button/index.d.ts +1 -0
- package/lib/es/button/splitButtonGroup.d.ts +3 -0
- package/lib/es/button/splitButtonGroup.js +5 -2
- package/lib/es/card/index.d.ts +3 -0
- package/lib/es/card/index.js +3 -1
- package/lib/es/cascader/index.d.ts +14 -0
- package/lib/es/cascader/index.js +35 -7
- package/lib/es/checkbox/checkbox.d.ts +21 -1
- package/lib/es/checkbox/checkbox.js +50 -17
- package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/es/checkbox/checkboxGroup.js +18 -5
- package/lib/es/checkbox/checkboxInner.d.ts +15 -0
- package/lib/es/checkbox/checkboxInner.js +20 -3
- package/lib/es/collapse/index.js +2 -1
- package/lib/es/collapse/item.d.ts +2 -1
- package/lib/es/collapse/item.js +16 -3
- package/lib/es/collapsible/index.d.ts +1 -0
- package/lib/es/collapsible/index.js +4 -2
- package/lib/es/datePicker/datePicker.d.ts +12 -0
- package/lib/es/datePicker/datePicker.js +22 -3
- package/lib/es/datePicker/monthsGrid.d.ts +1 -0
- package/lib/es/datePicker/monthsGrid.js +2 -1
- package/lib/es/dropdown/dropdownItem.js +3 -1
- package/lib/es/dropdown/dropdownMenu.js +4 -1
- package/lib/es/empty/index.js +2 -1
- package/lib/es/form/baseForm.d.ts +9 -0
- package/lib/es/form/baseForm.js +3 -1
- package/lib/es/form/errorMessage.d.ts +4 -0
- package/lib/es/form/errorMessage.js +21 -3
- package/lib/es/form/field.d.ts +7 -0
- package/lib/es/form/hoc/withField.js +48 -15
- package/lib/es/form/index.d.ts +0 -1
- package/lib/es/form/index.js +0 -1
- package/lib/es/form/interface.d.ts +2 -0
- package/lib/es/form/label.d.ts +2 -0
- package/lib/es/form/label.js +5 -2
- package/lib/es/input/index.d.ts +16 -0
- package/lib/es/input/index.js +51 -15
- package/lib/es/input/inputGroup.d.ts +2 -1
- package/lib/es/input/inputGroup.js +11 -1
- package/lib/es/input/textarea.js +12 -1
- package/lib/es/inputNumber/index.d.ts +21 -12
- package/lib/es/inputNumber/index.js +38 -3
- package/lib/es/layout/Sider.d.ts +4 -0
- package/lib/es/layout/Sider.js +4 -1
- package/lib/es/layout/index.js +2 -0
- package/lib/es/list/item.js +0 -1
- package/lib/es/modal/Modal.js +2 -0
- package/lib/es/modal/ModalContent.d.ts +3 -1
- package/lib/es/modal/ModalContent.js +46 -5
- package/lib/es/navigation/Item.d.ts +4 -2
- package/lib/es/navigation/Item.js +25 -5
- package/lib/es/navigation/SubNav.d.ts +4 -2
- package/lib/es/navigation/SubNav.js +8 -1
- package/lib/es/navigation/index.js +2 -0
- package/lib/es/notification/notice.d.ts +1 -1
- package/lib/es/notification/notice.js +33 -24
- package/lib/es/pagination/index.js +16 -6
- package/lib/es/popover/index.js +7 -3
- package/lib/es/progress/index.d.ts +8 -0
- package/lib/es/progress/index.js +42 -9
- package/lib/es/radio/radio.d.ts +6 -1
- package/lib/es/radio/radio.js +16 -5
- package/lib/es/radio/radioGroup.d.ts +16 -1
- package/lib/es/radio/radioGroup.js +18 -3
- package/lib/es/radio/radioInner.d.ts +6 -1
- package/lib/es/radio/radioInner.js +11 -3
- package/lib/es/rating/index.d.ts +14 -0
- package/lib/es/rating/index.js +14 -3
- package/lib/es/rating/item.d.ts +2 -0
- package/lib/es/rating/item.js +6 -1
- package/lib/es/select/index.d.ts +16 -0
- package/lib/es/select/index.js +63 -17
- package/lib/es/select/option.js +28 -22
- package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
- package/lib/es/sideSheet/SideSheetContent.js +12 -5
- package/lib/es/sideSheet/index.d.ts +1 -0
- package/lib/es/sideSheet/index.js +2 -1
- package/lib/es/slider/index.d.ts +2 -1
- package/lib/es/slider/index.js +63 -16
- package/lib/es/spin/icon.js +2 -4
- package/lib/es/steps/basicStep.d.ts +3 -0
- package/lib/es/steps/basicStep.js +23 -23
- package/lib/es/steps/basicSteps.d.ts +1 -0
- package/lib/es/steps/basicSteps.js +2 -1
- package/lib/es/steps/fillStep.d.ts +3 -0
- package/lib/es/steps/fillStep.js +19 -4
- package/lib/es/steps/fillSteps.d.ts +1 -0
- package/lib/es/steps/fillSteps.js +2 -1
- package/lib/es/steps/navStep.d.ts +3 -0
- package/lib/es/steps/navStep.js +22 -23
- package/lib/es/steps/navSteps.d.ts +1 -0
- package/lib/es/steps/navSteps.js +2 -1
- package/lib/es/switch/index.d.ts +12 -0
- package/lib/es/switch/index.js +19 -4
- package/lib/es/table/Body/BaseRow.js +35 -3
- package/lib/es/table/Body/index.js +9 -2
- package/lib/es/table/ColumnFilter.js +4 -0
- package/lib/es/table/ColumnSelection.d.ts +3 -0
- package/lib/es/table/ColumnSelection.js +6 -2
- package/lib/es/table/ColumnSorter.js +17 -3
- package/lib/es/table/CustomExpandIcon.js +6 -1
- package/lib/es/table/Table.d.ts +2 -0
- package/lib/es/table/Table.js +31 -15
- package/lib/es/table/TableCell.d.ts +2 -0
- package/lib/es/table/TableCell.js +6 -2
- package/lib/es/table/TableHeaderRow.js +8 -2
- package/lib/es/tabs/TabBar.js +11 -3
- package/lib/es/tabs/TabPane.js +3 -1
- package/lib/es/tabs/index.js +1 -6
- package/lib/es/tagInput/index.d.ts +4 -1
- package/lib/es/tagInput/index.js +29 -3
- package/lib/es/timePicker/TimePicker.d.ts +12 -0
- package/lib/es/timePicker/TimePicker.js +9 -1
- package/lib/es/timePicker/index.d.ts +6 -0
- package/lib/es/timeline/index.d.ts +1 -1
- package/lib/es/timeline/index.js +1 -0
- package/lib/es/timeline/item.js +4 -2
- package/lib/es/toast/toast.js +2 -0
- package/lib/es/tooltip/TriangleArrow.js +1 -0
- package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
- package/lib/es/tooltip/index.d.ts +16 -12
- package/lib/es/tooltip/index.js +53 -39
- package/lib/es/transfer/index.d.ts +1 -1
- package/lib/es/transfer/index.js +35 -17
- package/lib/es/tree/index.d.ts +1 -0
- package/lib/es/tree/index.js +15 -6
- package/lib/es/tree/treeNode.d.ts +12 -4
- package/lib/es/tree/treeNode.js +44 -4
- package/lib/es/treeSelect/index.d.ts +16 -0
- package/lib/es/treeSelect/index.js +57 -10
- package/lib/es/typography/base.js +17 -7
- package/lib/es/typography/copyable.js +5 -1
- package/lib/es/upload/fileCard.js +23 -4
- package/lib/es/upload/index.js +19 -4
- package/list/item.tsx +0 -1
- package/modal/Modal.tsx +2 -0
- package/modal/ModalContent.tsx +35 -5
- package/navigation/Item.tsx +15 -0
- package/navigation/SubNav.tsx +13 -1
- package/navigation/index.tsx +1 -1
- package/notification/notice.tsx +19 -14
- package/package.json +8 -8
- package/pagination/index.tsx +9 -5
- package/popover/index.tsx +5 -0
- package/progress/_story/progress.stories.js +18 -18
- package/progress/index.tsx +58 -20
- package/radio/radio.tsx +12 -2
- package/radio/radioGroup.tsx +29 -3
- package/radio/radioInner.tsx +10 -1
- package/rating/index.tsx +19 -2
- package/rating/item.tsx +6 -0
- package/select/__test__/select.test.js +45 -0
- package/select/_story/select.stories.js +29 -0
- package/select/index.tsx +52 -4
- package/select/option.tsx +3 -0
- package/sideSheet/SideSheetContent.tsx +13 -9
- package/sideSheet/index.tsx +3 -2
- package/slider/__test__/slider.test.js +9 -0
- package/slider/_story/slider.stories.js +1 -1
- package/slider/index.tsx +44 -7
- package/spin/icon.tsx +3 -3
- package/steps/basicStep.tsx +15 -4
- package/steps/basicSteps.tsx +3 -2
- package/steps/fillStep.tsx +27 -12
- package/steps/fillSteps.tsx +2 -0
- package/steps/navStep.tsx +15 -4
- package/steps/navSteps.tsx +3 -2
- package/switch/_story/switch.stories.js +20 -19
- package/switch/_story/switch.stories.tsx +13 -13
- package/switch/index.tsx +23 -5
- package/table/Body/BaseRow.tsx +25 -1
- package/table/Body/index.tsx +7 -2
- package/table/ColumnFilter.tsx +7 -1
- package/table/ColumnSelection.tsx +4 -1
- package/table/ColumnSorter.tsx +18 -1
- package/table/CustomExpandIcon.tsx +5 -0
- package/table/Table.tsx +26 -13
- package/table/TableCell.tsx +11 -1
- package/table/TableHeaderRow.tsx +16 -2
- package/table/__test__/table.test.js +46 -0
- package/tabs/TabBar.tsx +8 -5
- package/tabs/TabPane.tsx +3 -1
- package/tabs/index.tsx +1 -2
- package/tagInput/__test__/tagInput.test.js +46 -0
- package/tagInput/_story/tagInput.stories.js +2 -2
- package/tagInput/index.tsx +31 -8
- package/timePicker/TimePicker.tsx +14 -1
- package/timeline/_story/timeline.stories.js +1 -1
- package/timeline/index.tsx +2 -2
- package/timeline/item.tsx +2 -1
- package/toast/toast.tsx +2 -0
- package/tooltip/TriangleArrow.tsx +1 -1
- package/tooltip/TriangleArrowVertical.tsx +1 -1
- package/tooltip/_story/tooltip.stories.js +562 -514
- package/tooltip/index.tsx +50 -33
- package/transfer/index.tsx +32 -28
- package/tree/_story/tree.stories.js +3 -3
- package/tree/index.tsx +10 -2
- package/tree/treeNode.tsx +46 -10
- package/treeSelect/__test__/treeMultiple.test.js +5 -0
- package/treeSelect/_story/treeSelect.stories.js +12 -0
- package/treeSelect/index.tsx +58 -7
- package/typography/base.tsx +7 -1
- package/typography/copyable.tsx +10 -1
- package/upload/fileCard.tsx +13 -15
- package/upload/index.tsx +10 -6
|
@@ -97,6 +97,7 @@ function withField(Component, opts) {
|
|
|
97
97
|
extraText,
|
|
98
98
|
extraTextPosition,
|
|
99
99
|
pure,
|
|
100
|
+
id,
|
|
100
101
|
rest
|
|
101
102
|
} = (0, _utils.mergeProps)(props);
|
|
102
103
|
let {
|
|
@@ -429,25 +430,61 @@ function withField(Component, opts) {
|
|
|
429
430
|
let mergeLabelAlign = labelAlign || formProps.labelAlign;
|
|
430
431
|
let mergeLabelCol = labelCol || formProps.labelCol;
|
|
431
432
|
let mergeWrapperCol = wrapperCol || formProps.wrapperCol;
|
|
432
|
-
let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom';
|
|
433
|
+
let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom'; // id attribute to improve a11y
|
|
434
|
+
|
|
435
|
+
const a11yId = id ? id : field;
|
|
436
|
+
const labelId = "".concat(a11yId, "-label");
|
|
437
|
+
const helpTextId = "".concat(a11yId, "-helpText");
|
|
438
|
+
const extraTextId = "".concat(a11yId, "-extraText");
|
|
439
|
+
const errorMessageId = "".concat(a11yId, "-errormessage");
|
|
433
440
|
|
|
434
441
|
let FieldComponent = (() => {
|
|
435
|
-
var
|
|
442
|
+
var _context3, _context5;
|
|
436
443
|
|
|
437
444
|
// prefer to use validateStatus which pass by user throught props
|
|
438
445
|
let blockStatus = validateStatus ? validateStatus : status;
|
|
446
|
+
const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
|
|
447
|
+
["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
|
|
448
|
+
["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
|
|
449
|
+
["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
|
|
450
|
+
});
|
|
451
|
+
const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
|
|
452
|
+
className: extraCls,
|
|
453
|
+
id: extraTextId
|
|
454
|
+
}, extraText) : null;
|
|
439
455
|
let newProps = (0, _assign.default)((0, _assign.default)({
|
|
456
|
+
id: a11yId,
|
|
440
457
|
disabled: formProps.disabled
|
|
441
458
|
}, rest), {
|
|
442
459
|
ref,
|
|
443
460
|
onBlur: handleBlur,
|
|
444
461
|
[options.onKeyChangeFnName]: handleChange,
|
|
445
462
|
[options.valueKey]: value,
|
|
446
|
-
validateStatus: blockStatus
|
|
463
|
+
validateStatus: blockStatus,
|
|
464
|
+
'aria-required': required,
|
|
465
|
+
'aria-labelledby': labelId
|
|
447
466
|
});
|
|
467
|
+
|
|
468
|
+
if (helpText) {
|
|
469
|
+
var _context;
|
|
470
|
+
|
|
471
|
+
newProps['aria-describedby'] = extraText ? (0, _concat.default)(_context = "".concat(helpTextId, " ")).call(_context, extraTextId) : helpTextId;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if (extraText) {
|
|
475
|
+
var _context2;
|
|
476
|
+
|
|
477
|
+
newProps['aria-describedby'] = helpText ? (0, _concat.default)(_context2 = "".concat(helpTextId, " ")).call(_context2, extraTextId) : extraTextId;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if (status === 'error') {
|
|
481
|
+
newProps['aria-errormessage'] = errorMessageId;
|
|
482
|
+
newProps['aria-invalid'] = true;
|
|
483
|
+
}
|
|
484
|
+
|
|
448
485
|
const fieldCls = (0, _classnames.default)({
|
|
449
486
|
["".concat(prefix, "-field")]: true,
|
|
450
|
-
[(0, _concat.default)(
|
|
487
|
+
[(0, _concat.default)(_context3 = "".concat(prefix, "-field-")).call(_context3, name)]: Boolean(name),
|
|
451
488
|
[fieldClassName]: Boolean(fieldClassName)
|
|
452
489
|
});
|
|
453
490
|
const fieldMaincls = (0, _classnames.default)({
|
|
@@ -456,9 +493,11 @@ function withField(Component, opts) {
|
|
|
456
493
|
|
|
457
494
|
if (mergeLabelPos === 'inset' && !noLabel) {
|
|
458
495
|
newProps.insetLabel = label || field;
|
|
496
|
+
newProps.insetLabelId = labelId;
|
|
459
497
|
|
|
460
498
|
if (typeof label === 'object' && !(0, _reactUtils.isElement)(label)) {
|
|
461
499
|
newProps.insetLabel = label.text;
|
|
500
|
+
newProps.insetLabelId = labelId;
|
|
462
501
|
}
|
|
463
502
|
}
|
|
464
503
|
|
|
@@ -470,11 +509,11 @@ function withField(Component, opts) {
|
|
|
470
509
|
}
|
|
471
510
|
|
|
472
511
|
if (pure) {
|
|
473
|
-
var
|
|
512
|
+
var _context4;
|
|
474
513
|
|
|
475
514
|
let pureCls = (0, _classnames.default)(rest.className, {
|
|
476
515
|
["".concat(prefix, "-field-pure")]: true,
|
|
477
|
-
[(0, _concat.default)(
|
|
516
|
+
[(0, _concat.default)(_context4 = "".concat(prefix, "-field-")).call(_context4, name)]: Boolean(name),
|
|
478
517
|
[fieldClassName]: Boolean(fieldClassName)
|
|
479
518
|
});
|
|
480
519
|
newProps.className = pureCls;
|
|
@@ -482,7 +521,7 @@ function withField(Component, opts) {
|
|
|
482
521
|
}
|
|
483
522
|
|
|
484
523
|
let withCol = mergeLabelCol && mergeWrapperCol;
|
|
485
|
-
const labelColCls = mergeLabelAlign ? (0, _concat.default)(
|
|
524
|
+
const labelColCls = mergeLabelAlign ? (0, _concat.default)(_context5 = "".concat(prefix, "-col-")).call(_context5, mergeLabelAlign) : ''; // get label
|
|
486
525
|
|
|
487
526
|
let labelContent = null;
|
|
488
527
|
|
|
@@ -490,6 +529,7 @@ function withField(Component, opts) {
|
|
|
490
529
|
let needSpread = typeof label === 'object' && !(0, _reactUtils.isElement)(label) ? label : {};
|
|
491
530
|
labelContent = /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
|
|
492
531
|
text: label || field,
|
|
532
|
+
id: labelId,
|
|
493
533
|
required: required,
|
|
494
534
|
name: name || field,
|
|
495
535
|
width: mergeLabelWidth,
|
|
@@ -497,21 +537,14 @@ function withField(Component, opts) {
|
|
|
497
537
|
}, needSpread));
|
|
498
538
|
}
|
|
499
539
|
|
|
500
|
-
const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
|
|
501
|
-
["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
|
|
502
|
-
["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
|
|
503
|
-
["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
|
|
504
|
-
});
|
|
505
|
-
const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
|
|
506
|
-
className: extraCls
|
|
507
|
-
}, extraText) : null;
|
|
508
|
-
|
|
509
540
|
const fieldMainContent = /*#__PURE__*/_react.default.createElement("div", {
|
|
510
541
|
className: fieldMaincls
|
|
511
542
|
}, mergeExtraPos === 'middle' ? extraContent : null, com, !noErrorMessage ? /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
|
|
512
543
|
error: error,
|
|
513
544
|
validateStatus: blockStatus,
|
|
514
545
|
helpText: helpText,
|
|
546
|
+
helpTextId: helpTextId,
|
|
547
|
+
errorMessageId: errorMessageId,
|
|
515
548
|
showValidateIcon: formProps.showValidateIcon
|
|
516
549
|
}) : null, mergeExtraPos === 'bottom' ? extraContent : null);
|
|
517
550
|
|
package/lib/cjs/form/index.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ import { useFormApi, useFormState, useFieldState, useFieldApi } from './hooks/in
|
|
|
11
11
|
import withField from './hoc/withField';
|
|
12
12
|
import withFormState from './hoc/withFormState';
|
|
13
13
|
import withFormApi from './hoc/withFormApi';
|
|
14
|
-
export * from './interface';
|
|
15
14
|
export { Form, ArrayField, withField, useFormApi, useFormState, useFieldApi, useFieldState, withFormState, withFormApi };
|
|
16
15
|
export * from './interface';
|
|
17
16
|
export { ArrayFieldProps } from './arrayField';
|
|
@@ -82,6 +82,7 @@ export interface FormFCChild<K extends Record<string, any> = any> {
|
|
|
82
82
|
formApi: FormApi<K>;
|
|
83
83
|
}
|
|
84
84
|
export interface BaseFormProps {
|
|
85
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
85
86
|
onSubmit?: (values: Record<string, any>) => void;
|
|
86
87
|
onSubmitFail?: (errors: Record<string, FieldError>, values: any) => void;
|
|
87
88
|
onReset?: () => void;
|
|
@@ -90,6 +91,7 @@ export interface BaseFormProps {
|
|
|
90
91
|
validateFields?: (values: Record<string, any>) => string | Record<string, any>;
|
|
91
92
|
/** Use this if you want to populate the form with initial values. */
|
|
92
93
|
initValues?: Record<string, any>;
|
|
94
|
+
id?: string;
|
|
93
95
|
/** getFormApi will be call once when Form mounted, u can save formApi reference in your component */
|
|
94
96
|
getFormApi?: (formApi: FormApi) => void;
|
|
95
97
|
style?: React.CSSProperties;
|
package/lib/cjs/form/label.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
export interface LabelProps {
|
|
4
|
+
id?: string;
|
|
4
5
|
/** Whether to display the required * symbol */
|
|
5
6
|
required?: boolean;
|
|
6
7
|
/** Content of label */
|
|
@@ -24,6 +25,7 @@ export default class Label extends PureComponent<LabelProps> {
|
|
|
24
25
|
className: string;
|
|
25
26
|
};
|
|
26
27
|
static propTypes: {
|
|
28
|
+
id: PropTypes.Requireable<string>;
|
|
27
29
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
28
30
|
required: PropTypes.Requireable<boolean>;
|
|
29
31
|
text: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
package/lib/cjs/form/label.js
CHANGED
|
@@ -40,7 +40,8 @@ class Label extends _react.PureComponent {
|
|
|
40
40
|
align,
|
|
41
41
|
style,
|
|
42
42
|
className,
|
|
43
|
-
extra
|
|
43
|
+
extra,
|
|
44
|
+
id
|
|
44
45
|
} = this.props;
|
|
45
46
|
const labelCls = (0, _classnames.default)(className, {
|
|
46
47
|
["".concat(prefixCls, "-field-label")]: true,
|
|
@@ -64,7 +65,8 @@ class Label extends _react.PureComponent {
|
|
|
64
65
|
return /*#__PURE__*/_react.default.createElement("label", {
|
|
65
66
|
className: labelCls,
|
|
66
67
|
htmlFor: name,
|
|
67
|
-
style: labelStyle
|
|
68
|
+
style: labelStyle,
|
|
69
|
+
id: id
|
|
68
70
|
}, extra ? contentWithExtra : textContent);
|
|
69
71
|
}
|
|
70
72
|
|
|
@@ -78,6 +80,7 @@ Label.defaultProps = {
|
|
|
78
80
|
className: ''
|
|
79
81
|
};
|
|
80
82
|
Label.propTypes = {
|
|
83
|
+
id: _propTypes.default.string,
|
|
81
84
|
children: _propTypes.default.node,
|
|
82
85
|
required: _propTypes.default.bool,
|
|
83
86
|
text: _propTypes.default.node,
|
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 {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { InputProps } from '../input';
|
|
4
|
-
import { InputNumberAdapter } from '@douyinfe/semi-foundation/lib/cjs/inputNumber/foundation';
|
|
4
|
+
import InputNumberFoundation, { InputNumberAdapter } from '@douyinfe/semi-foundation/lib/cjs/inputNumber/foundation';
|
|
5
5
|
import BaseComponent from '../_base/baseComponent';
|
|
6
6
|
import { strings } from '@douyinfe/semi-foundation/lib/cjs/inputNumber/constants';
|
|
7
7
|
import '@douyinfe/semi-foundation/lib/cjs/inputNumber/inputNumber.css';
|
|
@@ -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>;
|
|
@@ -85,20 +93,21 @@ declare class InputNumber extends BaseComponent<InputNumberProps, InputNumberSta
|
|
|
85
93
|
currentValue: number | string;
|
|
86
94
|
cursorBefore: string;
|
|
87
95
|
cursorAfter: string;
|
|
96
|
+
foundation: InputNumberFoundation;
|
|
88
97
|
constructor(props: InputNumberProps);
|
|
89
98
|
componentDidUpdate(prevProps: InputNumberProps): void;
|
|
90
99
|
setInputRef: (node: HTMLInputElement) => void;
|
|
91
|
-
handleInputFocus: (e: React.FocusEvent<HTMLInputElement>) =>
|
|
92
|
-
handleInputChange: (value: string, event: React.ChangeEvent<HTMLInputElement>) =>
|
|
93
|
-
handleInputBlur: (e: React.FocusEvent<HTMLInputElement>) =>
|
|
94
|
-
handleInputKeyDown: (e: React.KeyboardEvent) =>
|
|
95
|
-
handleInputMouseEnter: (e: React.MouseEvent) =>
|
|
96
|
-
handleInputMouseLeave: (e: React.MouseEvent) =>
|
|
97
|
-
handleInputMouseMove: (e: React.MouseEvent) =>
|
|
98
|
-
handleUpClick: (e: React.KeyboardEvent) =>
|
|
99
|
-
handleDownClick: (e: React.KeyboardEvent) =>
|
|
100
|
-
handleMouseUp: (e: React.MouseEvent) =>
|
|
101
|
-
handleMouseLeave: (e: React.MouseEvent) =>
|
|
100
|
+
handleInputFocus: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
101
|
+
handleInputChange: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
102
|
+
handleInputBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
103
|
+
handleInputKeyDown: (e: React.KeyboardEvent) => void;
|
|
104
|
+
handleInputMouseEnter: (e: React.MouseEvent) => void;
|
|
105
|
+
handleInputMouseLeave: (e: React.MouseEvent) => void;
|
|
106
|
+
handleInputMouseMove: (e: React.MouseEvent) => void;
|
|
107
|
+
handleUpClick: (e: React.KeyboardEvent) => void;
|
|
108
|
+
handleDownClick: (e: React.KeyboardEvent) => void;
|
|
109
|
+
handleMouseUp: (e: React.MouseEvent) => void;
|
|
110
|
+
handleMouseLeave: (e: React.MouseEvent) => void;
|
|
102
111
|
renderButtons: () => JSX.Element;
|
|
103
112
|
renderSuffix: () => React.ReactNode;
|
|
104
113
|
render(): JSX.Element;
|
|
@@ -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,
|
|
@@ -363,7 +367,11 @@ class InputNumber extends _baseComponent.default {
|
|
|
363
367
|
if (this.foundation.isValidNumber(parsedNum) && parsedNum !== this.state.number) {
|
|
364
368
|
const obj = {
|
|
365
369
|
number: parsedNum
|
|
366
|
-
};
|
|
370
|
+
};
|
|
371
|
+
/**
|
|
372
|
+
* If you are clicking the button, it will automatically format once
|
|
373
|
+
* We need to set the status to false after trigger focus event
|
|
374
|
+
*/
|
|
367
375
|
|
|
368
376
|
if (this.clickUpOrDown) {
|
|
369
377
|
obj.value = this.foundation.doFormat(valueStr, true);
|
|
@@ -438,12 +446,29 @@ class InputNumber extends _baseComponent.default {
|
|
|
438
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"]);
|
|
439
447
|
|
|
440
448
|
const {
|
|
441
|
-
value
|
|
449
|
+
value,
|
|
450
|
+
number
|
|
442
451
|
} = this.state;
|
|
443
452
|
const inputNumberCls = (0, _classnames.default)(className, "".concat(prefixCls, "-number"), {
|
|
444
453
|
[(0, _concat.default)(_context = "".concat(prefixCls, "-number-size-")).call(_context, size)]: size
|
|
445
454
|
});
|
|
446
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
|
+
}
|
|
447
472
|
|
|
448
473
|
const input = /*#__PURE__*/_react.default.createElement("div", {
|
|
449
474
|
className: inputNumberCls,
|
|
@@ -451,7 +476,9 @@ class InputNumber extends _baseComponent.default {
|
|
|
451
476
|
onMouseMove: e => this.handleInputMouseMove(e),
|
|
452
477
|
onMouseEnter: e => this.handleInputMouseEnter(e),
|
|
453
478
|
onMouseLeave: e => this.handleInputMouseLeave(e)
|
|
454
|
-
}, /*#__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, {
|
|
455
482
|
size: size,
|
|
456
483
|
disabled: disabled,
|
|
457
484
|
ref: this.setInputRef,
|
|
@@ -470,6 +497,12 @@ class InputNumber extends _baseComponent.default {
|
|
|
470
497
|
|
|
471
498
|
exports.InputNumber = InputNumber;
|
|
472
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,
|
|
473
506
|
autofocus: _propTypes.default.bool,
|
|
474
507
|
className: _propTypes.default.string,
|
|
475
508
|
defaultValue: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -479,6 +512,7 @@ InputNumber.propTypes = {
|
|
|
479
512
|
hideButtons: _propTypes.default.bool,
|
|
480
513
|
innerButtons: _propTypes.default.bool,
|
|
481
514
|
insetLabel: _propTypes.default.node,
|
|
515
|
+
insetLabelId: _propTypes.default.string,
|
|
482
516
|
keepFocus: _propTypes.default.bool,
|
|
483
517
|
max: _propTypes.default.number,
|
|
484
518
|
min: _propTypes.default.number,
|