vuetify
Version:
Vue Material Component Framework
1 lines • 8.66 kB
Source Map (JSON)
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","ref","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","onClick","value","index","findIndex","selection","isSameDay","splice","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","i","slotProps","isAdjacent","isHidden","isSelected","isWeekEnd","isWeekStart","isDisabled","isoDate","undefined","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 { ref } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\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,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const {\n daysInMonth,\n model,\n weekNumbers,\n } = useCalendar(props as any) // TODO: fix typing\n const adapter = useDate()\n\n function onClick (value: unknown) {\n if (props.multiple) {\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 } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\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 <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().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 onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\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\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}