refactor: calendar

pull/4499/head
tangjinzhou 2021-08-09 08:35:21 +08:00
parent 1bb583063d
commit e4a606379e
6 changed files with 37 additions and 12 deletions

View File

@ -151,16 +151,16 @@ export interface CalendarHeaderProps<DateType> {
export default defineComponent<CalendarHeaderProps<any>>({ export default defineComponent<CalendarHeaderProps<any>>({
name: 'CalendarHeader', name: 'CalendarHeader',
setup(props) { setup(_props, { attrs }) {
const divRef = ref<HTMLDivElement>(null); const divRef = ref<HTMLDivElement>(null);
return () => { return () => {
const { prefixCls, fullscreen, mode, onChange, onModeChange } = props; const { prefixCls, fullscreen, mode, onChange, onModeChange } = attrs;
const sharedProps = { const sharedProps = {
...props, ...attrs,
onChange, onChange,
fullscreen, fullscreen,
divRef, divRef,
}; } as any;
return ( return (
<div class={`${prefixCls}-header`} ref={divRef}> <div class={`${prefixCls}-header`} ref={divRef}>

View File

@ -0,0 +1,8 @@
import generateConfig from '../vc-picker/generate/dateFns';
import { withInstall } from '../_util/type';
import generateCalendar, { CalendarProps } from './generateCalendar';
const Calendar = generateCalendar<Date>(generateConfig);
export { CalendarProps };
export default withInstall(Calendar);

View File

@ -0,0 +1,9 @@
import { Dayjs } from 'dayjs';
import generateConfig from '../vc-picker/generate/dayjs';
import { withInstall } from '../_util/type';
import generateCalendar, { CalendarProps } from './generateCalendar';
const Calendar = generateCalendar<Dayjs>(generateConfig);
export { CalendarProps };
export default withInstall(Calendar);

View File

@ -12,7 +12,7 @@ import { useLocaleReceiver } from '../locale-provider/LocaleReceiver';
import enUS from './locale/en_US'; import enUS from './locale/en_US';
import CalendarHeader from './Header'; import CalendarHeader from './Header';
import { VueNode } from '../_util/type'; import { VueNode } from '../_util/type';
import { computed, defineComponent, toRef } from 'vue'; import { App, computed, defineComponent, toRef } from 'vue';
import useConfigInject from '../_util/hooks/useConfigInject'; import useConfigInject from '../_util/hooks/useConfigInject';
import classNames from '../_util/classNames'; import classNames from '../_util/classNames';
@ -303,7 +303,10 @@ function generateCalendar<DateType>(generateConfig: GenerateConfig<DateType>) {
}; };
}, },
}); });
Calendar.install = function (app: App) {
app.component(Calendar.name, Calendar);
return app;
};
return Calendar; return Calendar;
} }

View File

@ -1,8 +1,4 @@
import { Moment } from 'moment'; import Calendar from './dayjs';
import momentGenerateConfig from '../vc-picker/generate/moment'; export * from './dayjs';
import generateCalendar, { CalendarProps } from './generateCalendar';
const Calendar = generateCalendar<Moment>(momentGenerateConfig);
export { CalendarProps };
export default Calendar; export default Calendar;

View File

@ -0,0 +1,9 @@
import { Moment } from 'moment';
import generateConfig from '../vc-picker/generate/moment';
import { withInstall } from '../_util/type';
import generateCalendar, { CalendarProps } from './generateCalendar';
const Calendar = generateCalendar<Moment>(generateConfig);
export { CalendarProps };
export default withInstall(Calendar);