@vuetify/nightly 3.10.7-dev.2025-10-23 → 3.10.7-dev.2025-10-25
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.
- package/CHANGELOG.md +13 -3
- package/dist/json/attributes.json +3162 -3138
- package/dist/json/importMap-labs.json +32 -32
- package/dist/json/importMap.json +162 -162
- package/dist/json/tags.json +6 -0
- package/dist/json/web-types.json +5516 -5456
- package/dist/vuetify-labs.cjs +138 -33
- package/dist/vuetify-labs.css +4436 -4411
- package/dist/vuetify-labs.d.ts +286 -199
- package/dist/vuetify-labs.esm.js +139 -34
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +138 -33
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +138 -33
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4010 -3985
- package/dist/vuetify.d.ts +258 -199
- package/dist/vuetify.esm.js +139 -34
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +138 -33
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +848 -840
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +50 -0
- package/lib/components/VDatePicker/VDatePickerMonth.css +25 -0
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +53 -0
- package/lib/components/VDatePicker/VDatePickerMonth.js +57 -4
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +22 -0
- package/lib/components/VDatePicker/_variables.scss +5 -0
- package/lib/components/VOverlay/locationStrategies.js +19 -11
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VOverlay/useActivator.js +0 -1
- package/lib/components/VOverlay/useActivator.js.map +1 -1
- package/lib/composables/nested/nested.js +7 -1
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +50 -0
- package/lib/util/helpers.d.ts +8 -1
- package/lib/util/helpers.js +40 -9
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -59,6 +59,8 @@ export declare const makeVDatePickerProps: <Defaults extends {
|
|
|
59
59
|
showWeek?: unknown;
|
|
60
60
|
transition?: unknown;
|
|
61
61
|
reverseTransition?: unknown;
|
|
62
|
+
events?: unknown;
|
|
63
|
+
eventColor?: unknown;
|
|
62
64
|
year?: unknown;
|
|
63
65
|
allowedMonths?: unknown;
|
|
64
66
|
min?: unknown;
|
|
@@ -358,6 +360,26 @@ export declare const makeVDatePickerProps: <Defaults extends {
|
|
|
358
360
|
type: import("vue").PropType<unknown extends Defaults["reverseTransition"] ? string : string | Defaults["reverseTransition"]>;
|
|
359
361
|
default: unknown extends Defaults["reverseTransition"] ? string : string | Defaults["reverseTransition"];
|
|
360
362
|
};
|
|
363
|
+
events: unknown extends Defaults["events"] ? {
|
|
364
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
365
|
+
default: () => null;
|
|
366
|
+
} : Omit<{
|
|
367
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
368
|
+
default: () => null;
|
|
369
|
+
}, "default" | "type"> & {
|
|
370
|
+
type: import("vue").PropType<unknown extends Defaults["events"] ? import("./VDatePickerMonth.js").DatePickerEvents | null : Defaults["events"] | import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
371
|
+
default: unknown extends Defaults["events"] ? import("./VDatePickerMonth.js").DatePickerEvents | null : Defaults["events"] | NonNullable<import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
372
|
+
};
|
|
373
|
+
eventColor: unknown extends Defaults["eventColor"] ? {
|
|
374
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
375
|
+
default: () => null;
|
|
376
|
+
} : Omit<{
|
|
377
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
378
|
+
default: () => null;
|
|
379
|
+
}, "default" | "type"> & {
|
|
380
|
+
type: import("vue").PropType<unknown extends Defaults["eventColor"] ? import("./VDatePickerMonth.js").DatePickerEventColors : Defaults["eventColor"] | import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
381
|
+
default: unknown extends Defaults["eventColor"] ? import("./VDatePickerMonth.js").DatePickerEventColors : Defaults["eventColor"] | NonNullable<import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
382
|
+
};
|
|
361
383
|
year: unknown extends Defaults["year"] ? NumberConstructor : {
|
|
362
384
|
type: import("vue").PropType<unknown extends Defaults["year"] ? number : number | Defaults["year"]>;
|
|
363
385
|
default: unknown extends Defaults["year"] ? number : number | Defaults["year"];
|
|
@@ -419,6 +441,8 @@ export declare const VDatePicker: {
|
|
|
419
441
|
showWeek: boolean;
|
|
420
442
|
transition: string;
|
|
421
443
|
reverseTransition: string;
|
|
444
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
445
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
422
446
|
header: string;
|
|
423
447
|
} & {
|
|
424
448
|
theme?: string | undefined;
|
|
@@ -485,6 +509,8 @@ export declare const VDatePicker: {
|
|
|
485
509
|
showWeek: boolean;
|
|
486
510
|
transition: string;
|
|
487
511
|
reverseTransition: string;
|
|
512
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
513
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
488
514
|
header: string;
|
|
489
515
|
}, true, {}, import("vue").SlotsType<Partial<{
|
|
490
516
|
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
@@ -571,6 +597,8 @@ export declare const VDatePicker: {
|
|
|
571
597
|
showWeek: boolean;
|
|
572
598
|
transition: string;
|
|
573
599
|
reverseTransition: string;
|
|
600
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
601
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
574
602
|
header: string;
|
|
575
603
|
} & {
|
|
576
604
|
theme?: string | undefined;
|
|
@@ -631,6 +659,8 @@ export declare const VDatePicker: {
|
|
|
631
659
|
showWeek: boolean;
|
|
632
660
|
transition: string;
|
|
633
661
|
reverseTransition: string;
|
|
662
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
663
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
634
664
|
header: string;
|
|
635
665
|
}>;
|
|
636
666
|
__isFragment?: undefined;
|
|
@@ -657,6 +687,8 @@ export declare const VDatePicker: {
|
|
|
657
687
|
showWeek: boolean;
|
|
658
688
|
transition: string;
|
|
659
689
|
reverseTransition: string;
|
|
690
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
691
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
660
692
|
header: string;
|
|
661
693
|
} & {
|
|
662
694
|
theme?: string | undefined;
|
|
@@ -723,6 +755,8 @@ export declare const VDatePicker: {
|
|
|
723
755
|
showWeek: boolean;
|
|
724
756
|
transition: string;
|
|
725
757
|
reverseTransition: string;
|
|
758
|
+
events: import("./VDatePickerMonth.js").DatePickerEvents | null;
|
|
759
|
+
eventColor: import("./VDatePickerMonth.js").DatePickerEventColors;
|
|
726
760
|
header: string;
|
|
727
761
|
}, {}, string, import("vue").SlotsType<Partial<{
|
|
728
762
|
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
@@ -891,6 +925,14 @@ export declare const VDatePicker: {
|
|
|
891
925
|
type: StringConstructor;
|
|
892
926
|
default: string;
|
|
893
927
|
};
|
|
928
|
+
events: {
|
|
929
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
930
|
+
default: () => null;
|
|
931
|
+
};
|
|
932
|
+
eventColor: {
|
|
933
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
934
|
+
default: () => null;
|
|
935
|
+
};
|
|
894
936
|
year: NumberConstructor;
|
|
895
937
|
allowedMonths: import("vue").PropType<number[] | ((date: number) => boolean)>;
|
|
896
938
|
min: import("vue").PropType<unknown>;
|
|
@@ -1004,6 +1046,14 @@ export declare const VDatePicker: {
|
|
|
1004
1046
|
type: StringConstructor;
|
|
1005
1047
|
default: string;
|
|
1006
1048
|
};
|
|
1049
|
+
events: {
|
|
1050
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEvents | null>;
|
|
1051
|
+
default: () => null;
|
|
1052
|
+
};
|
|
1053
|
+
eventColor: {
|
|
1054
|
+
type: import("vue").PropType<import("./VDatePickerMonth.js").DatePickerEventColors>;
|
|
1055
|
+
default: () => null;
|
|
1056
|
+
};
|
|
1007
1057
|
year: NumberConstructor;
|
|
1008
1058
|
allowedMonths: import("vue").PropType<number[] | ((date: number) => boolean)>;
|
|
1009
1059
|
min: import("vue").PropType<unknown>;
|
|
@@ -48,4 +48,29 @@
|
|
|
48
48
|
|
|
49
49
|
.v-date-picker-month__day--hide-adjacent {
|
|
50
50
|
opacity: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.v-date-picker-month__events {
|
|
54
|
+
height: 8px;
|
|
55
|
+
left: 0;
|
|
56
|
+
text-indent: 0;
|
|
57
|
+
position: absolute;
|
|
58
|
+
text-align: center;
|
|
59
|
+
white-space: pre;
|
|
60
|
+
width: 100%;
|
|
61
|
+
}
|
|
62
|
+
.v-date-picker-month__events > div {
|
|
63
|
+
height: 8px;
|
|
64
|
+
margin: 0 1px;
|
|
65
|
+
width: 8px;
|
|
66
|
+
margin-bottom: -1px;
|
|
67
|
+
}
|
|
68
|
+
.v-date-picker-month__events .v-badge--dot .v-badge__badge {
|
|
69
|
+
border-radius: 4px;
|
|
70
|
+
height: 8px;
|
|
71
|
+
width: 8px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.v-date-picker-month__day .v-date-picker-month__events {
|
|
75
|
+
bottom: 8px;
|
|
51
76
|
}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
// Types
|
|
4
4
|
import type { PropType } from 'vue';
|
|
5
|
+
export type DatePickerEventColorValue = boolean | string | string[];
|
|
6
|
+
export type DatePickerEventColors = DatePickerEventColorValue | Record<string, DatePickerEventColorValue> | ((date: string) => DatePickerEventColorValue);
|
|
7
|
+
export type DatePickerEvents = string[] | ((date: string) => DatePickerEventColorValue) | Record<string, DatePickerEventColorValue>;
|
|
5
8
|
export type VDatePickerMonthSlots = {
|
|
6
9
|
day: {
|
|
7
10
|
props: {
|
|
@@ -31,6 +34,8 @@ export declare const makeVDatePickerMonthProps: <Defaults extends {
|
|
|
31
34
|
showWeek?: unknown;
|
|
32
35
|
transition?: unknown;
|
|
33
36
|
reverseTransition?: unknown;
|
|
37
|
+
events?: unknown;
|
|
38
|
+
eventColor?: unknown;
|
|
34
39
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
35
40
|
allowedDates: unknown extends Defaults["allowedDates"] ? PropType<unknown[] | ((date: unknown) => boolean)> : {
|
|
36
41
|
type: PropType<unknown extends Defaults["allowedDates"] ? unknown[] | ((date: unknown) => boolean) : unknown[] | ((date: unknown) => boolean) | Defaults["allowedDates"]>;
|
|
@@ -150,6 +155,26 @@ export declare const makeVDatePickerMonthProps: <Defaults extends {
|
|
|
150
155
|
type: PropType<unknown extends Defaults["reverseTransition"] ? string : string | Defaults["reverseTransition"]>;
|
|
151
156
|
default: unknown extends Defaults["reverseTransition"] ? string : string | Defaults["reverseTransition"];
|
|
152
157
|
};
|
|
158
|
+
events: unknown extends Defaults["events"] ? {
|
|
159
|
+
type: PropType<DatePickerEvents | null>;
|
|
160
|
+
default: () => null;
|
|
161
|
+
} : Omit<{
|
|
162
|
+
type: PropType<DatePickerEvents | null>;
|
|
163
|
+
default: () => null;
|
|
164
|
+
}, "default" | "type"> & {
|
|
165
|
+
type: PropType<unknown extends Defaults["events"] ? DatePickerEvents | null : Defaults["events"] | DatePickerEvents | null>;
|
|
166
|
+
default: unknown extends Defaults["events"] ? DatePickerEvents | null : Defaults["events"] | NonNullable<DatePickerEvents | null>;
|
|
167
|
+
};
|
|
168
|
+
eventColor: unknown extends Defaults["eventColor"] ? {
|
|
169
|
+
type: PropType<DatePickerEventColors>;
|
|
170
|
+
default: () => null;
|
|
171
|
+
} : Omit<{
|
|
172
|
+
type: PropType<DatePickerEventColors>;
|
|
173
|
+
default: () => null;
|
|
174
|
+
}, "default" | "type"> & {
|
|
175
|
+
type: PropType<unknown extends Defaults["eventColor"] ? DatePickerEventColors : Defaults["eventColor"] | DatePickerEventColors>;
|
|
176
|
+
default: unknown extends Defaults["eventColor"] ? DatePickerEventColors : Defaults["eventColor"] | NonNullable<DatePickerEventColors>;
|
|
177
|
+
};
|
|
153
178
|
};
|
|
154
179
|
export declare const VDatePickerMonth: {
|
|
155
180
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
|
@@ -161,6 +186,8 @@ export declare const VDatePickerMonth: {
|
|
|
161
186
|
showWeek: boolean;
|
|
162
187
|
transition: string;
|
|
163
188
|
reverseTransition: string;
|
|
189
|
+
events: DatePickerEvents | null;
|
|
190
|
+
eventColor: DatePickerEventColors;
|
|
164
191
|
} & {
|
|
165
192
|
allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
|
|
166
193
|
modelValue?: unknown[] | undefined;
|
|
@@ -221,6 +248,8 @@ export declare const VDatePickerMonth: {
|
|
|
221
248
|
showWeek: boolean;
|
|
222
249
|
transition: string;
|
|
223
250
|
reverseTransition: string;
|
|
251
|
+
events: DatePickerEvents | null;
|
|
252
|
+
eventColor: DatePickerEventColors;
|
|
224
253
|
}, true, {}, import("vue").SlotsType<Partial<{
|
|
225
254
|
day: (arg: {
|
|
226
255
|
props: {
|
|
@@ -247,6 +276,8 @@ export declare const VDatePickerMonth: {
|
|
|
247
276
|
showWeek: boolean;
|
|
248
277
|
transition: string;
|
|
249
278
|
reverseTransition: string;
|
|
279
|
+
events: DatePickerEvents | null;
|
|
280
|
+
eventColor: DatePickerEventColors;
|
|
250
281
|
} & {
|
|
251
282
|
allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
|
|
252
283
|
modelValue?: unknown[] | undefined;
|
|
@@ -303,6 +334,8 @@ export declare const VDatePickerMonth: {
|
|
|
303
334
|
showWeek: boolean;
|
|
304
335
|
transition: string;
|
|
305
336
|
reverseTransition: string;
|
|
337
|
+
events: DatePickerEvents | null;
|
|
338
|
+
eventColor: DatePickerEventColors;
|
|
306
339
|
}>;
|
|
307
340
|
__isFragment?: undefined;
|
|
308
341
|
__isTeleport?: undefined;
|
|
@@ -316,6 +349,8 @@ export declare const VDatePickerMonth: {
|
|
|
316
349
|
showWeek: boolean;
|
|
317
350
|
transition: string;
|
|
318
351
|
reverseTransition: string;
|
|
352
|
+
events: DatePickerEvents | null;
|
|
353
|
+
eventColor: DatePickerEventColors;
|
|
319
354
|
} & {
|
|
320
355
|
allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
|
|
321
356
|
modelValue?: unknown[] | undefined;
|
|
@@ -376,6 +411,8 @@ export declare const VDatePickerMonth: {
|
|
|
376
411
|
showWeek: boolean;
|
|
377
412
|
transition: string;
|
|
378
413
|
reverseTransition: string;
|
|
414
|
+
events: DatePickerEvents | null;
|
|
415
|
+
eventColor: DatePickerEventColors;
|
|
379
416
|
}, {}, string, import("vue").SlotsType<Partial<{
|
|
380
417
|
day: (arg: {
|
|
381
418
|
props: {
|
|
@@ -427,6 +464,14 @@ export declare const VDatePickerMonth: {
|
|
|
427
464
|
type: StringConstructor;
|
|
428
465
|
default: string;
|
|
429
466
|
};
|
|
467
|
+
events: {
|
|
468
|
+
type: PropType<DatePickerEvents | null>;
|
|
469
|
+
default: () => null;
|
|
470
|
+
};
|
|
471
|
+
eventColor: {
|
|
472
|
+
type: PropType<DatePickerEventColors>;
|
|
473
|
+
default: () => null;
|
|
474
|
+
};
|
|
430
475
|
}, import("vue").ExtractPropTypes<{
|
|
431
476
|
allowedDates: PropType<unknown[] | ((date: unknown) => boolean)>;
|
|
432
477
|
disabled: {
|
|
@@ -468,5 +513,13 @@ export declare const VDatePickerMonth: {
|
|
|
468
513
|
type: StringConstructor;
|
|
469
514
|
default: string;
|
|
470
515
|
};
|
|
516
|
+
events: {
|
|
517
|
+
type: PropType<DatePickerEvents | null>;
|
|
518
|
+
default: () => null;
|
|
519
|
+
};
|
|
520
|
+
eventColor: {
|
|
521
|
+
type: PropType<DatePickerEventColors>;
|
|
522
|
+
default: () => null;
|
|
523
|
+
};
|
|
471
524
|
}>>;
|
|
472
525
|
export type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VDatePickerMonth.css";
|
|
4
4
|
|
|
5
5
|
// Components
|
|
6
|
+
import { VBadge } from "../VBadge/index.js";
|
|
6
7
|
import { VBtn } from "../VBtn/index.js"; // Composables
|
|
7
8
|
import { makeCalendarProps, useCalendar } from "../../composables/calendar.js";
|
|
8
9
|
import { createDateRange, useDate } from "../../composables/date/date.js";
|
|
9
10
|
import { useLocale } from "../../composables/locale.js";
|
|
10
11
|
import { MaybeTransition } from "../../composables/transition.js"; // Utilities
|
|
11
12
|
import { computed, ref, shallowRef, toRef, watch } from 'vue';
|
|
12
|
-
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
13
|
+
import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
|
|
13
14
|
export const makeVDatePickerMonthProps = propsFactory({
|
|
14
15
|
color: String,
|
|
15
16
|
hideWeekdays: Boolean,
|
|
@@ -23,6 +24,14 @@ export const makeVDatePickerMonthProps = propsFactory({
|
|
|
23
24
|
type: String,
|
|
24
25
|
default: 'picker-reverse-transition'
|
|
25
26
|
},
|
|
27
|
+
events: {
|
|
28
|
+
type: [Array, Function, Object],
|
|
29
|
+
default: () => null
|
|
30
|
+
},
|
|
31
|
+
eventColor: {
|
|
32
|
+
type: [Array, Function, Object, String],
|
|
33
|
+
default: () => null
|
|
34
|
+
},
|
|
26
35
|
...omit(makeCalendarProps(), ['displayValue'])
|
|
27
36
|
}, 'VDatePickerMonth');
|
|
28
37
|
export const VDatePickerMonth = genericComponent()({
|
|
@@ -122,6 +131,49 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
122
131
|
model.value = [value];
|
|
123
132
|
}
|
|
124
133
|
}
|
|
134
|
+
function getEventColors(date) {
|
|
135
|
+
const {
|
|
136
|
+
events,
|
|
137
|
+
eventColor
|
|
138
|
+
} = props;
|
|
139
|
+
let eventData;
|
|
140
|
+
let eventColors = [];
|
|
141
|
+
if (Array.isArray(events)) {
|
|
142
|
+
eventData = events.includes(date);
|
|
143
|
+
} else if (events instanceof Function) {
|
|
144
|
+
eventData = events(date) || false;
|
|
145
|
+
} else if (events) {
|
|
146
|
+
eventData = events[date] || false;
|
|
147
|
+
} else {
|
|
148
|
+
eventData = false;
|
|
149
|
+
}
|
|
150
|
+
if (!eventData) {
|
|
151
|
+
return [];
|
|
152
|
+
} else if (eventData !== true) {
|
|
153
|
+
eventColors = wrapInArray(eventData);
|
|
154
|
+
} else if (typeof eventColor === 'string') {
|
|
155
|
+
eventColors = [eventColor];
|
|
156
|
+
} else if (typeof eventColor === 'function') {
|
|
157
|
+
eventColors = wrapInArray(eventColor(date));
|
|
158
|
+
} else if (Array.isArray(eventColor)) {
|
|
159
|
+
eventColors = eventColor;
|
|
160
|
+
} else if (typeof eventColor === 'object' && eventColor !== null) {
|
|
161
|
+
eventColors = wrapInArray(eventColor[date]);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Fallback to default color if no color is found
|
|
165
|
+
return !eventColors.length ? ['surface-variant'] : eventColors.filter(Boolean).map(color => typeof color === 'string' ? color : 'surface-variant');
|
|
166
|
+
}
|
|
167
|
+
function genEvents(date) {
|
|
168
|
+
const eventColors = getEventColors(date);
|
|
169
|
+
if (!eventColors.length) return null;
|
|
170
|
+
return _createElementVNode("div", {
|
|
171
|
+
"class": "v-date-picker-month__events"
|
|
172
|
+
}, [eventColors.map(color => _createVNode(VBadge, {
|
|
173
|
+
"dot": true,
|
|
174
|
+
"color": color
|
|
175
|
+
}, null))]);
|
|
176
|
+
}
|
|
125
177
|
useRender(() => _createElementVNode("div", {
|
|
126
178
|
"class": "v-date-picker-month",
|
|
127
179
|
"style": {
|
|
@@ -152,7 +204,6 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
152
204
|
disabled: item.isDisabled,
|
|
153
205
|
icon: true,
|
|
154
206
|
ripple: false,
|
|
155
|
-
text: item.localized,
|
|
156
207
|
variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',
|
|
157
208
|
'aria-label': getDateAriaLabel(item),
|
|
158
209
|
'aria-current': item.isToday ? 'date' : undefined,
|
|
@@ -173,7 +224,9 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
173
224
|
'v-date-picker-month__day--week-start': item.isWeekStart
|
|
174
225
|
}]),
|
|
175
226
|
"data-v-date": !item.isDisabled ? item.isoDate : undefined
|
|
176
|
-
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props,
|
|
227
|
+
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props, {
|
|
228
|
+
default: () => [item.localized, genEvents(item.isoDate)]
|
|
229
|
+
}))]);
|
|
177
230
|
})])]
|
|
178
231
|
})]));
|
|
179
232
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerMonth.js","names":["VBtn","makeCalendarProps","useCalendar","createDateRange","useDate","useLocale","MaybeTransition","computed","ref","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","transition","type","default","reverseTransition","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","t","daysInMonth","model","weekNumbers","weekdayLabels","adapter","rangeStart","rangeStop","isReverse","value","length","atMax","max","includes","Infinity","val","oldVal","isBefore","onRangeClick","_value","startOfDay","undefined","isSameDay","endOfDay","getDateAriaLabel","item","fullDate","format","localeKey","isToday","onMultipleClick","index","findIndex","selection","splice","onClick","_createElementVNode","weekdays","_createTextVNode","map","week","_normalizeClass","_createVNode","toString","weekDay","i","slotProps","class","isSelected","disabled","isDisabled","icon","ripple","text","localized","variant","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { createDateRange, useDate } from '@/composables/date/date'\nimport { useLocale } from '@/composables/locale'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n\n ...omit(makeCalendarProps(), ['displayValue']),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n const { t } = useLocale()\n\n const { daysInMonth, model, weekNumbers, weekdayLabels } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = toRef(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (model.value.length === 0) {\n rangeStart.value = undefined\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0]\n rangeStop.value = undefined\n }\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n model.value = createDateRange(adapter, rangeStart.value, rangeStop.value)\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function getDateAriaLabel (item: any) {\n const fullDate = adapter.format(item.date, 'fullDateWithWeekday')\n const localeKey = item.isToday ? 'currentDate' : 'selectDate'\n return t(`$vuetify.datePicker.ariaLabel.${localeKey}`, fullDate)\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n useRender(() => (\n <div\n class=\"v-date-picker-month\"\n style={{ '--v-date-picker-days-in-week': props.weekdays.length }}\n >\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <MaybeTransition name={ transition.value }>\n <div\n ref={ daysRef }\n key={ daysInMonth.value[0].date?.toString() }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && weekdayLabels.value.map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n class: 'v-date-picker-month__day-btn',\n color: item.isSelected || item.isToday ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',\n 'aria-label': getDateAriaLabel(item),\n 'aria-current': item.isToday ? 'date' : undefined,\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n slots.day?.(slotProps) ?? (<VBtn { ...slotProps.props } />)\n )}\n </div>\n )\n })}\n </div>\n </MaybeTransition>\n </div>\n ))\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDatePickerMonth.js","names":["VBadge","VBtn","makeCalendarProps","useCalendar","createDateRange","useDate","useLocale","MaybeTransition","computed","ref","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","transition","type","default","reverseTransition","events","Array","Function","Object","eventColor","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","t","daysInMonth","model","weekNumbers","weekdayLabels","adapter","rangeStart","rangeStop","isReverse","value","length","atMax","max","includes","Infinity","val","oldVal","isBefore","onRangeClick","_value","startOfDay","undefined","isSameDay","endOfDay","getDateAriaLabel","item","fullDate","format","localeKey","isToday","onMultipleClick","index","findIndex","selection","splice","onClick","getEventColors","eventData","eventColors","isArray","filter","map","genEvents","_createElementVNode","_createVNode","weekdays","_createTextVNode","week","_normalizeClass","toString","weekDay","i","slotProps","class","isSelected","disabled","isDisabled","icon","ripple","variant","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","day","localized"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBadge } from '@/components/VBadge'\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { createDateRange, useDate } from '@/composables/date/date'\nimport { useLocale } from '@/composables/locale'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type DatePickerEventColorValue = boolean | string | string[]\n\nexport type DatePickerEventColors = DatePickerEventColorValue |\nRecord<string, DatePickerEventColorValue> | ((date: string) => DatePickerEventColorValue)\n\nexport type DatePickerEvents = string[] |\n((date: string) => DatePickerEventColorValue) | Record<string, DatePickerEventColorValue>\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n events: {\n type: [Array, Function, Object] as PropType<DatePickerEvents | null>,\n default: () => null,\n },\n eventColor: {\n type: [Array, Function, Object, String] as PropType<DatePickerEventColors>,\n default: () => null,\n },\n ...omit(makeCalendarProps(), ['displayValue']),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n const { t } = useLocale()\n\n const { daysInMonth, model, weekNumbers, weekdayLabels } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = toRef(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (model.value.length === 0) {\n rangeStart.value = undefined\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0]\n rangeStop.value = undefined\n }\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n model.value = createDateRange(adapter, rangeStart.value, rangeStop.value)\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function getDateAriaLabel (item: any) {\n const fullDate = adapter.format(item.date, 'fullDateWithWeekday')\n const localeKey = item.isToday ? 'currentDate' : 'selectDate'\n return t(`$vuetify.datePicker.ariaLabel.${localeKey}`, fullDate)\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n function getEventColors (date: string): string[] {\n const { events, eventColor } = props\n let eventData: boolean | DatePickerEventColorValue\n let eventColors: (boolean | string)[] = []\n\n if (Array.isArray(events)) {\n eventData = events.includes(date)\n } else if (events instanceof Function) {\n eventData = events(date) || false\n } else if (events) {\n eventData = events[date] || false\n } else {\n eventData = false\n }\n\n if (!eventData) {\n return []\n } else if (eventData !== true) {\n eventColors = wrapInArray(eventData)\n } else if (typeof eventColor === 'string') {\n eventColors = [eventColor]\n } else if (typeof eventColor === 'function') {\n eventColors = wrapInArray(eventColor(date))\n } else if (Array.isArray(eventColor)) {\n eventColors = eventColor\n } else if (typeof eventColor === 'object' && eventColor !== null) {\n eventColors = wrapInArray(eventColor[date])\n }\n\n // Fallback to default color if no color is found\n return !eventColors.length\n ? ['surface-variant']\n : eventColors\n .filter(Boolean)\n .map((color: string | boolean) => typeof color === 'string' ? color : 'surface-variant')\n }\n\n function genEvents (date: string): JSX.Element | null {\n const eventColors = getEventColors(date)\n\n if (!eventColors.length) return null\n\n return (\n <div class=\"v-date-picker-month__events\">\n { eventColors.map((color: string) => <VBadge dot color={ color } />) }\n </div>\n )\n }\n useRender(() => (\n <div\n class=\"v-date-picker-month\"\n style={{ '--v-date-picker-days-in-week': props.weekdays.length }}\n >\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <MaybeTransition name={ transition.value }>\n <div\n ref={ daysRef }\n key={ daysInMonth.value[0].date?.toString() }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && weekdayLabels.value.map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n class: 'v-date-picker-month__day-btn',\n color: item.isSelected || item.isToday ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',\n 'aria-label': getDateAriaLabel(item),\n 'aria-current': item.isToday ? 'date' : undefined,\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props }>\n { item.localized }\n { genEvents(item.isoDate) }\n </VBtn>\n )\n )}\n </div>\n )\n })}\n </div>\n </MaybeTransition>\n </div>\n ))\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,3 +48,25 @@
|
|
|
48
48
|
|
|
49
49
|
.v-date-picker-month__day--hide-adjacent
|
|
50
50
|
opacity: 0
|
|
51
|
+
.v-date-picker-month__events
|
|
52
|
+
height: $date-picker-event-size
|
|
53
|
+
left: 0
|
|
54
|
+
text-indent: 0
|
|
55
|
+
position: absolute
|
|
56
|
+
text-align: center
|
|
57
|
+
white-space: pre
|
|
58
|
+
width: 100%
|
|
59
|
+
|
|
60
|
+
> div
|
|
61
|
+
height: $date-picker-event-size
|
|
62
|
+
margin: $date-picker-event-margin
|
|
63
|
+
width: $date-picker-event-size
|
|
64
|
+
margin-bottom: -1px
|
|
65
|
+
|
|
66
|
+
.v-badge--dot .v-badge__badge
|
|
67
|
+
border-radius: $date-picker-event-border-radius
|
|
68
|
+
height: $date-picker-event-size
|
|
69
|
+
width: $date-picker-event-size
|
|
70
|
+
|
|
71
|
+
.v-date-picker-month__day .v-date-picker-month__events
|
|
72
|
+
bottom: $date-picker-event-date-bottom
|
|
@@ -16,3 +16,8 @@ $date-picker-months-height: 288px !default;
|
|
|
16
16
|
|
|
17
17
|
$date-picker-years-height: 288px !default;
|
|
18
18
|
$date-picker-years-padding-inline: 32px !default;
|
|
19
|
+
|
|
20
|
+
$date-picker-event-size: 8px !default;
|
|
21
|
+
$date-picker-event-border-radius: 4px !default;
|
|
22
|
+
$date-picker-event-margin: 0 1px !default;
|
|
23
|
+
$date-picker-event-date-bottom: 8px !default;
|
|
@@ -211,7 +211,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
211
211
|
|
|
212
212
|
const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
|
|
213
213
|
const scrollParents = getScrollParents(data.contentEl.value);
|
|
214
|
-
const viewportMargin = 12;
|
|
214
|
+
const viewportMargin = props.stickToTarget ? 0 : 12; // TOOD: prop.viewportMargin
|
|
215
|
+
|
|
215
216
|
if (!scrollParents.length) {
|
|
216
217
|
scrollParents.push(document.documentElement);
|
|
217
218
|
if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
|
|
@@ -231,10 +232,17 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
231
232
|
}
|
|
232
233
|
return scrollBox;
|
|
233
234
|
}, undefined);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
if (props.stickToTarget) {
|
|
236
|
+
viewport.x += Math.min(0, targetBox.x);
|
|
237
|
+
viewport.y += Math.min(0, targetBox.y);
|
|
238
|
+
viewport.width = Math.max(viewport.width, targetBox.x + targetBox.width);
|
|
239
|
+
viewport.height = Math.max(viewport.height, targetBox.y + targetBox.height);
|
|
240
|
+
} else {
|
|
241
|
+
viewport.x += viewportMargin;
|
|
242
|
+
viewport.y += viewportMargin;
|
|
243
|
+
viewport.width -= viewportMargin * 2;
|
|
244
|
+
viewport.height -= viewportMargin * 2;
|
|
245
|
+
}
|
|
238
246
|
let placement = {
|
|
239
247
|
anchor: preferredAnchor.value,
|
|
240
248
|
origin: preferredOrigin.value
|
|
@@ -345,19 +353,19 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
345
353
|
|
|
346
354
|
// shift
|
|
347
355
|
if (overflows.x.before) {
|
|
348
|
-
|
|
356
|
+
x += overflows.x.before;
|
|
349
357
|
contentBox.x += overflows.x.before;
|
|
350
358
|
}
|
|
351
359
|
if (overflows.x.after) {
|
|
352
|
-
|
|
360
|
+
x -= overflows.x.after;
|
|
353
361
|
contentBox.x -= overflows.x.after;
|
|
354
362
|
}
|
|
355
363
|
if (overflows.y.before) {
|
|
356
|
-
|
|
364
|
+
y += overflows.y.before;
|
|
357
365
|
contentBox.y += overflows.y.before;
|
|
358
366
|
}
|
|
359
367
|
if (overflows.y.after) {
|
|
360
|
-
|
|
368
|
+
y -= overflows.y.after;
|
|
361
369
|
contentBox.y -= overflows.y.after;
|
|
362
370
|
}
|
|
363
371
|
|
|
@@ -366,9 +374,9 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
366
374
|
const overflows = getOverflow(contentBox, viewport);
|
|
367
375
|
available.x = viewport.width - overflows.x.before - overflows.x.after;
|
|
368
376
|
available.y = viewport.height - overflows.y.before - overflows.y.after;
|
|
369
|
-
|
|
377
|
+
x += overflows.x.before;
|
|
370
378
|
contentBox.x += overflows.x.before;
|
|
371
|
-
|
|
379
|
+
y += overflows.y.before;
|
|
372
380
|
contentBox.y += overflows.y.before;
|
|
373
381
|
}
|
|
374
382
|
break;
|