tntd 2.6.9 → 2.6.11
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 +2 -2
- package/es/ellipsis/index.js.map +1 -1
- package/es/ellipsis/index.less +1 -1
- package/es/handle/index.js +1 -1
- 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/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/prev-locale.js +1 -1
- package/es/prev-locale.js.map +1 -1
- 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/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/hooks/use-column-setting.js.map +1 -1
- package/es/table/table.js +40 -5
- 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 +2 -2
- 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 +1 -1
- 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/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/prev-locale.js +1 -1
- package/lib/prev-locale.js.map +1 -1
- 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/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/hooks/use-column-setting.d.ts +4 -1
- package/lib/table/hooks/use-column-setting.d.ts.map +1 -1
- package/lib/table/hooks/use-column-setting.js.map +1 -1
- package/lib/table/table.d.ts.map +1 -1
- package/lib/table/table.js +44 -8
- 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,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"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
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 Icon from '../icon';
|
|
10
|
+
import classNames from 'classnames';
|
|
11
|
+
import * as React from 'react';
|
|
12
|
+
import Col from '../col';
|
|
13
|
+
import Tooltip from '../tooltip';
|
|
14
|
+
import { FormContext } from './context';
|
|
15
|
+
function toTooltipProps(tooltip) {
|
|
16
|
+
if (!tooltip) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
if (typeof tooltip === 'object' && !React.isValidElement(tooltip)) {
|
|
20
|
+
return tooltip;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
title: tooltip
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const FormItemLabel = ({
|
|
27
|
+
prefixCls,
|
|
28
|
+
label,
|
|
29
|
+
htmlFor,
|
|
30
|
+
labelCol,
|
|
31
|
+
labelAlign,
|
|
32
|
+
colon,
|
|
33
|
+
required,
|
|
34
|
+
requiredMark,
|
|
35
|
+
tooltip
|
|
36
|
+
}) => {
|
|
37
|
+
// const [formLocale] = useLocaleReceiver('Form');
|
|
38
|
+
if (!label) return null;
|
|
39
|
+
return React.createElement(FormContext.Consumer, {
|
|
40
|
+
key: "label"
|
|
41
|
+
}, ({
|
|
42
|
+
vertical,
|
|
43
|
+
labelAlign: contextLabelAlign,
|
|
44
|
+
labelCol: contextLabelCol,
|
|
45
|
+
labelWrap,
|
|
46
|
+
colon: contextColon
|
|
47
|
+
}) => {
|
|
48
|
+
const mergedLabelCol = labelCol || contextLabelCol || {};
|
|
49
|
+
const mergedLabelAlign = labelAlign || contextLabelAlign;
|
|
50
|
+
const labelClsBasic = `${prefixCls}-item-label`;
|
|
51
|
+
const labelColClassName = classNames(labelClsBasic, mergedLabelAlign === 'left' && `${labelClsBasic}-left`, mergedLabelCol.className, {
|
|
52
|
+
[`${labelClsBasic}-wrap`]: !!labelWrap
|
|
53
|
+
});
|
|
54
|
+
let labelChildren = label;
|
|
55
|
+
// Keep label is original where there should have no colon
|
|
56
|
+
const computedColon = colon === true || contextColon !== false && colon !== false;
|
|
57
|
+
const haveColon = computedColon && !vertical;
|
|
58
|
+
// Remove duplicated user input colon
|
|
59
|
+
if (haveColon && typeof label === 'string' && label.trim() !== '') {
|
|
60
|
+
labelChildren = label.replace(/[:|:]\s*$/, '');
|
|
61
|
+
}
|
|
62
|
+
// Tooltip
|
|
63
|
+
const tooltipProps = toTooltipProps(tooltip);
|
|
64
|
+
if (tooltipProps) {
|
|
65
|
+
const {
|
|
66
|
+
icon = React.createElement(Icon, {
|
|
67
|
+
type: "question-circle"
|
|
68
|
+
})
|
|
69
|
+
} = tooltipProps,
|
|
70
|
+
restTooltipProps = __rest(tooltipProps, ["icon"]);
|
|
71
|
+
const tooltipNode = React.createElement(Tooltip, Object.assign({}, restTooltipProps), React.cloneElement(icon, {
|
|
72
|
+
className: `${prefixCls}-item-tooltip`,
|
|
73
|
+
title: ''
|
|
74
|
+
}));
|
|
75
|
+
labelChildren = React.createElement(React.Fragment, null, labelChildren, tooltipNode);
|
|
76
|
+
}
|
|
77
|
+
// Add required mark if optional
|
|
78
|
+
if (requiredMark === 'optional' && !required) {
|
|
79
|
+
labelChildren = React.createElement(React.Fragment, null, labelChildren, React.createElement("span", {
|
|
80
|
+
className: `${prefixCls}-item-optional`,
|
|
81
|
+
title: ""
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
const labelClassName = classNames({
|
|
85
|
+
[`${prefixCls}-item-required`]: required,
|
|
86
|
+
[`${prefixCls}-item-required-mark-optional`]: requiredMark === 'optional',
|
|
87
|
+
[`${prefixCls}-item-no-colon`]: !computedColon
|
|
88
|
+
});
|
|
89
|
+
return React.createElement(Col, Object.assign({}, mergedLabelCol, {
|
|
90
|
+
className: labelColClassName
|
|
91
|
+
}), React.createElement("label", {
|
|
92
|
+
htmlFor: htmlFor,
|
|
93
|
+
className: labelClassName,
|
|
94
|
+
title: typeof label === 'string' ? label : ''
|
|
95
|
+
}, labelChildren));
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
export default FormItemLabel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormItemLabel.js","sourceRoot":"","sources":["../../src/tntd-form/FormItemLabel.tsx"],"names":[],"mappings":"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","sourcesContent":["import Icon from '../icon'\nimport 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'\n// import { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\n// import defaultLocale from '../locale/default';\nimport type { TooltipProps } from '../tooltip'\nimport Tooltip from '../tooltip'\nimport type { FormContextProps } from './context'\nimport { FormContext } from './context'\nimport type { RequiredMark } from './Form'\nimport type { FormLabelAlign } from './interface'\n\nexport type WrapperTooltipProps = TooltipProps & {\n icon?: React.ReactElement\n}\n\nexport type LabelTooltipType = WrapperTooltipProps | React.ReactNode\n\nfunction toTooltipProps(tooltip: LabelTooltipType): WrapperTooltipProps | null {\n if (!tooltip) {\n return null\n }\n\n if (typeof tooltip === 'object' && !React.isValidElement(tooltip)) {\n return tooltip as WrapperTooltipProps\n }\n\n return {\n title: tooltip,\n }\n}\n\nexport interface FormItemLabelProps {\n colon?: boolean\n htmlFor?: string\n label?: React.ReactNode\n labelAlign?: FormLabelAlign\n labelCol?: ColProps\n requiredMark?: RequiredMark\n tooltip?: LabelTooltipType\n}\n\nconst FormItemLabel: React.FC<FormItemLabelProps & { required?: boolean; prefixCls: string }> = ({\n prefixCls,\n label,\n htmlFor,\n labelCol,\n labelAlign,\n colon,\n required,\n requiredMark,\n tooltip,\n}) => {\n // const [formLocale] = useLocaleReceiver('Form');\n\n if (!label) return null\n\n return (\n <FormContext.Consumer key=\"label\">\n {({\n vertical,\n labelAlign: contextLabelAlign,\n labelCol: contextLabelCol,\n labelWrap,\n colon: contextColon,\n }: FormContextProps) => {\n const mergedLabelCol: ColProps = labelCol || contextLabelCol || {}\n\n const mergedLabelAlign: FormLabelAlign | undefined = labelAlign || contextLabelAlign\n\n const labelClsBasic = `${prefixCls}-item-label`\n const labelColClassName = classNames(\n labelClsBasic,\n mergedLabelAlign === 'left' && `${labelClsBasic}-left`,\n mergedLabelCol.className,\n {\n [`${labelClsBasic}-wrap`]: !!labelWrap,\n }\n )\n\n let labelChildren = label\n // Keep label is original where there should have no colon\n const computedColon = colon === true || (contextColon !== false && colon !== false)\n const haveColon = computedColon && !vertical\n // Remove duplicated user input colon\n if (haveColon && typeof label === 'string' && (label as string).trim() !== '') {\n labelChildren = (label as string).replace(/[:|:]\\s*$/, '')\n }\n\n // Tooltip\n const tooltipProps = toTooltipProps(tooltip)\n if (tooltipProps) {\n const { icon = <Icon type=\"question-circle\" />, ...restTooltipProps } = tooltipProps\n const tooltipNode = (\n <Tooltip {...restTooltipProps}>\n {React.cloneElement(icon, { className: `${prefixCls}-item-tooltip`, title: '' })}\n </Tooltip>\n )\n\n labelChildren = (\n <>\n {labelChildren}\n {tooltipNode}\n </>\n )\n }\n\n // Add required mark if optional\n if (requiredMark === 'optional' && !required) {\n labelChildren = (\n <>\n {labelChildren}\n <span className={`${prefixCls}-item-optional`} title=\"\">\n {/* {formLocale?.optional || defaultLocale.Form?.optional} */}\n </span>\n </>\n )\n }\n\n const labelClassName = classNames({\n [`${prefixCls}-item-required`]: required,\n [`${prefixCls}-item-required-mark-optional`]: requiredMark === 'optional',\n [`${prefixCls}-item-no-colon`]: !computedColon,\n })\n\n return (\n <Col {...mergedLabelCol} className={labelColClassName}>\n <label\n htmlFor={htmlFor}\n className={labelClassName}\n title={typeof label === 'string' ? label : ''}\n >\n {labelChildren}\n </label>\n </Col>\n )\n }}\n </FormContext.Consumer>\n )\n}\n\nexport default FormItemLabel\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 { List } from 'rc-field-form';
|
|
10
|
+
import * as React from 'react';
|
|
11
|
+
import { ConfigContext } from '../config-provider';
|
|
12
|
+
import warning from './_util/warning';
|
|
13
|
+
import { FormItemPrefixContext } from './context';
|
|
14
|
+
const FormList = _a => {
|
|
15
|
+
var {
|
|
16
|
+
prefixCls: customizePrefixCls,
|
|
17
|
+
children
|
|
18
|
+
} = _a,
|
|
19
|
+
props = __rest(_a, ["prefixCls", "children"]);
|
|
20
|
+
warning(!!props.name, 'Form.List', 'Miss `name` prop.');
|
|
21
|
+
// TODO
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
const {
|
|
24
|
+
getPrefixCls
|
|
25
|
+
} = React.useContext(ConfigContext);
|
|
26
|
+
const prefixCls = getPrefixCls('form', customizePrefixCls);
|
|
27
|
+
const contextValue = React.useMemo(() => ({
|
|
28
|
+
prefixCls,
|
|
29
|
+
status: 'error'
|
|
30
|
+
}), [prefixCls]);
|
|
31
|
+
return React.createElement(List, Object.assign({}, props), (fields, operation, meta) => React.createElement(FormItemPrefixContext.Provider, {
|
|
32
|
+
value: contextValue
|
|
33
|
+
}, children(fields.map(field => Object.assign(Object.assign({}, field), {
|
|
34
|
+
fieldKey: field.key
|
|
35
|
+
})), operation, {
|
|
36
|
+
errors: meta.errors,
|
|
37
|
+
warnings: meta.warnings
|
|
38
|
+
})));
|
|
39
|
+
};
|
|
40
|
+
export default FormList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormList.js","sourceRoot":"","sources":["../../src/tntd-form/FormList.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,OAAO,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AA2BjD,MAAM,QAAQ,GAA4B,CAAC,EAI1C,EAAE,EAAE;QAJsC,EACzC,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,OAET,EADI,KAAK,cAHiC,yBAI1C,CADS;IAER,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAA;IAEvD,OAAO;IACP,aAAa;IACb,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,MAAM,EAAE,OAAgB;KACzB,CAAC,EACF,CAAC,SAAS,CAAC,CACZ,CAAA;IAED,OAAO,CACL,oBAAC,IAAI,oBAAK,KAAK,GACZ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAC5B,oBAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAChD,QAAQ,CACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAG,CAAC,EAC1D,SAAS,EACT;QACE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CACF,CAC8B,CAClC,CACI,CACR,CAAA;AACH,CAAC,CAAA;AAED,eAAe,QAAQ,CAAA","sourcesContent":["import { List } from 'rc-field-form'\nimport type { StoreValue, ValidatorRule } from 'rc-field-form/lib/interface'\nimport * as React from 'react'\nimport { ConfigContext } from '../config-provider'\nimport warning from './_util/warning'\nimport { FormItemPrefixContext } from './context'\n\nexport interface FormListFieldData {\n name: number\n key: number\n /** @deprecated No need anymore Use key instead */\n fieldKey?: number\n}\n\nexport interface FormListOperation {\n add: (defaultValue?: StoreValue, insertIndex?: number) => void\n remove: (index: number | number[]) => void\n move: (from: number, to: number) => void\n}\n\nexport interface FormListProps {\n prefixCls?: string\n name: string | number | (string | number)[]\n rules?: ValidatorRule[]\n initialValue?: any[]\n children: (\n fields: FormListFieldData[],\n operation: FormListOperation,\n meta: { errors: React.ReactNode[]; warnings: React.ReactNode[] }\n ) => React.ReactNode\n}\n\nconst FormList: React.FC<FormListProps> = ({\n prefixCls: customizePrefixCls,\n children,\n ...props\n}) => {\n warning(!!props.name, 'Form.List', 'Miss `name` prop.')\n\n // TODO\n // @ts-ignore\n const { getPrefixCls } = React.useContext(ConfigContext)\n const prefixCls = getPrefixCls('form', customizePrefixCls)\n const contextValue = React.useMemo(\n () => ({\n prefixCls,\n status: 'error' as const,\n }),\n [prefixCls]\n )\n\n return (\n <List {...props}>\n {(fields, operation, meta) => (\n <FormItemPrefixContext.Provider value={contextValue}>\n {children(\n fields.map((field) => ({ ...field, fieldKey: field.key })),\n operation,\n {\n errors: meta.errors,\n warnings: meta.warnings,\n }\n )}\n </FormItemPrefixContext.Provider>\n )}\n </List>\n )\n}\n\nexport default FormList\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { tuple } from './type';
|
|
2
|
+
// ================== Collapse Motion ==================
|
|
3
|
+
const getCollapsedHeight = () => ({
|
|
4
|
+
height: 0,
|
|
5
|
+
opacity: 0
|
|
6
|
+
});
|
|
7
|
+
const getRealHeight = node => {
|
|
8
|
+
const {
|
|
9
|
+
scrollHeight
|
|
10
|
+
} = node;
|
|
11
|
+
return {
|
|
12
|
+
height: scrollHeight,
|
|
13
|
+
opacity: 1
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
const getCurrentHeight = node => ({
|
|
17
|
+
height: node ? node.offsetHeight : 0
|
|
18
|
+
});
|
|
19
|
+
const skipOpacityTransition = (_, event) => (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === 'height';
|
|
20
|
+
const collapseMotion = {
|
|
21
|
+
motionName: 'ant-motion-collapse',
|
|
22
|
+
onAppearStart: getCollapsedHeight,
|
|
23
|
+
onEnterStart: getCollapsedHeight,
|
|
24
|
+
onAppearActive: getRealHeight,
|
|
25
|
+
onEnterActive: getRealHeight,
|
|
26
|
+
onLeaveStart: getCurrentHeight,
|
|
27
|
+
onLeaveActive: getCollapsedHeight,
|
|
28
|
+
onAppearEnd: skipOpacityTransition,
|
|
29
|
+
onEnterEnd: skipOpacityTransition,
|
|
30
|
+
onLeaveEnd: skipOpacityTransition,
|
|
31
|
+
motionDeadline: 500
|
|
32
|
+
};
|
|
33
|
+
const SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');
|
|
34
|
+
const getTransitionDirection = placement => {
|
|
35
|
+
if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {
|
|
36
|
+
return `slide-down`;
|
|
37
|
+
}
|
|
38
|
+
return `slide-up`;
|
|
39
|
+
};
|
|
40
|
+
const getTransitionName = (rootPrefixCls, motion, transitionName) => {
|
|
41
|
+
if (transitionName !== undefined) {
|
|
42
|
+
return transitionName;
|
|
43
|
+
}
|
|
44
|
+
return `${rootPrefixCls}-${motion}`;
|
|
45
|
+
};
|
|
46
|
+
export { getTransitionName, getTransitionDirection };
|
|
47
|
+
export default collapseMotion;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion.js","sourceRoot":"","sources":["../../../src/tntd-form/_util/motion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,wDAAwD;AACxD,MAAM,kBAAkB,GAAuB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AAChF,MAAM,aAAa,GAAuB,CAAC,IAAI,EAAE,EAAE;IACjD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;AAC7C,CAAC,CAAA;AACD,MAAM,gBAAgB,GAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACjG,MAAM,qBAAqB,GAA0B,CAAC,CAAC,EAAE,KAAkB,EAAE,EAAE,CAC7E,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,MAAK,IAAI,IAAK,KAAyB,CAAC,YAAY,KAAK,QAAQ,CAAA;AAElF,MAAM,cAAc,GAAmB;IACrC,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,kBAAkB;IACjC,YAAY,EAAE,kBAAkB;IAChC,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,aAAa;IAC5B,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,kBAAkB;IACjC,WAAW,EAAE,qBAAqB;IAClC,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,qBAAqB;IACjC,cAAc,EAAE,GAAG;CACpB,CAAA;AAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAGlF,MAAM,sBAAsB,GAAG,CAAC,SAA4C,EAAE,EAAE;IAC9E,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,UAAU,CAAC,EAAE;QACpF,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,aAAqB,EAAE,MAAc,EAAE,cAAuB,EAAE,EAAE;IAC3F,IAAI,cAAc,KAAK,SAAS,EAAE;QAChC,OAAO,cAAc,CAAA;KACtB;IACD,OAAO,GAAG,aAAa,IAAI,MAAM,EAAE,CAAA;AACrC,CAAC,CAAA;AACD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,CAAA;AACpD,eAAe,cAAc,CAAA","sourcesContent":["import type { CSSMotionProps, MotionEndEventHandler, MotionEventHandler } from 'rc-motion'\nimport type { MotionEvent } from 'rc-motion/lib/interface'\nimport { tuple } from './type'\n\n// ================== Collapse Motion ==================\nconst getCollapsedHeight: MotionEventHandler = () => ({ height: 0, opacity: 0 })\nconst getRealHeight: MotionEventHandler = (node) => {\n const { scrollHeight } = node\n return { height: scrollHeight, opacity: 1 }\n}\nconst getCurrentHeight: MotionEventHandler = (node) => ({ height: node ? node.offsetHeight : 0 })\nconst skipOpacityTransition: MotionEndEventHandler = (_, event: MotionEvent) =>\n event?.deadline === true || (event as TransitionEvent).propertyName === 'height'\n\nconst collapseMotion: CSSMotionProps = {\n motionName: 'ant-motion-collapse',\n onAppearStart: getCollapsedHeight,\n onEnterStart: getCollapsedHeight,\n onAppearActive: getRealHeight,\n onEnterActive: getRealHeight,\n onLeaveStart: getCurrentHeight,\n onLeaveActive: getCollapsedHeight,\n onAppearEnd: skipOpacityTransition,\n onEnterEnd: skipOpacityTransition,\n onLeaveEnd: skipOpacityTransition,\n motionDeadline: 500,\n}\n\nconst SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight')\nexport type SelectCommonPlacement = typeof SelectPlacements[number]\n\nconst getTransitionDirection = (placement: SelectCommonPlacement | undefined) => {\n if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {\n return `slide-down`\n }\n return `slide-up`\n}\n\nconst getTransitionName = (rootPrefixCls: string, motion: string, transitionName?: string) => {\n if (transitionName !== undefined) {\n return transitionName\n }\n return `${rootPrefixCls}-${motion}`\n}\nexport { getTransitionName, getTransitionDirection }\nexport default collapseMotion\n"]}
|