@douyinfe/semi-ui 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_base/_story/a11y.jsx +6 -6
- package/_base/_story/a11y.scss +0 -1
- package/_base/_story/index.scss +2 -5
- package/_utils/hooks/usePrevFocus.ts +16 -0
- package/_utils/index.ts +4 -0
- package/anchor/_story/anchor.stories.js +1 -1
- package/anchor/index.tsx +5 -2
- package/anchor/link.tsx +29 -4
- package/autoComplete/index.tsx +28 -1
- package/avatar/_story/avatar.stories.js +4 -4
- package/avatar/index.tsx +6 -4
- package/banner/index.tsx +2 -1
- package/breadcrumb/_story/breadcrumb.stories.js +22 -8
- package/breadcrumb/index.tsx +8 -1
- package/breadcrumb/item.tsx +1 -1
- package/button/Button.tsx +4 -0
- package/button/__test__/button.test.js +1 -1
- package/button/_story/button.stories.js +10 -10
- package/button/buttonGroup.tsx +4 -2
- package/button/splitButtonGroup.tsx +5 -2
- package/card/_story/card.stories.js +8 -1
- package/card/_story/card.stories.tsx +3 -0
- package/card/index.tsx +5 -2
- package/cascader/index.tsx +33 -5
- package/checkbox/_story/checkbox.stories.js +19 -12
- package/checkbox/checkbox.tsx +40 -5
- package/checkbox/checkboxGroup.tsx +30 -5
- package/checkbox/checkboxInner.tsx +25 -2
- package/collapse/index.tsx +1 -1
- package/collapse/item.tsx +12 -7
- package/collapsible/index.tsx +4 -2
- package/configProvider/_story/configProvider.stories.tsx +27 -0
- package/datePicker/__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 +2768 -1501
- 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 +4 -4
- package/form/_story/FormApi/formApiDemo.jsx +3 -2
- package/form/_story/Validate/validateDemo.jsx +1 -1
- package/form/_story/demo.jsx +12 -3
- package/form/_story/form.stories.js +0 -7
- package/form/baseForm.tsx +2 -0
- package/form/errorMessage.tsx +13 -2
- package/form/hoc/withField.tsx +37 -8
- package/form/index.tsx +0 -2
- package/form/interface.ts +2 -0
- package/form/label.tsx +4 -2
- package/input/index.tsx +49 -4
- package/input/inputGroup.tsx +9 -4
- package/input/textarea.tsx +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/index.d.ts +4 -3
- package/lib/cjs/avatar/index.js +15 -11
- package/lib/cjs/banner/index.js +4 -2
- package/lib/cjs/breadcrumb/index.d.ts +3 -0
- package/lib/cjs/breadcrumb/index.js +10 -4
- package/lib/cjs/breadcrumb/item.js +2 -2
- package/lib/cjs/button/Button.d.ts +2 -0
- package/lib/cjs/button/Button.js +4 -2
- package/lib/cjs/button/buttonGroup.d.ts +3 -0
- package/lib/cjs/button/buttonGroup.js +8 -4
- package/lib/cjs/button/index.d.ts +1 -0
- package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
- package/lib/cjs/button/splitButtonGroup.js +5 -2
- package/lib/cjs/card/index.d.ts +3 -0
- package/lib/cjs/card/index.js +3 -1
- package/lib/cjs/cascader/index.d.ts +14 -0
- package/lib/cjs/cascader/index.js +35 -7
- package/lib/cjs/checkbox/checkbox.d.ts +21 -1
- package/lib/cjs/checkbox/checkbox.js +51 -17
- package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/cjs/checkbox/checkboxGroup.js +16 -3
- package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
- package/lib/cjs/checkbox/checkboxInner.js +20 -3
- package/lib/cjs/collapse/item.d.ts +2 -1
- package/lib/cjs/collapse/item.js +12 -2
- package/lib/cjs/collapsible/index.d.ts +1 -0
- package/lib/cjs/collapsible/index.js +4 -2
- package/lib/cjs/datePicker/datePicker.d.ts +12 -0
- package/lib/cjs/datePicker/datePicker.js +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/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 +4 -1
- package/lib/cjs/sideSheet/index.d.ts +1 -0
- package/lib/cjs/sideSheet/index.js +2 -1
- package/lib/cjs/slider/index.d.ts +2 -1
- package/lib/cjs/slider/index.js +64 -17
- package/lib/cjs/spin/icon.js +3 -4
- package/lib/cjs/steps/basicStep.d.ts +3 -0
- package/lib/cjs/steps/basicStep.js +23 -25
- package/lib/cjs/steps/basicSteps.d.ts +1 -0
- package/lib/cjs/steps/basicSteps.js +2 -1
- package/lib/cjs/steps/fillStep.d.ts +3 -0
- package/lib/cjs/steps/fillStep.js +19 -4
- package/lib/cjs/steps/fillSteps.d.ts +1 -0
- package/lib/cjs/steps/fillSteps.js +2 -1
- package/lib/cjs/steps/navStep.d.ts +3 -0
- package/lib/cjs/steps/navStep.js +22 -25
- package/lib/cjs/steps/navSteps.d.ts +1 -0
- package/lib/cjs/steps/navSteps.js +2 -1
- package/lib/cjs/switch/index.d.ts +12 -0
- package/lib/cjs/switch/index.js +19 -4
- package/lib/cjs/table/Body/BaseRow.js +35 -3
- package/lib/cjs/table/Body/index.js +9 -1
- package/lib/cjs/table/ColumnFilter.js +4 -0
- package/lib/cjs/table/ColumnSelection.d.ts +3 -0
- package/lib/cjs/table/ColumnSelection.js +6 -2
- package/lib/cjs/table/ColumnSorter.js +19 -3
- package/lib/cjs/table/CustomExpandIcon.js +7 -1
- package/lib/cjs/table/Table.d.ts +2 -0
- package/lib/cjs/table/Table.js +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.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 +26 -7
- package/lib/cjs/upload/index.js +19 -4
- package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
- package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +4 -1
- package/lib/es/anchor/index.d.ts +2 -0
- package/lib/es/anchor/index.js +6 -1
- package/lib/es/anchor/link.d.ts +4 -1
- package/lib/es/anchor/link.js +38 -5
- package/lib/es/autoComplete/index.d.ts +17 -0
- package/lib/es/autoComplete/index.js +21 -2
- package/lib/es/avatar/index.d.ts +4 -3
- package/lib/es/avatar/index.js +15 -11
- package/lib/es/banner/index.js +4 -2
- package/lib/es/breadcrumb/index.d.ts +3 -0
- package/lib/es/breadcrumb/index.js +10 -4
- package/lib/es/breadcrumb/item.js +2 -2
- package/lib/es/button/Button.d.ts +2 -0
- package/lib/es/button/Button.js +4 -2
- package/lib/es/button/buttonGroup.d.ts +3 -0
- package/lib/es/button/buttonGroup.js +8 -4
- package/lib/es/button/index.d.ts +1 -0
- package/lib/es/button/splitButtonGroup.d.ts +3 -0
- package/lib/es/button/splitButtonGroup.js +5 -2
- package/lib/es/card/index.d.ts +3 -0
- package/lib/es/card/index.js +3 -1
- package/lib/es/cascader/index.d.ts +14 -0
- package/lib/es/cascader/index.js +35 -7
- package/lib/es/checkbox/checkbox.d.ts +21 -1
- package/lib/es/checkbox/checkbox.js +50 -17
- package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
- package/lib/es/checkbox/checkboxGroup.js +18 -5
- package/lib/es/checkbox/checkboxInner.d.ts +15 -0
- package/lib/es/checkbox/checkboxInner.js +20 -3
- package/lib/es/collapse/item.d.ts +2 -1
- package/lib/es/collapse/item.js +11 -2
- package/lib/es/collapsible/index.d.ts +1 -0
- package/lib/es/collapsible/index.js +4 -2
- package/lib/es/datePicker/datePicker.d.ts +12 -0
- package/lib/es/datePicker/datePicker.js +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/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 +4 -1
- package/lib/es/sideSheet/index.d.ts +1 -0
- package/lib/es/sideSheet/index.js +2 -1
- package/lib/es/slider/index.d.ts +2 -1
- package/lib/es/slider/index.js +63 -16
- package/lib/es/spin/icon.js +3 -4
- package/lib/es/steps/basicStep.d.ts +3 -0
- package/lib/es/steps/basicStep.js +23 -23
- package/lib/es/steps/basicSteps.d.ts +1 -0
- package/lib/es/steps/basicSteps.js +2 -1
- package/lib/es/steps/fillStep.d.ts +3 -0
- package/lib/es/steps/fillStep.js +19 -4
- package/lib/es/steps/fillSteps.d.ts +1 -0
- package/lib/es/steps/fillSteps.js +2 -1
- package/lib/es/steps/navStep.d.ts +3 -0
- package/lib/es/steps/navStep.js +22 -23
- package/lib/es/steps/navSteps.d.ts +1 -0
- package/lib/es/steps/navSteps.js +2 -1
- package/lib/es/switch/index.d.ts +12 -0
- package/lib/es/switch/index.js +19 -4
- package/lib/es/table/Body/BaseRow.js +35 -3
- package/lib/es/table/Body/index.js +9 -2
- package/lib/es/table/ColumnFilter.js +4 -0
- package/lib/es/table/ColumnSelection.d.ts +3 -0
- package/lib/es/table/ColumnSelection.js +6 -2
- package/lib/es/table/ColumnSorter.js +17 -3
- package/lib/es/table/CustomExpandIcon.js +6 -1
- package/lib/es/table/Table.d.ts +2 -0
- package/lib/es/table/Table.js +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.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 +26 -7
- 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 +6 -4
- package/sideSheet/index.tsx +3 -2
- package/slider/__test__/slider.test.js +9 -0
- package/slider/_story/slider.stories.js +1 -1
- package/slider/index.tsx +44 -7
- package/spin/icon.tsx +4 -3
- package/steps/basicStep.tsx +15 -4
- package/steps/basicSteps.tsx +3 -2
- package/steps/fillStep.tsx +27 -12
- package/steps/fillSteps.tsx +2 -0
- package/steps/navStep.tsx +15 -4
- package/steps/navSteps.tsx +3 -2
- package/switch/_story/switch.stories.js +20 -19
- package/switch/_story/switch.stories.tsx +13 -13
- package/switch/index.tsx +23 -5
- package/table/Body/BaseRow.tsx +25 -1
- package/table/Body/index.tsx +7 -2
- package/table/ColumnFilter.tsx +7 -1
- package/table/ColumnSelection.tsx +4 -1
- package/table/ColumnSorter.tsx +18 -1
- package/table/CustomExpandIcon.tsx +5 -0
- package/table/Table.tsx +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 +51 -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 +14 -16
- package/upload/index.tsx +10 -6
|
@@ -49,7 +49,9 @@ class CheckboxInner extends _react.PureComponent {
|
|
|
49
49
|
disabled,
|
|
50
50
|
prefixCls,
|
|
51
51
|
name,
|
|
52
|
-
isPureCardType
|
|
52
|
+
isPureCardType,
|
|
53
|
+
addonId,
|
|
54
|
+
extraId
|
|
53
55
|
} = this.props;
|
|
54
56
|
const prefix = prefixCls || _constants.checkboxClasses.PREFIX;
|
|
55
57
|
const wrapper = (0, _classnames.default)({
|
|
@@ -64,10 +66,18 @@ class CheckboxInner extends _react.PureComponent {
|
|
|
64
66
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
65
67
|
className: wrapper
|
|
66
68
|
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
69
|
+
type: "checkbox",
|
|
70
|
+
"aria-label": this.props['aria-label'],
|
|
71
|
+
"aria-disabled": disabled,
|
|
72
|
+
"aria-checked": checked,
|
|
73
|
+
"aria-labelledby": addonId,
|
|
74
|
+
"aria-describedby": extraId || this.props['aria-describedby'],
|
|
75
|
+
"aria-invalid": this.props['aria-invalid'],
|
|
76
|
+
"aria-errormessage": this.props['aria-errormessage'],
|
|
77
|
+
"aria-required": this.props['aria-required'],
|
|
67
78
|
ref: ref => {
|
|
68
79
|
this.inputEntity = ref;
|
|
69
80
|
},
|
|
70
|
-
type: "checkbox",
|
|
71
81
|
className: _constants.checkboxClasses.INPUT,
|
|
72
82
|
onChange: _noop2.default,
|
|
73
83
|
checked: checked,
|
|
@@ -82,13 +92,20 @@ class CheckboxInner extends _react.PureComponent {
|
|
|
82
92
|
|
|
83
93
|
CheckboxInner.contextType = _context.Context;
|
|
84
94
|
CheckboxInner.propTypes = {
|
|
95
|
+
'aria-describedby': _propTypes.default.string,
|
|
96
|
+
'aria-errormessage': _propTypes.default.string,
|
|
97
|
+
'aria-invalid': _propTypes.default.bool,
|
|
98
|
+
'aria-labelledby': _propTypes.default.string,
|
|
99
|
+
'aria-required': _propTypes.default.bool,
|
|
85
100
|
checked: _propTypes.default.bool,
|
|
86
101
|
disabled: _propTypes.default.bool,
|
|
87
102
|
onChange: _propTypes.default.func,
|
|
88
103
|
children: _propTypes.default.node,
|
|
89
104
|
grouped: _propTypes.default.bool,
|
|
90
105
|
value: _propTypes.default.any,
|
|
91
|
-
isPureCardType: _propTypes.default.bool
|
|
106
|
+
isPureCardType: _propTypes.default.bool,
|
|
107
|
+
addonId: _propTypes.default.string,
|
|
108
|
+
extraId: _propTypes.default.string
|
|
92
109
|
};
|
|
93
110
|
CheckboxInner.defaultProps = {
|
|
94
111
|
onChange: _noop2.default
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { PureComponent, ReactNode
|
|
1
|
+
import React, { CSSProperties, PureComponent, ReactNode } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { CollapseContextType } from './collapse-context';
|
|
4
4
|
export interface CollapsePanelProps {
|
|
@@ -18,6 +18,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
18
18
|
className: PropTypes.Requireable<string>;
|
|
19
19
|
reCalcKey: PropTypes.Requireable<string | number>;
|
|
20
20
|
};
|
|
21
|
+
private ariaID;
|
|
21
22
|
renderHeader(active: boolean, expandIconEnable?: boolean): JSX.Element;
|
|
22
23
|
render(): JSX.Element;
|
|
23
24
|
}
|
package/lib/cjs/collapse/item.js
CHANGED
|
@@ -34,6 +34,8 @@ var _collapseContext = _interopRequireDefault(require("./collapse-context"));
|
|
|
34
34
|
|
|
35
35
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
36
36
|
|
|
37
|
+
var _uuid = require("@douyinfe/semi-foundation/lib/cjs/utils/uuid");
|
|
38
|
+
|
|
37
39
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
38
40
|
|
|
39
41
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -50,6 +52,11 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
50
52
|
};
|
|
51
53
|
|
|
52
54
|
class CollapsePanel extends _react.PureComponent {
|
|
55
|
+
constructor() {
|
|
56
|
+
super(...arguments);
|
|
57
|
+
this.ariaID = (0, _uuid.getUuidShort)({});
|
|
58
|
+
}
|
|
59
|
+
|
|
53
60
|
renderHeader(active) {
|
|
54
61
|
let expandIconEnable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
55
62
|
const {
|
|
@@ -73,6 +80,7 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
73
80
|
}
|
|
74
81
|
|
|
75
82
|
const icon = /*#__PURE__*/_react.default.createElement("span", {
|
|
83
|
+
"aria-hidden": 'true',
|
|
76
84
|
className: (0, _classnames.default)(["".concat(_constants.cssClasses.PREFIX, "-header-icon"), {
|
|
77
85
|
["".concat(_constants.cssClasses.PREFIX, "-header-iconDisabled")]: !expandIconEnable
|
|
78
86
|
}])
|
|
@@ -118,13 +126,13 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
118
126
|
["".concat(_constants.cssClasses.PREFIX, "-content")]: true
|
|
119
127
|
});
|
|
120
128
|
return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
121
|
-
role: "Collapse-panel",
|
|
122
129
|
className: itemCls
|
|
123
130
|
}, restProps), /*#__PURE__*/_react.default.createElement("div", {
|
|
124
131
|
role: "button",
|
|
125
132
|
tabIndex: 0,
|
|
126
133
|
className: headerCls,
|
|
127
134
|
"aria-expanded": active ? 'true' : 'false',
|
|
135
|
+
"aria-owns": this.ariaID,
|
|
128
136
|
onClick: e => onClick(itemKey, e)
|
|
129
137
|
}, this.renderHeader(active, children !== undefined)), children && /*#__PURE__*/_react.default.createElement(_collapsible.default, {
|
|
130
138
|
isOpen: active,
|
|
@@ -132,7 +140,9 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
132
140
|
motion: motion,
|
|
133
141
|
reCalcKey: reCalcKey
|
|
134
142
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
-
className: contentCls
|
|
143
|
+
className: contentCls,
|
|
144
|
+
"aria-hidden": !active,
|
|
145
|
+
id: this.ariaID
|
|
136
146
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
137
147
|
className: "".concat(_constants.cssClasses.PREFIX, "-content-wrapper")
|
|
138
148
|
}, children))));
|
|
@@ -45,7 +45,8 @@ const Collapsible = props => {
|
|
|
45
45
|
collapseHeight,
|
|
46
46
|
style,
|
|
47
47
|
className,
|
|
48
|
-
reCalcKey
|
|
48
|
+
reCalcKey,
|
|
49
|
+
id
|
|
49
50
|
} = props;
|
|
50
51
|
const ref = (0, _react.useRef)(null);
|
|
51
52
|
const [maxHeight, setMaxHeight] = (0, _react.useState)(0);
|
|
@@ -113,7 +114,8 @@ const Collapsible = props => {
|
|
|
113
114
|
ref: setHeight,
|
|
114
115
|
style: {
|
|
115
116
|
overflow: 'hidden'
|
|
116
|
-
}
|
|
117
|
+
},
|
|
118
|
+
id: id
|
|
117
119
|
}, children));
|
|
118
120
|
};
|
|
119
121
|
|
|
@@ -10,9 +10,15 @@ import { Locale } from '../locale/interface';
|
|
|
10
10
|
import { RangeType } from '@douyinfe/semi-foundation/lib/cjs/datePicker/inputFoundation';
|
|
11
11
|
import { TimePickerProps } from '../timePicker/TimePicker';
|
|
12
12
|
export interface DatePickerProps extends DatePickerFoundationProps {
|
|
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'];
|
|
13
18
|
timePickerOpts?: TimePickerProps;
|
|
14
19
|
bottomSlot?: React.ReactNode;
|
|
15
20
|
insetLabel?: React.ReactNode;
|
|
21
|
+
insetLabelId?: string;
|
|
16
22
|
prefix?: React.ReactNode;
|
|
17
23
|
topSlot?: React.ReactNode;
|
|
18
24
|
renderDate?: (dayNumber?: number, fullDate?: string) => React.ReactNode;
|
|
@@ -29,6 +35,11 @@ export declare type DatePickerState = DatePickerFoundationState;
|
|
|
29
35
|
export default class DatePicker extends BaseComponent<DatePickerProps, DatePickerState> {
|
|
30
36
|
static contextType: React.Context<import("../configProvider/context").ContextValue>;
|
|
31
37
|
static propTypes: {
|
|
38
|
+
'aria-describedby': PropTypes.Requireable<string>;
|
|
39
|
+
'aria-errormessage': PropTypes.Requireable<string>;
|
|
40
|
+
'aria-invalid': PropTypes.Requireable<boolean>;
|
|
41
|
+
'aria-labelledby': PropTypes.Requireable<string>;
|
|
42
|
+
'aria-required': PropTypes.Requireable<boolean>;
|
|
32
43
|
type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
|
|
33
44
|
size: PropTypes.Requireable<"default" | "small" | "large">;
|
|
34
45
|
density: PropTypes.Requireable<"default" | "compact">;
|
|
@@ -58,6 +69,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
58
69
|
prefixCls: PropTypes.Requireable<string>;
|
|
59
70
|
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
60
71
|
insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
72
|
+
insetLabelId: PropTypes.Requireable<string>;
|
|
61
73
|
zIndex: PropTypes.Requireable<number>;
|
|
62
74
|
position: PropTypes.Requireable<"top" | "topLeft" | "topRight" | "left" | "leftTop" | "leftBottom" | "right" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
|
|
63
75
|
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -278,6 +278,10 @@ class DatePicker extends _baseComponent.default {
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
this.clickOutSideHandler = e => {
|
|
281
|
+
if (this.adapter.needConfirm()) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
|
|
281
285
|
const triggerEl = this.triggerElRef && this.triggerElRef.current;
|
|
282
286
|
const panelEl = this.panelRef && this.panelRef.current;
|
|
283
287
|
const isInTrigger = triggerEl && triggerEl.contains(e.target);
|
|
@@ -462,7 +466,8 @@ class DatePicker extends _baseComponent.default {
|
|
|
462
466
|
density,
|
|
463
467
|
syncSwitchMonth,
|
|
464
468
|
onPanelChange,
|
|
465
|
-
timeZone
|
|
469
|
+
timeZone,
|
|
470
|
+
triggerRender
|
|
466
471
|
} = this.props;
|
|
467
472
|
const {
|
|
468
473
|
value,
|
|
@@ -509,7 +514,8 @@ class DatePicker extends _baseComponent.default {
|
|
|
509
514
|
syncSwitchMonth: syncSwitchMonth,
|
|
510
515
|
onPanelChange: onPanelChange,
|
|
511
516
|
timeZone: timeZone,
|
|
512
|
-
focusRecordsRef: this.focusRecordsRef
|
|
517
|
+
focusRecordsRef: this.focusRecordsRef,
|
|
518
|
+
triggerRender: triggerRender
|
|
513
519
|
});
|
|
514
520
|
}
|
|
515
521
|
|
|
@@ -535,6 +541,7 @@ class DatePicker extends _baseComponent.default {
|
|
|
535
541
|
disabled,
|
|
536
542
|
showClear,
|
|
537
543
|
insetLabel,
|
|
544
|
+
insetLabelId,
|
|
538
545
|
placeholder,
|
|
539
546
|
validateStatus,
|
|
540
547
|
inputStyle,
|
|
@@ -575,6 +582,7 @@ class DatePicker extends _baseComponent.default {
|
|
|
575
582
|
inputStyle,
|
|
576
583
|
showClear,
|
|
577
584
|
insetLabel,
|
|
585
|
+
insetLabelId,
|
|
578
586
|
type,
|
|
579
587
|
format,
|
|
580
588
|
multiple,
|
|
@@ -617,7 +625,12 @@ class DatePicker extends _baseComponent.default {
|
|
|
617
625
|
className: (0, _classnames.default)(className, {
|
|
618
626
|
[prefixCls]: true
|
|
619
627
|
}),
|
|
620
|
-
ref: this.setTriggerRef
|
|
628
|
+
ref: this.setTriggerRef,
|
|
629
|
+
'aria-invalid': this.props['aria-invalid'],
|
|
630
|
+
'aria-errormessage': this.props['aria-errormessage'],
|
|
631
|
+
'aria-labelledby': this.props['aria-labelledby'],
|
|
632
|
+
'aria-describedby': this.props['aria-describedby'],
|
|
633
|
+
'aria-required': this.props['aria-required']
|
|
621
634
|
};
|
|
622
635
|
const inner = this.renderInner();
|
|
623
636
|
const wrappedInner = this.wrapPopover(inner);
|
|
@@ -629,6 +642,11 @@ class DatePicker extends _baseComponent.default {
|
|
|
629
642
|
exports.default = DatePicker;
|
|
630
643
|
DatePicker.contextType = _context5.default;
|
|
631
644
|
DatePicker.propTypes = {
|
|
645
|
+
'aria-describedby': _propTypes.default.string,
|
|
646
|
+
'aria-errormessage': _propTypes.default.string,
|
|
647
|
+
'aria-invalid': _propTypes.default.bool,
|
|
648
|
+
'aria-labelledby': _propTypes.default.string,
|
|
649
|
+
'aria-required': _propTypes.default.bool,
|
|
632
650
|
type: _propTypes.default.oneOf(_constants.strings.TYPE_SET),
|
|
633
651
|
size: _propTypes.default.oneOf(_constants.strings.SIZE_SET),
|
|
634
652
|
density: _propTypes.default.oneOf(_constants.strings.DENSITY_SET),
|
|
@@ -658,6 +676,7 @@ DatePicker.propTypes = {
|
|
|
658
676
|
prefixCls: _propTypes.default.string,
|
|
659
677
|
prefix: _propTypes.default.node,
|
|
660
678
|
insetLabel: _propTypes.default.node,
|
|
679
|
+
insetLabelId: _propTypes.default.string,
|
|
661
680
|
zIndex: _propTypes.default.number,
|
|
662
681
|
position: _propTypes.default.oneOf(_constants2.strings.POSITION_SET),
|
|
663
682
|
getPopupContainer: _propTypes.default.func,
|
|
@@ -49,6 +49,7 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
|
|
|
49
49
|
syncSwitchMonth: PropTypes.Requireable<boolean>;
|
|
50
50
|
onPanelChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
51
51
|
focusRecordsRef: PropTypes.Requireable<object>;
|
|
52
|
+
triggerRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
52
53
|
};
|
|
53
54
|
static defaultProps: {
|
|
54
55
|
type: string;
|
|
@@ -695,7 +695,8 @@ MonthsGrid.propTypes = {
|
|
|
695
695
|
syncSwitchMonth: _propTypes.default.bool,
|
|
696
696
|
// Callback function for panel date switching
|
|
697
697
|
onPanelChange: _propTypes.default.func,
|
|
698
|
-
focusRecordsRef: _propTypes.default.object
|
|
698
|
+
focusRecordsRef: _propTypes.default.object,
|
|
699
|
+
triggerRender: _propTypes.default.func
|
|
699
700
|
};
|
|
700
701
|
MonthsGrid.defaultProps = {
|
|
701
702
|
type: 'date',
|
|
@@ -96,7 +96,9 @@ class DropdownItem extends _baseComponent.default {
|
|
|
96
96
|
}, icon);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({
|
|
99
|
+
return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({
|
|
100
|
+
role: "menuitem"
|
|
101
|
+
}, events, {
|
|
100
102
|
ref: ref => forwardRef(ref),
|
|
101
103
|
className: itemclass,
|
|
102
104
|
style: style
|
|
@@ -49,7 +49,10 @@ class DropdownMenu extends _baseComponent.default {
|
|
|
49
49
|
} = _a,
|
|
50
50
|
rest = __rest(_a, ["children", "className", "style"]);
|
|
51
51
|
|
|
52
|
-
return /*#__PURE__*/_react.default.createElement("ul", (0, _assign.default)({
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement("ul", (0, _assign.default)({
|
|
53
|
+
role: "menu",
|
|
54
|
+
"aria-orientation": "vertical"
|
|
55
|
+
}, rest, {
|
|
53
56
|
className: (0, _classnames.default)("".concat(prefixCls, "-menu"), className),
|
|
54
57
|
style: style
|
|
55
58
|
}), children);
|
|
@@ -13,6 +13,7 @@ interface BaseFormState {
|
|
|
13
13
|
}
|
|
14
14
|
declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
|
|
15
15
|
static propTypes: {
|
|
16
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
16
17
|
onSubmit: PropTypes.Requireable<(...args: any[]) => any>;
|
|
17
18
|
onSubmitFail: PropTypes.Requireable<(...args: any[]) => any>;
|
|
18
19
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -36,6 +37,7 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
|
|
|
36
37
|
disabled: PropTypes.Requireable<boolean>;
|
|
37
38
|
showValidateIcon: PropTypes.Requireable<boolean>;
|
|
38
39
|
extraTextPosition: PropTypes.Requireable<string>;
|
|
40
|
+
id: PropTypes.Requireable<string>;
|
|
39
41
|
};
|
|
40
42
|
static defaultProps: {
|
|
41
43
|
onChange: (...args: any[]) => void;
|
|
@@ -53,8 +55,14 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
|
|
|
53
55
|
static TextArea: React.ComponentType<import("utility-types").Subtract<Omit<import("../input").TextAreaProps, "forwardRef"> & React.RefAttributes<HTMLTextAreaElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
|
|
54
56
|
static InputNumber: React.ComponentType<import("utility-types").Subtract<import("../inputNumber").InputNumberProps & React.RefAttributes<HTMLInputElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
|
|
55
57
|
static Select: React.ComponentType<import("utility-types").Subtract<{
|
|
58
|
+
'aria-describedby'?: string;
|
|
59
|
+
'aria-errormessage'?: string;
|
|
60
|
+
'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling";
|
|
61
|
+
'aria-labelledby'?: string;
|
|
62
|
+
'aria-required'?: boolean | "true" | "false";
|
|
56
63
|
id?: string;
|
|
57
64
|
autoFocus?: boolean;
|
|
65
|
+
autoClearSearchValue?: boolean;
|
|
58
66
|
arrowIcon?: React.ReactNode;
|
|
59
67
|
defaultValue?: string | number | any[] | Record<string, any>;
|
|
60
68
|
value?: string | number | any[] | Record<string, any>;
|
|
@@ -90,6 +98,7 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
|
|
|
90
98
|
suffix?: React.ReactNode;
|
|
91
99
|
prefix?: React.ReactNode;
|
|
92
100
|
insetLabel?: React.ReactNode;
|
|
101
|
+
insetLabelId?: string;
|
|
93
102
|
inputProps?: import("utility-types").Subtract<import("../input").InputProps, {
|
|
94
103
|
value?: React.ReactText;
|
|
95
104
|
onFocus?: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
|
package/lib/cjs/form/baseForm.js
CHANGED
|
@@ -259,6 +259,7 @@ class Form extends _baseComponent.default {
|
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
Form.propTypes = {
|
|
262
|
+
'aria-label': _propTypes.default.string,
|
|
262
263
|
onSubmit: _propTypes.default.func,
|
|
263
264
|
onSubmitFail: _propTypes.default.func,
|
|
264
265
|
|
|
@@ -284,7 +285,8 @@ Form.propTypes = {
|
|
|
284
285
|
autoScrollToError: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
|
|
285
286
|
disabled: _propTypes.default.bool,
|
|
286
287
|
showValidateIcon: _propTypes.default.bool,
|
|
287
|
-
extraTextPosition: _propTypes.default.oneOf(_constants.strings.EXTRA_POS)
|
|
288
|
+
extraTextPosition: _propTypes.default.oneOf(_constants.strings.EXTRA_POS),
|
|
289
|
+
id: _propTypes.default.string
|
|
288
290
|
};
|
|
289
291
|
Form.defaultProps = {
|
|
290
292
|
onChange: _noop2.default,
|
|
@@ -9,6 +9,8 @@ export interface ErrorMessageProps {
|
|
|
9
9
|
validateStatus?: string;
|
|
10
10
|
helpText?: React.ReactNode;
|
|
11
11
|
isInInputGroup?: boolean;
|
|
12
|
+
errorMessageId?: string;
|
|
13
|
+
helpTextId?: string;
|
|
12
14
|
}
|
|
13
15
|
export default class ErrorMessage extends PureComponent<ErrorMessageProps> {
|
|
14
16
|
static propTypes: {
|
|
@@ -19,6 +21,8 @@ export default class ErrorMessage extends PureComponent<ErrorMessageProps> {
|
|
|
19
21
|
showValidateIcon: PropTypes.Requireable<boolean>;
|
|
20
22
|
helpText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
21
23
|
isInInputGroup: PropTypes.Requireable<boolean>;
|
|
24
|
+
errorMessageId: PropTypes.Requireable<string>;
|
|
25
|
+
helpTextId: PropTypes.Requireable<string>;
|
|
22
26
|
};
|
|
23
27
|
generatorText(error: ReactFieldError): JSX.Element;
|
|
24
28
|
render(): JSX.Element;
|
|
@@ -37,11 +37,26 @@ const prefix = _constants.cssClasses.PREFIX;
|
|
|
37
37
|
|
|
38
38
|
class ErrorMessage extends _react.PureComponent {
|
|
39
39
|
generatorText(error) {
|
|
40
|
+
const {
|
|
41
|
+
helpTextId,
|
|
42
|
+
errorMessageId
|
|
43
|
+
} = this.props;
|
|
44
|
+
const propsError = this.props.error;
|
|
45
|
+
let id = errorMessageId;
|
|
46
|
+
|
|
47
|
+
if (!propsError) {
|
|
48
|
+
id = helpTextId;
|
|
49
|
+
}
|
|
50
|
+
|
|
40
51
|
if (typeof error === 'string') {
|
|
41
|
-
return /*#__PURE__*/_react.default.createElement("span",
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
53
|
+
id: id
|
|
54
|
+
}, error);
|
|
42
55
|
} else if ((0, _isArray.default)(error)) {
|
|
43
56
|
const err = (0, _filter.default)(error).call(error, e => e);
|
|
44
|
-
return err.length ? /*#__PURE__*/_react.default.createElement("span",
|
|
57
|
+
return err.length ? /*#__PURE__*/_react.default.createElement("span", {
|
|
58
|
+
id: id
|
|
59
|
+
}, err.join(', ')) : null;
|
|
45
60
|
} else if ( /*#__PURE__*/_react.default.isValidElement(error)) {
|
|
46
61
|
return error;
|
|
47
62
|
}
|
|
@@ -104,5 +119,8 @@ ErrorMessage.propTypes = {
|
|
|
104
119
|
validateStatus: _propTypes.default.string,
|
|
105
120
|
showValidateIcon: _propTypes.default.bool,
|
|
106
121
|
helpText: _propTypes.default.node,
|
|
107
|
-
isInInputGroup: _propTypes.default.bool
|
|
122
|
+
isInInputGroup: _propTypes.default.bool,
|
|
123
|
+
// internal props
|
|
124
|
+
errorMessageId: _propTypes.default.string,
|
|
125
|
+
helpTextId: _propTypes.default.string
|
|
108
126
|
};
|
package/lib/cjs/form/field.d.ts
CHANGED
|
@@ -3,8 +3,14 @@ declare const FormInput: import("react").ComponentType<import("utility-types").S
|
|
|
3
3
|
declare const FormInputNumber: import("react").ComponentType<import("utility-types").Subtract<import("../inputNumber/index").InputNumberProps & import("react").RefAttributes<HTMLInputElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
|
|
4
4
|
declare const FormTextArea: import("react").ComponentType<import("utility-types").Subtract<Omit<import("../input/textarea").TextAreaProps, "forwardRef"> & import("react").RefAttributes<HTMLTextAreaElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
|
|
5
5
|
declare const FormSelect: import("react").ComponentType<import("utility-types").Subtract<{
|
|
6
|
+
'aria-describedby'?: string;
|
|
7
|
+
'aria-errormessage'?: string;
|
|
8
|
+
'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling";
|
|
9
|
+
'aria-labelledby'?: string;
|
|
10
|
+
'aria-required'?: boolean | "true" | "false";
|
|
6
11
|
id?: string;
|
|
7
12
|
autoFocus?: boolean;
|
|
13
|
+
autoClearSearchValue?: boolean;
|
|
8
14
|
arrowIcon?: import("react").ReactNode;
|
|
9
15
|
defaultValue?: string | number | any[] | Record<string, any>;
|
|
10
16
|
value?: string | number | any[] | Record<string, any>;
|
|
@@ -40,6 +46,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
|
|
|
40
46
|
suffix?: import("react").ReactNode;
|
|
41
47
|
prefix?: import("react").ReactNode;
|
|
42
48
|
insetLabel?: import("react").ReactNode;
|
|
49
|
+
insetLabelId?: string;
|
|
43
50
|
inputProps?: import("utility-types").Subtract<import("../input/index").InputProps, {
|
|
44
51
|
value?: import("react").ReactText;
|
|
45
52
|
onFocus?: (e: import("react").FocusEvent<HTMLInputElement, Element>) => void;
|
|
@@ -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>;
|