tntd 2.6.8 → 2.6.10
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/LICENSE +21 -0
- package/README.md +72 -0
- package/es/actions/index.js +26 -0
- package/es/actions/index.js.map +1 -0
- package/es/actions/index.less +70 -0
- package/es/cascader/index.js +5 -1
- package/es/cascader/index.js.map +1 -1
- package/es/check-card/group.js +197 -0
- package/es/check-card/group.js.map +1 -0
- package/es/check-card/index.js +163 -0
- package/es/check-card/index.js.map +1 -0
- package/es/check-card/index.less +179 -0
- package/es/checkbox/checkbox-group.js +5 -0
- package/es/checkbox/checkbox-group.js.map +1 -0
- package/es/checkbox/index.js +5 -0
- package/es/checkbox/index.js.map +1 -1
- package/es/color-picker/ColorPicker.js +1 -1
- package/es/color-picker/ColorPicker.js.map +1 -1
- package/es/color-picker/index.less +1 -1
- package/es/config-provider/DisabledContext.js +12 -0
- package/es/config-provider/DisabledContext.js.map +1 -0
- package/es/config-provider/SizeContext.js +9 -0
- package/es/config-provider/SizeContext.js.map +1 -0
- package/es/config-provider/index.js +4 -0
- package/es/config-provider/index.js.map +1 -1
- package/es/connect/index.js +29 -0
- package/es/connect/index.js.map +1 -0
- package/es/date-picker/index.js +15 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/ellipsis/index.js +1 -1
- package/es/ellipsis/index.js.map +1 -1
- package/es/ellipsis/index.less +1 -1
- package/es/handle/index.js +13 -5
- package/es/handle/index.js.map +1 -1
- package/es/handle/index.less +1 -1
- package/es/index.js +8 -1
- package/es/index.js.map +1 -1
- package/es/index.less +5 -0
- package/es/input/input.js +19 -10
- package/es/input/input.js.map +1 -1
- package/es/input-number/index.js +3 -1
- package/es/input-number/index.js.map +1 -1
- package/es/label/label.js +140 -0
- package/es/label/label.js.map +1 -0
- package/es/label/label.test.js +12 -0
- package/es/label/label.test.js.map +1 -0
- package/es/locale/en_US.js +4 -2
- package/es/locale/en_US.js.map +1 -1
- package/es/locale/zh_CN.js +4 -2
- package/es/locale/zh_CN.js.map +1 -1
- package/es/page/Box.js +1 -1
- package/es/page/Box.js.map +1 -1
- package/es/page/index.js +1 -1
- package/es/page/index.js.map +1 -1
- package/es/page/index.less +5 -5
- package/es/preview-text/index.js +265 -0
- package/es/preview-text/index.js.map +1 -0
- package/es/preview-text/index.less +3 -0
- package/es/query-form/Field/SelectInput.js +7 -5
- package/es/query-form/Field/SelectInput.js.map +1 -1
- package/es/radio/index.js +3 -0
- package/es/radio/index.js.map +1 -1
- package/es/radio/radio-group.js +5 -0
- package/es/radio/radio-group.js.map +1 -0
- package/es/segmented/index.js +67 -0
- package/es/segmented/index.js.map +1 -0
- package/es/segmented/index.less +138 -0
- package/es/select/index.js.map +1 -1
- package/es/select/select.js +25 -3
- package/es/select/select.js.map +1 -1
- package/es/switch/index.js +2 -3
- package/es/switch/index.js.map +1 -1
- package/es/switch/switch.js +10 -0
- package/es/switch/switch.js.map +1 -0
- package/es/table/table.js +10 -4
- package/es/table/table.js.map +1 -1
- package/es/table/total-shower.js +10 -0
- package/es/table/total-shower.js.map +1 -0
- package/es/time-picker/index.js +3 -1
- package/es/time-picker/index.js.map +1 -1
- package/es/title/index.js +9 -11
- package/es/title/index.js.map +1 -1
- package/es/title/index.less +10 -10
- package/es/tntd-form/ErrorList.js +87 -0
- package/es/tntd-form/ErrorList.js.map +1 -0
- package/es/tntd-form/Form.js +122 -0
- package/es/tntd-form/Form.js.map +1 -0
- package/es/tntd-form/FormItem/ItemHolder.js +144 -0
- package/es/tntd-form/FormItem/ItemHolder.js.map +1 -0
- package/es/tntd-form/FormItem/index.js +264 -0
- package/es/tntd-form/FormItem/index.js.map +1 -0
- package/es/tntd-form/FormItemInput.js +79 -0
- package/es/tntd-form/FormItemInput.js.map +1 -0
- package/es/tntd-form/FormItemLabel.js +98 -0
- package/es/tntd-form/FormItemLabel.js.map +1 -0
- package/es/tntd-form/FormList.js +40 -0
- package/es/tntd-form/FormList.js.map +1 -0
- package/es/tntd-form/_util/motion.js +47 -0
- package/es/tntd-form/_util/motion.js.map +1 -0
- package/es/tntd-form/_util/reactNode.js +16 -0
- package/es/tntd-form/_util/reactNode.js.map +1 -0
- package/es/tntd-form/_util/scrollTo.js +35 -0
- package/es/tntd-form/_util/scrollTo.js.map +1 -0
- package/es/tntd-form/_util/type.js +3 -0
- package/es/tntd-form/_util/type.js.map +1 -0
- package/es/tntd-form/_util/warning.js +5 -0
- package/es/tntd-form/_util/warning.js.map +1 -0
- package/es/tntd-form/_util/wave.js +168 -0
- package/es/tntd-form/_util/wave.js.map +1 -0
- package/es/tntd-form/context.js +40 -0
- package/es/tntd-form/context.js.map +1 -0
- package/es/tntd-form/hooks/useDebounce.js +13 -0
- package/es/tntd-form/hooks/useDebounce.js.map +1 -0
- package/es/tntd-form/hooks/useForm.js +40 -0
- package/es/tntd-form/hooks/useForm.js.map +1 -0
- package/es/tntd-form/hooks/useFormInstance.js +8 -0
- package/es/tntd-form/hooks/useFormInstance.js.map +1 -0
- package/es/tntd-form/hooks/useFormItemStatus.js +13 -0
- package/es/tntd-form/hooks/useFormItemStatus.js.map +1 -0
- package/es/tntd-form/hooks/useFrameState.js +37 -0
- package/es/tntd-form/hooks/useFrameState.js.map +1 -0
- package/es/tntd-form/hooks/useItemRef.js +20 -0
- package/es/tntd-form/hooks/useItemRef.js.map +1 -0
- package/es/tntd-form/index.js +17 -1
- package/es/tntd-form/index.js.map +1 -1
- package/es/tntd-form/interface.js +2 -0
- package/es/tntd-form/interface.js.map +1 -0
- package/es/tntd-form/style/components.less +16 -0
- package/es/tntd-form/style/horizontal.less +26 -0
- package/es/tntd-form/style/index.js +5 -0
- package/es/tntd-form/style/index.js.map +1 -0
- package/es/tntd-form/style/index.less +342 -0
- package/es/tntd-form/style/inline.less +40 -0
- package/es/tntd-form/style/mixin.less +90 -0
- package/es/tntd-form/style/rtl.less +204 -0
- package/es/tntd-form/style/status.less +45 -0
- package/es/tntd-form/style/vertical.less +95 -0
- package/es/tntd-form/tntd-form.stories.js +786 -0
- package/es/tntd-form/tntd-form.stories.js.map +1 -0
- package/es/tntd-form/util.js +18 -0
- package/es/tntd-form/util.js.map +1 -0
- package/es/tntd-form/validateMessagesContext.js +5 -0
- package/es/tntd-form/validateMessagesContext.js.map +1 -0
- package/es/tntd-modal/index.js +71 -56
- package/es/tntd-modal/index.js.map +1 -1
- package/es/tntd-modal/index.less +83 -63
- package/es/tree-select/index.js +4 -1
- package/es/tree-select/index.js.map +1 -1
- package/es/upload/index.js +8 -1
- package/es/upload/index.js.map +1 -1
- package/es/utils/index.js +1 -0
- package/es/utils/index.js.map +1 -1
- package/es/utils/simple-template.js +10 -0
- package/es/utils/simple-template.js.map +1 -0
- package/es/water-mark/index.js +110 -0
- package/es/water-mark/index.js.map +1 -0
- package/lib/actions/index.d.ts +15 -0
- package/lib/actions/index.d.ts.map +1 -0
- package/lib/actions/index.js +34 -0
- package/lib/actions/index.js.map +1 -0
- package/lib/actions/index.less +70 -0
- package/lib/cascader/index.d.ts +6 -1
- package/lib/cascader/index.d.ts.map +1 -1
- package/lib/cascader/index.js +10 -3
- package/lib/cascader/index.js.map +1 -1
- package/lib/check-card/group.d.ts +130 -0
- package/lib/check-card/group.d.ts.map +1 -0
- package/lib/check-card/group.js +236 -0
- package/lib/check-card/group.js.map +1 -0
- package/lib/check-card/index.d.ts +136 -0
- package/lib/check-card/index.d.ts.map +1 -0
- package/lib/check-card/index.js +178 -0
- package/lib/check-card/index.js.map +1 -0
- package/lib/check-card/index.less +179 -0
- package/lib/checkbox/checkbox-group.d.ts +8 -0
- package/lib/checkbox/checkbox-group.d.ts.map +1 -0
- package/lib/checkbox/checkbox-group.js +13 -0
- package/lib/checkbox/checkbox-group.js.map +1 -0
- package/lib/checkbox/index.d.ts +1 -0
- package/lib/checkbox/index.d.ts.map +1 -1
- package/lib/checkbox/index.js +16 -0
- package/lib/checkbox/index.js.map +1 -1
- package/lib/color-picker/ColorPicker.js +1 -1
- package/lib/color-picker/ColorPicker.js.map +1 -1
- package/lib/color-picker/index.less +1 -1
- package/lib/config-provider/DisabledContext.d.ts +10 -0
- package/lib/config-provider/DisabledContext.d.ts.map +1 -0
- package/lib/config-provider/DisabledContext.js +22 -0
- package/lib/config-provider/DisabledContext.js.map +1 -0
- package/lib/config-provider/SizeContext.d.ts +10 -0
- package/lib/config-provider/SizeContext.d.ts.map +1 -0
- package/lib/config-provider/SizeContext.js +23 -0
- package/lib/config-provider/SizeContext.js.map +1 -0
- package/lib/config-provider/index.d.ts +1 -0
- package/lib/config-provider/index.d.ts.map +1 -1
- package/lib/config-provider/index.js +15 -0
- package/lib/config-provider/index.js.map +1 -1
- package/lib/connect/index.d.ts +12 -0
- package/lib/connect/index.d.ts.map +1 -0
- package/lib/connect/index.js +50 -0
- package/lib/connect/index.js.map +1 -0
- package/lib/date-picker/index.d.ts +6 -1
- package/lib/date-picker/index.d.ts.map +1 -1
- package/lib/date-picker/index.js +29 -3
- package/lib/date-picker/index.js.map +1 -1
- package/lib/ellipsis/index.js +1 -1
- package/lib/ellipsis/index.js.map +1 -1
- package/lib/ellipsis/index.less +1 -1
- package/lib/handle/index.d.ts.map +1 -1
- package/lib/handle/index.js +13 -4
- package/lib/handle/index.js.map +1 -1
- package/lib/handle/index.less +1 -1
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +22 -0
- package/lib/index.js.map +1 -1
- package/lib/index.less +5 -0
- package/lib/input/input.d.ts +5 -0
- package/lib/input/input.d.ts.map +1 -1
- package/lib/input/input.js +18 -8
- package/lib/input/input.js.map +1 -1
- package/lib/input-number/index.d.ts +7 -2
- package/lib/input-number/index.d.ts.map +1 -1
- package/lib/input-number/index.js +4 -1
- package/lib/input-number/index.js.map +1 -1
- package/lib/label/label.d.ts +52 -0
- package/lib/label/label.d.ts.map +1 -0
- package/lib/label/label.js +150 -0
- package/lib/label/label.js.map +1 -0
- package/lib/label/label.test.d.ts +2 -0
- package/lib/label/label.test.d.ts.map +1 -0
- package/lib/label/label.test.js +14 -0
- package/lib/label/label.test.js.map +1 -0
- package/lib/locale/default.d.ts +1 -0
- package/lib/locale/default.d.ts.map +1 -1
- package/lib/locale/en_US.d.ts +1 -0
- package/lib/locale/en_US.d.ts.map +1 -1
- package/lib/locale/en_US.js +4 -2
- package/lib/locale/en_US.js.map +1 -1
- package/lib/locale/zh_CN.d.ts +1 -0
- package/lib/locale/zh_CN.d.ts.map +1 -1
- package/lib/locale/zh_CN.js +4 -2
- package/lib/locale/zh_CN.js.map +1 -1
- package/lib/page/Box.js +1 -1
- package/lib/page/Box.js.map +1 -1
- package/lib/page/index.js +1 -1
- package/lib/page/index.js.map +1 -1
- package/lib/page/index.less +5 -5
- package/lib/preview-text/index.d.ts +20 -0
- package/lib/preview-text/index.d.ts.map +1 -0
- package/lib/preview-text/index.js +278 -0
- package/lib/preview-text/index.js.map +1 -0
- package/lib/preview-text/index.less +3 -0
- package/lib/query-form/Field/SelectInput.d.ts.map +1 -1
- package/lib/query-form/Field/SelectInput.js +6 -4
- package/lib/query-form/Field/SelectInput.js.map +1 -1
- package/lib/radio/index.d.ts.map +1 -1
- package/lib/radio/index.js +4 -0
- package/lib/radio/index.js.map +1 -1
- package/lib/radio/radio-group.d.ts +8 -0
- package/lib/radio/radio-group.d.ts.map +1 -0
- package/lib/radio/radio-group.js +13 -0
- package/lib/radio/radio-group.js.map +1 -0
- package/lib/segmented/index.d.ts +23 -0
- package/lib/segmented/index.d.ts.map +1 -0
- package/lib/segmented/index.js +80 -0
- package/lib/segmented/index.js.map +1 -0
- package/lib/segmented/index.less +138 -0
- package/lib/select/index.d.ts +2 -1
- package/lib/select/index.d.ts.map +1 -1
- package/lib/select/index.js.map +1 -1
- package/lib/select/select.d.ts +12 -0
- package/lib/select/select.d.ts.map +1 -1
- package/lib/select/select.js +25 -4
- package/lib/select/select.js.map +1 -1
- package/lib/svg-components/illustration-403.d.ts +1 -1
- package/lib/svg-components/illustration-404.d.ts +1 -1
- package/lib/svg-components/illustration-500.d.ts +1 -1
- package/lib/svg-components/illustration-empty.d.ts +1 -1
- package/lib/svg-components/illustration-failure.d.ts +1 -1
- package/lib/svg-components/illustration-no-access.d.ts +1 -1
- package/lib/svg-components/illustration-no-chart.d.ts +1 -1
- package/lib/svg-components/illustration-no-result.d.ts +1 -1
- package/lib/svg-components/illustration-offline.d.ts +1 -1
- package/lib/svg-components/illustration-success.d.ts +1 -1
- package/lib/switch/index.d.ts +2 -3
- package/lib/switch/index.d.ts.map +1 -1
- package/lib/switch/index.js +1 -2
- package/lib/switch/index.js.map +1 -1
- package/lib/switch/switch.d.ts +10 -0
- package/lib/switch/switch.d.ts.map +1 -0
- package/lib/switch/switch.js +37 -0
- package/lib/switch/switch.js.map +1 -0
- package/lib/table/assets/image-loading-background.d.ts +1 -1
- package/lib/table/assets/image-loading.d.ts +1 -1
- package/lib/table/table.d.ts.map +1 -1
- package/lib/table/table.js +14 -7
- package/lib/table/table.js.map +1 -1
- package/lib/table/total-shower.d.ts +9 -0
- package/lib/table/total-shower.d.ts.map +1 -0
- package/lib/table/total-shower.js +17 -0
- package/lib/table/total-shower.js.map +1 -0
- package/lib/time-picker/index.d.ts +7 -2
- package/lib/time-picker/index.d.ts.map +1 -1
- package/lib/time-picker/index.js +3 -1
- package/lib/time-picker/index.js.map +1 -1
- package/lib/title/index.d.ts +11 -1
- package/lib/title/index.d.ts.map +1 -1
- package/lib/title/index.js +8 -10
- package/lib/title/index.js.map +1 -1
- package/lib/title/index.less +10 -10
- package/lib/tntd-cascader/AntdCascader/config/utils.d.ts +1 -1
- package/lib/tntd-form/ErrorList.d.ts +13 -0
- package/lib/tntd-form/ErrorList.d.ts.map +1 -0
- package/lib/tntd-form/ErrorList.js +104 -0
- package/lib/tntd-form/ErrorList.js.map +1 -0
- package/lib/tntd-form/Form.d.ts +36 -0
- package/lib/tntd-form/Form.d.ts.map +1 -0
- package/lib/tntd-form/Form.js +160 -0
- package/lib/tntd-form/Form.js.map +1 -0
- package/lib/tntd-form/FormItem/ItemHolder.d.ts +18 -0
- package/lib/tntd-form/FormItem/ItemHolder.d.ts.map +1 -0
- package/lib/tntd-form/FormItem/ItemHolder.js +163 -0
- package/lib/tntd-form/FormItem/ItemHolder.js.map +1 -0
- package/lib/tntd-form/FormItem/index.d.ts +36 -0
- package/lib/tntd-form/FormItem/index.d.ts.map +1 -0
- package/lib/tntd-form/FormItem/index.js +301 -0
- package/lib/tntd-form/FormItem/index.js.map +1 -0
- package/lib/tntd-form/FormItemInput.d.ts +30 -0
- package/lib/tntd-form/FormItemInput.d.ts.map +1 -0
- package/lib/tntd-form/FormItemInput.js +92 -0
- package/lib/tntd-form/FormItemInput.js.map +1 -0
- package/lib/tntd-form/FormItemLabel.d.ts +24 -0
- package/lib/tntd-form/FormItemLabel.d.ts.map +1 -0
- package/lib/tntd-form/FormItemLabel.js +106 -0
- package/lib/tntd-form/FormItemLabel.js.map +1 -0
- package/lib/tntd-form/FormList.d.ts +26 -0
- package/lib/tntd-form/FormList.d.ts.map +1 -0
- package/lib/tntd-form/FormList.js +56 -0
- package/lib/tntd-form/FormList.js.map +1 -0
- package/lib/tntd-form/_util/motion.d.ts +9 -0
- package/lib/tntd-form/_util/motion.d.ts.map +1 -0
- package/lib/tntd-form/_util/motion.js +59 -0
- package/lib/tntd-form/_util/motion.js.map +1 -0
- package/lib/tntd-form/_util/reactNode.d.ts +9 -0
- package/lib/tntd-form/_util/reactNode.d.ts.map +1 -0
- package/lib/tntd-form/_util/reactNode.js +27 -0
- package/lib/tntd-form/_util/reactNode.js.map +1 -0
- package/lib/tntd-form/_util/scrollTo.d.ts +1 -0
- package/lib/tntd-form/_util/scrollTo.d.ts.map +1 -0
- package/lib/tntd-form/_util/scrollTo.js +35 -0
- package/lib/tntd-form/_util/scrollTo.js.map +1 -0
- package/lib/tntd-form/_util/type.d.ts +4 -0
- package/lib/tntd-form/_util/type.d.ts.map +1 -0
- package/lib/tntd-form/_util/type.js +21 -0
- package/lib/tntd-form/_util/type.js.map +1 -0
- package/lib/tntd-form/_util/warning.d.ts +5 -0
- package/lib/tntd-form/_util/warning.d.ts.map +1 -0
- package/lib/tntd-form/_util/warning.js +20 -0
- package/lib/tntd-form/_util/warning.js.map +1 -0
- package/lib/tntd-form/_util/wave.d.ts +1 -0
- package/lib/tntd-form/_util/wave.d.ts.map +1 -0
- package/lib/tntd-form/_util/wave.js +168 -0
- package/lib/tntd-form/_util/wave.js.map +1 -0
- package/lib/tntd-form/context.d.ts +51 -0
- package/lib/tntd-form/context.d.ts.map +1 -0
- package/lib/tntd-form/context.js +54 -0
- package/lib/tntd-form/context.js.map +1 -0
- package/lib/tntd-form/hooks/useDebounce.d.ts +2 -0
- package/lib/tntd-form/hooks/useDebounce.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useDebounce.js +31 -0
- package/lib/tntd-form/hooks/useDebounce.js.map +1 -0
- package/lib/tntd-form/hooks/useForm.d.ts +16 -0
- package/lib/tntd-form/hooks/useForm.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useForm.js +63 -0
- package/lib/tntd-form/hooks/useForm.js.map +1 -0
- package/lib/tntd-form/hooks/useFormInstance.d.ts +3 -0
- package/lib/tntd-form/hooks/useFormInstance.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useFormInstance.js +13 -0
- package/lib/tntd-form/hooks/useFormInstance.js.map +1 -0
- package/lib/tntd-form/hooks/useFormItemStatus.d.ts +7 -0
- package/lib/tntd-form/hooks/useFormItemStatus.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useFormItemStatus.js +20 -0
- package/lib/tntd-form/hooks/useFormItemStatus.js.map +1 -0
- package/lib/tntd-form/hooks/useFrameState.d.ts +4 -0
- package/lib/tntd-form/hooks/useFrameState.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useFrameState.js +55 -0
- package/lib/tntd-form/hooks/useFrameState.js.map +1 -0
- package/lib/tntd-form/hooks/useItemRef.d.ts +4 -0
- package/lib/tntd-form/hooks/useItemRef.d.ts.map +1 -0
- package/lib/tntd-form/hooks/useItemRef.js +28 -0
- package/lib/tntd-form/hooks/useItemRef.js.map +1 -0
- package/lib/tntd-form/index.d.ts +23 -1
- package/lib/tntd-form/index.d.ts.map +1 -1
- package/lib/tntd-form/index.js +24 -8
- package/lib/tntd-form/index.js.map +1 -1
- package/lib/tntd-form/interface.d.ts +4 -0
- package/lib/tntd-form/interface.d.ts.map +1 -0
- package/lib/tntd-form/interface.js +7 -0
- package/lib/tntd-form/interface.js.map +1 -0
- package/lib/tntd-form/style/components.less +16 -0
- package/lib/tntd-form/style/horizontal.less +26 -0
- package/lib/tntd-form/style/index.d.ts +5 -0
- package/lib/tntd-form/style/index.d.ts.map +1 -0
- package/lib/tntd-form/style/index.js +6 -0
- package/lib/tntd-form/style/index.js.map +1 -0
- package/lib/tntd-form/style/index.less +342 -0
- package/lib/tntd-form/style/inline.less +40 -0
- package/lib/tntd-form/style/mixin.less +90 -0
- package/lib/tntd-form/style/rtl.less +204 -0
- package/lib/tntd-form/style/status.less +45 -0
- package/lib/tntd-form/style/vertical.less +95 -0
- package/lib/tntd-form/tntd-form.stories.d.ts +33 -0
- package/lib/tntd-form/tntd-form.stories.d.ts.map +1 -0
- package/lib/tntd-form/tntd-form.stories.js +888 -0
- package/lib/tntd-form/tntd-form.stories.js.map +1 -0
- package/lib/tntd-form/util.d.ts +4 -0
- package/lib/tntd-form/util.d.ts.map +1 -0
- package/lib/tntd-form/util.js +25 -0
- package/lib/tntd-form/util.js.map +1 -0
- package/lib/tntd-form/validateMessagesContext.d.ts +5 -0
- package/lib/tntd-form/validateMessagesContext.d.ts.map +1 -0
- package/lib/tntd-form/validateMessagesContext.js +12 -0
- package/lib/tntd-form/validateMessagesContext.js.map +1 -0
- package/lib/tntd-modal/index.d.ts +15 -2
- package/lib/tntd-modal/index.d.ts.map +1 -1
- package/lib/tntd-modal/index.js +76 -61
- package/lib/tntd-modal/index.js.map +1 -1
- package/lib/tntd-modal/index.less +83 -63
- package/lib/tree-select/index.d.ts +7 -1
- package/lib/tree-select/index.d.ts.map +1 -1
- package/lib/tree-select/index.js +9 -3
- package/lib/tree-select/index.js.map +1 -1
- package/lib/upload/index.d.ts +6 -1
- package/lib/upload/index.d.ts.map +1 -1
- package/lib/upload/index.js +11 -1
- package/lib/upload/index.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +12 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/simple-template.d.ts +9 -0
- package/lib/utils/simple-template.d.ts.map +1 -0
- package/lib/utils/simple-template.js +19 -0
- package/lib/utils/simple-template.js.map +1 -0
- package/lib/water-mark/index.d.ts +49 -0
- package/lib/water-mark/index.d.ts.map +1 -0
- package/lib/water-mark/index.js +142 -0
- package/lib/water-mark/index.js.map +1 -0
- package/package.json +26 -5
- package/themes/default/variables.less +43 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
4
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
6
|
+
}
|
|
7
|
+
return t;
|
|
8
|
+
};
|
|
9
|
+
import useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect';
|
|
10
|
+
import classNames from 'classnames';
|
|
11
|
+
import * as React from 'react';
|
|
12
|
+
import omit from 'rc-util/lib/omit';
|
|
13
|
+
import Row from '../../row';
|
|
14
|
+
import FormItemLabel from '../FormItemLabel';
|
|
15
|
+
import FormItemInput from '../FormItemInput';
|
|
16
|
+
import { FormContext, FormItemInputContext, NoStyleItemContext } from '../context';
|
|
17
|
+
import useDebounce from '../hooks/useDebounce';
|
|
18
|
+
import Icon from '../../icon';
|
|
19
|
+
const iconMap = {
|
|
20
|
+
success: () => React.createElement(Icon, {
|
|
21
|
+
type: "check-circle"
|
|
22
|
+
}),
|
|
23
|
+
warning: () => React.createElement(Icon, {
|
|
24
|
+
type: "exclamation-circle"
|
|
25
|
+
}),
|
|
26
|
+
error: () => React.createElement(Icon, {
|
|
27
|
+
type: "close-circle"
|
|
28
|
+
}),
|
|
29
|
+
validating: () => React.createElement(Icon, {
|
|
30
|
+
type: "loading"
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
export default function ItemHolder(props) {
|
|
34
|
+
const {
|
|
35
|
+
prefixCls,
|
|
36
|
+
className,
|
|
37
|
+
style,
|
|
38
|
+
help,
|
|
39
|
+
errors,
|
|
40
|
+
warnings,
|
|
41
|
+
validateStatus,
|
|
42
|
+
meta,
|
|
43
|
+
hasFeedback,
|
|
44
|
+
hidden,
|
|
45
|
+
children,
|
|
46
|
+
fieldId,
|
|
47
|
+
isRequired,
|
|
48
|
+
onSubItemMetaChange
|
|
49
|
+
} = props,
|
|
50
|
+
restProps = __rest(props, ["prefixCls", "className", "style", "help", "errors", "warnings", "validateStatus", "meta", "hasFeedback", "hidden", "children", "fieldId", "isRequired", "onSubItemMetaChange"]);
|
|
51
|
+
const itemPrefixCls = `${prefixCls}-item`;
|
|
52
|
+
const {
|
|
53
|
+
requiredMark
|
|
54
|
+
} = React.useContext(FormContext);
|
|
55
|
+
// ======================== Margin ========================
|
|
56
|
+
const itemRef = React.useRef(null);
|
|
57
|
+
const debounceErrors = useDebounce(errors);
|
|
58
|
+
const debounceWarnings = useDebounce(warnings);
|
|
59
|
+
const hasHelp = help !== undefined && help !== null;
|
|
60
|
+
const hasError = !!(hasHelp || errors.length || warnings.length);
|
|
61
|
+
const [marginBottom, setMarginBottom] = React.useState(null);
|
|
62
|
+
useLayoutEffect(() => {
|
|
63
|
+
if (hasError && itemRef.current) {
|
|
64
|
+
const itemStyle = getComputedStyle(itemRef.current);
|
|
65
|
+
setMarginBottom(parseInt(itemStyle.marginBottom, 10));
|
|
66
|
+
}
|
|
67
|
+
}, [hasError]);
|
|
68
|
+
const onErrorVisibleChanged = nextVisible => {
|
|
69
|
+
if (!nextVisible) {
|
|
70
|
+
setMarginBottom(null);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
// ======================== Status ========================
|
|
74
|
+
let mergedValidateStatus = '';
|
|
75
|
+
if (validateStatus !== undefined) {
|
|
76
|
+
mergedValidateStatus = validateStatus;
|
|
77
|
+
} else if (meta.validating) {
|
|
78
|
+
mergedValidateStatus = 'validating';
|
|
79
|
+
} else if (debounceErrors.length) {
|
|
80
|
+
mergedValidateStatus = 'error';
|
|
81
|
+
} else if (debounceWarnings.length) {
|
|
82
|
+
mergedValidateStatus = 'warning';
|
|
83
|
+
} else if (meta.touched) {
|
|
84
|
+
mergedValidateStatus = 'success';
|
|
85
|
+
}
|
|
86
|
+
const formItemStatusContext = React.useMemo(() => {
|
|
87
|
+
let feedbackIcon;
|
|
88
|
+
if (hasFeedback) {
|
|
89
|
+
const IconNode = mergedValidateStatus && iconMap[mergedValidateStatus];
|
|
90
|
+
feedbackIcon = IconNode ? React.createElement("span", {
|
|
91
|
+
className: classNames(`${itemPrefixCls}-feedback-icon`, `${itemPrefixCls}-feedback-icon-${mergedValidateStatus}`)
|
|
92
|
+
}, React.createElement(IconNode, null)) : null;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
status: mergedValidateStatus,
|
|
96
|
+
hasFeedback,
|
|
97
|
+
feedbackIcon,
|
|
98
|
+
isFormItemInput: true
|
|
99
|
+
};
|
|
100
|
+
}, [mergedValidateStatus, hasFeedback]);
|
|
101
|
+
// ======================== Render ========================
|
|
102
|
+
const itemClassName = {
|
|
103
|
+
[itemPrefixCls]: true,
|
|
104
|
+
[`${itemPrefixCls}-with-help`]: hasHelp || debounceErrors.length || debounceWarnings.length,
|
|
105
|
+
[`${className}`]: !!className,
|
|
106
|
+
// Status
|
|
107
|
+
[`${itemPrefixCls}-has-feedback has-feedback`]: mergedValidateStatus && hasFeedback,
|
|
108
|
+
[`${itemPrefixCls}-has-success has-success`]: mergedValidateStatus === 'success',
|
|
109
|
+
[`${itemPrefixCls}-has-warning has-warning`]: mergedValidateStatus === 'warning',
|
|
110
|
+
[`${itemPrefixCls}-has-error has-error`]: mergedValidateStatus === 'error',
|
|
111
|
+
[`${itemPrefixCls}-is-validating is-validating`]: mergedValidateStatus === 'validating',
|
|
112
|
+
[`${itemPrefixCls}-hidden hidden`]: hidden
|
|
113
|
+
};
|
|
114
|
+
return React.createElement("div", {
|
|
115
|
+
className: classNames(itemClassName),
|
|
116
|
+
style: style,
|
|
117
|
+
ref: itemRef
|
|
118
|
+
}, React.createElement(Row, Object.assign({
|
|
119
|
+
className: `${itemPrefixCls}-row`
|
|
120
|
+
}, omit(restProps, ['_internalItemRender', 'colon', 'dependencies', 'extra', 'fieldKey', 'getValueFromEvent', 'getValueProps', 'htmlFor', 'id', 'initialValue', 'isListField', 'label', 'labelAlign', 'labelCol', 'labelWrap', 'messageVariables', 'name', 'normalize', 'noStyle', 'preserve', 'required', 'requiredMark', 'rules', 'shouldUpdate', 'trigger', 'tooltip', 'validateFirst', 'validateTrigger', 'valuePropName', 'wrapperCol'])), React.createElement(FormItemLabel, Object.assign({
|
|
121
|
+
htmlFor: fieldId,
|
|
122
|
+
required: isRequired,
|
|
123
|
+
requiredMark: requiredMark
|
|
124
|
+
}, props, {
|
|
125
|
+
prefixCls: prefixCls
|
|
126
|
+
})), React.createElement(FormItemInput, Object.assign({}, props, meta, {
|
|
127
|
+
errors: debounceErrors,
|
|
128
|
+
warnings: debounceWarnings,
|
|
129
|
+
prefixCls: prefixCls,
|
|
130
|
+
status: mergedValidateStatus,
|
|
131
|
+
help: help,
|
|
132
|
+
marginBottom: marginBottom,
|
|
133
|
+
onErrorVisibleChanged: onErrorVisibleChanged
|
|
134
|
+
}), React.createElement(NoStyleItemContext.Provider, {
|
|
135
|
+
value: onSubItemMetaChange
|
|
136
|
+
}, React.createElement(FormItemInputContext.Provider, {
|
|
137
|
+
value: formItemStatusContext
|
|
138
|
+
}, children)))), !!marginBottom && React.createElement("div", {
|
|
139
|
+
className: `${itemPrefixCls}-margin-offset`,
|
|
140
|
+
style: {
|
|
141
|
+
marginBottom: -marginBottom
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemHolder.js","sourceRoot":"","sources":["../../../src/tntd-form/FormItem/ItemHolder.tsx"],"names":[],"mappings":"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","sourcesContent":["import useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect'\nimport classNames from 'classnames'\nimport * as React from 'react'\nimport omit from 'rc-util/lib/omit'\nimport type { Meta } from 'rc-field-form/lib/interface'\nimport Row from '../../row'\nimport FormItemLabel from '../FormItemLabel'\nimport FormItemInput from '../FormItemInput'\nimport type { FormItemStatusContextProps, ReportMetaChange } from '../context'\nimport { FormContext, FormItemInputContext, NoStyleItemContext } from '../context'\nimport type { FormItemProps, ValidateStatus } from '.'\nimport useDebounce from '../hooks/useDebounce'\nimport Icon from '../../icon'\n\nconst iconMap = {\n success: () => <Icon type=\"check-circle\" />,\n warning: () => <Icon type=\"exclamation-circle\" />,\n error: () => <Icon type=\"close-circle\" />,\n validating: () => <Icon type=\"loading\" />,\n}\n\nexport interface ItemHolderProps extends FormItemProps {\n prefixCls: string\n className?: string\n style?: React.CSSProperties\n errors: React.ReactNode[]\n warnings: React.ReactNode[]\n meta: Meta\n children?: React.ReactNode\n fieldId?: string\n isRequired?: boolean\n onSubItemMetaChange: ReportMetaChange\n}\n\nexport default function ItemHolder(props: ItemHolderProps) {\n const {\n prefixCls,\n className,\n style,\n help,\n errors,\n warnings,\n validateStatus,\n meta,\n hasFeedback,\n hidden,\n children,\n fieldId,\n isRequired,\n onSubItemMetaChange,\n ...restProps\n } = props\n\n const itemPrefixCls = `${prefixCls}-item`\n const { requiredMark } = React.useContext(FormContext)\n\n // ======================== Margin ========================\n const itemRef = React.useRef<HTMLDivElement>(null)\n const debounceErrors = useDebounce(errors)\n const debounceWarnings = useDebounce(warnings)\n const hasHelp = help !== undefined && help !== null\n const hasError = !!(hasHelp || errors.length || warnings.length)\n const [marginBottom, setMarginBottom] = React.useState<number | null>(null)\n\n useLayoutEffect(() => {\n if (hasError && itemRef.current) {\n const itemStyle = getComputedStyle(itemRef.current)\n setMarginBottom(parseInt(itemStyle.marginBottom, 10))\n }\n }, [hasError])\n\n const onErrorVisibleChanged = (nextVisible: boolean) => {\n if (!nextVisible) {\n setMarginBottom(null)\n }\n }\n\n // ======================== Status ========================\n let mergedValidateStatus: ValidateStatus = ''\n if (validateStatus !== undefined) {\n mergedValidateStatus = validateStatus\n } else if (meta.validating) {\n mergedValidateStatus = 'validating'\n } else if (debounceErrors.length) {\n mergedValidateStatus = 'error'\n } else if (debounceWarnings.length) {\n mergedValidateStatus = 'warning'\n } else if (meta.touched) {\n mergedValidateStatus = 'success'\n }\n\n const formItemStatusContext = React.useMemo<FormItemStatusContextProps>(() => {\n let feedbackIcon: React.ReactNode\n if (hasFeedback) {\n const IconNode = mergedValidateStatus && iconMap[mergedValidateStatus]\n feedbackIcon = IconNode ? (\n <span\n className={classNames(\n `${itemPrefixCls}-feedback-icon`,\n `${itemPrefixCls}-feedback-icon-${mergedValidateStatus}`\n )}\n >\n <IconNode />\n </span>\n ) : null\n }\n\n return {\n status: mergedValidateStatus,\n hasFeedback,\n feedbackIcon,\n isFormItemInput: true,\n }\n }, [mergedValidateStatus, hasFeedback])\n\n // ======================== Render ========================\n const itemClassName = {\n [itemPrefixCls]: true,\n [`${itemPrefixCls}-with-help`]: hasHelp || debounceErrors.length || debounceWarnings.length,\n [`${className}`]: !!className,\n\n // Status\n [`${itemPrefixCls}-has-feedback has-feedback`]: mergedValidateStatus && hasFeedback,\n [`${itemPrefixCls}-has-success has-success`]: mergedValidateStatus === 'success',\n [`${itemPrefixCls}-has-warning has-warning`]: mergedValidateStatus === 'warning',\n [`${itemPrefixCls}-has-error has-error`]: mergedValidateStatus === 'error',\n [`${itemPrefixCls}-is-validating is-validating`]: mergedValidateStatus === 'validating',\n [`${itemPrefixCls}-hidden hidden`]: hidden,\n }\n\n return (\n <div className={classNames(itemClassName)} style={style} ref={itemRef}>\n <Row\n className={`${itemPrefixCls}-row`}\n {...omit(restProps, [\n '_internalItemRender' as any,\n 'colon',\n 'dependencies',\n 'extra',\n 'fieldKey',\n 'getValueFromEvent',\n 'getValueProps',\n 'htmlFor',\n 'id', // It is deprecated because `htmlFor` is its replacement.\n 'initialValue',\n 'isListField',\n 'label',\n 'labelAlign',\n 'labelCol',\n 'labelWrap',\n 'messageVariables',\n 'name',\n 'normalize',\n 'noStyle',\n 'preserve',\n 'required',\n 'requiredMark',\n 'rules',\n 'shouldUpdate',\n 'trigger',\n 'tooltip',\n 'validateFirst',\n 'validateTrigger',\n 'valuePropName',\n 'wrapperCol',\n ])}\n >\n {/* Label */}\n <FormItemLabel\n htmlFor={fieldId}\n required={isRequired}\n requiredMark={requiredMark}\n {...props}\n prefixCls={prefixCls}\n />\n {/* Input Group */}\n <FormItemInput\n {...props}\n {...meta}\n errors={debounceErrors}\n warnings={debounceWarnings}\n prefixCls={prefixCls}\n status={mergedValidateStatus}\n help={help}\n marginBottom={marginBottom}\n onErrorVisibleChanged={onErrorVisibleChanged}\n >\n <NoStyleItemContext.Provider value={onSubItemMetaChange}>\n <FormItemInputContext.Provider value={formItemStatusContext}>\n {children}\n </FormItemInputContext.Provider>\n </NoStyleItemContext.Provider>\n </FormItemInput>\n </Row>\n\n {!!marginBottom && (\n <div\n className={`${itemPrefixCls}-margin-offset`}\n style={{\n marginBottom: -marginBottom,\n }}\n />\n )}\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Field, FieldContext, ListContext } from 'rc-field-form';
|
|
2
|
+
import useState from 'rc-util/lib/hooks/useState';
|
|
3
|
+
import { supportRef } from 'rc-util/lib/ref';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { useContext } from 'react';
|
|
6
|
+
import useFormItemStatus from '../hooks/useFormItemStatus';
|
|
7
|
+
import { ConfigContext } from '../../config-provider';
|
|
8
|
+
import DisabledContext from '../../config-provider/DisabledContext';
|
|
9
|
+
import { cloneElement, isValidElement } from '../_util/reactNode';
|
|
10
|
+
import { tuple } from '../_util/type';
|
|
11
|
+
import warning from '../_util/warning';
|
|
12
|
+
import { FormContext, NoStyleItemContext } from '../context';
|
|
13
|
+
import useFrameState from '../hooks/useFrameState';
|
|
14
|
+
import useItemRef from '../hooks/useItemRef';
|
|
15
|
+
import { getFieldId, toArray } from '../util';
|
|
16
|
+
import ItemHolder from './ItemHolder';
|
|
17
|
+
const NAME_SPLIT = '__SPLIT__';
|
|
18
|
+
const ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');
|
|
19
|
+
const MemoInput = React.memo(({
|
|
20
|
+
children
|
|
21
|
+
}) => children, (prev, next) => prev.value === next.value && prev.update === next.update && prev.childProps.length === next.childProps.length && prev.childProps.every((value, index) => value === next.childProps[index]));
|
|
22
|
+
function hasValidName(name) {
|
|
23
|
+
if (name === null) {
|
|
24
|
+
warning(false, 'Form.Item', '`null` is passed as `name` property');
|
|
25
|
+
}
|
|
26
|
+
return !(name === undefined || name === null);
|
|
27
|
+
}
|
|
28
|
+
function genEmptyMeta() {
|
|
29
|
+
return {
|
|
30
|
+
errors: [],
|
|
31
|
+
warnings: [],
|
|
32
|
+
touched: false,
|
|
33
|
+
validating: false,
|
|
34
|
+
validated: false,
|
|
35
|
+
name: []
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function InternalFormItem(props) {
|
|
39
|
+
var _a, _b, _c, _d;
|
|
40
|
+
const {
|
|
41
|
+
name,
|
|
42
|
+
noStyle,
|
|
43
|
+
dependencies,
|
|
44
|
+
prefixCls: customizePrefixCls,
|
|
45
|
+
shouldUpdate,
|
|
46
|
+
rules,
|
|
47
|
+
children,
|
|
48
|
+
required,
|
|
49
|
+
label,
|
|
50
|
+
messageVariables,
|
|
51
|
+
trigger = 'onChange',
|
|
52
|
+
validateTrigger,
|
|
53
|
+
hidden
|
|
54
|
+
} = props;
|
|
55
|
+
// TODO
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
const {
|
|
58
|
+
getPrefixCls
|
|
59
|
+
} = useContext(ConfigContext);
|
|
60
|
+
const {
|
|
61
|
+
name: formName
|
|
62
|
+
} = useContext(FormContext);
|
|
63
|
+
const isRenderProps = typeof children === 'function';
|
|
64
|
+
const notifyParentMetaChange = useContext(NoStyleItemContext);
|
|
65
|
+
const contextDisabled = useContext(DisabledContext);
|
|
66
|
+
const {
|
|
67
|
+
readonly: contextReadonly
|
|
68
|
+
} = useContext(FormContext);
|
|
69
|
+
const {
|
|
70
|
+
validateTrigger: contextValidateTrigger
|
|
71
|
+
} = useContext(FieldContext);
|
|
72
|
+
const mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : contextValidateTrigger;
|
|
73
|
+
const hasName = hasValidName(name);
|
|
74
|
+
const prefixCls = getPrefixCls('form', customizePrefixCls);
|
|
75
|
+
// ========================= MISC =========================
|
|
76
|
+
// Get `noStyle` required info
|
|
77
|
+
const listContext = React.useContext(ListContext);
|
|
78
|
+
const fieldKeyPathRef = React.useRef();
|
|
79
|
+
// ======================== Errors ========================
|
|
80
|
+
// >>>>> Collect sub field errors
|
|
81
|
+
const [subFieldErrors, setSubFieldErrors] = useFrameState({});
|
|
82
|
+
// >>>>> Current field errors
|
|
83
|
+
const [meta, setMeta] = useState(() => genEmptyMeta());
|
|
84
|
+
const onMetaChange = nextMeta => {
|
|
85
|
+
// This keyInfo is not correct when field is removed
|
|
86
|
+
// Since origin keyManager no longer keep the origin key anymore
|
|
87
|
+
// Which means we need cache origin one and reuse when removed
|
|
88
|
+
const keyInfo = listContext === null || listContext === void 0 ? void 0 : listContext.getKey(nextMeta.name);
|
|
89
|
+
// Destroy will reset all the meta
|
|
90
|
+
setMeta(nextMeta.destroy ? genEmptyMeta() : nextMeta, true);
|
|
91
|
+
// Bump to parent since noStyle
|
|
92
|
+
if (noStyle && notifyParentMetaChange) {
|
|
93
|
+
let namePath = nextMeta.name;
|
|
94
|
+
if (!nextMeta.destroy) {
|
|
95
|
+
if (keyInfo !== undefined) {
|
|
96
|
+
const [fieldKey, restPath] = keyInfo;
|
|
97
|
+
namePath = [fieldKey, ...restPath];
|
|
98
|
+
fieldKeyPathRef.current = namePath;
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
// Use origin cache data
|
|
102
|
+
namePath = fieldKeyPathRef.current || namePath;
|
|
103
|
+
}
|
|
104
|
+
notifyParentMetaChange(nextMeta, namePath);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
// >>>>> Collect noStyle Field error to the top FormItem
|
|
108
|
+
const onSubItemMetaChange = (subMeta, uniqueKeys) => {
|
|
109
|
+
// Only `noStyle` sub item will trigger
|
|
110
|
+
setSubFieldErrors(prevSubFieldErrors => {
|
|
111
|
+
const clone = Object.assign({}, prevSubFieldErrors);
|
|
112
|
+
// name: ['user', 1] + key: [4] = ['user', 4]
|
|
113
|
+
const mergedNamePath = [...subMeta.name.slice(0, -1), ...uniqueKeys];
|
|
114
|
+
const mergedNameKey = mergedNamePath.join(NAME_SPLIT);
|
|
115
|
+
if (subMeta.destroy) {
|
|
116
|
+
// Remove
|
|
117
|
+
delete clone[mergedNameKey];
|
|
118
|
+
} else {
|
|
119
|
+
// Update
|
|
120
|
+
clone[mergedNameKey] = subMeta;
|
|
121
|
+
}
|
|
122
|
+
return clone;
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
// >>>>> Get merged errors
|
|
126
|
+
const [mergedErrors, mergedWarnings] = React.useMemo(() => {
|
|
127
|
+
const errorList = [...meta.errors];
|
|
128
|
+
const warningList = [...meta.warnings];
|
|
129
|
+
Object.values(subFieldErrors).forEach(subFieldError => {
|
|
130
|
+
errorList.push(...(subFieldError.errors || []));
|
|
131
|
+
warningList.push(...(subFieldError.warnings || []));
|
|
132
|
+
});
|
|
133
|
+
return [errorList, warningList];
|
|
134
|
+
}, [subFieldErrors, meta.errors, meta.warnings]);
|
|
135
|
+
// ===================== Children Ref =====================
|
|
136
|
+
const getItemRef = useItemRef();
|
|
137
|
+
// ======================== Render ========================
|
|
138
|
+
function renderLayout(baseChildren, fieldId, isRequired) {
|
|
139
|
+
if (noStyle && !hidden) {
|
|
140
|
+
return baseChildren;
|
|
141
|
+
}
|
|
142
|
+
return React.createElement(ItemHolder, Object.assign({
|
|
143
|
+
key: "row"
|
|
144
|
+
}, props, {
|
|
145
|
+
prefixCls: prefixCls,
|
|
146
|
+
fieldId: fieldId,
|
|
147
|
+
isRequired: isRequired,
|
|
148
|
+
errors: mergedErrors,
|
|
149
|
+
warnings: mergedWarnings,
|
|
150
|
+
meta: meta,
|
|
151
|
+
// TODO
|
|
152
|
+
// @ts-ignore
|
|
153
|
+
onSubItemMetaChange: onSubItemMetaChange
|
|
154
|
+
}), baseChildren);
|
|
155
|
+
}
|
|
156
|
+
if (!hasName && !isRenderProps && !dependencies) {
|
|
157
|
+
if (isValidElement(children)) {
|
|
158
|
+
return renderLayout(cloneElement(children, Object.assign(Object.assign({}, children.props), {
|
|
159
|
+
disabled: (_b = (_a = children.props) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : contextDisabled,
|
|
160
|
+
readonly: (_d = (_c = children.props) === null || _c === void 0 ? void 0 : _c.readonly) !== null && _d !== void 0 ? _d : contextReadonly
|
|
161
|
+
})));
|
|
162
|
+
}
|
|
163
|
+
return renderLayout(children);
|
|
164
|
+
}
|
|
165
|
+
let variables = {};
|
|
166
|
+
if (typeof label === 'string') {
|
|
167
|
+
variables.label = label;
|
|
168
|
+
} else if (name) {
|
|
169
|
+
variables.label = String(name);
|
|
170
|
+
}
|
|
171
|
+
if (messageVariables) {
|
|
172
|
+
variables = Object.assign(Object.assign({}, variables), messageVariables);
|
|
173
|
+
}
|
|
174
|
+
// >>>>> With Field
|
|
175
|
+
return React.createElement(Field, Object.assign({}, props, {
|
|
176
|
+
messageVariables: variables,
|
|
177
|
+
trigger: trigger,
|
|
178
|
+
validateTrigger: mergedValidateTrigger,
|
|
179
|
+
onMetaChange: onMetaChange
|
|
180
|
+
}), (control, renderMeta, context) => {
|
|
181
|
+
var _a, _b, _c, _d;
|
|
182
|
+
const mergedName = toArray(name).length && renderMeta ? renderMeta.name : [];
|
|
183
|
+
const fieldId = getFieldId(mergedName, formName);
|
|
184
|
+
const isRequired = required !== undefined ? required : !!(rules && rules.some(rule => {
|
|
185
|
+
if (rule && typeof rule === 'object' && rule.required && !rule.warningOnly) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (typeof rule === 'function') {
|
|
189
|
+
const ruleEntity = rule(context);
|
|
190
|
+
return ruleEntity && ruleEntity.required && !ruleEntity.warningOnly;
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}));
|
|
194
|
+
// ======================= Children =======================
|
|
195
|
+
const mergedControl = Object.assign({}, control);
|
|
196
|
+
let childNode = null;
|
|
197
|
+
warning(!(shouldUpdate && dependencies), 'Form.Item', "`shouldUpdate` and `dependencies` shouldn't be used together. See https://u.ant.design/form-deps.");
|
|
198
|
+
if (Array.isArray(children) && hasName) {
|
|
199
|
+
warning(false, 'Form.Item', 'A `Form.Item` with a `name` prop must have a single child element. For information on how to render more complex form items, see https://u.ant.design/complex-form-item.');
|
|
200
|
+
childNode = children;
|
|
201
|
+
} else if (isRenderProps && (!(shouldUpdate || dependencies) || hasName)) {
|
|
202
|
+
warning(!!(shouldUpdate || dependencies), 'Form.Item', 'A `Form.Item` with a render function must have either `shouldUpdate` or `dependencies`.');
|
|
203
|
+
warning(!hasName, 'Form.Item', 'A `Form.Item` with a render function cannot be a field, and thus cannot have a `name` prop.');
|
|
204
|
+
} else if (dependencies && !isRenderProps && !hasName) {
|
|
205
|
+
warning(false, 'Form.Item', 'Must set `name` or use a render function when `dependencies` is set.');
|
|
206
|
+
} else if (isValidElement(children)) {
|
|
207
|
+
warning(children.props.defaultValue === undefined, 'Form.Item', '`defaultValue` will not work on controlled Field. You should use `initialValues` of Form instead.');
|
|
208
|
+
const childProps = Object.assign(Object.assign(Object.assign({}, children.props), mergedControl), {
|
|
209
|
+
disabled: (_b = (_a = children.props) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : contextDisabled
|
|
210
|
+
});
|
|
211
|
+
if (contextReadonly !== undefined) {
|
|
212
|
+
childProps.readonly = (_d = (_c = children.props) === null || _c === void 0 ? void 0 : _c.readonly) !== null && _d !== void 0 ? _d : contextReadonly;
|
|
213
|
+
}
|
|
214
|
+
if (!childProps.id) {
|
|
215
|
+
childProps.id = fieldId;
|
|
216
|
+
}
|
|
217
|
+
if (props.help || mergedErrors.length > 0 || mergedWarnings.length > 0 || props.extra) {
|
|
218
|
+
const describedbyArr = [];
|
|
219
|
+
if (props.help || mergedErrors.length > 0) {
|
|
220
|
+
describedbyArr.push(`${fieldId}_help`);
|
|
221
|
+
}
|
|
222
|
+
if (props.extra) {
|
|
223
|
+
describedbyArr.push(`${fieldId}_extra`);
|
|
224
|
+
}
|
|
225
|
+
childProps['aria-describedby'] = describedbyArr.join(' ');
|
|
226
|
+
}
|
|
227
|
+
if (mergedErrors.length > 0) {
|
|
228
|
+
childProps['aria-invalid'] = 'true';
|
|
229
|
+
}
|
|
230
|
+
if (isRequired) {
|
|
231
|
+
childProps['aria-required'] = 'true';
|
|
232
|
+
}
|
|
233
|
+
if (supportRef(children)) {
|
|
234
|
+
childProps.ref = getItemRef(mergedName, children);
|
|
235
|
+
}
|
|
236
|
+
// We should keep user origin event handler
|
|
237
|
+
const triggers = new Set([...toArray(trigger), ...toArray(mergedValidateTrigger)]);
|
|
238
|
+
triggers.forEach(eventName => {
|
|
239
|
+
childProps[eventName] = (...args) => {
|
|
240
|
+
var _a, _b, _c;
|
|
241
|
+
(_a = mergedControl[eventName]) === null || _a === void 0 ? void 0 : _a.call(mergedControl, ...args);
|
|
242
|
+
// @ts-ignore
|
|
243
|
+
(_c = (_b = children === null || children === void 0 ? void 0 : children.props) === null || _b === void 0 ? void 0 : _b[eventName]) === null || _c === void 0 ? void 0 : _c.call(_b, ...args);
|
|
244
|
+
};
|
|
245
|
+
});
|
|
246
|
+
// List of props that need to be watched for changes -> if changes are detected in MemoInput -> rerender
|
|
247
|
+
const watchingChildProps = [childProps['aria-required'], childProps['aria-invalid'], childProps['aria-describedby'], childProps.disabled, childProps.readonly];
|
|
248
|
+
childNode = React.createElement(MemoInput, {
|
|
249
|
+
value: mergedControl[props.valuePropName || 'value'],
|
|
250
|
+
update: children,
|
|
251
|
+
childProps: watchingChildProps
|
|
252
|
+
}, cloneElement(children, childProps));
|
|
253
|
+
} else if (isRenderProps && (shouldUpdate || dependencies) && !hasName) {
|
|
254
|
+
childNode = children(context);
|
|
255
|
+
} else {
|
|
256
|
+
warning(!mergedName.length, 'Form.Item', '`name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead.');
|
|
257
|
+
childNode = children;
|
|
258
|
+
}
|
|
259
|
+
return renderLayout(childNode, fieldId, isRequired);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
const FormItem = InternalFormItem;
|
|
263
|
+
FormItem.useStatus = useFormItemStatus;
|
|
264
|
+
export default FormItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tntd-form/FormItem/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { FormInstance } from 'rc-field-form'\nimport { Field, FieldContext, ListContext } from 'rc-field-form'\nimport type { FieldProps } from 'rc-field-form/lib/Field'\nimport type { Meta, NamePath } from 'rc-field-form/lib/interface'\nimport useState from 'rc-util/lib/hooks/useState'\nimport { supportRef } from 'rc-util/lib/ref'\nimport * as React from 'react'\nimport { useContext } from 'react'\nimport useFormItemStatus from '../hooks/useFormItemStatus'\nimport { ConfigContext } from '../../config-provider'\nimport DisabledContext from '../../config-provider/DisabledContext'\nimport { cloneElement, isValidElement } from '../_util/reactNode'\nimport { tuple } from '../_util/type'\nimport warning from '../_util/warning'\nimport { FormContext, NoStyleItemContext } from '../context'\nimport type { FormItemInputProps } from '../FormItemInput'\nimport type { FormItemLabelProps, LabelTooltipType } from '../FormItemLabel'\nimport useFrameState from '../hooks/useFrameState'\nimport useItemRef from '../hooks/useItemRef'\nimport { getFieldId, toArray } from '../util'\nimport ItemHolder from './ItemHolder'\n\nconst NAME_SPLIT = '__SPLIT__'\n\ninterface FieldError {\n errors: string[]\n warnings: string[]\n}\n\nconst ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '')\nexport type ValidateStatus = typeof ValidateStatuses[number]\n\ntype RenderChildren<Values = any> = (form: FormInstance<Values>) => React.ReactNode\ntype RcFieldProps<Values = any> = Omit<FieldProps<Values>, 'children'>\ntype ChildrenType<Values = any> = RenderChildren<Values> | React.ReactNode\n\ninterface MemoInputProps {\n value: any\n update: any\n children: React.ReactNode\n childProps: any[]\n}\n\nconst MemoInput = React.memo(\n ({ children }: MemoInputProps) => children as JSX.Element,\n (prev, next) =>\n prev.value === next.value &&\n prev.update === next.update &&\n prev.childProps.length === next.childProps.length &&\n prev.childProps.every((value, index) => value === next.childProps[index])\n)\n\nexport interface FormItemProps<Values = any>\n extends FormItemLabelProps,\n FormItemInputProps,\n RcFieldProps<Values> {\n prefixCls?: string\n noStyle?: boolean\n style?: React.CSSProperties\n className?: string\n children?: ChildrenType<Values>\n id?: string\n hasFeedback?: boolean\n validateStatus?: ValidateStatus\n required?: boolean\n hidden?: boolean\n initialValue?: any\n messageVariables?: Record<string, string>\n tooltip?: LabelTooltipType\n /** @deprecated No need anymore */\n fieldKey?: React.Key | React.Key[]\n}\n\nfunction hasValidName(name?: NamePath): boolean {\n if (name === null) {\n warning(false, 'Form.Item', '`null` is passed as `name` property')\n }\n return !(name === undefined || name === null)\n}\n\nfunction genEmptyMeta(): Meta {\n return {\n errors: [],\n warnings: [],\n touched: false,\n validating: false,\n validated: false,\n name: [],\n }\n}\n\nfunction InternalFormItem<Values = any>(props: FormItemProps<Values>): React.ReactElement {\n const {\n name,\n noStyle,\n dependencies,\n prefixCls: customizePrefixCls,\n shouldUpdate,\n rules,\n children,\n required,\n label,\n messageVariables,\n trigger = 'onChange',\n validateTrigger,\n hidden,\n } = props\n // TODO\n // @ts-ignore\n const { getPrefixCls } = useContext(ConfigContext)\n const { name: formName } = useContext(FormContext)\n const isRenderProps = typeof children === 'function'\n const notifyParentMetaChange = useContext(NoStyleItemContext)\n const contextDisabled = useContext(DisabledContext)\n const { readonly: contextReadonly } = useContext(FormContext)\n\n const { validateTrigger: contextValidateTrigger } = useContext(FieldContext)\n const mergedValidateTrigger =\n validateTrigger !== undefined ? validateTrigger : contextValidateTrigger\n\n const hasName = hasValidName(name)\n\n const prefixCls = getPrefixCls('form', customizePrefixCls)\n\n // ========================= MISC =========================\n // Get `noStyle` required info\n const listContext = React.useContext(ListContext)\n const fieldKeyPathRef = React.useRef<React.Key[]>()\n\n // ======================== Errors ========================\n // >>>>> Collect sub field errors\n const [subFieldErrors, setSubFieldErrors] = useFrameState<Record<string, FieldError>>({})\n\n // >>>>> Current field errors\n const [meta, setMeta] = useState<Meta>(() => genEmptyMeta())\n\n const onMetaChange = (nextMeta: Meta & { destroy?: boolean }) => {\n // This keyInfo is not correct when field is removed\n // Since origin keyManager no longer keep the origin key anymore\n // Which means we need cache origin one and reuse when removed\n const keyInfo = listContext?.getKey(nextMeta.name)\n\n // Destroy will reset all the meta\n setMeta(nextMeta.destroy ? genEmptyMeta() : nextMeta, true)\n\n // Bump to parent since noStyle\n if (noStyle && notifyParentMetaChange) {\n let namePath = nextMeta.name\n\n if (!nextMeta.destroy) {\n if (keyInfo !== undefined) {\n const [fieldKey, restPath] = keyInfo\n namePath = [fieldKey, ...restPath]\n fieldKeyPathRef.current = namePath\n }\n } else {\n // Use origin cache data\n namePath = fieldKeyPathRef.current || namePath\n }\n notifyParentMetaChange(nextMeta, namePath)\n }\n }\n\n // >>>>> Collect noStyle Field error to the top FormItem\n const onSubItemMetaChange = (subMeta: Meta & { destroy: boolean }, uniqueKeys: React.Key[]) => {\n // Only `noStyle` sub item will trigger\n setSubFieldErrors((prevSubFieldErrors) => {\n const clone = {\n ...prevSubFieldErrors,\n }\n\n // name: ['user', 1] + key: [4] = ['user', 4]\n const mergedNamePath = [...subMeta.name.slice(0, -1), ...uniqueKeys]\n const mergedNameKey = mergedNamePath.join(NAME_SPLIT)\n\n if (subMeta.destroy) {\n // Remove\n delete clone[mergedNameKey]\n } else {\n // Update\n clone[mergedNameKey] = subMeta\n }\n\n return clone\n })\n }\n\n // >>>>> Get merged errors\n const [mergedErrors, mergedWarnings] = React.useMemo(() => {\n const errorList: string[] = [...meta.errors]\n const warningList: string[] = [...meta.warnings]\n\n Object.values(subFieldErrors).forEach((subFieldError) => {\n errorList.push(...(subFieldError.errors || []))\n warningList.push(...(subFieldError.warnings || []))\n })\n\n return [errorList, warningList]\n }, [subFieldErrors, meta.errors, meta.warnings])\n\n // ===================== Children Ref =====================\n const getItemRef = useItemRef()\n\n // ======================== Render ========================\n function renderLayout(\n baseChildren: React.ReactNode,\n fieldId?: string,\n isRequired?: boolean\n ): React.ReactNode {\n if (noStyle && !hidden) {\n return baseChildren\n }\n\n return (\n <ItemHolder\n key=\"row\"\n {...props}\n prefixCls={prefixCls}\n fieldId={fieldId}\n isRequired={isRequired}\n errors={mergedErrors}\n warnings={mergedWarnings}\n meta={meta}\n // TODO\n // @ts-ignore\n onSubItemMetaChange={onSubItemMetaChange}\n >\n {baseChildren}\n </ItemHolder>\n )\n }\n\n if (!hasName && !isRenderProps && !dependencies) {\n if (isValidElement(children)) {\n return renderLayout(\n cloneElement(children, {\n ...children.props,\n disabled: children.props?.disabled ?? contextDisabled,\n readonly: children.props?.readonly ?? contextReadonly,\n })\n ) as JSX.Element\n }\n return renderLayout(children) as JSX.Element\n }\n\n let variables: Record<string, string> = {}\n if (typeof label === 'string') {\n variables.label = label\n } else if (name) {\n variables.label = String(name)\n }\n if (messageVariables) {\n variables = { ...variables, ...messageVariables }\n }\n\n // >>>>> With Field\n return (\n <Field\n {...props}\n messageVariables={variables}\n trigger={trigger}\n validateTrigger={mergedValidateTrigger}\n onMetaChange={onMetaChange}\n >\n {(control, renderMeta, context) => {\n const mergedName = toArray(name).length && renderMeta ? renderMeta.name : []\n const fieldId = getFieldId(mergedName, formName)\n\n const isRequired =\n required !== undefined\n ? required\n : !!(\n rules &&\n rules.some((rule) => {\n if (rule && typeof rule === 'object' && rule.required && !rule.warningOnly) {\n return true\n }\n if (typeof rule === 'function') {\n const ruleEntity = rule(context)\n return ruleEntity && ruleEntity.required && !ruleEntity.warningOnly\n }\n return false\n })\n )\n\n // ======================= Children =======================\n const mergedControl: typeof control = {\n ...control,\n }\n\n let childNode: React.ReactNode = null\n\n warning(\n !(shouldUpdate && dependencies),\n 'Form.Item',\n \"`shouldUpdate` and `dependencies` shouldn't be used together. See https://u.ant.design/form-deps.\"\n )\n if (Array.isArray(children) && hasName) {\n warning(\n false,\n 'Form.Item',\n 'A `Form.Item` with a `name` prop must have a single child element. For information on how to render more complex form items, see https://u.ant.design/complex-form-item.'\n )\n childNode = children\n } else if (isRenderProps && (!(shouldUpdate || dependencies) || hasName)) {\n warning(\n !!(shouldUpdate || dependencies),\n 'Form.Item',\n 'A `Form.Item` with a render function must have either `shouldUpdate` or `dependencies`.'\n )\n warning(\n !hasName,\n 'Form.Item',\n 'A `Form.Item` with a render function cannot be a field, and thus cannot have a `name` prop.'\n )\n } else if (dependencies && !isRenderProps && !hasName) {\n warning(\n false,\n 'Form.Item',\n 'Must set `name` or use a render function when `dependencies` is set.'\n )\n } else if (isValidElement(children)) {\n warning(\n children.props.defaultValue === undefined,\n 'Form.Item',\n '`defaultValue` will not work on controlled Field. You should use `initialValues` of Form instead.'\n )\n\n const childProps = {\n ...children.props,\n ...mergedControl,\n disabled: children.props?.disabled ?? contextDisabled,\n }\n\n if (contextReadonly !== undefined) {\n childProps.readonly = children.props?.readonly ?? contextReadonly\n }\n\n if (!childProps.id) {\n childProps.id = fieldId\n }\n\n if (props.help || mergedErrors.length > 0 || mergedWarnings.length > 0 || props.extra) {\n const describedbyArr = []\n if (props.help || mergedErrors.length > 0) {\n describedbyArr.push(`${fieldId}_help`)\n }\n if (props.extra) {\n describedbyArr.push(`${fieldId}_extra`)\n }\n childProps['aria-describedby'] = describedbyArr.join(' ')\n }\n\n if (mergedErrors.length > 0) {\n childProps['aria-invalid'] = 'true'\n }\n\n if (isRequired) {\n childProps['aria-required'] = 'true'\n }\n\n if (supportRef(children)) {\n childProps.ref = getItemRef(mergedName, children)\n }\n\n // We should keep user origin event handler\n const triggers = new Set<string>([...toArray(trigger), ...toArray(mergedValidateTrigger)])\n\n triggers.forEach((eventName) => {\n childProps[eventName] = (...args: any[]) => {\n mergedControl[eventName]?.(...args)\n // @ts-ignore\n children?.props?.[eventName]?.(...args)\n }\n })\n\n // List of props that need to be watched for changes -> if changes are detected in MemoInput -> rerender\n const watchingChildProps = [\n childProps['aria-required'],\n childProps['aria-invalid'],\n childProps['aria-describedby'],\n childProps.disabled,\n childProps.readonly,\n ]\n\n childNode = (\n <MemoInput\n value={mergedControl[props.valuePropName || 'value']}\n update={children}\n childProps={watchingChildProps}\n >\n {cloneElement(children, childProps)}\n </MemoInput>\n )\n } else if (isRenderProps && (shouldUpdate || dependencies) && !hasName) {\n childNode = (children as RenderChildren)(context)\n } else {\n warning(\n !mergedName.length,\n 'Form.Item',\n '`name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead.'\n )\n childNode = children as React.ReactNode\n }\n\n return renderLayout(childNode, fieldId, isRequired)\n }}\n </Field>\n )\n}\n\ntype InternalFormItemType = typeof InternalFormItem\n\ntype CompoundedComponent = InternalFormItemType & {\n useStatus: typeof useFormItemStatus\n}\n\nconst FormItem = InternalFormItem as CompoundedComponent\nFormItem.useStatus = useFormItemStatus\n\nexport default FormItem\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import classNames from 'classnames';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import Col from '../col';
|
|
4
|
+
import { FormContext, FormItemPrefixContext } from './context';
|
|
5
|
+
import ErrorList from './ErrorList';
|
|
6
|
+
const FormItemInput = props => {
|
|
7
|
+
const {
|
|
8
|
+
prefixCls,
|
|
9
|
+
status,
|
|
10
|
+
wrapperCol,
|
|
11
|
+
children,
|
|
12
|
+
errors,
|
|
13
|
+
warnings,
|
|
14
|
+
_internalItemRender: formItemRender,
|
|
15
|
+
extra,
|
|
16
|
+
help,
|
|
17
|
+
fieldId,
|
|
18
|
+
marginBottom,
|
|
19
|
+
onErrorVisibleChanged
|
|
20
|
+
} = props;
|
|
21
|
+
const baseClassName = `${prefixCls}-item`;
|
|
22
|
+
const formContext = React.useContext(FormContext);
|
|
23
|
+
const mergedWrapperCol = wrapperCol || formContext.wrapperCol || {};
|
|
24
|
+
const className = classNames(`${baseClassName}-control`, mergedWrapperCol.className);
|
|
25
|
+
// Pass to sub FormItem should not with col info
|
|
26
|
+
const subFormContext = React.useMemo(() => Object.assign({}, formContext), [formContext]);
|
|
27
|
+
delete subFormContext.labelCol;
|
|
28
|
+
delete subFormContext.wrapperCol;
|
|
29
|
+
const inputDom = React.createElement("div", {
|
|
30
|
+
className: `${baseClassName}-control-input`
|
|
31
|
+
}, React.createElement("div", {
|
|
32
|
+
className: `${baseClassName}-control-input-content`
|
|
33
|
+
}, children));
|
|
34
|
+
const formItemContext = React.useMemo(() => ({
|
|
35
|
+
prefixCls,
|
|
36
|
+
status
|
|
37
|
+
}), [prefixCls, status]);
|
|
38
|
+
const errorListDom = marginBottom !== null || errors.length || warnings.length ? React.createElement("div", {
|
|
39
|
+
style: {
|
|
40
|
+
display: 'flex',
|
|
41
|
+
flexWrap: 'nowrap'
|
|
42
|
+
}
|
|
43
|
+
}, React.createElement(FormItemPrefixContext.Provider, {
|
|
44
|
+
value: formItemContext
|
|
45
|
+
}, React.createElement(ErrorList, {
|
|
46
|
+
fieldId: fieldId,
|
|
47
|
+
errors: errors,
|
|
48
|
+
warnings: warnings,
|
|
49
|
+
help: help,
|
|
50
|
+
helpStatus: status,
|
|
51
|
+
className: `${baseClassName}-explain-connected`,
|
|
52
|
+
onVisibleChanged: onErrorVisibleChanged
|
|
53
|
+
})), !!marginBottom && React.createElement("div", {
|
|
54
|
+
style: {
|
|
55
|
+
width: 0,
|
|
56
|
+
height: marginBottom
|
|
57
|
+
}
|
|
58
|
+
})) : null;
|
|
59
|
+
const extraProps = {};
|
|
60
|
+
if (fieldId) {
|
|
61
|
+
extraProps.id = `${fieldId}_extra`;
|
|
62
|
+
}
|
|
63
|
+
// If extra = 0, && will goes wrong
|
|
64
|
+
// 0&&error -> 0
|
|
65
|
+
const extraDom = extra ? React.createElement("div", Object.assign({}, extraProps, {
|
|
66
|
+
className: `${baseClassName}-extra`
|
|
67
|
+
}), extra) : null;
|
|
68
|
+
const dom = formItemRender && formItemRender.mark === 'pro_table_render' && formItemRender.render ? formItemRender.render(props, {
|
|
69
|
+
input: inputDom,
|
|
70
|
+
errorList: errorListDom,
|
|
71
|
+
extra: extraDom
|
|
72
|
+
}) : React.createElement(React.Fragment, null, inputDom, errorListDom, extraDom);
|
|
73
|
+
return React.createElement(FormContext.Provider, {
|
|
74
|
+
value: subFormContext
|
|
75
|
+
}, React.createElement(Col, Object.assign({}, mergedWrapperCol, {
|
|
76
|
+
className: className
|
|
77
|
+
}), dom));
|
|
78
|
+
};
|
|
79
|
+
export default FormItemInput;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormItemInput.js","sourceRoot":"","sources":["../../src/tntd-form/FormItemInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames'\nimport * as React from 'react'\n// import type { ColProps } from '../grid/col';\n// import Col from '../grid/col';\nimport type { ColProps } from '../col'\nimport Col from '../col'\nimport { FormContext, FormItemPrefixContext } from './context'\nimport ErrorList from './ErrorList'\nimport type { ValidateStatus } from './FormItem'\n\ninterface FormItemInputMiscProps {\n prefixCls: string\n children: React.ReactNode\n errors: React.ReactNode[]\n warnings: React.ReactNode[]\n marginBottom?: number | null\n onErrorVisibleChanged?: (visible: boolean) => void\n /** @internal do not use in any of your production. */\n _internalItemRender?: {\n mark: string\n render: (\n props: FormItemInputProps & FormItemInputMiscProps,\n domList: {\n input: JSX.Element\n errorList: JSX.Element | null\n extra: JSX.Element | null\n }\n ) => React.ReactNode\n }\n}\n\nexport interface FormItemInputProps {\n wrapperCol?: ColProps\n extra?: React.ReactNode\n status?: ValidateStatus\n help?: React.ReactNode\n fieldId?: string\n}\n\nconst FormItemInput: React.FC<FormItemInputProps & FormItemInputMiscProps> = (props) => {\n const {\n prefixCls,\n status,\n wrapperCol,\n children,\n errors,\n warnings,\n _internalItemRender: formItemRender,\n extra,\n help,\n fieldId,\n marginBottom,\n onErrorVisibleChanged,\n } = props\n const baseClassName = `${prefixCls}-item`\n\n const formContext = React.useContext(FormContext)\n\n const mergedWrapperCol: ColProps = wrapperCol || formContext.wrapperCol || {}\n\n const className = classNames(`${baseClassName}-control`, mergedWrapperCol.className)\n\n // Pass to sub FormItem should not with col info\n const subFormContext = React.useMemo(() => ({ ...formContext }), [formContext])\n delete subFormContext.labelCol\n delete subFormContext.wrapperCol\n\n const inputDom = (\n <div className={`${baseClassName}-control-input`}>\n <div className={`${baseClassName}-control-input-content`}>{children}</div>\n </div>\n )\n const formItemContext = React.useMemo(() => ({ prefixCls, status }), [prefixCls, status])\n const errorListDom =\n marginBottom !== null || errors.length || warnings.length ? (\n <div style={{ display: 'flex', flexWrap: 'nowrap' }}>\n <FormItemPrefixContext.Provider value={formItemContext}>\n <ErrorList\n fieldId={fieldId}\n errors={errors}\n warnings={warnings}\n help={help}\n helpStatus={status}\n className={`${baseClassName}-explain-connected`}\n onVisibleChanged={onErrorVisibleChanged}\n />\n </FormItemPrefixContext.Provider>\n {!!marginBottom && <div style={{ width: 0, height: marginBottom }} />}\n </div>\n ) : null\n\n const extraProps: { id?: string } = {}\n\n if (fieldId) {\n extraProps.id = `${fieldId}_extra`\n }\n\n // If extra = 0, && will goes wrong\n // 0&&error -> 0\n const extraDom = extra ? (\n <div {...extraProps} className={`${baseClassName}-extra`}>\n {extra}\n </div>\n ) : null\n\n const dom =\n formItemRender && formItemRender.mark === 'pro_table_render' && formItemRender.render ? (\n formItemRender.render(props, { input: inputDom, errorList: errorListDom, extra: extraDom })\n ) : (\n <>\n {inputDom}\n {errorListDom}\n {extraDom}\n </>\n )\n return (\n <FormContext.Provider value={subFormContext}>\n <Col {...mergedWrapperCol} className={className}>\n {dom}\n </Col>\n </FormContext.Provider>\n )\n}\n\nexport default FormItemInput\n"]}
|