zartui 3.0.7 → 3.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/es/calendar/Calendar.d.ts +23 -33
  2. package/es/calendar/Calendar.mjs +124 -31
  3. package/es/calendar/CalendarDay.mjs +1 -1
  4. package/es/calendar/CalendarHeader.d.ts +15 -1
  5. package/es/calendar/CalendarHeader.mjs +106 -4
  6. package/es/calendar/CalendarMonth.d.ts +23 -24
  7. package/es/calendar/CalendarMonth.mjs +49 -8
  8. package/es/calendar/index.css +1 -1
  9. package/es/calendar/index.d.ts +15 -22
  10. package/es/calendar/types.d.ts +3 -1
  11. package/es/calendar/utils.d.ts +4 -1
  12. package/es/calendar/utils.mjs +23 -3
  13. package/es/cascader/Cascader.mjs +1 -1
  14. package/es/dialog/Dialog.d.ts +4 -0
  15. package/es/dialog/Dialog.mjs +24 -9
  16. package/es/dialog/index.css +1 -1
  17. package/es/dialog/index.d.ts +3 -0
  18. package/es/dialog/types.d.ts +1 -0
  19. package/es/field/Field.d.ts +3 -0
  20. package/es/field/Field.mjs +2 -1
  21. package/es/field/index.d.ts +2 -0
  22. package/es/icon/config.mjs +2 -1
  23. package/es/icon/index.css +1 -1
  24. package/es/index.d.ts +1 -1
  25. package/es/index.mjs +1 -1
  26. package/es/overlay/index.d.ts +1 -1
  27. package/es/popover/Popover.mjs +14 -6
  28. package/es/swipe-cell/index.d.ts +1 -1
  29. package/es/table/Table.d.ts +8 -3
  30. package/es/table/Table.mjs +122 -31
  31. package/es/table/index.css +1 -1
  32. package/es/table/index.d.ts +5 -3
  33. package/es/table/style/index.mjs +2 -0
  34. package/es/table/types.d.ts +5 -0
  35. package/es/table/types.mjs +8 -0
  36. package/es/tag/Tag.d.ts +3 -0
  37. package/es/tag/Tag.mjs +24 -16
  38. package/es/tag/index.css +1 -1
  39. package/es/tag/index.d.ts +2 -0
  40. package/es/tag/style/index.mjs +1 -0
  41. package/es/uploader/UploaderPreviewItem.d.ts +1 -1
  42. package/lib/calendar/Calendar.d.ts +23 -33
  43. package/lib/calendar/Calendar.js +123 -30
  44. package/lib/calendar/CalendarDay.js +1 -1
  45. package/lib/calendar/CalendarHeader.d.ts +15 -1
  46. package/lib/calendar/CalendarHeader.js +106 -4
  47. package/lib/calendar/CalendarMonth.d.ts +23 -24
  48. package/lib/calendar/CalendarMonth.js +48 -7
  49. package/lib/calendar/index.css +1 -1
  50. package/lib/calendar/index.d.ts +15 -22
  51. package/lib/calendar/types.d.ts +3 -1
  52. package/lib/calendar/utils.d.ts +4 -1
  53. package/lib/calendar/utils.js +23 -3
  54. package/lib/cascader/Cascader.js +1 -1
  55. package/lib/dialog/Dialog.d.ts +4 -0
  56. package/lib/dialog/Dialog.js +24 -9
  57. package/lib/dialog/index.css +1 -1
  58. package/lib/dialog/index.d.ts +3 -0
  59. package/lib/dialog/types.d.ts +1 -0
  60. package/lib/field/Field.d.ts +3 -0
  61. package/lib/field/Field.js +2 -1
  62. package/lib/field/index.d.ts +2 -0
  63. package/lib/icon/config.js +2 -1
  64. package/lib/icon/index.css +1 -1
  65. package/lib/index.css +1 -1
  66. package/lib/index.d.ts +1 -1
  67. package/lib/index.js +1 -1
  68. package/lib/overlay/index.d.ts +1 -1
  69. package/lib/popover/Popover.js +14 -6
  70. package/lib/swipe-cell/index.d.ts +1 -1
  71. package/lib/table/Table.d.ts +8 -3
  72. package/lib/table/Table.js +122 -31
  73. package/lib/table/index.css +1 -1
  74. package/lib/table/index.d.ts +5 -3
  75. package/lib/table/style/index.js +2 -0
  76. package/lib/table/types.d.ts +5 -0
  77. package/lib/table/types.js +27 -0
  78. package/lib/tag/Tag.d.ts +3 -0
  79. package/lib/tag/Tag.js +34 -16
  80. package/lib/tag/index.css +1 -1
  81. package/lib/tag/index.d.ts +2 -0
  82. package/lib/tag/style/index.js +1 -0
  83. package/lib/uploader/UploaderPreviewItem.d.ts +1 -1
  84. package/lib/web-types.json +1 -1
  85. package/lib/zartui.cjs.js +488 -110
  86. package/lib/zartui.es.js +488 -110
  87. package/lib/zartui.js +488 -110
  88. package/lib/zartui.min.js +1 -1
  89. package/package.json +7 -7
@@ -1,8 +1,12 @@
1
1
  import type { PropType, ExtractPropTypes } from 'vue';
2
2
  import { PopupPosition } from '../popup';
3
- import type { CalendarType, CalendarDayItem } from './types';
3
+ import type { CalendarType, CalendarDayItem, CalendarShowType } from './types';
4
4
  export declare const calendarProps: {
5
5
  show: BooleanConstructor;
6
+ showType: {
7
+ type: PropType<CalendarShowType>;
8
+ default: CalendarShowType;
9
+ };
6
10
  type: {
7
11
  type: PropType<CalendarType>;
8
12
  default: CalendarType;
@@ -74,25 +78,22 @@ export declare const calendarProps: {
74
78
  type: BooleanConstructor;
75
79
  default: true;
76
80
  };
77
- minDate: {
78
- type: DateConstructor;
79
- validator: (val: unknown) => val is Date;
80
- default: () => Date;
81
- };
82
- maxDate: {
83
- type: DateConstructor;
84
- validator: (val: unknown) => val is Date;
85
- default: () => Date;
86
- };
81
+ minDate: DateConstructor;
82
+ maxDate: DateConstructor;
87
83
  firstDayOfWeek: {
88
84
  type: (NumberConstructor | StringConstructor)[];
89
85
  default: number;
90
86
  validator: (val: number) => boolean;
91
87
  };
88
+ disabledDate: PropType<(date: Date) => boolean>;
92
89
  };
93
90
  export declare type CalendarProps = ExtractPropTypes<typeof calendarProps>;
94
91
  declare const _default: import("vue").DefineComponent<{
95
92
  show: BooleanConstructor;
93
+ showType: {
94
+ type: PropType<CalendarShowType>;
95
+ default: CalendarShowType;
96
+ };
96
97
  type: {
97
98
  type: PropType<CalendarType>;
98
99
  default: CalendarType;
@@ -164,23 +165,20 @@ declare const _default: import("vue").DefineComponent<{
164
165
  type: BooleanConstructor;
165
166
  default: true;
166
167
  };
167
- minDate: {
168
- type: DateConstructor;
169
- validator: (val: unknown) => val is Date;
170
- default: () => Date;
171
- };
172
- maxDate: {
173
- type: DateConstructor;
174
- validator: (val: unknown) => val is Date;
175
- default: () => Date;
176
- };
168
+ minDate: DateConstructor;
169
+ maxDate: DateConstructor;
177
170
  firstDayOfWeek: {
178
171
  type: (NumberConstructor | StringConstructor)[];
179
172
  default: number;
180
173
  validator: (val: number) => boolean;
181
174
  };
175
+ disabledDate: PropType<(date: Date) => boolean>;
182
176
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:show" | "cancel" | "clickSubtitle" | "confirm" | "unselect" | "monthShow" | "overRange")[], "select" | "update:show" | "cancel" | "clickSubtitle" | "confirm" | "unselect" | "monthShow" | "overRange", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
183
177
  show: BooleanConstructor;
178
+ showType: {
179
+ type: PropType<CalendarShowType>;
180
+ default: CalendarShowType;
181
+ };
184
182
  type: {
185
183
  type: PropType<CalendarType>;
186
184
  default: CalendarType;
@@ -252,21 +250,14 @@ declare const _default: import("vue").DefineComponent<{
252
250
  type: BooleanConstructor;
253
251
  default: true;
254
252
  };
255
- minDate: {
256
- type: DateConstructor;
257
- validator: (val: unknown) => val is Date;
258
- default: () => Date;
259
- };
260
- maxDate: {
261
- type: DateConstructor;
262
- validator: (val: unknown) => val is Date;
263
- default: () => Date;
264
- };
253
+ minDate: DateConstructor;
254
+ maxDate: DateConstructor;
265
255
  firstDayOfWeek: {
266
256
  type: (NumberConstructor | StringConstructor)[];
267
257
  default: number;
268
258
  validator: (val: number) => boolean;
269
259
  };
260
+ disabledDate: PropType<(date: Date) => boolean>;
270
261
  }>> & {
271
262
  onSelect?: ((...args: any[]) => any) | undefined;
272
263
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
@@ -288,6 +279,7 @@ declare const _default: import("vue").DefineComponent<{
288
279
  safeAreaInsetTop: boolean;
289
280
  safeAreaInsetBottom: boolean;
290
281
  popup: boolean;
282
+ showType: CalendarShowType;
291
283
  maxRange: string | number;
292
284
  showMark: boolean;
293
285
  showTitle: boolean;
@@ -295,8 +287,6 @@ declare const _default: import("vue").DefineComponent<{
295
287
  allowSameDay: boolean;
296
288
  showSubtitle: boolean;
297
289
  showRangePrompt: boolean;
298
- minDate: Date;
299
- maxDate: Date;
300
290
  firstDayOfWeek: string | number;
301
291
  }>;
302
292
  export default _default;
@@ -1,7 +1,7 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { ref, watch, computed, defineComponent } from "vue";
3
3
  import { pick, isDate, truthProp, numericProp, getScrollTop, makeStringProp, makeNumericProp } from "../utils/index.mjs";
4
- import { t, bem, name, getToday, cloneDate, cloneDates, getPrevDay, getNextDay, compareDay, calcDateNum, compareMonth, getDayByOffset } from "./utils.mjs";
4
+ import { t, bem, name, getToday, cloneDate, cloneDates, getPrevDay, getNextDay, getPrevDate, getNextDate, compareDay, calcDateNum, compareMonth, getDayByOffset, getFirstDate, formatMonthTitle } from "./utils.mjs";
5
5
  import { raf, useRect, onMountedOrActivated } from "@zartui/use";
6
6
  import { useRefs } from "../composables/use-refs.mjs";
7
7
  import { useExpose } from "../composables/use-expose.mjs";
@@ -12,6 +12,7 @@ import CalendarMonth from "./CalendarMonth.mjs";
12
12
  import CalendarHeader from "./CalendarHeader.mjs";
13
13
  const calendarProps = {
14
14
  show: Boolean,
15
+ showType: makeStringProp("inline"),
15
16
  type: makeStringProp("single"),
16
17
  title: String,
17
18
  color: String,
@@ -38,24 +39,14 @@ const calendarProps = {
38
39
  closeOnClickOverlay: truthProp,
39
40
  safeAreaInsetTop: Boolean,
40
41
  safeAreaInsetBottom: truthProp,
41
- minDate: {
42
- type: Date,
43
- validator: isDate,
44
- default: getToday
45
- },
46
- maxDate: {
47
- type: Date,
48
- validator: isDate,
49
- default: () => {
50
- const now = getToday();
51
- return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate());
52
- }
53
- },
42
+ minDate: Date,
43
+ maxDate: Date,
54
44
  firstDayOfWeek: {
55
45
  type: numericProp,
56
- default: 0,
46
+ default: 1,
57
47
  validator: (val) => val >= 0 && val <= 6
58
- }
48
+ },
49
+ disabledDate: Function
59
50
  };
60
51
  var stdin_default = defineComponent({
61
52
  name,
@@ -65,11 +56,19 @@ var stdin_default = defineComponent({
65
56
  emit,
66
57
  slots
67
58
  }) {
68
- const limitDateRange = (date, minDate = props.minDate, maxDate = props.maxDate) => {
69
- if (compareDay(date, minDate) === -1) {
59
+ const lastMinDate = computed(() => {
60
+ const now = new Date();
61
+ return props.showType !== "inline" && !props.minDate ? new Date(now.getFullYear(), now.getMonth() - 3, now.getDate()) : props.minDate;
62
+ });
63
+ const lastMaxDate = computed(() => {
64
+ const now = new Date();
65
+ return props.showType !== "inline" && !props.maxDate ? new Date(now.getFullYear(), now.getMonth() + 6, now.getDate()) : props.maxDate;
66
+ });
67
+ const limitDateRange = (date, minDate = lastMinDate.value, maxDate = lastMaxDate.value) => {
68
+ if (minDate && compareDay(date, minDate) === -1) {
70
69
  return minDate;
71
70
  }
72
- if (compareDay(date, maxDate) === 1) {
71
+ if (maxDate && compareDay(date, maxDate) === 1) {
73
72
  return maxDate;
74
73
  }
75
74
  return date;
@@ -77,10 +76,10 @@ var stdin_default = defineComponent({
77
76
  const getInitialDate = (defaultDate = props.defaultDate) => {
78
77
  const {
79
78
  type,
80
- minDate,
81
- maxDate,
82
79
  allowSameDay
83
80
  } = props;
81
+ const minDate = lastMinDate.value;
82
+ const maxDate = lastMaxDate.value;
84
83
  if (defaultDate === null) {
85
84
  return defaultDate;
86
85
  }
@@ -89,8 +88,8 @@ var stdin_default = defineComponent({
89
88
  if (!Array.isArray(defaultDate)) {
90
89
  defaultDate = [];
91
90
  }
92
- const start = limitDateRange(defaultDate[0] || now, minDate, allowSameDay ? maxDate : getPrevDay(maxDate));
93
- const end = limitDateRange(defaultDate[1] || now, allowSameDay ? minDate : getNextDay(minDate));
91
+ const start = limitDateRange(defaultDate[0] || now, minDate, allowSameDay ? maxDate : maxDate && getPrevDay(maxDate));
92
+ const end = limitDateRange(defaultDate[1] || now, allowSameDay ? minDate : minDate && getNextDay(minDate));
94
93
  return [start, end];
95
94
  }
96
95
  if (type === "multiple") {
@@ -104,20 +103,40 @@ var stdin_default = defineComponent({
104
103
  }
105
104
  return limitDateRange(defaultDate);
106
105
  };
106
+ const getInitialTitleDate = (defaultDate = props.defaultDate) => {
107
+ const initTitleDate = getInitialDate(defaultDate);
108
+ const now = getToday();
109
+ if (Array.isArray(initTitleDate)) {
110
+ return initTitleDate[0] || now;
111
+ } else {
112
+ return initTitleDate || now;
113
+ }
114
+ };
107
115
  let bodyHeight;
108
116
  const bodyRef = ref();
109
117
  const subtitle = ref("");
110
118
  const currentDate = ref(getInitialDate());
119
+ const titleDate = ref(getInitialTitleDate());
111
120
  const [monthRefs, setMonthRefs] = useRefs();
112
121
  const dayOffset = computed(() => props.firstDayOfWeek ? +props.firstDayOfWeek % 7 : 0);
113
122
  const months = computed(() => {
123
+ var _a;
114
124
  const months2 = [];
115
- const cursor = new Date(props.minDate);
116
- cursor.setDate(1);
117
- do {
118
- months2.push(new Date(cursor));
119
- cursor.setMonth(cursor.getMonth() + 1);
120
- } while (compareMonth(cursor, props.maxDate) !== 1);
125
+ if (props.showType !== "inline" && lastMinDate.value && lastMaxDate.value) {
126
+ const cursor = new Date(lastMinDate.value);
127
+ cursor.setDate(1);
128
+ do {
129
+ months2.push(new Date(cursor));
130
+ cursor.setMonth(cursor.getMonth() + 1);
131
+ } while (compareMonth(cursor, lastMaxDate.value) !== 1);
132
+ } else if (props.showType === "inline") {
133
+ const temp = (_a = titleDate.value) != null ? _a : cloneDates(titleDate.value);
134
+ if (!Array.isArray(temp)) {
135
+ months2.push(getFirstDate(temp));
136
+ } else {
137
+ months2.push(getFirstDate(temp[0]));
138
+ }
139
+ }
121
140
  return months2;
122
141
  });
123
142
  const buttonDisabled = computed(() => {
@@ -168,6 +187,7 @@ var stdin_default = defineComponent({
168
187
  });
169
188
  if (currentMonth) {
170
189
  subtitle.value = currentMonth.getTitle();
190
+ titleDate.value = currentMonth.getDate();
171
191
  }
172
192
  };
173
193
  const scrollToDate = (targetDate) => {
@@ -208,6 +228,7 @@ var stdin_default = defineComponent({
208
228
  };
209
229
  const reset = (date = getInitialDate()) => {
210
230
  currentDate.value = date;
231
+ titleDate.value = getInitialTitleDate(date);
211
232
  scrollToCurrentDate();
212
233
  };
213
234
  const checkRange = (date) => {
@@ -269,6 +290,9 @@ var stdin_default = defineComponent({
269
290
  const {
270
291
  type
271
292
  } = props;
293
+ if (item.type === "preview") {
294
+ titleDate.value = date;
295
+ }
272
296
  if (type === "range") {
273
297
  if (!currentDate.value) {
274
298
  select([date]);
@@ -316,6 +340,64 @@ var stdin_default = defineComponent({
316
340
  select(date, true);
317
341
  }
318
342
  };
343
+ const yearPreEnable = computed(() => {
344
+ if (!lastMinDate.value) {
345
+ return true;
346
+ }
347
+ return titleDate.value.getFullYear() > lastMinDate.value.getFullYear();
348
+ });
349
+ const monthPreEnable = computed(() => {
350
+ if (!lastMinDate.value) {
351
+ return true;
352
+ }
353
+ const targetDate = titleDate.value;
354
+ const targetYearMonth = getFirstDate(targetDate);
355
+ const minDateYearMonth = getFirstDate(lastMinDate.value);
356
+ return compareDay(targetYearMonth, minDateYearMonth) === 1;
357
+ });
358
+ const yearNextEnable = computed(() => {
359
+ if (!lastMaxDate.value) {
360
+ return true;
361
+ }
362
+ return titleDate.value.getFullYear() < lastMaxDate.value.getFullYear();
363
+ });
364
+ const monthNextEnable = computed(() => {
365
+ if (!lastMaxDate.value) {
366
+ return true;
367
+ }
368
+ const targetDate = titleDate.value;
369
+ const targetYearMonth = getFirstDate(targetDate);
370
+ const maxDateYearMonth = getFirstDate(lastMaxDate.value);
371
+ return compareDay(maxDateYearMonth, targetYearMonth) === 1;
372
+ });
373
+ const onClickTitleIcon = (isPreFlag, isMonth, isYear) => {
374
+ const curTitleDate = titleDate.value;
375
+ if (curTitleDate) {
376
+ let targetDate = isPreFlag ? getPrevDate(curTitleDate, isMonth, isYear) : getNextDate(curTitleDate, isMonth, isYear);
377
+ if (!isDate(targetDate)) {
378
+ return;
379
+ }
380
+ let hasCompared = false;
381
+ const compareDate = isPreFlag ? lastMinDate.value : lastMaxDate.value;
382
+ const compareValue = isPreFlag ? 1 : -1;
383
+ if (compareDate && compareDay(compareDate, targetDate) === compareValue && compareMonth(compareDate, targetDate) === 0) {
384
+ targetDate = compareDate;
385
+ hasCompared = true;
386
+ }
387
+ if (hasCompared || !compareDate || compareDate && compareDay(compareDate, targetDate) !== compareValue) {
388
+ scrollToDate(targetDate);
389
+ titleDate.value = targetDate;
390
+ }
391
+ } else {
392
+ raf(onScroll);
393
+ }
394
+ };
395
+ const onClickPreIcon = (isMonth, isYear) => {
396
+ onClickTitleIcon(true, isMonth, isYear);
397
+ };
398
+ const onClickNextIcon = (isMonth, isYear) => {
399
+ onClickTitleIcon(false, isMonth, isYear);
400
+ };
319
401
  const updateShow = (value) => emit("update:show", value);
320
402
  const renderMonth = (date, index) => {
321
403
  const showMonthTitle = index !== 0 || !props.showSubtitle;
@@ -325,7 +407,7 @@ var stdin_default = defineComponent({
325
407
  "currentDate": currentDate.value,
326
408
  "showMonthTitle": showMonthTitle,
327
409
  "firstDayOfWeek": dayOffset.value
328
- }, pick(props, ["type", "color", "minDate", "maxDate", "showMark", "formatter", "rowHeight", "lazyRender", "showSubtitle", "allowSameDay"]), {
410
+ }, pick(props, ["showType", "type", "color", "minDate", "maxDate", "showMark", "formatter", "rowHeight", "lazyRender", "showSubtitle", "allowSameDay", "disabledDate"]), {
329
411
  "onClick": onClickDay
330
412
  }), pick(slots, ["top-info", "bottom-info"]));
331
413
  };
@@ -375,7 +457,13 @@ var stdin_default = defineComponent({
375
457
  "showTitle": props.showTitle,
376
458
  "showSubtitle": props.showSubtitle,
377
459
  "firstDayOfWeek": dayOffset.value,
378
- "onClickSubtitle": (event) => emit("clickSubtitle", event)
460
+ "onClickSubtitle": (event) => emit("clickSubtitle", event),
461
+ "onClickPreIcon": onClickPreIcon,
462
+ "onClickNextIcon": onClickNextIcon,
463
+ "yearPreEnable": yearPreEnable.value,
464
+ "monthPreEnable": monthPreEnable.value,
465
+ "yearNextEnable": yearNextEnable.value,
466
+ "monthNextEnable": monthNextEnable.value
379
467
  }, pick(slots, ["title", "subtitle"])), _createVNode("div", {
380
468
  "ref": bodyRef,
381
469
  "class": bem("body"),
@@ -387,6 +475,11 @@ var stdin_default = defineComponent({
387
475
  currentDate.value = value;
388
476
  scrollToCurrentDate();
389
477
  });
478
+ watch(titleDate, (newValue) => {
479
+ if (props.showType === "inline" && newValue) {
480
+ subtitle.value = formatMonthTitle(newValue);
481
+ }
482
+ });
390
483
  useExpose({
391
484
  reset,
392
485
  scrollToDate,
@@ -32,7 +32,7 @@ var stdin_default = defineComponent({
32
32
  style2.width = "100%";
33
33
  return style2;
34
34
  }
35
- if (index === 0) {
35
+ if (index === 0 && item.text && +item.text === 1) {
36
36
  style2.marginLeft = `${100 * offset / 7}%`;
37
37
  }
38
38
  if (color) {
@@ -7,7 +7,11 @@ declare const _default: import("vue").DefineComponent<{
7
7
  type: NumberConstructor;
8
8
  default: number;
9
9
  };
10
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "clickSubtitle"[], "clickSubtitle", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
10
+ yearPreEnable: BooleanConstructor;
11
+ monthPreEnable: BooleanConstructor;
12
+ yearNextEnable: BooleanConstructor;
13
+ monthNextEnable: BooleanConstructor;
14
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("clickSubtitle" | "clickPreIcon" | "clickNextIcon")[], "clickSubtitle" | "clickPreIcon" | "clickNextIcon", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
11
15
  title: StringConstructor;
12
16
  subtitle: StringConstructor;
13
17
  showTitle: BooleanConstructor;
@@ -16,11 +20,21 @@ declare const _default: import("vue").DefineComponent<{
16
20
  type: NumberConstructor;
17
21
  default: number;
18
22
  };
23
+ yearPreEnable: BooleanConstructor;
24
+ monthPreEnable: BooleanConstructor;
25
+ yearNextEnable: BooleanConstructor;
26
+ monthNextEnable: BooleanConstructor;
19
27
  }>> & {
20
28
  onClickSubtitle?: ((...args: any[]) => any) | undefined;
29
+ onClickPreIcon?: ((...args: any[]) => any) | undefined;
30
+ onClickNextIcon?: ((...args: any[]) => any) | undefined;
21
31
  }, {
22
32
  showTitle: boolean;
23
33
  showSubtitle: boolean;
24
34
  firstDayOfWeek: number;
35
+ yearPreEnable: boolean;
36
+ monthPreEnable: boolean;
37
+ yearNextEnable: boolean;
38
+ monthNextEnable: boolean;
25
39
  }>;
26
40
  export default _default;
@@ -10,9 +10,13 @@ var stdin_default = defineComponent({
10
10
  subtitle: String,
11
11
  showTitle: Boolean,
12
12
  showSubtitle: Boolean,
13
- firstDayOfWeek: makeNumberProp(1)
13
+ firstDayOfWeek: makeNumberProp(1),
14
+ yearPreEnable: Boolean,
15
+ monthPreEnable: Boolean,
16
+ yearNextEnable: Boolean,
17
+ monthNextEnable: Boolean
14
18
  },
15
- emits: ["clickSubtitle"],
19
+ emits: ["clickSubtitle", "clickPreIcon", "clickNextIcon"],
16
20
  setup(props, {
17
21
  slots,
18
22
  emit
@@ -27,13 +31,111 @@ var stdin_default = defineComponent({
27
31
  }
28
32
  };
29
33
  const onClickSubtitle = (event) => emit("clickSubtitle", event);
34
+ const onClickPreIcon = (isMonth, isYear) => () => {
35
+ if (isMonth && !props.monthPreEnable || isYear && !props.yearPreEnable) {
36
+ return;
37
+ }
38
+ emit("clickPreIcon", isMonth, isYear);
39
+ };
40
+ const onClickNextIcon = (isMonth, isYear) => () => {
41
+ if (isMonth && !props.monthNextEnable || isYear && !props.yearNextEnable) {
42
+ return;
43
+ }
44
+ emit("clickNextIcon", isMonth, isYear);
45
+ };
46
+ const fastForwardImg = () => _createVNode("svg", {
47
+ "xmlns": "http://www.w3.org/2000/svg",
48
+ "width": "16px",
49
+ "height": "16px",
50
+ "viewBox": "0 0 16 16",
51
+ "version": "1.1"
52
+ }, [_createVNode("g", {
53
+ "stroke": "none",
54
+ "stroke-width": "1",
55
+ "fill": "none",
56
+ "fill-rule": "evenodd"
57
+ }, [_createVNode("g", {
58
+ "transform": "translate(-32.000000, -320.000000)",
59
+ "fill": "#0091FA",
60
+ "fill-rule": "nonzero"
61
+ }, [_createVNode("g", {
62
+ "transform": "translate(0.000000, 70.000000)"
63
+ }, [_createVNode("g", {
64
+ "transform": "translate(0.000000, 236.000000)"
65
+ }, [_createVNode("g", {
66
+ "transform": "translate(32.000000, 12.000000)"
67
+ }, [_createVNode("g", {
68
+ "transform": "translate(8.000000, 10.000000) scale(-1, 1) translate(-8.000000, -10.000000) translate(0.000000, 2.000000)"
69
+ }, [_createVNode("g", {
70
+ "transform": "translate(0.500000, 2.000000)"
71
+ }, [_createVNode("path", {
72
+ "d": "M6.79659726,4.25543258 L3.35183004,7.88886609 C3.14952477,8.10225141 2.77635057,8.13960837 2.51832213,7.9723052 C2.48075622,7.94794782 2.4468797,7.91993249 2.41742642,7.88886609 L-1.02734079,4.25543258 C-1.22964607,4.04204726 -1.18447352,3.73343826 -0.926445085,3.56613509 C-0.821927664,3.49836699 -0.69295109,3.46153846 -0.560138985,3.46153846 L6.32939545,3.46153846 C6.65727667,3.46153846 6.92307692,3.68135095 6.92307692,3.95250339 C6.92307692,4.06233684 6.87854337,4.16899837 6.79659726,4.25543258 Z",
73
+ "opacity": "0.3",
74
+ "transform": "translate(2.884615, 5.769231) rotate(-90.000000) translate(-2.884615, -5.769231) "
75
+ }, null), _createVNode("path", {
76
+ "d": "M12.5116225,3.49853348 L7.59052644,8.94868375 C7.3015189,9.26876173 6.7684129,9.32479717 6.39980085,9.07384242 C6.34613526,9.03730635 6.29774023,8.99528335 6.25566412,8.94868375 L1.3345681,3.49853348 C1.04556056,3.1784555 1.11009277,2.715542 1.47870482,2.46458724 C1.62801542,2.3629351 1.81226767,2.30769231 2.00199925,2.30769231 L11.8441913,2.30769231 C12.3125931,2.30769231 12.6923077,2.63741103 12.6923077,3.0441397 C12.6923077,3.20888987 12.6286883,3.36888217 12.5116225,3.49853348 Z",
77
+ "opacity": "0.8",
78
+ "transform": "translate(6.923077, 5.769231) rotate(-90.000000) translate(-6.923077, -5.769231) "
79
+ }, null), _createVNode("path", {
80
+ "d": "M17.1270071,3.49853348 L12.2059111,8.94868375 C11.9169035,9.26876173 11.3837975,9.32479717 11.0151855,9.07384242 C10.9615199,9.03730635 10.9131248,8.99528335 10.8710487,8.94868375 L5.94995271,3.49853348 C5.66094518,3.1784555 5.72547739,2.715542 6.09408944,2.46458724 C6.24340004,2.3629351 6.42765229,2.30769231 6.61738387,2.30769231 L16.4595759,2.30769231 C16.9279777,2.30769231 17.3076923,2.63741103 17.3076923,3.0441397 C17.3076923,3.20888987 17.2440729,3.36888217 17.1270071,3.49853348 Z",
81
+ "opacity": "0.8",
82
+ "transform": "translate(11.538462, 5.769231) rotate(-90.000000) translate(-11.538462, -5.769231) "
83
+ }, null)])])])])])])])]);
84
+ const slowForward = () => _createVNode("svg", {
85
+ "xmlns": "http://www.w3.org/2000/svg",
86
+ "width": "16px",
87
+ "height": "16px",
88
+ "viewBox": "0 0 16 16",
89
+ "version": "1.1"
90
+ }, [_createVNode("g", {
91
+ "stroke": "none",
92
+ "stroke-width": "1",
93
+ "fill": "none",
94
+ "fill-rule": "evenodd"
95
+ }, [_createVNode("g", {
96
+ "transform": "translate(-80.000000, -320.000000)",
97
+ "fill": "#0091FA",
98
+ "fill-rule": "nonzero"
99
+ }, [_createVNode("g", {
100
+ "transform": "translate(0.000000, 70.000000)"
101
+ }, [_createVNode("g", {
102
+ "transform": "translate(0.000000, 236.000000)"
103
+ }, [_createVNode("g", {
104
+ "transform": "translate(32.000000, 12.000000)"
105
+ }, [_createVNode("g", {
106
+ "transform": "translate(56.000000, 10.000000) scale(-1, 1) translate(-56.000000, -10.000000) translate(48.000000, 2.000000)"
107
+ }, [_createVNode("g", {
108
+ "transform": "translate(3.000000, 2.000000)"
109
+ }, [_createVNode("path", {
110
+ "d": "M7.06846115,4.42564988 L3.48590324,8.20442073 C3.27550576,8.42634147 2.88740459,8.46519271 2.61905502,8.29119741 C2.57998647,8.26586573 2.54475489,8.23672979 2.51412348,8.20442073 L-1.06843443,4.42564988 C-1.27883191,4.20372915 -1.23185246,3.88277579 -0.963502888,3.70878049 C-0.854804771,3.63830167 -0.720669133,3.6 -0.582544544,3.6 L6.58257127,3.6 C6.92356774,3.6 7.2,3.82860498 7.2,4.11060352 C7.2,4.22483031 7.1536851,4.3357583 7.06846115,4.42564988 Z",
111
+ "opacity": "0.3",
112
+ "transform": "translate(3.000000, 6.000000) rotate(-90.000000) translate(-3.000000, -6.000000) "
113
+ }, null), _createVNode("path", {
114
+ "d": "M13.0120874,3.63847482 L7.89414749,9.3066311 C7.59357966,9.6395122 7.03914942,9.69778906 6.65579288,9.43679611 C6.59998067,9.3987986 6.54964984,9.35509469 6.50589069,9.3066311 L1.38795082,3.63847482 C1.08738299,3.30559372 1.15449649,2.82416368 1.53785302,2.56317073 C1.69313604,2.4574525 1.88475838,2.4 2.08207922,2.4 L12.317959,2.4 C12.8050968,2.4 13.2,2.74290748 13.2,3.16590528 C13.2,3.33724547 13.1338359,3.50363746 13.0120874,3.63847482 Z",
115
+ "opacity": "0.8",
116
+ "transform": "translate(7.200000, 6.000000) rotate(-90.000000) translate(-7.200000, -6.000000) "
117
+ }, null)])])])])])])])]);
30
118
  const renderSubtitle = () => {
31
119
  if (props.showSubtitle) {
32
120
  const title = slots.subtitle ? slots.subtitle() : props.subtitle;
33
121
  return _createVNode("div", {
34
- "class": bem("header-subtitle"),
122
+ "class": bem("header-subtitle")
123
+ }, [_createVNode("div", {
124
+ "class": bem("header-subtitle", ["opt", props.yearPreEnable ? "enable" : "unenable"]),
125
+ "onClick": onClickPreIcon(false, true)
126
+ }, [fastForwardImg()]), _createVNode("div", {
127
+ "class": bem("header-subtitle", ["opt", props.monthPreEnable ? "enable" : "unenable"]),
128
+ "onClick": onClickPreIcon(true, false)
129
+ }, [slowForward()]), _createVNode("label", {
130
+ "class": bem("header-subtitle-text"),
35
131
  "onClick": onClickSubtitle
36
- }, [title]);
132
+ }, [title]), _createVNode("div", {
133
+ "class": bem("header-subtitle", ["opt", "right", [props.monthNextEnable ? "enable" : "unenable"]]),
134
+ "onClick": onClickNextIcon(true, false)
135
+ }, [slowForward()]), _createVNode("div", {
136
+ "class": bem("header-subtitle", ["opt", "right", [props.yearNextEnable ? "enable" : "unenable"]]),
137
+ "onClick": onClickNextIcon(false, true)
138
+ }, [fastForwardImg()])]);
37
139
  }
38
140
  };
39
141
  const renderWeekDays = () => {
@@ -1,20 +1,19 @@
1
1
  import type { PropType, ExtractPropTypes } from 'vue';
2
2
  import type { CalendarType, CalendarDayItem } from './types';
3
+ import { CalendarShowType } from './types';
3
4
  declare const calendarMonthProps: {
4
5
  date: {
5
6
  type: DateConstructor;
6
7
  required: true;
7
8
  };
9
+ showType: {
10
+ type: PropType<CalendarShowType>;
11
+ default: CalendarShowType;
12
+ };
8
13
  type: PropType<CalendarType>;
9
14
  color: StringConstructor;
10
- minDate: {
11
- type: DateConstructor;
12
- required: true;
13
- };
14
- maxDate: {
15
- type: DateConstructor;
16
- required: true;
17
- };
15
+ minDate: DateConstructor;
16
+ maxDate: DateConstructor;
18
17
  showMark: BooleanConstructor;
19
18
  rowHeight: (NumberConstructor | StringConstructor)[];
20
19
  formatter: PropType<(item: CalendarDayItem) => CalendarDayItem>;
@@ -24,6 +23,7 @@ declare const calendarMonthProps: {
24
23
  showSubtitle: BooleanConstructor;
25
24
  showMonthTitle: BooleanConstructor;
26
25
  firstDayOfWeek: NumberConstructor;
26
+ disabledDate: PropType<(date: Date) => boolean>;
27
27
  };
28
28
  export declare type CalendarMonthProps = ExtractPropTypes<typeof calendarMonthProps>;
29
29
  declare const _default: import("vue").DefineComponent<{
@@ -31,16 +31,14 @@ declare const _default: import("vue").DefineComponent<{
31
31
  type: DateConstructor;
32
32
  required: true;
33
33
  };
34
+ showType: {
35
+ type: PropType<CalendarShowType>;
36
+ default: CalendarShowType;
37
+ };
34
38
  type: PropType<CalendarType>;
35
39
  color: StringConstructor;
36
- minDate: {
37
- type: DateConstructor;
38
- required: true;
39
- };
40
- maxDate: {
41
- type: DateConstructor;
42
- required: true;
43
- };
40
+ minDate: DateConstructor;
41
+ maxDate: DateConstructor;
44
42
  showMark: BooleanConstructor;
45
43
  rowHeight: (NumberConstructor | StringConstructor)[];
46
44
  formatter: PropType<(item: CalendarDayItem) => CalendarDayItem>;
@@ -50,21 +48,20 @@ declare const _default: import("vue").DefineComponent<{
50
48
  showSubtitle: BooleanConstructor;
51
49
  showMonthTitle: BooleanConstructor;
52
50
  firstDayOfWeek: NumberConstructor;
51
+ disabledDate: PropType<(date: Date) => boolean>;
53
52
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "click"[], "click", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
54
53
  date: {
55
54
  type: DateConstructor;
56
55
  required: true;
57
56
  };
57
+ showType: {
58
+ type: PropType<CalendarShowType>;
59
+ default: CalendarShowType;
60
+ };
58
61
  type: PropType<CalendarType>;
59
62
  color: StringConstructor;
60
- minDate: {
61
- type: DateConstructor;
62
- required: true;
63
- };
64
- maxDate: {
65
- type: DateConstructor;
66
- required: true;
67
- };
63
+ minDate: DateConstructor;
64
+ maxDate: DateConstructor;
68
65
  showMark: BooleanConstructor;
69
66
  rowHeight: (NumberConstructor | StringConstructor)[];
70
67
  formatter: PropType<(item: CalendarDayItem) => CalendarDayItem>;
@@ -74,10 +71,12 @@ declare const _default: import("vue").DefineComponent<{
74
71
  showSubtitle: BooleanConstructor;
75
72
  showMonthTitle: BooleanConstructor;
76
73
  firstDayOfWeek: NumberConstructor;
74
+ disabledDate: PropType<(date: Date) => boolean>;
77
75
  }>> & {
78
76
  onClick?: ((...args: any[]) => any) | undefined;
79
77
  }, {
80
78
  lazyRender: boolean;
79
+ showType: CalendarShowType;
81
80
  showMark: boolean;
82
81
  allowSameDay: boolean;
83
82
  showSubtitle: boolean;