Skip to content
This repository was archived by the owner on Apr 17, 2022. It is now read-only.

Commit eb499e1

Browse files
committed
refactor: Improve types
1 parent 32bbfba commit eb499e1

File tree

1 file changed

+62
-18
lines changed

1 file changed

+62
-18
lines changed

index.d.ts

Lines changed: 62 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
11
/* eslint-disable @typescript-eslint/ban-types */
22
import { DefineComponent, ComputedOptions, ComponentOptionsMixin, MethodOptions } from 'vue';
33

4-
interface ITimeObj {
5-
hours: number | string;
6-
minutes: number | string;
7-
}
8-
9-
interface IMonthObj {
10-
month: number | string;
11-
year: number | string;
12-
}
13-
14-
type ModelValDef = Date | Date[] | string | string[] | ITimeObj | ITimeObj[] | IMonthObj | null;
15-
16-
type FormatFnc = string | ((date: Date | Date[] | ITimeObj | ITimeObj[] | IMonthObj) => string);
17-
184
type EmitEvents = 'update:modelValue' | 'textSubmit' | 'closed' | 'cleared';
195

206
interface Vue3DatePicker {
@@ -23,7 +9,21 @@ interface Vue3DatePicker {
239
enableTimePicker?: boolean;
2410
range?: boolean;
2511
twoCalendars?: boolean;
26-
modelValue?: ModelValDef;
12+
modelValue?:
13+
| Date
14+
| Date[]
15+
| string
16+
| string[]
17+
| {
18+
hours: number | string;
19+
minutes: number | string;
20+
}
21+
| {
22+
hours: number | string;
23+
minutes: number | string;
24+
}[]
25+
| { month: number | string; year: number | string }
26+
| null;
2727
locale?: string;
2828
position?: 'left' | 'center' | 'right';
2929
dark?: boolean;
@@ -40,8 +40,44 @@ interface Vue3DatePicker {
4040
weekStart?: string | number;
4141
disabled?: boolean;
4242
readonly?: boolean;
43-
format?: FormatFnc;
44-
previewFormat?: FormatFnc;
43+
format?:
44+
| string
45+
| ((
46+
date:
47+
| Date
48+
| Date[]
49+
| {
50+
hours: number | string;
51+
minutes: number | string;
52+
}
53+
| {
54+
hours: number | string;
55+
minutes: number | string;
56+
}[]
57+
| {
58+
month: number | string;
59+
year: number | string;
60+
},
61+
) => string);
62+
previewFormat?:
63+
| string
64+
| ((
65+
date:
66+
| Date
67+
| Date[]
68+
| {
69+
hours: number | string;
70+
minutes: number | string;
71+
}
72+
| {
73+
hours: number | string;
74+
minutes: number | string;
75+
}[]
76+
| {
77+
month: number | string;
78+
year: number | string;
79+
},
80+
) => string);
4581
inputClassName?: string;
4682
menuClassName?: string;
4783
calendarClassName?: string;
@@ -77,7 +113,15 @@ interface Vue3DatePicker {
77113
teleport?: string;
78114
monthNameFormat?: 'long' | 'short';
79115
startDate?: string | Date;
80-
startTime?: ITimeObj | ITimeObj[];
116+
startTime?:
117+
| {
118+
hours: number | string;
119+
minutes: number | string;
120+
}
121+
| {
122+
hours: number | string;
123+
minutes: number | string;
124+
}[];
81125
monthYearComponent?: DefineComponent;
82126
timePickerComponent?: DefineComponent;
83127
actionRowComponent?: DefineComponent;

0 commit comments

Comments
 (0)