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

Commit 223aab8

Browse files
committed
feat: Add multi dates limit (resolves #108)
1 parent 3c5c0e2 commit 223aab8

File tree

5 files changed

+11
-1
lines changed

5 files changed

+11
-1
lines changed

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ interface Vue3DatePicker {
190190
fixedStart?: boolean;
191191
fixedEnd?: boolean;
192192
utc?: boolean;
193+
multiDatesLimit?: number | string;
193194
}
194195

195196
interface PublicMethods extends MethodOptions {

src/Vue3DatePicker/Vue3DatePicker.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
maxRange,
114114
fixedStart,
115115
fixedEnd,
116+
multiDatesLimit,
116117
}"
117118
v-model:internalModelValue="internalModelValue"
118119
@close-picker="closeMenu"
@@ -287,6 +288,7 @@
287288
fixedStart: { type: Boolean as PropType<boolean>, default: false },
288289
fixedEnd: { type: Boolean as PropType<boolean>, default: false },
289290
utc: { type: Boolean as PropType<boolean>, default: false },
291+
multiDatesLimit: { type: [Number, String] as PropType<number | string>, default: null },
290292
});
291293
const slots = useSlots();
292294
const isOpen = ref(false);

src/Vue3DatePicker/components/DatepickerMenu.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@
293293
maxRange: { type: [Number, String] as PropType<number | string>, default: null },
294294
fixedStart: { type: Boolean as PropType<boolean>, default: false },
295295
fixedEnd: { type: Boolean as PropType<boolean>, default: false },
296+
multiDatesLimit: { type: [Number, String] as PropType<number | string>, default: null },
296297
});
297298
const slots = useSlots();
298299
const calendarWrapperRef = ref(null);

src/Vue3DatePicker/components/composition/calendar.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,12 @@ export const useCalendar = (props: UseCalendar, emit: VueEmit, updateFlow: () =>
370370
const value = modelValue.value.filter((dateVal) => !isDateEqual(dateVal, date));
371371
modelValue.value = !value.length ? null : value;
372372
} else {
373-
modelValue.value.push(date);
373+
if (
374+
(props.multiDatesLimit && +props.multiDatesLimit >= modelValue.value.length) ||
375+
!props.multiDatesLimit
376+
) {
377+
modelValue.value.push(date);
378+
}
374379
}
375380
} else {
376381
modelValue.value = [date];

src/Vue3DatePicker/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export type UseCalendar = {
9191
maxRange: number | string;
9292
fixedStart: boolean;
9393
fixedEnd: boolean;
94+
multiDatesLimit: number | string;
9495
} & { [key: string]: unknown };
9596

9697
export interface UseMonthYearPick {

0 commit comments

Comments
 (0)