fix: date formatting
This commit is contained in:
parent
02890f550d
commit
e41926e2b9
@ -1,5 +1,5 @@
|
|||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import { connect, mapProps, mapReadPretty } from '@formily/react'
|
import { connect, mapProps, mapReadPretty, useField, useFieldSchema } from '@formily/react'
|
||||||
import { DatePicker as AntdDatePicker } from 'antd'
|
import { DatePicker as AntdDatePicker } from 'antd'
|
||||||
import {
|
import {
|
||||||
DatePickerProps as AntdDatePickerProps,
|
DatePickerProps as AntdDatePickerProps,
|
||||||
@ -34,6 +34,8 @@ const mapDateFormat = function () {
|
|||||||
return props['showTime'] ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'
|
return props['showTime'] ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'
|
||||||
}
|
}
|
||||||
return (props: any) => {
|
return (props: any) => {
|
||||||
|
const field = useField();
|
||||||
|
const fieldSchema = useFieldSchema();
|
||||||
const format = props['format'] || getDefaultFormat(props)
|
const format = props['format'] || getDefaultFormat(props)
|
||||||
const onChange = props.onChange
|
const onChange = props.onChange
|
||||||
return {
|
return {
|
||||||
|
@ -15,6 +15,7 @@ import { Tag, Space, Popover } from 'antd'
|
|||||||
import cls from 'classnames'
|
import cls from 'classnames'
|
||||||
import { formatMomentValue, usePrefixCls } from '@formily/antd/esm/__builtins__'
|
import { formatMomentValue, usePrefixCls } from '@formily/antd/esm/__builtins__'
|
||||||
import { FullscreenOutlined } from '@ant-design/icons';
|
import { FullscreenOutlined } from '@ant-design/icons';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
const PlaceholderContext = createContext<string>('N/A')
|
const PlaceholderContext = createContext<string>('N/A')
|
||||||
|
|
||||||
@ -287,11 +288,20 @@ const Cascader: React.FC<CascaderProps> = observer((props) => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
const DatePicker: React.FC<DatePickerProps> = (props) => {
|
const DatePicker: React.FC<DatePickerProps> = (props: any) => {
|
||||||
const placeholder = usePlaceholder()
|
const placeholder = usePlaceholder()
|
||||||
const prefixCls = usePrefixCls('description-text', props)
|
const prefixCls = usePrefixCls('description-text', props)
|
||||||
|
const getDefaultFormat = () => {
|
||||||
|
const { dateFormat, showTime, timeFormat } = props;
|
||||||
|
let format = dateFormat;
|
||||||
|
if (showTime) {
|
||||||
|
format += ` ${timeFormat}`;
|
||||||
|
}
|
||||||
|
return format || props.format;
|
||||||
|
}
|
||||||
const getLabels = () => {
|
const getLabels = () => {
|
||||||
const labels = formatMomentValue(props.value, props.format, placeholder)
|
const d = moment(props.value);
|
||||||
|
const labels = formatMomentValue(d.isValid() ? d : null, getDefaultFormat(), placeholder)
|
||||||
return isArr(labels) ? labels.join('~') : labels
|
return isArr(labels) ? labels.join('~') : labels
|
||||||
}
|
}
|
||||||
return <div className={cls(prefixCls, props.className)}>{getLabels()}</div>
|
return <div className={cls(prefixCls, props.className)}>{getLabels()}</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user