UNPKG

vuestic-ui

Version:
73 lines (72 loc) 2.01 kB
import { ref, computed } from "vue"; import { i as isDate } from "../../../utils/is-date.mjs"; const JANUARY_MONTH_INDEX = 0; const DECEMBER_MONTH_INDEX = 11; const addMonth = (view) => { if (view.month === DECEMBER_MONTH_INDEX) { return { ...view, year: view.year + 1, month: JANUARY_MONTH_INDEX }; } else { return { ...view, month: view.month + 1 }; } }; const subMonth = (view) => { if (view.month === JANUARY_MONTH_INDEX) { return { ...view, year: view.year - 1, month: DECEMBER_MONTH_INDEX }; } else { return { ...view, month: view.month - 1 }; } }; const getDefaultDate = (modelValue) => { if (isDate(modelValue)) { return modelValue; } if (isDate(modelValue == null ? void 0 : modelValue.start)) { return modelValue.start; } if (Array.isArray(modelValue) && isDate(modelValue[0])) { return modelValue[0]; } return /* @__PURE__ */ new Date(); }; const useView = (props, emit, defaultOverride) => { const defaultDate = getDefaultDate(props.modelValue); const defaultView = { type: "day", year: defaultDate.getFullYear(), month: defaultDate.getMonth(), ...defaultOverride }; const statefulView = ref(defaultView); const syncView = computed({ get() { return { ...statefulView.value, ...props.view }; }, set(view) { statefulView.value = view; emit("update:view", view); } }); const next = () => { if (syncView.value.type === "day") { syncView.value = addMonth(syncView.value); } else if (syncView.value.type === "month") { syncView.value = { ...syncView.value, year: syncView.value.year + 1 }; } }; const prev = () => { if (syncView.value.type === "day") { syncView.value = subMonth(syncView.value); } else if (syncView.value.type === "month") { syncView.value = { ...syncView.value, year: syncView.value.year - 1 }; } }; return { syncView, next, prev }; }; export { useView as u }; //# sourceMappingURL=view.mjs.map