fix: typescript compile error
parent
6b1f38cd4e
commit
aa9ba7fc5a
|
@ -1,10 +1,9 @@
|
||||||
import type { Dayjs } from 'dayjs';
|
|
||||||
import generateConfig from '../vc-picker/generate/dayjs';
|
import generateConfig from '../vc-picker/generate/dayjs';
|
||||||
import { withInstall } from '../_util/type';
|
import { withInstall } from '../_util/type';
|
||||||
import type { CalendarProps } from './generateCalendar';
|
import type { CalendarProps } from './generateCalendar';
|
||||||
import generateCalendar from './generateCalendar';
|
import generateCalendar from './generateCalendar';
|
||||||
|
|
||||||
const Calendar = generateCalendar<Dayjs>(generateConfig);
|
const Calendar = generateCalendar(generateConfig);
|
||||||
|
|
||||||
export type { CalendarProps };
|
export type { CalendarProps };
|
||||||
export default withInstall(Calendar);
|
export default withInstall(Calendar);
|
||||||
|
|
|
@ -65,7 +65,10 @@ export interface CalendarProps<DateType> {
|
||||||
valueFormat?: string;
|
valueFormat?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateCalendar<DateType>(generateConfig: GenerateConfig<DateType>) {
|
function generateCalendar<
|
||||||
|
DateType,
|
||||||
|
Props extends CalendarProps<DateType> = CalendarProps<DateType>,
|
||||||
|
>(generateConfig: GenerateConfig<DateType>) {
|
||||||
function isSameYear(date1: DateType, date2: DateType) {
|
function isSameYear(date1: DateType, date2: DateType) {
|
||||||
return date1 && date2 && generateConfig.getYear(date1) === generateConfig.getYear(date2);
|
return date1 && date2 && generateConfig.getYear(date1) === generateConfig.getYear(date2);
|
||||||
}
|
}
|
||||||
|
@ -82,28 +85,9 @@ function generateCalendar<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Calendar = defineComponent<CalendarProps<DateType>>({
|
const Calendar = defineComponent<Props>({
|
||||||
name: 'ACalendar',
|
name: 'ACalendar',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
props: [
|
|
||||||
'prefixCls',
|
|
||||||
'locale',
|
|
||||||
'validRange',
|
|
||||||
'disabledDate',
|
|
||||||
'dateFullCellRender',
|
|
||||||
'dateCellRender',
|
|
||||||
'monthFullCellRender',
|
|
||||||
'monthCellRender',
|
|
||||||
'headerRender',
|
|
||||||
'value',
|
|
||||||
'defaultValue',
|
|
||||||
'mode',
|
|
||||||
'fullscreen',
|
|
||||||
'onChange',
|
|
||||||
'onPanelChange',
|
|
||||||
'onSelect',
|
|
||||||
'valueFormat',
|
|
||||||
] as any,
|
|
||||||
emits: ['change', 'panelChange', 'select', 'update:value'],
|
emits: ['change', 'panelChange', 'select', 'update:value'],
|
||||||
slots: [
|
slots: [
|
||||||
'dateFullCellRender',
|
'dateFullCellRender',
|
||||||
|
@ -303,7 +287,6 @@ function generateCalendar<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
onModeChange={triggerModeChange}
|
onModeChange={triggerModeChange}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<PickerPanel
|
<PickerPanel
|
||||||
value={mergedValue.value}
|
value={mergedValue.value}
|
||||||
prefixCls={prefixCls.value}
|
prefixCls={prefixCls.value}
|
||||||
|
@ -322,11 +305,33 @@ function generateCalendar<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Calendar.props = [
|
||||||
|
'prefixCls',
|
||||||
|
'locale',
|
||||||
|
'validRange',
|
||||||
|
'disabledDate',
|
||||||
|
'dateFullCellRender',
|
||||||
|
'dateCellRender',
|
||||||
|
'monthFullCellRender',
|
||||||
|
'monthCellRender',
|
||||||
|
'headerRender',
|
||||||
|
'value',
|
||||||
|
'defaultValue',
|
||||||
|
'mode',
|
||||||
|
'fullscreen',
|
||||||
|
'onChange',
|
||||||
|
'onPanelChange',
|
||||||
|
'onSelect',
|
||||||
|
'valueFormat',
|
||||||
|
];
|
||||||
|
|
||||||
Calendar.install = function (app: App) {
|
Calendar.install = function (app: App) {
|
||||||
app.component(Calendar.name, Calendar);
|
app.component(Calendar.name, Calendar);
|
||||||
return app;
|
return app;
|
||||||
};
|
};
|
||||||
return Calendar;
|
|
||||||
|
return Calendar as unknown as (props: CalendarProps<DateType>) => JSX.Element;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default generateCalendar;
|
export default generateCalendar;
|
||||||
|
|
|
@ -16,18 +16,18 @@ import type { PanelMode, RangeValue } from '../../vc-picker/interface';
|
||||||
import type { RangePickerSharedProps } from '../../vc-picker/RangePicker';
|
import type { RangePickerSharedProps } from '../../vc-picker/RangePicker';
|
||||||
import devWarning from '../../vc-util/devWarning';
|
import devWarning from '../../vc-util/devWarning';
|
||||||
|
|
||||||
export default function generateRangePicker<DateType, ExtraProps extends {} = {}>(
|
export default function generateRangePicker<DateType, ExtraProps = {}>(
|
||||||
generateConfig: GenerateConfig<DateType>,
|
generateConfig: GenerateConfig<DateType>,
|
||||||
extraProps: ExtraProps,
|
extraProps: ExtraProps,
|
||||||
) {
|
) {
|
||||||
const RangePicker = defineComponent({
|
const RangePicker = defineComponent({
|
||||||
name: 'ARangePicker',
|
name: 'ARangePicker',
|
||||||
inheritAttrs: false,
|
|
||||||
props: {
|
props: {
|
||||||
...commonProps<DateType>(),
|
...commonProps<DateType>(),
|
||||||
...rangePickerProps<DateType>(),
|
...rangePickerProps<DateType>(),
|
||||||
...extraProps,
|
...extraProps,
|
||||||
},
|
},
|
||||||
|
inheritAttrs: false,
|
||||||
slots: [
|
slots: [
|
||||||
'suffixIcon',
|
'suffixIcon',
|
||||||
// 'clearIcon',
|
// 'clearIcon',
|
||||||
|
|
|
@ -12,6 +12,7 @@ import { computed, defineComponent, nextTick, onMounted, ref } from 'vue';
|
||||||
import useConfigInject from '../../_util/hooks/useConfigInject';
|
import useConfigInject from '../../_util/hooks/useConfigInject';
|
||||||
import classNames from '../../_util/classNames';
|
import classNames from '../../_util/classNames';
|
||||||
import { commonProps, datePickerProps } from './props';
|
import { commonProps, datePickerProps } from './props';
|
||||||
|
|
||||||
import devWarning from '../../vc-util/devWarning';
|
import devWarning from '../../vc-util/devWarning';
|
||||||
|
|
||||||
export default function generateSinglePicker<DateType, ExtraProps = {}>(
|
export default function generateSinglePicker<DateType, ExtraProps = {}>(
|
||||||
|
|
|
@ -1,22 +1,12 @@
|
||||||
import type { GenerateConfig } from '../../vc-picker/generate/index';
|
import type { GenerateConfig } from '../../vc-picker/generate';
|
||||||
import type {
|
|
||||||
PickerBaseProps as RCPickerBaseProps,
|
|
||||||
PickerDateProps as RCPickerDateProps,
|
|
||||||
PickerTimeProps as RCPickerTimeProps,
|
|
||||||
} from '../../vc-picker/Picker';
|
|
||||||
import type { SharedTimeProps } from '../../vc-picker/panels/TimePanel';
|
import type { SharedTimeProps } from '../../vc-picker/panels/TimePanel';
|
||||||
import type {
|
import type { PickerMode } from '../../vc-picker/interface';
|
||||||
RangePickerBaseProps as RCRangePickerBaseProps,
|
|
||||||
RangePickerDateProps as RCRangePickerDateProps,
|
|
||||||
RangePickerTimeProps as RCRangePickerTimeProps,
|
|
||||||
} from '../../vc-picker/RangePicker';
|
|
||||||
import type { PickerMode, Locale as RcPickerLocale } from '../../vc-picker/interface';
|
|
||||||
import PickerButton from '../PickerButton';
|
import PickerButton from '../PickerButton';
|
||||||
import PickerTag from '../PickerTag';
|
import PickerTag from '../PickerTag';
|
||||||
import type { TimePickerLocale } from '../../time-picker';
|
|
||||||
import generateSinglePicker from './generateSinglePicker';
|
import generateSinglePicker from './generateSinglePicker';
|
||||||
import generateRangePicker from './generateRangePicker';
|
import generateRangePicker from './generateRangePicker';
|
||||||
import type { SizeType } from '../../config-provider';
|
|
||||||
|
export * from './interface';
|
||||||
|
|
||||||
export const Components = { button: PickerButton, rangeItem: PickerTag };
|
export const Components = { button: PickerButton, rangeItem: PickerTag };
|
||||||
|
|
||||||
|
@ -65,67 +55,7 @@ export function getTimeProps<DateType>(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
type InjectDefaultProps<Props> = Omit<
|
function generatePicker<DateType, ExtraProps extends {} = {}>(
|
||||||
Props,
|
|
||||||
| 'locale'
|
|
||||||
| 'generateConfig'
|
|
||||||
| 'prevIcon'
|
|
||||||
| 'nextIcon'
|
|
||||||
| 'superPrevIcon'
|
|
||||||
| 'superNextIcon'
|
|
||||||
| 'hideHeader'
|
|
||||||
| 'components'
|
|
||||||
> & {
|
|
||||||
locale?: PickerLocale;
|
|
||||||
size?: SizeType;
|
|
||||||
bordered?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type PickerLocale = {
|
|
||||||
lang: RcPickerLocale & AdditionalPickerLocaleLangProps;
|
|
||||||
timePickerLocale: TimePickerLocale;
|
|
||||||
} & AdditionalPickerLocaleProps;
|
|
||||||
|
|
||||||
export type AdditionalPickerLocaleProps = {
|
|
||||||
dateFormat?: string;
|
|
||||||
dateTimeFormat?: string;
|
|
||||||
weekFormat?: string;
|
|
||||||
monthFormat?: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type AdditionalPickerLocaleLangProps = {
|
|
||||||
placeholder: string;
|
|
||||||
yearPlaceholder?: string;
|
|
||||||
quarterPlaceholder?: string;
|
|
||||||
monthPlaceholder?: string;
|
|
||||||
weekPlaceholder?: string;
|
|
||||||
rangeYearPlaceholder?: [string, string];
|
|
||||||
rangeMonthPlaceholder?: [string, string];
|
|
||||||
rangeWeekPlaceholder?: [string, string];
|
|
||||||
rangePlaceholder?: [string, string];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Picker Props
|
|
||||||
export type PickerBaseProps<DateType> = InjectDefaultProps<RCPickerBaseProps<DateType>>;
|
|
||||||
export type PickerDateProps<DateType> = InjectDefaultProps<RCPickerDateProps<DateType>>;
|
|
||||||
export type PickerTimeProps<DateType> = InjectDefaultProps<RCPickerTimeProps<DateType>>;
|
|
||||||
|
|
||||||
export type PickerProps<DateType> =
|
|
||||||
| PickerBaseProps<DateType>
|
|
||||||
| PickerDateProps<DateType>
|
|
||||||
| PickerTimeProps<DateType>;
|
|
||||||
|
|
||||||
// Range Picker Props
|
|
||||||
export type RangePickerBaseProps<DateType> = InjectDefaultProps<RCRangePickerBaseProps<DateType>>;
|
|
||||||
export type RangePickerDateProps<DateType> = InjectDefaultProps<RCRangePickerDateProps<DateType>>;
|
|
||||||
export type RangePickerTimeProps<DateType> = InjectDefaultProps<RCRangePickerTimeProps<DateType>>;
|
|
||||||
|
|
||||||
export type RangePickerProps<DateType> =
|
|
||||||
| RangePickerBaseProps<DateType>
|
|
||||||
| RangePickerDateProps<DateType>
|
|
||||||
| RangePickerTimeProps<DateType>;
|
|
||||||
|
|
||||||
function generatePicker<DateType, ExtraProps extends Record<string, any> = {}>(
|
|
||||||
generateConfig: GenerateConfig<DateType>,
|
generateConfig: GenerateConfig<DateType>,
|
||||||
extraProps?: ExtraProps,
|
extraProps?: ExtraProps,
|
||||||
) {
|
) {
|
||||||
|
@ -134,7 +64,7 @@ function generatePicker<DateType, ExtraProps extends Record<string, any> = {}>(
|
||||||
generateSinglePicker<DateType, ExtraProps>(generateConfig, extraProps);
|
generateSinglePicker<DateType, ExtraProps>(generateConfig, extraProps);
|
||||||
|
|
||||||
// ======================== Range Picker ========================
|
// ======================== Range Picker ========================
|
||||||
const RangePicker = generateRangePicker<DateType>(generateConfig, extraProps);
|
const RangePicker = generateRangePicker<DateType, ExtraProps>(generateConfig, extraProps);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
DatePicker,
|
DatePicker,
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
import type {
|
||||||
|
PickerBaseProps as RCPickerBaseProps,
|
||||||
|
PickerDateProps as RCPickerDateProps,
|
||||||
|
PickerTimeProps as RCPickerTimeProps,
|
||||||
|
} from '../../vc-picker/Picker';
|
||||||
|
import type {
|
||||||
|
RangePickerBaseProps as RCRangePickerBaseProps,
|
||||||
|
RangePickerDateProps as RCRangePickerDateProps,
|
||||||
|
RangePickerTimeProps as RCRangePickerTimeProps,
|
||||||
|
} from '../../vc-picker/RangePicker';
|
||||||
|
import type { Locale as RcPickerLocale } from '../../vc-picker/interface';
|
||||||
|
import type { TimePickerLocale } from '../../time-picker';
|
||||||
|
import type { SizeType } from '../../config-provider';
|
||||||
|
|
||||||
|
type InjectDefaultProps<Props> = Omit<
|
||||||
|
Props,
|
||||||
|
| 'locale'
|
||||||
|
| 'generateConfig'
|
||||||
|
| 'prevIcon'
|
||||||
|
| 'nextIcon'
|
||||||
|
| 'superPrevIcon'
|
||||||
|
| 'superNextIcon'
|
||||||
|
| 'hideHeader'
|
||||||
|
| 'components'
|
||||||
|
> & {
|
||||||
|
locale?: PickerLocale;
|
||||||
|
size?: SizeType;
|
||||||
|
bordered?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PickerLocale = {
|
||||||
|
lang: RcPickerLocale & AdditionalPickerLocaleLangProps;
|
||||||
|
timePickerLocale: TimePickerLocale;
|
||||||
|
} & AdditionalPickerLocaleProps;
|
||||||
|
|
||||||
|
export type AdditionalPickerLocaleProps = {
|
||||||
|
dateFormat?: string;
|
||||||
|
dateTimeFormat?: string;
|
||||||
|
weekFormat?: string;
|
||||||
|
monthFormat?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type AdditionalPickerLocaleLangProps = {
|
||||||
|
placeholder: string;
|
||||||
|
yearPlaceholder?: string;
|
||||||
|
quarterPlaceholder?: string;
|
||||||
|
monthPlaceholder?: string;
|
||||||
|
weekPlaceholder?: string;
|
||||||
|
rangeYearPlaceholder?: [string, string];
|
||||||
|
rangeMonthPlaceholder?: [string, string];
|
||||||
|
rangeWeekPlaceholder?: [string, string];
|
||||||
|
rangePlaceholder?: [string, string];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Picker Props
|
||||||
|
export type PickerBaseProps<DateType> = InjectDefaultProps<RCPickerBaseProps<DateType>>;
|
||||||
|
export type PickerDateProps<DateType> = InjectDefaultProps<RCPickerDateProps<DateType>>;
|
||||||
|
export type PickerTimeProps<DateType> = InjectDefaultProps<RCPickerTimeProps<DateType>>;
|
||||||
|
|
||||||
|
export type PickerProps<DateType> =
|
||||||
|
| PickerBaseProps<DateType>
|
||||||
|
| PickerDateProps<DateType>
|
||||||
|
| PickerTimeProps<DateType>;
|
||||||
|
|
||||||
|
// Range Picker Props
|
||||||
|
export type RangePickerBaseProps<DateType> = InjectDefaultProps<RCRangePickerBaseProps<DateType>>;
|
||||||
|
export type RangePickerDateProps<DateType> = InjectDefaultProps<RCRangePickerDateProps<DateType>>;
|
||||||
|
export type RangePickerTimeProps<DateType> = InjectDefaultProps<RCRangePickerTimeProps<DateType>>;
|
||||||
|
|
||||||
|
export type RangePickerProps<DateType> =
|
||||||
|
| RangePickerBaseProps<DateType>
|
||||||
|
| RangePickerDateProps<DateType>
|
||||||
|
| RangePickerTimeProps<DateType>;
|
|
@ -76,6 +76,44 @@ function commonProps<DateType>() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface CommonProps<DateType> {
|
||||||
|
prefixCls?: string;
|
||||||
|
dropdownClassName?: string;
|
||||||
|
dropdownAlign?: AlignType;
|
||||||
|
popupStyle?: CSSProperties;
|
||||||
|
transitionName?: string;
|
||||||
|
placeholder?: string;
|
||||||
|
allowClear?: boolean;
|
||||||
|
autofocus?: boolean;
|
||||||
|
disabled?: boolean;
|
||||||
|
tabindex?: number;
|
||||||
|
open?: boolean;
|
||||||
|
defaultOpen?: boolean;
|
||||||
|
inputReadOnly?: boolean;
|
||||||
|
suffixIcon?: VueNode;
|
||||||
|
clearIcon?: VueNode;
|
||||||
|
prevIcon?: VueNode;
|
||||||
|
nextIcon?: VueNode;
|
||||||
|
superPrevIcon?: VueNode;
|
||||||
|
superNextIcon?: VueNode;
|
||||||
|
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
|
||||||
|
panelRender?: (originPanel: VueNode) => VueNode;
|
||||||
|
role?: string;
|
||||||
|
name?: string;
|
||||||
|
autocomplete?: string;
|
||||||
|
direction?: 'ltr' | 'rtl';
|
||||||
|
showToday?: boolean;
|
||||||
|
showTime?: boolean | SharedTimeProps<DateType>;
|
||||||
|
locale?: PickerLocale;
|
||||||
|
size?: SizeType;
|
||||||
|
bordered?: boolean;
|
||||||
|
dateRender?: DateRender<DateType>;
|
||||||
|
disabledDate?: (date: DateType) => boolean;
|
||||||
|
mode?: PanelMode;
|
||||||
|
picker?: PickerMode;
|
||||||
|
valueFormat?: string;
|
||||||
|
}
|
||||||
|
|
||||||
function datePickerProps<DateType>() {
|
function datePickerProps<DateType>() {
|
||||||
return {
|
return {
|
||||||
defaultPickerValue: { type: [String, Object] as PropType<DateType | string> },
|
defaultPickerValue: { type: [String, Object] as PropType<DateType | string> },
|
||||||
|
@ -95,6 +133,19 @@ function datePickerProps<DateType>() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface DatePickerProps<DateType> {
|
||||||
|
defaultPickerValue?: DateType | string;
|
||||||
|
defaultValue?: DateType | string;
|
||||||
|
value?: DateType | string;
|
||||||
|
disabledTime?: DisabledTime<DateType>;
|
||||||
|
format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
|
||||||
|
renderExtraFooter?: (mode: PanelMode) => VueNode;
|
||||||
|
showNow?: boolean;
|
||||||
|
monthCellRender?: MonthCellRender<DateType>;
|
||||||
|
// deprecated Please use `monthCellRender"` instead.',
|
||||||
|
monthCellContentRender?: MonthCellRender<DateType>;
|
||||||
|
}
|
||||||
|
|
||||||
function rangePickerProps<DateType>() {
|
function rangePickerProps<DateType>() {
|
||||||
return {
|
return {
|
||||||
allowEmpty: { type: Array as unknown as PropType<[boolean, boolean]> },
|
allowEmpty: { type: Array as unknown as PropType<[boolean, boolean]> },
|
||||||
|
@ -124,6 +175,25 @@ function rangePickerProps<DateType>() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface RangePickerProps<DateType> {
|
||||||
|
allowEmpty?: [boolean, boolean];
|
||||||
|
dateRender?: RangeDateRender<DateType>;
|
||||||
|
defaultPickerValue?: [DateType, DateType] | [string, string];
|
||||||
|
defaultValue?: [DateType, DateType] | [string, string];
|
||||||
|
value?: [DateType, DateType];
|
||||||
|
disabledTime?: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
|
||||||
|
disabled?: [boolean, boolean];
|
||||||
|
format?: string;
|
||||||
|
renderExtraFooter?: () => VueNode;
|
||||||
|
separator?: string;
|
||||||
|
ranges?: Record<
|
||||||
|
string,
|
||||||
|
Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)
|
||||||
|
>;
|
||||||
|
placeholder?: [string, string];
|
||||||
|
mode?: [PanelMode, PanelMode];
|
||||||
|
}
|
||||||
|
|
||||||
export type ExtraDatePickerProps<DateType> = {
|
export type ExtraDatePickerProps<DateType> = {
|
||||||
valueFormat?: string;
|
valueFormat?: string;
|
||||||
defaultPickerValue?: DateType | string;
|
defaultPickerValue?: DateType | string;
|
||||||
|
|
|
@ -6,6 +6,7 @@ import {
|
||||||
datePickerProps,
|
datePickerProps,
|
||||||
rangePickerProps,
|
rangePickerProps,
|
||||||
} from '../date-picker/generatePicker/props';
|
} from '../date-picker/generatePicker/props';
|
||||||
|
import type { CommonProps, DatePickerProps } from '../date-picker/generatePicker/props';
|
||||||
import type { GenerateConfig } from '../vc-picker/generate';
|
import type { GenerateConfig } from '../vc-picker/generate';
|
||||||
import type { PanelMode, RangeValue } from '../vc-picker/interface';
|
import type { PanelMode, RangeValue } from '../vc-picker/interface';
|
||||||
import type { RangePickerSharedProps } from '../vc-picker/RangePicker';
|
import type { RangePickerSharedProps } from '../vc-picker/RangePicker';
|
||||||
|
@ -16,7 +17,7 @@ export interface TimePickerLocale {
|
||||||
rangePlaceholder?: [string, string];
|
rangePlaceholder?: [string, string];
|
||||||
}
|
}
|
||||||
|
|
||||||
const timpePickerProps = {
|
const timePickerProps = {
|
||||||
format: String,
|
format: String,
|
||||||
showNow: { type: Boolean, default: undefined },
|
showNow: { type: Boolean, default: undefined },
|
||||||
showHour: { type: Boolean, default: undefined },
|
showHour: { type: Boolean, default: undefined },
|
||||||
|
@ -30,29 +31,46 @@ const timpePickerProps = {
|
||||||
popupClassName: String,
|
popupClassName: String,
|
||||||
};
|
};
|
||||||
|
|
||||||
function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
export interface CommonTimePickerProps {
|
||||||
const DatePicker = generatePicker<DateType>(generateConfig, {
|
format?: string;
|
||||||
...timpePickerProps,
|
showNow?: boolean;
|
||||||
order: { type: Boolean, default: true },
|
showHour?: boolean;
|
||||||
});
|
showMinute?: boolean;
|
||||||
const { TimePicker: InternalTimePicker, RangePicker: InternalRangePicker } = DatePicker as any;
|
showSecond?: boolean;
|
||||||
type TimeRangePickerProps = Omit<RangePickerTimeProps<DateType>, 'picker'> & {
|
use12Hours?: boolean;
|
||||||
|
hourStep?: number;
|
||||||
|
minuteStep?: number;
|
||||||
|
secondStep?: number;
|
||||||
|
hideDisabledOptions?: boolean;
|
||||||
|
popupClassName?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type TimeRangePickerProps<T> = Omit<RangePickerTimeProps<T>, 'picker'> & {
|
||||||
popupClassName?: string;
|
popupClassName?: string;
|
||||||
valueFormat?: string;
|
valueFormat?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TimePickerProps<DateType> = CommonProps<DateType> &
|
||||||
|
DatePickerProps<DateType> &
|
||||||
|
CommonTimePickerProps & {
|
||||||
|
addon?: () => void;
|
||||||
};
|
};
|
||||||
// type TimePickerProps = Omit<PickerTimeProps<DateType>, 'picker'> & {
|
|
||||||
// popupClassName?: string;
|
function createTimePicker<
|
||||||
// valueFormat?: string;
|
DateType,
|
||||||
// };
|
DTimePickerProps extends TimePickerProps<DateType> = TimePickerProps<DateType>,
|
||||||
const TimePicker = defineComponent({
|
DTimeRangePickerProps extends TimeRangePickerProps<DateType> = TimeRangePickerProps<DateType>,
|
||||||
|
>(generateConfig: GenerateConfig<DateType>) {
|
||||||
|
const DatePicker = generatePicker<DateType>(generateConfig, {
|
||||||
|
...timePickerProps,
|
||||||
|
order: { type: Boolean, default: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
const { TimePicker: InternalTimePicker, RangePicker: InternalRangePicker } = DatePicker as any;
|
||||||
|
|
||||||
|
const TimePicker = defineComponent<DTimePickerProps>({
|
||||||
name: 'ATimePicker',
|
name: 'ATimePicker',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
props: {
|
|
||||||
...commonProps<DateType>(),
|
|
||||||
...datePickerProps<DateType>(),
|
|
||||||
...timpePickerProps,
|
|
||||||
addon: { type: Function },
|
|
||||||
} as any,
|
|
||||||
slot: ['addon', 'renderExtraFooter', 'suffixIcon', 'clearIcon'],
|
slot: ['addon', 'renderExtraFooter', 'suffixIcon', 'clearIcon'],
|
||||||
emits: ['change', 'openChange', 'focus', 'blur', 'ok', 'update:value', 'update:open'],
|
emits: ['change', 'openChange', 'focus', 'blur', 'ok', 'update:value', 'update:open'],
|
||||||
setup(props, { slots, expose, emit, attrs }) {
|
setup(props, { slots, expose, emit, attrs }) {
|
||||||
|
@ -78,7 +96,7 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
emit('update:open', open);
|
emit('update:open', open);
|
||||||
emit('openChange', open);
|
emit('openChange', open);
|
||||||
};
|
};
|
||||||
const onFoucs = () => {
|
const onFocus = () => {
|
||||||
emit('focus');
|
emit('focus');
|
||||||
};
|
};
|
||||||
const onBlur = () => {
|
const onBlur = () => {
|
||||||
|
@ -100,7 +118,7 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
}
|
}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
onOpenChange={onOpenChange}
|
onOpenChange={onOpenChange}
|
||||||
onFocus={onFoucs}
|
onFocus={onFocus}
|
||||||
onBlur={onBlur}
|
onBlur={onBlur}
|
||||||
onOk={onOk}
|
onOk={onOk}
|
||||||
v-slots={slots}
|
v-slots={slots}
|
||||||
|
@ -110,15 +128,16 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const TimeRangePicker = defineComponent<TimeRangePickerProps>({
|
TimePicker.props = {
|
||||||
|
...commonProps<DateType>(),
|
||||||
|
...datePickerProps<DateType>(),
|
||||||
|
...timePickerProps,
|
||||||
|
addon: { type: Function },
|
||||||
|
};
|
||||||
|
|
||||||
|
const TimeRangePicker = defineComponent<DTimeRangePickerProps>({
|
||||||
name: 'ATimeRangePicker',
|
name: 'ATimeRangePicker',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
props: {
|
|
||||||
...commonProps<DateType>(),
|
|
||||||
...rangePickerProps<DateType>(),
|
|
||||||
...timpePickerProps,
|
|
||||||
order: { type: Boolean, default: true },
|
|
||||||
} as any,
|
|
||||||
slot: ['renderExtraFooter', 'suffixIcon', 'clearIcon'],
|
slot: ['renderExtraFooter', 'suffixIcon', 'clearIcon'],
|
||||||
emits: [
|
emits: [
|
||||||
'change',
|
'change',
|
||||||
|
@ -152,7 +171,7 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
emit('update:open', open);
|
emit('update:open', open);
|
||||||
emit('openChange', open);
|
emit('openChange', open);
|
||||||
};
|
};
|
||||||
const onFoucs = () => {
|
const onFocus = () => {
|
||||||
emit('focus');
|
emit('focus');
|
||||||
};
|
};
|
||||||
const onBlur = () => {
|
const onBlur = () => {
|
||||||
|
@ -164,7 +183,7 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
) => {
|
) => {
|
||||||
emit('panelChange', values, modes);
|
emit('panelChange', values, modes);
|
||||||
};
|
};
|
||||||
const onOk = (values: RangeValue<string> | RangeValue<DateType>) => {
|
const onOk = (values: RangeValue<string | DateType>) => {
|
||||||
emit('ok', values);
|
emit('ok', values);
|
||||||
};
|
};
|
||||||
const onCalendarChange: RangePickerSharedProps<DateType>['onCalendarChange'] = (
|
const onCalendarChange: RangePickerSharedProps<DateType>['onCalendarChange'] = (
|
||||||
|
@ -185,7 +204,7 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
ref={pickerRef}
|
ref={pickerRef}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
onOpenChange={onOpenChange}
|
onOpenChange={onOpenChange}
|
||||||
onFocus={onFoucs}
|
onFocus={onFocus}
|
||||||
onBlur={onBlur}
|
onBlur={onBlur}
|
||||||
onPanelChange={onPanelChange}
|
onPanelChange={onPanelChange}
|
||||||
onOk={onOk}
|
onOk={onOk}
|
||||||
|
@ -197,6 +216,13 @@ function createTimePicker<DateType>(generateConfig: GenerateConfig<DateType>) {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
TimeRangePicker.props = {
|
||||||
|
...commonProps<DateType>(),
|
||||||
|
...rangePickerProps<DateType>(),
|
||||||
|
...timePickerProps,
|
||||||
|
order: { type: Boolean, default: true },
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
TimePicker,
|
TimePicker,
|
||||||
TimeRangePicker,
|
TimeRangePicker,
|
||||||
|
|
Loading…
Reference in New Issue