1 line
12 KiB
Plaintext
1 line
12 KiB
Plaintext
{"version":3,"file":"calendar.mjs","names":["getWeek","useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","Boolean","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","type","default","useCalendar","props","adapter","model","v","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weeksInMonth","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","day","push","addDays","genDays","today","filter","includes","toJsDate","getDay","map","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isWeekStart","isWeekEnd","isToday","isHidden","isSelected","some","localized","daysInWeek","startOfWeek","weekNumbers","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: Boolean,\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array<number>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weeksInMonth = computed<Date[][]>((): Date[][] => {\n const weeks = adapter.getWeekArray(month.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // But only do it if we're not hiding adjacent months?\n const daysInMonth = 6 * 7\n if (days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks as Date[][]\n })\n\n function genDays (days: Date[], today: Date) {\n return days.filter(date => {\n return props.weekdays.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(model.value)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const days = week as Date[]\n\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekNumbers,\n }\n}\n"],"mappings":"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"} |