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>>({
name: 'CalendarHeader',
setup(props) {
setup(_props, { attrs }) {
const divRef = ref<HTMLDivElement>(null);
return () => {
const { prefixCls, fullscreen, mode, onChange, onModeChange } = props;
const { prefixCls, fullscreen, mode, onChange, onModeChange } = attrs;
const sharedProps = {
...props,
...attrs,
onChange,
fullscreen,
divRef,
};
} as any;
return (
<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 CalendarHeader from './Header';
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 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;
}

View File

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