{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } 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,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent()({\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\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\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 function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\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 = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value)\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\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 return () => (\n
\n { props.showWeek && (\n
\n { !props.hideWeekdays && (\n
 
\n )}\n { weekNumbers.value.map(week => (\n { week }
\n ))}\n
\n )}\n\n \n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n { weekDay }\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\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 \n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n \n )}\n \n )}\n \n )\n })}\n \n \n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType\n"],"mappings":"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"}