import { reactive, ref, computed } from 'vue'; import { useI18n } from 'vue-i18n'; import { defineStore } from 'pinia'; export const useWeekdayStore = defineStore('weekdayStore', () => { const weekdays = [ { code: 'sun', name: 'Sunday' }, { code: 'mon', name: 'Monday' }, { code: 'tue', name: 'Tuesday' }, { code: 'wed', name: 'Wednesday' }, { code: 'thu', name: 'Thursday' }, { code: 'fri', name: 'Friday' }, { code: 'sat', name: 'Saturday' }, ]; const localeOrder = { es: ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], en: ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'], }; const { t } = useI18n(); const weekdaysMap = reactive({}); const localeWeekdays = ref([]); const initStore = () => { getWeekdaysMap(); }; const getWeekdaysMap = () => { if (Object.keys(weekdaysMap).length > 0) return weekdaysMap; weekdays.forEach((day, i) => { const obj = { ...day, index: i, char: day.name.substr(0, 1), abr: day.name.substr(0, 3), }; weekdaysMap[day.code] = obj; }); }; const getLocales = computed(() => { // El día de mañana esto permitirá ordenar los weekdays en base a el locale si se lo desea reemplazando localeOrder.es por localeOrder[locale] const locales = []; for (let code of localeOrder.es) { const obj = { ...weekdaysMap[code], locale: t(`weekdays.${weekdaysMap[code].code}`), localeChar: t(`weekdays.${weekdaysMap[code].code}`).substr(0, 1), localeAbr: t(`weekdays.${weekdaysMap[code].code}`).substr(0, 3), }; locales.push(obj); } return locales; }); return { initStore, weekdaysMap, localeWeekdays, getLocales, }; });