UNPKG

vuestic-ui

Version:
1 lines 3.94 kB
{"version":3,"file":"view.mjs","sources":["../../../../../../src/components/va-date-picker/hooks/view.ts"],"sourcesContent":["import { computed, ref } from 'vue'\n\nimport { DatePickerView, DatePickerViewProp, DatePickerModelValue } from '../types'\nimport { isDate } from '../../../utils/is-date'\n\nconst JANUARY_MONTH_INDEX = 0\nconst DECEMBER_MONTH_INDEX = 11\n\nconst addMonth = (view: DatePickerView) => {\n if (view.month === DECEMBER_MONTH_INDEX) {\n return { ...view, year: view.year + 1, month: JANUARY_MONTH_INDEX }\n } else {\n return { ...view, month: view.month + 1 }\n }\n}\n\nconst subMonth = (view: DatePickerView) => {\n if (view.month === JANUARY_MONTH_INDEX) {\n return { ...view, year: view.year - 1, month: DECEMBER_MONTH_INDEX }\n } else {\n return { ...view, month: view.month - 1 }\n }\n}\n\nconst getDefaultDate = (modelValue: DatePickerModelValue): Date => {\n if (isDate(modelValue)) { return modelValue }\n if (isDate((modelValue as any)?.start)) { return (modelValue as any).start }\n if (Array.isArray(modelValue) && isDate(modelValue[0])) { return modelValue[0] }\n\n return new Date()\n}\n\nexport const useView = (\n props: { [key: string]: any, 'view'?: DatePickerViewProp },\n emit: (event: any | 'update:view', newValue: DatePickerViewProp) => any,\n defaultOverride?: DatePickerViewProp,\n) => {\n const defaultDate = getDefaultDate(props.modelValue)\n const defaultView: DatePickerView = {\n type: 'day',\n year: defaultDate.getFullYear(),\n month: defaultDate.getMonth(),\n ...defaultOverride,\n }\n\n const statefulView = ref(defaultView)\n\n const syncView = computed<DatePickerView>({\n get () {\n // Merge default view and user view prop\n return { ...statefulView.value, ...props.view }\n },\n set (view: DatePickerView) {\n statefulView.value = view\n\n emit('update:view', view)\n },\n })\n\n const next = () => {\n if (syncView.value.type === 'day') {\n syncView.value = addMonth(syncView.value)\n } else if (syncView.value.type === 'month') {\n syncView.value = { ...syncView.value, year: syncView.value.year + 1 }\n }\n }\n\n const prev = () => {\n if (syncView.value.type === 'day') {\n syncView.value = subMonth(syncView.value)\n } else if (syncView.value.type === 'month') {\n syncView.value = { ...syncView.value, year: syncView.value.year - 1 }\n }\n }\n\n return {\n syncView,\n next,\n prev,\n }\n}\n"],"names":[],"mappings":";;AAKA,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAE7B,MAAM,WAAW,CAAC,SAAyB;AACrC,MAAA,KAAK,UAAU,sBAAsB;AAChC,WAAA,EAAE,GAAG,MAAM,MAAM,KAAK,OAAO,GAAG,OAAO;EAAoB,OAC7D;AACL,WAAO,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ;EACxC;AACF;AAEA,MAAM,WAAW,CAAC,SAAyB;AACrC,MAAA,KAAK,UAAU,qBAAqB;AAC/B,WAAA,EAAE,GAAG,MAAM,MAAM,KAAK,OAAO,GAAG,OAAO;EAAqB,OAC9D;AACL,WAAO,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ;EACxC;AACF;AAEA,MAAM,iBAAiB,CAAC,eAA2C;AAC7D,MAAA,OAAO,UAAU,GAAG;AAAS,WAAA;AAAA,EAAW;AACxC,MAAA,OAAQ,yCAAoB,KAAK,GAAG;AAAE,WAAQ,WAAmB;AAAA,EAAM;AACvE,MAAA,MAAM,QAAQ,UAAU,KAAK,OAAO,WAAW,CAAC,CAAC,GAAG;AAAE,WAAO,WAAW,CAAC;AAAA,EAAE;AAE/E,6BAAW,KAAK;AAClB;AAEO,MAAM,UAAU,CACrB,OACA,MACA,oBACG;AACG,QAAA,cAAc,eAAe,MAAM,UAAU;AACnD,QAAM,cAA8B;AAAA,IAClC,MAAM;AAAA,IACN,MAAM,YAAY,YAAY;AAAA,IAC9B,OAAO,YAAY,SAAS;AAAA,IAC5B,GAAG;AAAA,EAAA;AAGC,QAAA,eAAe,IAAI,WAAW;AAEpC,QAAM,WAAW,SAAyB;AAAA,IACxC,MAAO;AAEL,aAAO,EAAE,GAAG,aAAa,OAAO,GAAG,MAAM,KAAK;AAAA,IAChD;AAAA,IACA,IAAK,MAAsB;AACzB,mBAAa,QAAQ;AAErB,WAAK,eAAe,IAAI;AAAA,IAC1B;AAAA,EAAA,CACD;AAED,QAAM,OAAO,MAAM;AACb,QAAA,SAAS,MAAM,SAAS,OAAO;AACxB,eAAA,QAAQ,SAAS,SAAS,KAAK;AAAA,IAC/B,WAAA,SAAS,MAAM,SAAS,SAAS;AACjC,eAAA,QAAQ,EAAE,GAAG,SAAS,OAAO,MAAM,SAAS,MAAM,OAAO;IACpE;AAAA,EAAA;AAGF,QAAM,OAAO,MAAM;AACb,QAAA,SAAS,MAAM,SAAS,OAAO;AACxB,eAAA,QAAQ,SAAS,SAAS,KAAK;AAAA,IAC/B,WAAA,SAAS,MAAM,SAAS,SAAS;AACjC,eAAA,QAAQ,EAAE,GAAG,SAAS,OAAO,MAAM,SAAS,MAAM,OAAO;IACpE;AAAA,EAAA;AAGK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}