UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 7.83 kB
{"version":3,"file":"date.mjs","names":["useLocale","inject","watch","mergeDeep","propsFactory","VuetifyDateAdapter","DateAdapterSymbol","Symbol","for","createDate","options","adapter","locale","af","bg","ca","ckb","cs","de","el","en","et","fa","fi","hr","hu","he","id","it","ja","ko","lv","lt","nl","no","pl","pt","ro","ru","sk","sl","srCyrl","srLatn","sv","th","tr","az","uk","vi","zhHans","zhHant","makeDateProps","displayDate","type","Object","default","Date","hideAdjacentMonths","Boolean","modelValue","useDate","date","Error","instance","current","value","newLocale","toIso","toJsDate","getFullYear","getMonth","getDate","getMondayOfFirstWeekOfYear","year","getWeek","d1w1","tv","diffTime","Math","abs","getTime","diffDays","ceil","floor"],"sources":["../../../src/labs/date/date.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { inject, watch } from 'vue'\nimport { mergeDeep, propsFactory } from '@/util'\n\n// Adapters\nimport { VuetifyDateAdapter } from './adapters/vuetify'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { DateAdapter } from './DateAdapter'\n\nexport interface DateInstance<T> extends DateAdapter<T> {\n locale?: any\n}\n\nexport type InternalDateOptions<T = any> = {\n adapter: (new (options: { locale: any }) => DateInstance<T>) | DateInstance<T>\n formats?: Record<string, string>\n locale: Record<string, any>\n}\n\nexport type DateOptions<T = any> = Partial<InternalDateOptions<T>>\n\nexport const DateAdapterSymbol: InjectionKey<InternalDateOptions> = Symbol.for('vuetify:date-adapter')\n\nexport interface DateProps {\n displayDate: any\n hideAdjacentMonths: boolean\n modelValue: readonly any[]\n}\n\nexport function createDate (options?: DateOptions) {\n return mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: '',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'nn-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW',\n },\n }, options)\n}\n\n// TODO: revisit this after it starts being implemented\nexport const makeDateProps = propsFactory({\n displayDate: {\n type: Object as PropType<Date>,\n default: new Date(),\n },\n hideAdjacentMonths: Boolean,\n modelValue: {\n type: null as unknown as PropType<readonly any[]>,\n default: () => [],\n },\n}, 'date')\n\nexport function useDate () {\n const date = inject(DateAdapterSymbol)\n const locale = useLocale()\n\n if (!date) throw new Error('[Vuetify] Could not find injected date')\n\n const instance = typeof date.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new date.adapter({ locale: date.locale?.[locale.current.value] ?? locale.current.value })\n : date.adapter\n\n watch(locale.current, value => {\n const newLocale = date.locale ? date.locale[value] : value\n instance.locale = newLocale ?? instance.locale\n })\n\n return instance\n}\n\nexport function toIso (adapter: DateAdapter<any>, value: any) {\n const date = adapter.toJsDate(value)\n return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n}\n\nfunction getMondayOfFirstWeekOfYear (year: number) {\n return new Date(year, 0, 1)\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek (adapter: DateAdapter<any>, value: any) {\n const date = adapter.toJsDate(value)\n let year = date.getFullYear()\n let d1w1 = getMondayOfFirstWeekOfYear(year)\n\n if (date < d1w1) {\n year = year - 1\n d1w1 = getMondayOfFirstWeekOfYear(year)\n } else {\n const tv = getMondayOfFirstWeekOfYear(year + 1)\n if (date >= tv) {\n year = year + 1\n d1w1 = tv\n }\n }\n\n const diffTime = Math.abs(date.getTime() - d1w1.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n\n return Math.floor(diffDays / 7) + 1\n}\n"],"mappings":"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"}