Tracking de l'application VApp (IHM du jeu)

This commit is contained in:
2025-05-11 18:04:12 +02:00
commit 89e9db9b62
17763 changed files with 3718499 additions and 0 deletions

View File

@ -0,0 +1,26 @@
.v-date-picker__input {
padding-top: 16px;
padding-left: 24px;
padding-right: 24px;
}
.v-date-picker {
overflow: hidden;
width: 360px;
}
.v-date-picker--show-week {
width: 408px;
}
.v-date-picker-month {
padding: 0 12px 12px;
}
.v-date-picker-month__day {
height: 48px;
width: 48px;
}
.v-date-picker-month__day .v-btn {
--v-btn-height: 28px;
--v-btn-size: 0.85rem;
}

View File

@ -0,0 +1,242 @@
import { Fragment as _Fragment, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
// Styles
import "./VDatePicker.css";
// Components
import { makeVDatePickerControlsProps, VDatePickerControls } from "./VDatePickerControls.mjs";
import { VDatePickerHeader } from "./VDatePickerHeader.mjs";
import { makeVDatePickerMonthProps, VDatePickerMonth } from "./VDatePickerMonth.mjs";
import { makeVDatePickerMonthsProps, VDatePickerMonths } from "./VDatePickerMonths.mjs";
import { makeVDatePickerYearsProps, VDatePickerYears } from "./VDatePickerYears.mjs";
import { VFadeTransition } from "../transitions/index.mjs";
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
import { makeVPickerProps, VPicker } from "../../labs/VPicker/VPicker.mjs"; // Composables
import { useDate } from "../../composables/date/index.mjs";
import { useLocale } from "../../composables/locale.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
import { computed, ref, shallowRef, watch } from 'vue';
import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
// Types
export const makeVDatePickerProps = propsFactory({
// TODO: implement in v3.5
// calendarIcon: {
// type: String,
// default: '$calendar',
// },
// keyboardIcon: {
// type: String,
// default: '$edit',
// },
// inputMode: {
// type: String as PropType<'calendar' | 'keyboard'>,
// default: 'calendar',
// },
// inputText: {
// type: String,
// default: '$vuetify.datePicker.input.placeholder',
// },
// inputPlaceholder: {
// type: String,
// default: 'dd/mm/yyyy',
// },
header: {
type: String,
default: '$vuetify.datePicker.header'
},
...makeVDatePickerControlsProps(),
...makeVDatePickerMonthProps(),
...omit(makeVDatePickerMonthsProps(), ['modelValue']),
...omit(makeVDatePickerYearsProps(), ['modelValue']),
...makeVPickerProps({
title: '$vuetify.datePicker.title'
}),
modelValue: null
}, 'VDatePicker');
export const VDatePicker = genericComponent()({
name: 'VDatePicker',
props: makeVDatePickerProps(),
emits: {
'update:modelValue': date => true,
'update:month': date => true,
'update:year': date => true,
// 'update:inputMode': (date: any) => true,
'update:viewMode': date => true
},
setup(props, _ref) {
let {
emit,
slots
} = _ref;
const adapter = useDate();
const {
t
} = useLocale();
const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
const viewMode = useProxiedModel(props, 'viewMode');
// const inputMode = useProxiedModel(props, 'inputMode')
const internal = computed(() => {
const value = adapter.date(model.value?.[0]);
return value && adapter.isValid(value) ? value : adapter.date();
});
const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
const isReversing = shallowRef(false);
const header = computed(() => {
return props.multiple && model.value.length > 1 ? t('$vuetify.datePicker.itemsSelected', model.value.length) : model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header);
});
const text = computed(() => {
return adapter.format(adapter.date(new Date(year.value, month.value, 1)), 'monthAndYear');
});
// const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
const minDate = computed(() => {
const date = adapter.date(props.min);
return props.min && adapter.isValid(date) ? date : null;
});
const maxDate = computed(() => {
const date = adapter.date(props.max);
return props.max && adapter.isValid(date) ? date : null;
});
const disabled = computed(() => {
if (props.disabled) return true;
const targets = [];
if (viewMode.value !== 'month') {
targets.push(...['prev', 'next']);
} else {
let _date = adapter.date();
_date = adapter.setYear(_date, year.value);
_date = adapter.setMonth(_date, month.value);
if (minDate.value) {
const date = adapter.addDays(adapter.startOfMonth(_date), -1);
adapter.isAfter(minDate.value, date) && targets.push('prev');
}
if (maxDate.value) {
const date = adapter.addDays(adapter.endOfMonth(_date), 1);
adapter.isAfter(date, maxDate.value) && targets.push('next');
}
}
return targets;
});
// function onClickAppend () {
// inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
// }
function onClickNext() {
if (month.value < 11) {
month.value++;
} else {
year.value++;
month.value = 0;
}
}
function onClickPrev() {
if (month.value > 0) {
month.value--;
} else {
year.value--;
month.value = 11;
}
}
function onClickDate() {
viewMode.value = 'month';
}
function onClickMonth() {
viewMode.value = viewMode.value === 'months' ? 'month' : 'months';
}
function onClickYear() {
viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
}
watch(month, () => {
if (viewMode.value === 'months') onClickMonth();
emit('update:month', month.value);
});
watch(year, () => {
if (viewMode.value === 'year') onClickYear();
emit('update:year', year.value);
});
watch(model, (val, oldVal) => {
const before = adapter.date(wrapInArray(val)[0]);
const after = adapter.date(wrapInArray(oldVal)[0]);
isReversing.value = adapter.isBefore(before, after);
});
useRender(() => {
const pickerProps = VPicker.filterProps(props);
const datePickerControlsProps = VDatePickerControls.filterProps(props);
const datePickerHeaderProps = VDatePickerHeader.filterProps(props);
const datePickerMonthProps = VDatePickerMonth.filterProps(props);
const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue']);
const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue']);
const headerProps = {
header: header.value,
transition: headerTransition.value
};
return _createVNode(VPicker, _mergeProps(pickerProps, {
"class": ['v-date-picker', `v-date-picker--${viewMode.value}`, {
'v-date-picker--show-week': props.showWeek
}, props.class],
"style": props.style
}), {
title: () => slots.title?.() ?? _createVNode("div", {
"class": "v-date-picker__title"
}, [t(props.title)]),
header: () => slots.header ? _createVNode(VDefaultsProvider, {
"defaults": {
VDatePickerHeader: {
...headerProps
}
}
}, {
default: () => [slots.header?.(headerProps)]
}) : _createVNode(VDatePickerHeader, _mergeProps({
"key": "header"
}, datePickerHeaderProps, headerProps, {
"onClick": viewMode.value !== 'month' ? onClickDate : undefined
}), {
...slots,
default: undefined
}),
default: () => _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
"disabled": disabled.value,
"text": text.value,
"onClick:next": onClickNext,
"onClick:prev": onClickPrev,
"onClick:month": onClickMonth,
"onClick:year": onClickYear
}), null), _createVNode(VFadeTransition, {
"hideOnLeave": true
}, {
default: () => [viewMode.value === 'months' ? _createVNode(VDatePickerMonths, _mergeProps({
"key": "date-picker-months"
}, datePickerMonthsProps, {
"modelValue": month.value,
"onUpdate:modelValue": $event => month.value = $event,
"min": minDate.value,
"max": maxDate.value
}), null) : viewMode.value === 'year' ? _createVNode(VDatePickerYears, _mergeProps({
"key": "date-picker-years"
}, datePickerYearsProps, {
"modelValue": year.value,
"onUpdate:modelValue": $event => year.value = $event,
"min": minDate.value,
"max": maxDate.value
}), null) : _createVNode(VDatePickerMonth, _mergeProps({
"key": "date-picker-month"
}, datePickerMonthProps, {
"modelValue": model.value,
"onUpdate:modelValue": $event => model.value = $event,
"month": month.value,
"onUpdate:month": $event => month.value = $event,
"year": year.value,
"onUpdate:year": $event => year.value = $event,
"min": minDate.value,
"max": maxDate.value
}), null)]
})]),
actions: slots.actions
});
});
return {};
}
});
//# sourceMappingURL=VDatePicker.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,24 @@
@use '../../styles/tools'
.v-date-picker__input
padding-top: 16px
padding-left: 24px
padding-right: 24px
.v-date-picker
overflow: hidden
width: 360px
&--show-week
width: 408px
.v-date-picker-month
padding: 0 12px 12px
.v-date-picker-month__day
height: 48px
width: 48px
.v-btn
--v-btn-height: 28px
--v-btn-size: 0.85rem

View File

@ -0,0 +1,57 @@
.v-date-picker-controls {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 0.875rem;
padding-top: 4px;
padding-bottom: 4px;
padding-inline-start: 6px;
padding-inline-end: 12px;
}
.v-date-picker-controls > .v-btn:first-child {
text-transform: none;
font-weight: 400;
line-height: initial;
letter-spacing: initial;
}
.v-date-picker-controls--variant-classic {
padding-inline-start: 12px;
}
.v-date-picker-controls--variant-modern .v-date-picker__title:not(:hover) {
opacity: 0.7;
}
.v-date-picker--month .v-date-picker-controls--variant-modern .v-date-picker__title {
cursor: pointer;
}
.v-date-picker--year .v-date-picker-controls--variant-modern .v-date-picker__title {
opacity: 1;
}
.v-date-picker-controls .v-btn:last-child {
margin-inline-start: 4px;
}
.v-date-picker--year .v-date-picker-controls .v-date-picker-controls__mode-btn {
transform: rotate(180deg);
}
.v-date-picker-controls__date {
margin-inline-end: 4px;
}
.v-date-picker-controls--variant-classic .v-date-picker-controls__date {
margin: auto;
text-align: center;
}
.v-date-picker-controls__month {
display: flex;
}
.v-locale--is-rtl.v-date-picker-controls__month, .v-locale--is-rtl .v-date-picker-controls__month {
flex-direction: row-reverse;
}
.v-date-picker-controls--variant-classic .v-date-picker-controls__month {
flex: 1 0 auto;
}
.v-date-picker__title {
display: inline-block;
}

View File

@ -0,0 +1,113 @@
import { createVNode as _createVNode } from "vue";
// Styles
import "./VDatePickerControls.css";
// Components
import { VBtn } from "../VBtn/index.mjs";
import { VSpacer } from "../VGrid/index.mjs"; // Utilities
import { computed } from 'vue';
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVDatePickerControlsProps = propsFactory({
active: {
type: [String, Array],
default: undefined
},
disabled: {
type: [Boolean, String, Array],
default: false
},
nextIcon: {
type: [String],
default: '$next'
},
prevIcon: {
type: [String],
default: '$prev'
},
modeIcon: {
type: [String],
default: '$subgroup'
},
text: String,
viewMode: {
type: String,
default: 'month'
}
}, 'VDatePickerControls');
export const VDatePickerControls = genericComponent()({
name: 'VDatePickerControls',
props: makeVDatePickerControlsProps(),
emits: {
'click:year': () => true,
'click:month': () => true,
'click:prev': () => true,
'click:next': () => true,
'click:text': () => true
},
setup(props, _ref) {
let {
emit
} = _ref;
const disableMonth = computed(() => {
return Array.isArray(props.disabled) ? props.disabled.includes('text') : !!props.disabled;
});
const disableYear = computed(() => {
return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;
});
const disablePrev = computed(() => {
return Array.isArray(props.disabled) ? props.disabled.includes('prev') : !!props.disabled;
});
const disableNext = computed(() => {
return Array.isArray(props.disabled) ? props.disabled.includes('next') : !!props.disabled;
});
function onClickPrev() {
emit('click:prev');
}
function onClickNext() {
emit('click:next');
}
function onClickYear() {
emit('click:year');
}
function onClickMonth() {
emit('click:month');
}
useRender(() => {
return _createVNode("div", {
"class": ['v-date-picker-controls']
}, [_createVNode(VBtn, {
"class": "v-date-picker-controls__month-btn",
"disabled": disableMonth.value,
"text": props.text,
"variant": "text",
"rounded": true,
"onClick": onClickMonth
}, null), _createVNode(VBtn, {
"key": "mode-btn",
"class": "v-date-picker-controls__mode-btn",
"disabled": disableYear.value,
"density": "comfortable",
"icon": props.modeIcon,
"variant": "text",
"onClick": onClickYear
}, null), _createVNode(VSpacer, {
"key": "mode-spacer"
}, null), _createVNode("div", {
"key": "month-buttons",
"class": "v-date-picker-controls__month"
}, [_createVNode(VBtn, {
"disabled": disablePrev.value,
"icon": props.prevIcon,
"variant": "text",
"onClick": onClickPrev
}, null), _createVNode(VBtn, {
"disabled": disableNext.value,
"icon": props.nextIcon,
"variant": "text",
"onClick": onClickNext
}, null)])]);
});
return {};
}
});
//# sourceMappingURL=VDatePickerControls.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,57 @@
@use '../../styles/tools'
.v-date-picker-controls
display: flex
align-items: center
justify-content: space-between
font-size: .875rem
padding-top: 4px
padding-bottom: 4px
padding-inline-start: 6px
padding-inline-end: 12px
> .v-btn:first-child
text-transform: none
font-weight: 400
line-height: initial
letter-spacing: initial
&--variant-classic
padding-inline-start: 12px
&--variant-modern
.v-date-picker__title
&:not(:hover)
opacity: .7
.v-date-picker--month &
cursor: pointer
.v-date-picker--year &
opacity: 1
.v-btn:last-child
margin-inline-start: 4px
.v-date-picker--year &
.v-date-picker-controls__mode-btn
transform: rotate(180deg)
.v-date-picker-controls__date
margin-inline-end: 4px
.v-date-picker-controls--variant-classic &
margin: auto
text-align: center
.v-date-picker-controls__month
display: flex
@include tools.rtl()
flex-direction: row-reverse
.v-date-picker-controls--variant-classic &
flex: 1 0 auto
.v-date-picker__title
display: inline-block

View File

@ -0,0 +1,59 @@
.v-date-picker-header {
display: grid;
grid-template-areas: "prepend content append";
grid-template-columns: min-content minmax(0, 1fr) min-content;
overflow: hidden;
padding-inline: 24px 12px;
padding-bottom: 12px;
}
.v-date-picker-header__append {
grid-area: append;
}
.v-date-picker-header__prepend {
grid-area: prepend;
padding-inline-start: 8px;
}
.v-date-picker-header__content {
align-items: center;
display: inline-flex;
font-size: 32px;
line-height: 40px;
grid-area: content;
justify-content: space-between;
}
.v-date-picker-header--clickable .v-date-picker-header__content {
cursor: pointer;
}
.v-date-picker-header--clickable .v-date-picker-header__content:not(:hover) {
opacity: 0.7;
}
.date-picker-header-transition-enter-active,
.date-picker-header-reverse-transition-enter-active {
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.date-picker-header-transition-leave-active,
.date-picker-header-reverse-transition-leave-active {
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.date-picker-header-transition-enter-from {
transform: translate(0, 100%);
}
.date-picker-header-transition-leave-to {
opacity: 0;
transform: translate(0, -100%);
}
.date-picker-header-reverse-transition-enter-from {
transform: translate(0, -100%);
}
.date-picker-header-reverse-transition-leave-to {
opacity: 0;
transform: translate(0, 100%);
}

View File

@ -0,0 +1,83 @@
import { createVNode as _createVNode } from "vue";
// Styles
import "./VDatePickerHeader.css";
// Components
import { VBtn } from "../VBtn/index.mjs";
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
import { useBackgroundColor } from "../../composables/color.mjs";
import { MaybeTransition } from "../../composables/transition.mjs"; // Utilities
import { EventProp, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVDatePickerHeaderProps = propsFactory({
appendIcon: String,
color: String,
header: String,
transition: String,
onClick: EventProp()
}, 'VDatePickerHeader');
export const VDatePickerHeader = genericComponent()({
name: 'VDatePickerHeader',
props: makeVDatePickerHeaderProps(),
emits: {
click: () => true,
'click:append': () => true
},
setup(props, _ref) {
let {
emit,
slots
} = _ref;
const {
backgroundColorClasses,
backgroundColorStyles
} = useBackgroundColor(props, 'color');
function onClick() {
emit('click');
}
function onClickAppend() {
emit('click:append');
}
useRender(() => {
const hasContent = !!(slots.default || props.header);
const hasAppend = !!(slots.append || props.appendIcon);
return _createVNode("div", {
"class": ['v-date-picker-header', {
'v-date-picker-header--clickable': !!props.onClick
}, backgroundColorClasses.value],
"style": backgroundColorStyles.value,
"onClick": onClick
}, [slots.prepend && _createVNode("div", {
"key": "prepend",
"class": "v-date-picker-header__prepend"
}, [slots.prepend()]), hasContent && _createVNode(MaybeTransition, {
"key": "content",
"name": props.transition
}, {
default: () => [_createVNode("div", {
"key": props.header,
"class": "v-date-picker-header__content"
}, [slots.default?.() ?? props.header])]
}), hasAppend && _createVNode("div", {
"class": "v-date-picker-header__append"
}, [!slots.append ? _createVNode(VBtn, {
"key": "append-btn",
"icon": props.appendIcon,
"variant": "text",
"onClick": onClickAppend
}, null) : _createVNode(VDefaultsProvider, {
"key": "append-defaults",
"disabled": !props.appendIcon,
"defaults": {
VBtn: {
icon: props.appendIcon,
variant: 'text'
}
}
}, {
default: () => [slots.append?.()]
})])]);
});
return {};
}
});
//# sourceMappingURL=VDatePickerHeader.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,56 @@
@use '../../styles/settings'
.v-date-picker-header
display: grid
grid-template-areas: "prepend content append"
grid-template-columns: min-content minmax(0, 1fr) min-content
overflow: hidden
padding-inline: 24px 12px
padding-bottom: 12px
.v-date-picker-header__append
grid-area: append
.v-date-picker-header__prepend
grid-area: prepend
padding-inline-start: 8px
.v-date-picker-header__content
align-items: center
display: inline-flex
font-size: 32px
line-height: 40px
grid-area: content
justify-content: space-between
.v-date-picker-header--clickable &
cursor: pointer
&:not(:hover)
opacity: .7
.date-picker-header-transition,
.date-picker-header-reverse-transition
&-enter-active
transition-duration: 0.3s
transition-timing-function: settings.$standard-easing
&-leave-active
transition-duration: 0.3s
transition-timing-function: settings.$standard-easing
.date-picker-header-transition
&-enter-from
transform: translate(0, 100%)
&-leave-to
opacity: 0
transform: translate(0, -100%)
.date-picker-header-reverse-transition
&-enter-from
transform: translate(0, -100%)
&-leave-to
opacity: 0
transform: translate(0, 100%)

View File

@ -0,0 +1,50 @@
.v-date-picker-month {
display: flex;
justify-content: center;
min-width: 328px;
--v-date-picker-month-day-diff: 4px;
}
.v-date-picker-month__weeks {
display: grid;
grid-template-rows: min-content min-content min-content min-content min-content min-content min-content;
row-gap: 4px;
font-size: 0.875rem;
}
.v-date-picker-month__weeks + .v-date-picker-month__days {
grid-row-gap: 0;
}
.v-date-picker-month__weekday {
font-size: 0.875rem;
}
.v-date-picker-month__days {
display: grid;
grid-template-columns: min-content min-content min-content min-content min-content min-content min-content;
row-gap: 4px;
flex: 1 1;
justify-content: space-around;
}
.v-date-picker-month__day {
align-items: center;
display: flex;
justify-content: center;
position: relative;
}
.v-date-picker-month__day--selected .v-btn {
background-color: rgb(var(--v-theme-surface-variant));
color: rgb(var(--v-theme-on-surface-variant));
}
.v-date-picker-month__day--week {
font-size: var(--v-btn-size);
}
.v-date-picker-month__day--adjacent {
opacity: 0.5;
}
.v-date-picker-month__day--hide-adjacent {
opacity: 0;
}

View File

@ -0,0 +1,147 @@
import { createVNode as _createVNode, createTextVNode as _createTextVNode } from "vue";
// Styles
import "./VDatePickerMonth.css";
// Components
import { VBtn } from "../VBtn/index.mjs";
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
import { makeCalendarProps, useCalendar } from "../../composables/calendar.mjs";
import { useDate } from "../../composables/date/date.mjs"; // Utilities
import { computed, ref, shallowRef } from 'vue';
import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
export const makeVDatePickerMonthProps = propsFactory({
color: String,
hideWeekdays: Boolean,
multiple: [Boolean, Number, String],
showWeek: Boolean,
...makeCalendarProps()
}, 'VDatePickerMonth');
export const VDatePickerMonth = genericComponent()({
name: 'VDatePickerMonth',
props: makeVDatePickerMonthProps(),
emits: {
'update:modelValue': date => true,
'update:month': date => true,
'update:year': date => true
},
setup(props, _ref) {
let {
emit,
slots
} = _ref;
const daysRef = ref();
const {
daysInMonth,
model,
weekNumbers
} = useCalendar(props);
const adapter = useDate();
const rangeStart = shallowRef();
const rangeStop = shallowRef();
const atMax = computed(() => {
const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
return model.value.length >= max;
});
function onRangeClick(value) {
const _value = adapter.startOfDay(value);
if (!rangeStart.value) {
rangeStart.value = _value;
model.value = [rangeStart.value];
} else if (!rangeStop.value) {
if (adapter.isSameDay(value, rangeStart.value)) {
rangeStart.value = undefined;
model.value = [];
return;
} else if (adapter.isBefore(value, rangeStart.value)) {
rangeStop.value = rangeStart.value;
rangeStart.value = _value;
} else {
rangeStop.value = _value;
}
const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
const datesInRange = [rangeStart.value];
for (let i = 1; i < diff; i++) {
const nextDate = adapter.addDays(rangeStart.value, i);
datesInRange.push(nextDate);
}
datesInRange.push(rangeStop.value);
model.value = datesInRange;
} else {
rangeStart.value = value;
rangeStop.value = undefined;
model.value = [rangeStart.value];
}
}
function onMultipleClick(value) {
const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));
if (index === -1) {
model.value = [...model.value, value];
} else {
const value = [...model.value];
value.splice(index, 1);
model.value = value;
}
}
function onClick(value) {
if (props.multiple === 'range') {
onRangeClick(value);
} else if (props.multiple) {
onMultipleClick(value);
} else {
model.value = [value];
}
}
return () => _createVNode("div", {
"class": "v-date-picker-month"
}, [props.showWeek && _createVNode("div", {
"key": "weeks",
"class": "v-date-picker-month__weeks"
}, [!props.hideWeekdays && _createVNode("div", {
"key": "hide-week-days",
"class": "v-date-picker-month__day"
}, [_createTextVNode("\xA0")]), weekNumbers.value.map(week => _createVNode("div", {
"class": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']
}, [week]))]), _createVNode("div", {
"ref": daysRef,
"class": "v-date-picker-month__days"
}, [!props.hideWeekdays && adapter.getWeekdays().map(weekDay => _createVNode("div", {
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
}, [weekDay])), daysInMonth.value.map((item, i) => {
const slotProps = {
props: {
onClick: () => onClick(item.date)
},
item,
i
};
if (atMax.value && !item.isSelected) {
item.isDisabled = true;
}
return _createVNode("div", {
"class": ['v-date-picker-month__day', {
'v-date-picker-month__day--adjacent': item.isAdjacent,
'v-date-picker-month__day--hide-adjacent': item.isHidden,
'v-date-picker-month__day--selected': item.isSelected,
'v-date-picker-month__day--week-end': item.isWeekEnd,
'v-date-picker-month__day--week-start': item.isWeekStart
}],
"data-v-date": !item.isDisabled ? item.isoDate : undefined
}, [(props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VDefaultsProvider, {
"defaults": {
VBtn: {
color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
disabled: item.isDisabled,
icon: true,
ripple: false,
text: item.localized,
variant: item.isDisabled ? 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
onClick: () => onClick(item.date)
}
}
}, {
default: () => [slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props, null)]
})]);
})])]);
}
});
//# sourceMappingURL=VDatePickerMonth.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,45 @@
.v-date-picker-month
display: flex
justify-content: center
min-width: 328px
--v-date-picker-month-day-diff: 4px
.v-date-picker-month__weeks
display: grid
grid-template-rows: min-content min-content min-content min-content min-content min-content min-content
row-gap: 4px
font-size: .875rem
+ .v-date-picker-month__days
grid-row-gap: 0
.v-date-picker-month__weekday
font-size: .875rem
.v-date-picker-month__days
display: grid
grid-template-columns: min-content min-content min-content min-content min-content min-content min-content
row-gap: 4px
flex: 1 1
justify-content: space-around
.v-date-picker-month__day
align-items: center
display: flex
justify-content: center
position: relative
&--selected
.v-btn
background-color: rgb(var(--v-theme-surface-variant))
color: rgb(var(--v-theme-on-surface-variant))
&--week
font-size: var(--v-btn-size)
.v-date-picker-month__day--adjacent
opacity: 0.5
.v-date-picker-month__day--hide-adjacent
opacity: 0

View File

@ -0,0 +1,21 @@
.v-date-picker-months {
height: 320px;
overflow-y: scroll;
}
.v-date-picker-months__content {
align-items: center;
display: grid;
flex: 1 1;
height: inherit;
justify-content: space-around;
grid-template-columns: repeat(2, 1fr);
grid-gap: 4px 24px;
padding-inline-start: 36px;
padding-inline-end: 36px;
}
.v-date-picker-months__content .v-btn {
text-transform: none;
padding-inline-start: 8px;
padding-inline-end: 8px;
}

View File

@ -0,0 +1,74 @@
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
// Styles
import "./VDatePickerMonths.css";
// Components
import { VBtn } from "../VBtn/index.mjs"; // Composables
import { useDate } from "../../composables/date/index.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
import { computed, watchEffect } from 'vue';
import { convertToUnit, createRange, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVDatePickerMonthsProps = propsFactory({
color: String,
height: [String, Number],
modelValue: Number
}, 'VDatePickerMonths');
export const VDatePickerMonths = genericComponent()({
name: 'VDatePickerMonths',
props: makeVDatePickerMonthsProps(),
emits: {
'update:modelValue': date => true
},
setup(props, _ref) {
let {
slots
} = _ref;
const adapter = useDate();
const model = useProxiedModel(props, 'modelValue');
const months = computed(() => {
let date = adapter.startOfYear(adapter.date());
return createRange(12).map(i => {
const text = adapter.format(date, 'monthShort');
date = adapter.getNextMonth(date);
return {
text,
value: i
};
});
});
watchEffect(() => {
model.value = model.value ?? adapter.getMonth(adapter.date());
});
useRender(() => _createVNode("div", {
"class": "v-date-picker-months",
"style": {
height: convertToUnit(props.height)
}
}, [_createVNode("div", {
"class": "v-date-picker-months__content"
}, [months.value.map((month, i) => {
const btnProps = {
active: model.value === i,
color: model.value === i ? props.color : undefined,
rounded: true,
text: month.text,
variant: model.value === month.value ? 'flat' : 'text',
onClick: () => onClick(i)
};
function onClick(i) {
model.value = i;
}
return slots.month?.({
month,
i,
props: btnProps
}) ?? _createVNode(VBtn, _mergeProps({
"key": "month"
}, btnProps, {
"onClick": () => onClick(i)
}), null);
})])]));
return {};
}
});
//# sourceMappingURL=VDatePickerMonths.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,19 @@
.v-date-picker-months
height: 320px
overflow-y: scroll
.v-date-picker-months__content
align-items: center
display: grid
flex: 1 1
height: inherit
justify-content: space-around
grid-template-columns: repeat(2, 1fr)
grid-gap: 4px 24px
padding-inline-start: 36px
padding-inline-end: 36px
.v-btn
text-transform: none
padding-inline-start: 8px
padding-inline-end: 8px

View File

@ -0,0 +1,81 @@
// @ts-nocheck
/* eslint-disable */
import "./VDatePickerTitle.css";
// Components
import VIcon from "../VIcon/index.mjs"; // Mixins
import PickerButton from "../../mixins/picker-button.mjs"; // Utils
import mixins from "../../util/mixins.mjs"; // Types
export default mixins(PickerButton
/* @vue/component */).extend({
name: 'v-date-picker-title',
props: {
date: {
type: String,
default: ''
},
disabled: Boolean,
readonly: Boolean,
selectingYear: Boolean,
value: {
type: String
},
year: {
type: [Number, String],
default: ''
},
yearIcon: {
type: String
}
},
data: () => ({
isReversing: false
}),
computed: {
computedTransition() {
return this.isReversing ? 'picker-reverse-transition' : 'picker-transition';
}
},
watch: {
value(val, prev) {
this.isReversing = val < prev;
}
},
methods: {
genYearIcon() {
return this.$createElement(VIcon, {
props: {
dark: true
}
}, this.yearIcon);
},
getYearBtn() {
return this.genPickerButton('selectingYear', true, [String(this.year), this.yearIcon ? this.genYearIcon() : null], false, 'v-date-picker-title__year');
},
genTitleText() {
return this.$createElement('transition', {
props: {
name: this.computedTransition
}
}, [this.$createElement('div', {
domProps: {
innerHTML: this.date || '&nbsp;'
},
key: this.value
})]);
},
genTitleDate() {
return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date');
}
},
render(h) {
return h('div', {
staticClass: 'v-date-picker-title',
class: {
'v-date-picker-title--disabled': this.disabled
}
}, [this.getYearBtn(), this.genTitleDate()]);
}
});
//# sourceMappingURL=VDatePickerTitle.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"VDatePickerTitle.mjs","names":["VIcon","PickerButton","mixins","extend","name","props","date","type","String","default","disabled","Boolean","readonly","selectingYear","value","year","Number","yearIcon","data","isReversing","computed","computedTransition","watch","val","prev","methods","genYearIcon","$createElement","dark","getYearBtn","genPickerButton","genTitleText","domProps","innerHTML","key","genTitleDate","render","h","staticClass","class"],"sources":["../../../src/components/VDatePicker/VDatePickerTitle.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport './VDatePickerTitle.sass'\n\n// Components\nimport VIcon from '@/components/VIcon'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n\n props: {\n date: {\n type: String,\n default: '',\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String,\n },\n year: {\n type: [Number, String],\n default: '',\n },\n yearIcon: {\n type: String,\n },\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition'\n },\n },\n\n watch: {\n value (val: string, prev: string) {\n this.isReversing = val < prev\n },\n },\n\n methods: {\n genYearIcon (): VNode {\n return this.$createElement(VIcon, {\n props: {\n dark: true,\n },\n }, this.yearIcon)\n },\n getYearBtn (): VNode {\n return this.genPickerButton('selectingYear', true, [\n String(this.year),\n this.yearIcon ? this.genYearIcon() : null,\n ], false, 'v-date-picker-title__year')\n },\n genTitleText (): VNode {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [\n this.$createElement('div', {\n domProps: { innerHTML: this.date || '&nbsp;' },\n key: this.value,\n }),\n ])\n },\n genTitleDate (): VNode {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date')\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-date-picker-title',\n class: {\n 'v-date-picker-title--disabled': this.disabled,\n },\n }, [\n this.getYearBtn(),\n this.genTitleDate(),\n ])\n },\n})\n"],"mappings":"AAAA;AACA;;AAEA;;AAEA;AAAA,OACOA,KAAK,4BAEZ;AAAA,OACOC,YAAY,wCAEnB;AAAA,OACOC,MAAM,+BAEb;AAGA,eAAeA,MAAM,CACnBD;AACF,oBACA,CAAC,CAACE,MAAM,CAAC;EACPC,IAAI,EAAE,qBAAqB;EAE3BC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDC,QAAQ,EAAEC,OAAO;IACjBC,QAAQ,EAAED,OAAO;IACjBE,aAAa,EAAEF,OAAO;IACtBG,KAAK,EAAE;MACLP,IAAI,EAAEC;IACR,CAAC;IACDO,IAAI,EAAE;MACJR,IAAI,EAAE,CAACS,MAAM,EAAER,MAAM,CAAC;MACtBC,OAAO,EAAE;IACX,CAAC;IACDQ,QAAQ,EAAE;MACRV,IAAI,EAAEC;IACR;EACF,CAAC;EAEDU,IAAI,EAAEA,CAAA,MAAO;IACXC,WAAW,EAAE;EACf,CAAC,CAAC;EAEFC,QAAQ,EAAE;IACRC,kBAAkBA,CAAA,EAAY;MAC5B,OAAO,IAAI,CAACF,WAAW,GAAG,2BAA2B,GAAG,mBAAmB;IAC7E;EACF,CAAC;EAEDG,KAAK,EAAE;IACLR,KAAKA,CAAES,GAAW,EAAEC,IAAY,EAAE;MAChC,IAAI,CAACL,WAAW,GAAGI,GAAG,GAAGC,IAAI;IAC/B;EACF,CAAC;EAEDC,OAAO,EAAE;IACPC,WAAWA,CAAA,EAAW;MACpB,OAAO,IAAI,CAACC,cAAc,CAAC3B,KAAK,EAAE;QAChCK,KAAK,EAAE;UACLuB,IAAI,EAAE;QACR;MACF,CAAC,EAAE,IAAI,CAACX,QAAQ,CAAC;IACnB,CAAC;IACDY,UAAUA,CAAA,EAAW;MACnB,OAAO,IAAI,CAACC,eAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CACjDtB,MAAM,CAAC,IAAI,CAACO,IAAI,CAAC,EACjB,IAAI,CAACE,QAAQ,GAAG,IAAI,CAACS,WAAW,CAAC,CAAC,GAAG,IAAI,CAC1C,EAAE,KAAK,EAAE,2BAA2B,CAAC;IACxC,CAAC;IACDK,YAAYA,CAAA,EAAW;MACrB,OAAO,IAAI,CAACJ,cAAc,CAAC,YAAY,EAAE;QACvCtB,KAAK,EAAE;UACLD,IAAI,EAAE,IAAI,CAACiB;QACb;MACF,CAAC,EAAE,CACD,IAAI,CAACM,cAAc,CAAC,KAAK,EAAE;QACzBK,QAAQ,EAAE;UAAEC,SAAS,EAAE,IAAI,CAAC3B,IAAI,IAAI;QAAS,CAAC;QAC9C4B,GAAG,EAAE,IAAI,CAACpB;MACZ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACDqB,YAAYA,CAAA,EAAW;MACrB,OAAO,IAAI,CAACL,eAAe,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,2BAA2B,CAAC;IAChH;EACF,CAAC;EAEDK,MAAMA,CAAEC,CAAC,EAAS;IAChB,OAAOA,CAAC,CAAC,KAAK,EAAE;MACdC,WAAW,EAAE,qBAAqB;MAClCC,KAAK,EAAE;QACL,+BAA+B,EAAE,IAAI,CAAC7B;MACxC;IACF,CAAC,EAAE,CACD,IAAI,CAACmB,UAAU,CAAC,CAAC,EACjB,IAAI,CAACM,YAAY,CAAC,CAAC,CACpB,CAAC;EACJ;AACF,CAAC,CAAC"}

View File

@ -0,0 +1,33 @@
@use './variables' as *
.v-date-picker-title
display: flex
justify-content: space-between
flex-direction: column
flex-wrap: wrap
line-height: 1
.v-picker__title__btn
text-align: start
&__year
align-items: center
display: inline-flex
font-size: $date-picker-title-year-font-size
font-weight: $date-picker-title-year-font-weight
margin-bottom: $date-picker-title-year-bottom-margin
&__date
font-size: $date-picker-title-date-font-size
text-align: left
font-weight: $date-picker-title-date-font-weight
position: relative
overflow: hidden
padding-bottom: 8px
margin-bottom: -8px
> div
position: relative
&--disabled
pointer-events: none

View File

@ -0,0 +1,16 @@
.v-date-picker-years {
height: 320px;
overflow-y: scroll;
}
.v-date-picker-years__content {
display: grid;
flex: 1 1;
justify-content: space-around;
grid-template-columns: repeat(3, 1fr);
gap: 8px 24px;
padding-inline: 36px;
}
.v-date-picker-years__content .v-btn {
padding-inline: 8px;
}

View File

@ -0,0 +1,90 @@
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
// Styles
import "./VDatePickerYears.css";
// Components
import { VBtn } from "../VBtn/index.mjs"; // Composables
import { useDate } from "../../composables/date/index.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
import { computed, nextTick, onMounted, ref, watchEffect } from 'vue';
import { convertToUnit, createRange, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
// Types
export const makeVDatePickerYearsProps = propsFactory({
color: String,
height: [String, Number],
min: null,
max: null,
modelValue: Number
}, 'VDatePickerYears');
export const VDatePickerYears = genericComponent()({
name: 'VDatePickerYears',
props: makeVDatePickerYearsProps(),
emits: {
'update:modelValue': year => true
},
setup(props, _ref) {
let {
slots
} = _ref;
const adapter = useDate();
const model = useProxiedModel(props, 'modelValue');
const years = computed(() => {
const year = adapter.getYear(adapter.date());
let min = year - 100;
let max = year + 52;
if (props.min) {
min = adapter.getYear(adapter.date(props.min));
}
if (props.max) {
max = adapter.getYear(adapter.date(props.max));
}
let date = adapter.startOfYear(adapter.date());
date = adapter.setYear(date, min);
return createRange(max - min + 1, min).map(i => {
const text = adapter.format(date, 'year');
date = adapter.setYear(date, adapter.getYear(date) + 1);
return {
text,
value: i
};
});
});
watchEffect(() => {
model.value = model.value ?? adapter.getYear(adapter.date());
});
const yearRef = ref();
onMounted(async () => {
await nextTick();
yearRef.value?.$el.scrollIntoView({
block: 'center'
});
});
useRender(() => _createVNode("div", {
"class": "v-date-picker-years",
"style": {
height: convertToUnit(props.height)
}
}, [_createVNode("div", {
"class": "v-date-picker-years__content"
}, [years.value.map((year, i) => {
const btnProps = {
ref: model.value === year.value ? yearRef : undefined,
active: model.value === year.value,
color: model.value === year.value ? props.color : undefined,
rounded: true,
text: year.text,
variant: model.value === year.value ? 'flat' : 'text',
onClick: () => model.value = year.value
};
return slots.year?.({
year,
i,
props: btnProps
}) ?? _createVNode(VBtn, _mergeProps({
"key": "month"
}, btnProps), null);
})])]));
return {};
}
});
//# sourceMappingURL=VDatePickerYears.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
.v-date-picker-years
height: 320px
overflow-y: scroll
.v-date-picker-years__content
display: grid
flex: 1 1
justify-content: space-around
grid-template-columns: repeat(3, 1fr)
gap: 8px 24px
padding-inline: 36px
.v-btn
padding-inline: 8px

View File

@ -0,0 +1,37 @@
$date-picker-years-font-size: 16px !default;
$date-picker-years-font-weight: 400 !default;
$date-picker-years-portrait-height: 290px !default;
$date-picker-years-landscape-height: 290px !default;
$date-picker-years-item-padding: 8px 0 !default;
$date-picker-years-active-font-size: 26px !default;
$date-picker-years-active-font-weight: 500 !default;
$date-picker-years-active-padding: 10px 0 !default;
$date-picker-years-item-hover-background: rgba(0, 0, 0, 0.12) !default;
$date-picker-years-item-align: center !default;
$date-picker-title-year-font-size: 14px !default;
$date-picker-title-year-font-weight: 500 !default;
$date-picker-title-year-bottom-margin: 8px !default;
$date-picker-title-date-font-size: 34px !default;
$date-picker-title-date-font-weight: 500 !default;
$date-picker-header-padding: 4px 16px !default;
$date-picker-header-button-font-weight: bold !default;
$date-picker-header-button-padding: 0.5rem !default;
$date-picker-table-padding: 0 12px !default;
$date-picker-table-height: 242px !default;
$date-picker-table-font-size: 12px !default;
$date-picker-table-date-button-width: 32px !default;
$date-picker-table-date-button-height: 32px !default;
$date-picker-table-month-height: 56px !default;
$date-picker-table-month-min-width: 40px !default;
$date-picker-table-month-max-width: 140px !default;
$date-picker-table-date-padding: 8px 0 !default;
$date-picker-table-date-font-weight: 600 !default;
$date-picker-table-date-width: 45px !default;
$date-picker-event-size: 8px !default;
$date-picker-event-margin: 0 1px !default;
$date-picker-event-border-radius: 50% !default;
$date-picker-event-month-bottom: 6px !default;
$date-picker-event-date-bottom: 8px !default;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
export { VDatePicker } from "./VDatePicker.mjs";
export { VDatePickerControls } from "./VDatePickerControls.mjs";
export { VDatePickerHeader } from "./VDatePickerHeader.mjs";
export { VDatePickerMonth } from "./VDatePickerMonth.mjs";
export { VDatePickerMonths } from "./VDatePickerMonths.mjs";
export { VDatePickerYears } from "./VDatePickerYears.mjs";
//# sourceMappingURL=index.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.mjs","names":["VDatePicker","VDatePickerControls","VDatePickerHeader","VDatePickerMonth","VDatePickerMonths","VDatePickerYears"],"sources":["../../../src/components/VDatePicker/index.ts"],"sourcesContent":["export { VDatePicker } from './VDatePicker'\nexport { VDatePickerControls } from './VDatePickerControls'\nexport { VDatePickerHeader } from './VDatePickerHeader'\nexport { VDatePickerMonth } from './VDatePickerMonth'\nexport { VDatePickerMonths } from './VDatePickerMonths'\nexport { VDatePickerYears } from './VDatePickerYears'\n"],"mappings":"SAASA,WAAW;AAAA,SACXC,mBAAmB;AAAA,SACnBC,iBAAiB;AAAA,SACjBC,gBAAgB;AAAA,SAChBC,iBAAiB;AAAA,SACjBC,gBAAgB"}

View File

@ -0,0 +1,21 @@
// @ts-nocheck
/* eslint-disable */
import pad from "./pad.mjs";
function createNativeLocaleFormatter(locale, options) {
let substrOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
start: 0,
length: 0
};
const makeIsoString = dateString => {
const [year, month, date] = dateString.trim().split(' ')[0].split('-');
return [pad(year, 4), pad(month || 1), pad(date || 1)].join('-');
};
try {
const intlFormatter = new Intl.DateTimeFormat(locale || undefined, options);
return dateString => intlFormatter.format(new Date(`${makeIsoString(dateString)}T00:00:00+00:00`));
} catch (e) {
return substrOptions.start || substrOptions.length ? dateString => makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length) : undefined;
}
}
export default createNativeLocaleFormatter;
//# sourceMappingURL=createNativeLocaleFormatter.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"createNativeLocaleFormatter.mjs","names":["pad","createNativeLocaleFormatter","locale","options","substrOptions","arguments","length","undefined","start","makeIsoString","dateString","year","month","date","trim","split","join","intlFormatter","Intl","DateTimeFormat","format","Date","e","substr"],"sources":["../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport pad from './pad'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface SubstrOptions {\n start?: number\n length: number\n}\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions\n): DatePickerFormatter | undefined\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions\n): DatePickerFormatter\n\nfunction createNativeLocaleFormatter (\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions = { start: 0, length: 0 }\n): DatePickerFormatter | undefined {\n const makeIsoString = (dateString: string) => {\n const [year, month, date] = dateString.trim().split(' ')[0].split('-')\n return [pad(year, 4), pad(month || 1), pad(date || 1)].join('-')\n }\n\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, options)\n return (dateString: string) => intlFormatter.format(new Date(`${makeIsoString(dateString)}T00:00:00+00:00`))\n } catch (e) {\n return (substrOptions.start || substrOptions.length)\n ? (dateString: string) => makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length)\n : undefined\n }\n}\n\nexport default createNativeLocaleFormatter\n"],"mappings":"AAAA;AACA;AAAA,OAEOA,GAAG;AAmBV,SAASC,2BAA2BA,CAClCC,MAA0B,EAC1BC,OAAmC,EAEF;EAAA,IADjCC,aAA4B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;IAAEG,KAAK,EAAE,CAAC;IAAEF,MAAM,EAAE;EAAE,CAAC;EAEtD,MAAMG,aAAa,GAAIC,UAAkB,IAAK;IAC5C,MAAM,CAACC,IAAI,EAAEC,KAAK,EAAEC,IAAI,CAAC,GAAGH,UAAU,CAACI,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC;IACtE,OAAO,CAACf,GAAG,CAACW,IAAI,EAAE,CAAC,CAAC,EAAEX,GAAG,CAACY,KAAK,IAAI,CAAC,CAAC,EAAEZ,GAAG,CAACa,IAAI,IAAI,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,GAAG,CAAC;EAClE,CAAC;EAED,IAAI;IACF,MAAMC,aAAa,GAAG,IAAIC,IAAI,CAACC,cAAc,CAACjB,MAAM,IAAIK,SAAS,EAAEJ,OAAO,CAAC;IAC3E,OAAQO,UAAkB,IAAKO,aAAa,CAACG,MAAM,CAAC,IAAIC,IAAI,CAAE,GAAEZ,aAAa,CAACC,UAAU,CAAE,iBAAgB,CAAC,CAAC;EAC9G,CAAC,CAAC,OAAOY,CAAC,EAAE;IACV,OAAQlB,aAAa,CAACI,KAAK,IAAIJ,aAAa,CAACE,MAAM,GAC9CI,UAAkB,IAAKD,aAAa,CAACC,UAAU,CAAC,CAACa,MAAM,CAACnB,aAAa,CAACI,KAAK,IAAI,CAAC,EAAEJ,aAAa,CAACE,MAAM,CAAC,GACxGC,SAAS;EACf;AACF;AAEA,eAAeN,2BAA2B"}

View File

@ -0,0 +1,22 @@
// @ts-nocheck
/* eslint-disable */
// import Vue from 'vue'
export function createItemTypeNativeListeners(instance, itemTypeSuffix, value) {
return Object.keys(instance.$listeners).reduce((on, eventName) => {
if (eventName.endsWith(itemTypeSuffix)) {
on[eventName.slice(0, -itemTypeSuffix.length)] = event => instance.$emit(eventName, value, event);
}
return on;
}, {});
}
export function createItemTypeListeners(instance, itemTypeSuffix) {
return Object.keys(instance.$listeners).reduce((on, eventName) => {
if (eventName.endsWith(itemTypeSuffix)) {
on[eventName] = instance.$listeners[eventName];
}
return on;
}, {});
}
//# sourceMappingURL=eventHelpers.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"eventHelpers.mjs","names":["createItemTypeNativeListeners","instance","itemTypeSuffix","value","Object","keys","$listeners","reduce","on","eventName","endsWith","slice","length","event","$emit","createItemTypeListeners"],"sources":["../../../../src/components/VDatePicker/util/eventHelpers.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// import Vue from 'vue'\n\nexport function createItemTypeNativeListeners (instance: /*Vue*/any, itemTypeSuffix: string, value: any) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName.slice(0, -itemTypeSuffix.length)] = (event: Event) => instance.$emit(eventName, value, event)\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n\nexport function createItemTypeListeners (instance: /*Vue*/any, itemTypeSuffix: string) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName] = instance.$listeners[eventName]\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n"],"mappings":"AAAA;AACA;;AAEA;;AAEA,OAAO,SAASA,6BAA6BA,CAAEC,QAAoB,EAAEC,cAAsB,EAAEC,KAAU,EAAE;EACvG,OAAOC,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAACK,UAAU,CAAC,CAACC,MAAM,CAAC,CAACC,EAAE,EAAEC,SAAS,KAAK;IAChE,IAAIA,SAAS,CAACC,QAAQ,CAACR,cAAc,CAAC,EAAE;MACtCM,EAAE,CAACC,SAAS,CAACE,KAAK,CAAC,CAAC,EAAE,CAACT,cAAc,CAACU,MAAM,CAAC,CAAC,GAAIC,KAAY,IAAKZ,QAAQ,CAACa,KAAK,CAACL,SAAS,EAAEN,KAAK,EAAEU,KAAK,CAAC;IAC5G;IAEA,OAAOL,EAAE;EACX,CAAC,EAAE,CAAC,CAA+B,CAAC;AACtC;AAEA,OAAO,SAASO,uBAAuBA,CAAEd,QAAoB,EAAEC,cAAsB,EAAE;EACrF,OAAOE,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAACK,UAAU,CAAC,CAACC,MAAM,CAAC,CAACC,EAAE,EAAEC,SAAS,KAAK;IAChE,IAAIA,SAAS,CAACC,QAAQ,CAACR,cAAc,CAAC,EAAE;MACtCM,EAAE,CAACC,SAAS,CAAC,GAAGR,QAAQ,CAACK,UAAU,CAACG,SAAS,CAAC;IAChD;IAEA,OAAOD,EAAE;EACX,CAAC,EAAE,CAAC,CAA+B,CAAC;AACtC"}

View File

@ -0,0 +1,9 @@
// @ts-nocheck
/* eslint-disable */
import { createItemTypeListeners, createItemTypeNativeListeners } from "./eventHelpers.mjs";
import createNativeLocaleFormatter from "./createNativeLocaleFormatter.mjs";
import monthChange from "./monthChange.mjs";
import sanitizeDateString from "./sanitizeDateString.mjs";
import pad from "./pad.mjs";
export { createItemTypeListeners, createItemTypeNativeListeners, createNativeLocaleFormatter, monthChange, sanitizeDateString, pad };
//# sourceMappingURL=index.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.mjs","names":["createItemTypeListeners","createItemTypeNativeListeners","createNativeLocaleFormatter","monthChange","sanitizeDateString","pad"],"sources":["../../../../src/components/VDatePicker/util/index.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport {\n createItemTypeListeners,\n createItemTypeNativeListeners,\n} from './eventHelpers'\nimport createNativeLocaleFormatter from './createNativeLocaleFormatter'\nimport monthChange from './monthChange'\nimport sanitizeDateString from './sanitizeDateString'\nimport pad from './pad'\n\nexport {\n createItemTypeListeners,\n createItemTypeNativeListeners,\n createNativeLocaleFormatter,\n monthChange,\n sanitizeDateString,\n pad,\n}\n"],"mappings":"AAAA;AACA;AAAA,SAGEA,uBAAuB,EACvBC,6BAA6B;AAAA,OAExBC,2BAA2B;AAAA,OAC3BC,WAAW;AAAA,OACXC,kBAAkB;AAAA,OAClBC,GAAG;AAEV,SACEL,uBAAuB,EACvBC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,WAAW,EACXC,kBAAkB,EAClBC,GAAG"}

View File

@ -0,0 +1,7 @@
// @ts-nocheck
/* eslint-disable */
export default function isDateAllowed(date, min, max, allowedFn) {
return (!allowedFn || allowedFn(date)) && (!min || date >= min.substr(0, 10)) && (!max || date <= max);
}
//# sourceMappingURL=isDateAllowed.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"isDateAllowed.mjs","names":["isDateAllowed","date","min","max","allowedFn","substr"],"sources":["../../../../src/components/VDatePicker/util/isDateAllowed.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport { DatePickerAllowedDatesFunction } from 'vuetify/types'\n\nexport default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) {\n return (!allowedFn || allowedFn(date)) &&\n (!min || date >= min.substr(0, 10)) &&\n (!max || date <= max)\n}\n"],"mappings":"AAAA;AACA;;AAIA,eAAe,SAASA,aAAaA,CAAEC,IAAY,EAAEC,GAAW,EAAEC,GAAW,EAAEC,SAAqD,EAAE;EACpI,OAAO,CAAC,CAACA,SAAS,IAAIA,SAAS,CAACH,IAAI,CAAC,MAClC,CAACC,GAAG,IAAID,IAAI,IAAIC,GAAG,CAACG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAClC,CAACF,GAAG,IAAIF,IAAI,IAAIE,GAAG,CAAC;AACzB"}

View File

@ -0,0 +1,18 @@
// @ts-nocheck
/* eslint-disable */
import pad from "./pad.mjs";
/**
* @param {String} value YYYY-MM format
* @param {Number} sign -1 or +1
*/
export default ((value, sign) => {
const [year, month] = value.split('-').map(Number);
if (month + sign === 0) {
return `${year - 1}-12`;
} else if (month + sign === 13) {
return `${year + 1}-01`;
} else {
return `${year}-${pad(month + sign)}`;
}
});
//# sourceMappingURL=monthChange.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"monthChange.mjs","names":["pad","value","sign","year","month","split","map","Number"],"sources":["../../../../src/components/VDatePicker/util/monthChange.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport pad from './pad'\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\nexport default (value: string, sign: number) => {\n const [year, month] = value.split('-').map(Number)\n\n if (month + sign === 0) {\n return `${year - 1}-12`\n } else if (month + sign === 13) {\n return `${year + 1}-01`\n } else {\n return `${year}-${pad(month + sign)}`\n }\n}\n"],"mappings":"AAAA;AACA;AAAA,OAEOA,GAAG;AAEV;AACA;AACA;AACA;AACA,gBAAe,CAACC,KAAa,EAAEC,IAAY,KAAK;EAC9C,MAAM,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGH,KAAK,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,MAAM,CAAC;EAElD,IAAIH,KAAK,GAAGF,IAAI,KAAK,CAAC,EAAE;IACtB,OAAQ,GAAEC,IAAI,GAAG,CAAE,KAAI;EACzB,CAAC,MAAM,IAAIC,KAAK,GAAGF,IAAI,KAAK,EAAE,EAAE;IAC9B,OAAQ,GAAEC,IAAI,GAAG,CAAE,KAAI;EACzB,CAAC,MAAM;IACL,OAAQ,GAAEA,IAAK,IAAGH,GAAG,CAACI,KAAK,GAAGF,IAAI,CAAE,EAAC;EACvC;AACF,CAAC"}

View File

@ -0,0 +1,21 @@
// @ts-nocheck
/* eslint-disable */
const padStart = (string, targetLength, padString) => {
targetLength = targetLength >> 0;
string = String(string);
padString = String(padString);
if (string.length > targetLength) {
return String(string);
}
targetLength = targetLength - string.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength / padString.length);
}
return padString.slice(0, targetLength) + String(string);
};
export default (function (n) {
let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
return padStart(n, length, '0');
});
//# sourceMappingURL=pad.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"pad.mjs","names":["padStart","string","targetLength","padString","String","length","repeat","slice","n","arguments","undefined"],"sources":["../../../../src/components/VDatePicker/util/pad.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nconst padStart = (string: number | string, targetLength: number, padString: string) => {\n targetLength = targetLength >> 0\n string = String(string)\n padString = String(padString)\n if (string.length > targetLength) {\n return String(string)\n }\n\n targetLength = targetLength - string.length\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length)\n }\n return padString.slice(0, targetLength) + String(string)\n}\n\nexport default (n: string | number, length = 2) => padStart(n, length, '0')\n"],"mappings":"AAAA;AACA;;AAEA,MAAMA,QAAQ,GAAGA,CAACC,MAAuB,EAAEC,YAAoB,EAAEC,SAAiB,KAAK;EACrFD,YAAY,GAAGA,YAAY,IAAI,CAAC;EAChCD,MAAM,GAAGG,MAAM,CAACH,MAAM,CAAC;EACvBE,SAAS,GAAGC,MAAM,CAACD,SAAS,CAAC;EAC7B,IAAIF,MAAM,CAACI,MAAM,GAAGH,YAAY,EAAE;IAChC,OAAOE,MAAM,CAACH,MAAM,CAAC;EACvB;EAEAC,YAAY,GAAGA,YAAY,GAAGD,MAAM,CAACI,MAAM;EAC3C,IAAIH,YAAY,GAAGC,SAAS,CAACE,MAAM,EAAE;IACnCF,SAAS,IAAIA,SAAS,CAACG,MAAM,CAACJ,YAAY,GAAGC,SAAS,CAACE,MAAM,CAAC;EAChE;EACA,OAAOF,SAAS,CAACI,KAAK,CAAC,CAAC,EAAEL,YAAY,CAAC,GAAGE,MAAM,CAACH,MAAM,CAAC;AAC1D,CAAC;AAED,gBAAe,UAACO,CAAkB;EAAA,IAAEH,MAAM,GAAAI,SAAA,CAAAJ,MAAA,QAAAI,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC;EAAA,OAAKT,QAAQ,CAACQ,CAAC,EAAEH,MAAM,EAAE,GAAG,CAAC;AAAA"}

View File

@ -0,0 +1,12 @@
// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',
// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'
import pad from "./pad.mjs";
export default ((dateString, type) => {
const [year, month = 1, date = 1] = dateString.split('-');
return `${year}-${pad(month)}-${pad(date)}`.substr(0, {
date: 10,
month: 7,
year: 4
}[type]);
});
//# sourceMappingURL=sanitizeDateString.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sanitizeDateString.mjs","names":["pad","dateString","type","year","month","date","split","substr"],"sources":["../../../../src/components/VDatePicker/util/sanitizeDateString.ts"],"sourcesContent":["// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nimport pad from './pad'\n\nexport default (dateString: string, type: 'date' | 'month' | 'year'): string => {\n const [year, month = 1, date = 1] = dateString.split('-')\n return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type])\n}\n"],"mappings":"AAAA;AACA;AAAA,OACOA,GAAG;AAEV,gBAAe,CAACC,UAAkB,EAAEC,IAA+B,KAAa;EAC9E,MAAM,CAACC,IAAI,EAAEC,KAAK,GAAG,CAAC,EAAEC,IAAI,GAAG,CAAC,CAAC,GAAGJ,UAAU,CAACK,KAAK,CAAC,GAAG,CAAC;EACzD,OAAQ,GAAEH,IAAK,IAAGH,GAAG,CAACI,KAAK,CAAE,IAAGJ,GAAG,CAACK,IAAI,CAAE,EAAC,CAACE,MAAM,CAAC,CAAC,EAAE;IAAEF,IAAI,EAAE,EAAE;IAAED,KAAK,EAAE,CAAC;IAAED,IAAI,EAAE;EAAE,CAAC,CAACD,IAAI,CAAC,CAAC;AAC9F,CAAC"}