main
ts 56 lines 1.28 KB
Raw
1 import { acceptHMRUpdate, defineStore } from "pinia"
2
3 export const useSettingsStore = defineStore("settings", {
4 state: () => ({
5 settings: {
6 dateFormat: "MM/DD/YYYY",
7 hours24: true
8 },
9 dateFormats: ["MM/DD/YYYY", "DD/MM/YYYY"]
10 }),
11 actions: {
12 setDateFormat(format: string) {
13 this.settings.dateFormat = format
14 },
15 setHours24(hours24: boolean) {
16 this.settings.hours24 = hours24
17 }
18 },
19 getters: {
20 dateFormatsAvailable(state) {
21 return state.dateFormats
22 },
23 hours24(state) {
24 return state.settings.hours24
25 },
26 rawDateFormat(state) {
27 return state.settings.dateFormat
28 },
29 dateFormat(state) {
30 const separator = " "
31 const date = state.settings.dateFormat
32 const time = state.settings.hours24 ? "HH:mm" : "h:mm a"
33 const timesec = state.settings.hours24 ? "HH:mm:ss" : "h:mm:ss a"
34 const timesecmill = "HH:mm:ss.SSS"
35
36 return {
37 date: `${date}`,
38 datetime: `${date}${separator}${time}`,
39 datetimesec: `${date}${separator}${timesec}`,
40 datetimesecmill: `${date}${separator}${timesecmill}`,
41 /** "HH:mm" or "h:mm a" */
42 time,
43 /** "HH:mm:ss" or "h:mm:ss a" */
44 timesec,
45 timesecmill
46 }
47 }
48 },
49 persist: {
50 pick: ["settings"]
51 }
52 })
53
54 if (import.meta.hot) {
55 import.meta.hot.accept(acceptHMRUpdate(useSettingsStore, import.meta.hot))
56 }