| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Module-scoped reactive ref for the panel's "Calendar Type" setting.
- // Loaded from /panel/setting/defaultSettings on first use, so any
- // component (modals, inbound forms, future pages) can read the same
- // value without prop-drilling and without re-fetching.
- //
- // useInbounds (which already reads defaultSettings for its own state)
- // calls setDatepicker() after its fetch so we don't issue a second
- // HTTP round-trip on the inbounds page.
- import { readonly, ref } from 'vue';
- import { HttpUtil } from '@/utils';
- const datepicker = ref('gregorian');
- let fetched = false;
- let pending = null;
- async function loadOnce() {
- if (fetched) return;
- if (pending) {
- await pending;
- return;
- }
- pending = (async () => {
- try {
- const msg = await HttpUtil.post('/panel/setting/defaultSettings');
- if (msg?.success) {
- datepicker.value = msg.obj?.datepicker || 'gregorian';
- }
- } finally {
- fetched = true;
- pending = null;
- }
- })();
- await pending;
- }
- export function setDatepicker(value) {
- fetched = true;
- datepicker.value = value || 'gregorian';
- }
- export function useDatepicker() {
- loadOnce();
- return { datepicker: readonly(datepicker) };
- }
|