calendar.mjs.map 13 KB

1
  1. {"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","weeksInMonth","firstDayOfWeek","useCalendar","props","adapter","model","v","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","map","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","toJsDate","getDay","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 weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: 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 weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: [Number, String],\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 weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0)\n\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && 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\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return weekDays.value.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(displayValue.value, props.firstDayOfWeek)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, 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 weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}