@antelopejs/dms 0.7.11 → 0.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/implementations/dms/page.js +14 -1
- package/dist/implementations/dms/page.js.map +1 -1
- package/dist/test/unit/implementations/dms/module-address-page.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms/module-address-page.test.js +107 -0
- package/dist/test/unit/implementations/dms/module-address-page.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js +30 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/block-parity-options.test.js +7 -0
- package/dist/test/unit/interfaces/dms-base/block-parity-options.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js +10 -0
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js.map +1 -1
- package/frontend-vue/layers/dms-core/app/build/composables/page/usePageRecordLabel.ts +7 -29
- package/frontend-vue/layers/dms-core/app/composables/page/usePageRecordLabel.ts +53 -0
- package/frontend-vue/layers/dms-core/app/composables/user/useRegionalFormat.ts +73 -20
- package/frontend-vue/layers/dms-core/app/utils/formatter.ts +37 -1
- package/frontend-vue/layers/dms-core/app/utils/regional.ts +20 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +23 -2
- package/frontend-vue/layers/dms-layout/app/middleware/module-routing.global.ts +34 -39
- package/frontend-vue/layers/dms-layout/app/utils/breadcrumb.ts +6 -3
- package/frontend-vue/layers/dms-layout/app/utils/moduleLanding.ts +56 -0
- package/frontend-vue/layers/dms-ui/app/build/components/table-view/LiveHoldBanner.vue +69 -17
- package/frontend-vue/layers/dms-ui/app/build/composables/chart/apexTheme.ts +1 -1
- package/frontend-vue/layers/dms-ui/app/build/composables/form/enclosingForm.ts +38 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/global/searchShortcuts.ts +7 -16
- package/frontend-vue/layers/dms-ui/app/build/composables/live/liveNotes.ts +54 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/page/blockAnchors.ts +50 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableLiveHold.ts +78 -35
- package/frontend-vue/layers/dms-ui/app/build/utils/numberAdjustment.ts +60 -0
- package/frontend-vue/layers/dms-ui/app/components/RecursiveComponent.vue +11 -0
- package/frontend-vue/layers/dms-ui/app/components/activity/ActivityItem.vue +17 -9
- package/frontend-vue/layers/dms-ui/app/components/activity-feed/ActivityFeed.vue +58 -7
- package/frontend-vue/layers/dms-ui/app/components/blocks/CodeBlock.vue +5 -1
- package/frontend-vue/layers/dms-ui/app/components/blocks/EmptyStateBlock.vue +2 -1
- package/frontend-vue/layers/dms-ui/app/components/blocks/LiveToggleBlock.vue +7 -20
- package/frontend-vue/layers/dms-ui/app/components/chart/Chart.vue +3 -0
- package/frontend-vue/layers/dms-ui/app/components/chart/ChartCard.vue +7 -1
- package/frontend-vue/layers/dms-ui/app/components/code-snippet/CodeSnippet.vue +51 -13
- package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +38 -1
- package/frontend-vue/layers/dms-ui/app/components/form/components/InputNumber.vue +58 -3
- package/frontend-vue/layers/dms-ui/app/components/tab/Tab.vue +19 -1
- package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +9 -1
- package/frontend-vue/layers/dms-ui/app/components/top-list/TopListCard.vue +2 -0
- package/frontend-vue/layers/dms-ui/app/composables/chart/types.ts +3 -0
- package/frontend-vue/layers/dms-ui/app/composables/chart/useApexChart.types.ts +2 -0
- package/frontend-vue/layers/dms-ui/app/composables/form/types/validation.ts +10 -0
- package/frontend-vue/layers/dms-ui/app/composables/form/useEnclosingForm.ts +61 -0
- package/frontend-vue/layers/dms-ui/app/composables/global/searchShortcuts.ts +24 -0
- package/frontend-vue/layers/dms-ui/app/composables/live/usePageLive.ts +3 -2
- package/frontend-vue/layers/dms-ui/app/composables/live/usePageLiveRefresh.ts +103 -0
- package/frontend-vue/layers/dms-ui/app/composables/tab/types/composable.ts +1 -0
- package/frontend-vue/layers/dms-ui/app/composables/tab/types/item.ts +8 -1
- package/frontend-vue/layers/dms-ui/app/composables/tab/useTab.ts +35 -23
- package/frontend-vue/layers/dms-ui/app/types/input-number.ts +18 -0
- package/frontend-vue/layers/dms-ui/app/types/live.ts +6 -0
- package/frontend-vue/layers/dms-ui/app/utils/scrollToBlock.ts +23 -0
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +9 -2
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +9 -2
- package/frontend-vue/tests/activity-feed-fold.test.ts +119 -0
- package/frontend-vue/tests/block-fetch-options-forwarding.test.ts +5 -0
- package/frontend-vue/tests/breadcrumb-target.test.ts +10 -0
- package/frontend-vue/tests/chart-legend.test.ts +133 -0
- package/frontend-vue/tests/code-block.test.ts +28 -0
- package/frontend-vue/tests/field-suffix-count.test.ts +1 -0
- package/frontend-vue/tests/form-enclosing-form.test.ts +141 -0
- package/frontend-vue/tests/header-actions.test.ts +1 -1
- package/frontend-vue/tests/input-number-adjust.test.ts +176 -0
- package/frontend-vue/tests/live-hold-banner.test.ts +66 -8
- package/frontend-vue/tests/module-routing.test.ts +158 -0
- package/frontend-vue/tests/page-live-refresh.test.ts +169 -0
- package/frontend-vue/tests/page-record-label.test.ts +53 -0
- package/frontend-vue/tests/regional-format.test.ts +69 -2
- package/frontend-vue/tests/scroll-to-block.test.ts +171 -0
- package/frontend-vue/tests/settings-search-shortcuts.test.ts +17 -0
- package/frontend-vue/tests/tab-url-slot.test.ts +150 -0
- package/frontend-vue/tests/table-live-hold.test.ts +90 -0
- package/package.json +2 -2
- package/skills/dms/SKILL.md +28 -4
- package/skills/dms-module/SKILL.md +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
import { computed } from "vue";
|
|
2
|
-
|
|
3
|
-
interface PageRecordLabel {
|
|
4
|
-
path: string;
|
|
5
|
-
label: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const STATE_KEY = "dms-page-record-label";
|
|
9
|
-
|
|
10
1
|
/**
|
|
11
|
-
* The
|
|
12
|
-
*
|
|
13
|
-
*
|
|
2
|
+
* The former path of `usePageRecordLabel`, kept for the modules that import
|
|
3
|
+
* it from here. Import it from `#dms-core/app/composables/page/usePageRecordLabel`,
|
|
4
|
+
* or call the auto-imported `usePageRecordLabel()`.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
* @deprecated Use `#dms-core/app/composables/page/usePageRecordLabel`.
|
|
14
8
|
*/
|
|
15
|
-
export
|
|
16
|
-
const state = useDmsState<PageRecordLabel | null>(STATE_KEY, () => null);
|
|
17
|
-
const route = useDmsRoute();
|
|
18
|
-
|
|
19
|
-
const label = computed(() =>
|
|
20
|
-
state.value && state.value.path === route.path
|
|
21
|
-
? state.value.label
|
|
22
|
-
: undefined,
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
/** Names the row of the page at `path`; no label clears it. */
|
|
26
|
-
const setLabel = (path: string, value: string | undefined) => {
|
|
27
|
-
state.value = value ? { path, label: value } : null;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
return { label, setLabel };
|
|
31
|
-
}
|
|
9
|
+
export { usePageRecordLabel } from "../../../composables/page/usePageRecordLabel";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { computed, type ComputedRef } from "vue";
|
|
2
|
+
|
|
3
|
+
interface StoredRecordLabel {
|
|
4
|
+
path: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const STATE_KEY = "dms-page-record-label";
|
|
9
|
+
|
|
10
|
+
/** The label of the record a page is about (see {@link usePageRecordLabel}). */
|
|
11
|
+
export interface PageRecordLabel {
|
|
12
|
+
/** The label of the page on screen, `undefined` when none was set for it. */
|
|
13
|
+
label: ComputedRef<string | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Names the record of the page at `path` (the current one is
|
|
16
|
+
* `useDmsRoute().path`); `undefined` or `""` clears it.
|
|
17
|
+
*/
|
|
18
|
+
setLabel: (path: string, value: string | undefined) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The label of the record a page is about, e.g. the task an edit page
|
|
23
|
+
* changes: the page header ends its breadcrumb with it, after the page's own
|
|
24
|
+
* name. A `Form` with `labelKey` sets it once it loaded its record; a module's
|
|
25
|
+
* own component on a record page sets it the same way, and may read it.
|
|
26
|
+
*
|
|
27
|
+
* The label is held with the path it was set for, so it never outlives its
|
|
28
|
+
* page: on another page `label` reads `undefined` until that page sets one.
|
|
29
|
+
* Shared state, so the server-rendered header shows it too when it is set
|
|
30
|
+
* during the render.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const route = useDmsRoute();
|
|
34
|
+
* const { setLabel } = usePageRecordLabel();
|
|
35
|
+
* watch(routeName, (name) => setLabel(route.path, name), { immediate: true });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function usePageRecordLabel(): PageRecordLabel {
|
|
39
|
+
const state = useDmsState<StoredRecordLabel | null>(STATE_KEY, () => null);
|
|
40
|
+
const route = useDmsRoute();
|
|
41
|
+
|
|
42
|
+
const label = computed(() =>
|
|
43
|
+
state.value && state.value.path === route.path
|
|
44
|
+
? state.value.label
|
|
45
|
+
: undefined,
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const setLabel = (path: string, value: string | undefined) => {
|
|
49
|
+
state.value = value ? { path, label: value } : null;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
return { label, setLabel };
|
|
53
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { computed } from "vue";
|
|
1
2
|
import {
|
|
2
3
|
formatDate,
|
|
3
4
|
formatDateTime,
|
|
@@ -9,11 +10,49 @@ import {
|
|
|
9
10
|
} from "../../utils/formatter";
|
|
10
11
|
import {
|
|
11
12
|
regionalDateTimeFormat,
|
|
13
|
+
regionalFormatLocale,
|
|
12
14
|
type RegionalOptionsSettings,
|
|
13
15
|
} from "../../utils/regional";
|
|
14
16
|
|
|
15
17
|
type DateInput = Date | string | number | undefined | null;
|
|
16
18
|
|
|
19
|
+
/**
|
|
20
|
+
* A number formatter of `useRegionalFormat`: a number is written as a
|
|
21
|
+
* `string`; a value that is not one is returned as is.
|
|
22
|
+
*/
|
|
23
|
+
export interface RegionalNumberFormatter {
|
|
24
|
+
(value: number, options?: Intl.NumberFormatOptions): string;
|
|
25
|
+
(value: unknown, options?: Intl.NumberFormatOptions): unknown;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Which locale the formatters write in: `"interface"`, the interface
|
|
30
|
+
* language as it is (`en`, as the DMS's own blocks write their values), or
|
|
31
|
+
* `"format"`, the locale of the DMS's texts (`formatLocale`: `en` is
|
|
32
|
+
* `en-GB`).
|
|
33
|
+
*/
|
|
34
|
+
export type RegionalFormatLocale = "interface" | "format";
|
|
35
|
+
|
|
36
|
+
type NumberFormat = (
|
|
37
|
+
value: unknown,
|
|
38
|
+
locale: string,
|
|
39
|
+
options?: Intl.NumberFormatOptions,
|
|
40
|
+
) => unknown;
|
|
41
|
+
|
|
42
|
+
/** `format` bound to the locale `locale()` answers at each call. */
|
|
43
|
+
function numberFormatter(
|
|
44
|
+
format: NumberFormat,
|
|
45
|
+
locale: () => string,
|
|
46
|
+
): RegionalNumberFormatter {
|
|
47
|
+
return ((value: unknown, options?: Intl.NumberFormatOptions) =>
|
|
48
|
+
format(value, locale(), options)) as RegionalNumberFormatter;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface RegionalFormatOptions {
|
|
52
|
+
/** Defaults to `"interface"`. */
|
|
53
|
+
locale?: RegionalFormatLocale;
|
|
54
|
+
}
|
|
55
|
+
|
|
17
56
|
/**
|
|
18
57
|
* The shared formatters bound to the signed-in user's language and regional
|
|
19
58
|
* preferences (Settings › Language & region): the language of the interface,
|
|
@@ -22,13 +61,28 @@ type DateInput = Date | string | number | undefined | null;
|
|
|
22
61
|
*
|
|
23
62
|
* The plain formatters (`formatDate`, `formatNumber`…) fall back to `en-US`
|
|
24
63
|
* when no locale is passed; these never need one.
|
|
64
|
+
*
|
|
65
|
+
* @param options `{ locale: "format" }` writes every value in `formatLocale`
|
|
25
66
|
*/
|
|
26
|
-
export function useRegionalFormat() {
|
|
67
|
+
export function useRegionalFormat(options: RegionalFormatOptions = {}) {
|
|
27
68
|
const { t, locale } = useI18n();
|
|
69
|
+
const formatLocale = computed(() => regionalFormatLocale(locale.value));
|
|
70
|
+
const writeIn = () =>
|
|
71
|
+
options.locale === "format" ? formatLocale.value : locale.value;
|
|
72
|
+
|
|
73
|
+
const formatNumberIn = numberFormatter(formatNumber, writeIn);
|
|
74
|
+
const formatPriceIn = numberFormatter(formatPrice, writeIn);
|
|
75
|
+
const formatPercentageIn = numberFormatter(formatPercentage, writeIn);
|
|
28
76
|
|
|
29
77
|
return {
|
|
30
|
-
/** The language the
|
|
78
|
+
/** The language of the interface (`en`, `fr`). */
|
|
31
79
|
locale,
|
|
80
|
+
/**
|
|
81
|
+
* The locale the DMS's texts are written in for that language: `en` is
|
|
82
|
+
* `en-GB`, `fr` is `fr-FR`. For an `Intl` format of a module's own
|
|
83
|
+
* that reads in the convention of the texts around it.
|
|
84
|
+
*/
|
|
85
|
+
formatLocale,
|
|
32
86
|
/**
|
|
33
87
|
* `new Intl.DateTimeFormat` in the user's language with their
|
|
34
88
|
* preferences applied, for a format the helpers below do not cover.
|
|
@@ -37,29 +91,28 @@ export function useRegionalFormat() {
|
|
|
37
91
|
* @param settings `keepLocalZone` for calendar days computed in the browser
|
|
38
92
|
*/
|
|
39
93
|
dateTimeFormat: (
|
|
40
|
-
|
|
94
|
+
dateOptions: Intl.DateTimeFormatOptions,
|
|
41
95
|
settings?: RegionalOptionsSettings,
|
|
42
|
-
) => regionalDateTimeFormat(
|
|
43
|
-
/** A date ("1 October 2026"
|
|
44
|
-
formatDate: (date: unknown,
|
|
45
|
-
formatDate(date,
|
|
46
|
-
/** A time ("14:05:00"
|
|
47
|
-
formatTime: (date: DateInput,
|
|
48
|
-
formatTime(date,
|
|
96
|
+
) => regionalDateTimeFormat(writeIn(), dateOptions, settings),
|
|
97
|
+
/** A date ("1 October 2026" in `en-GB`), `null` when it is not one. */
|
|
98
|
+
formatDate: (date: unknown, dateOptions?: Intl.DateTimeFormatOptions) =>
|
|
99
|
+
formatDate(date, writeIn(), dateOptions),
|
|
100
|
+
/** A time ("14:05:00" in `en-GB`), `null` when it is not a date. */
|
|
101
|
+
formatTime: (date: DateInput, dateOptions?: Intl.DateTimeFormatOptions) =>
|
|
102
|
+
formatTime(date, writeIn(), dateOptions),
|
|
49
103
|
/** A date and its time, `null` when it is not a date. */
|
|
50
|
-
formatDateTime: (
|
|
51
|
-
|
|
104
|
+
formatDateTime: (
|
|
105
|
+
date: DateInput,
|
|
106
|
+
dateOptions?: Intl.DateTimeFormatOptions,
|
|
107
|
+
) => formatDateTime(date, writeIn(), dateOptions),
|
|
52
108
|
/** "just now", "5 minutes ago", "yesterday at 14:05", then the date. */
|
|
53
109
|
formatRelativeTime: (date: Date | string | number) =>
|
|
54
|
-
formatRelativeTime(date, t,
|
|
55
|
-
/** A number
|
|
56
|
-
formatNumber:
|
|
57
|
-
formatNumber(value, locale.value, options),
|
|
110
|
+
formatRelativeTime(date, t, writeIn()),
|
|
111
|
+
/** A number as a `string`; a value that is not one is returned as is. */
|
|
112
|
+
formatNumber: formatNumberIn,
|
|
58
113
|
/** An amount, in euros unless `options.currency` says otherwise. */
|
|
59
|
-
formatPrice:
|
|
60
|
-
formatPrice(value, locale.value, options),
|
|
114
|
+
formatPrice: formatPriceIn,
|
|
61
115
|
/** A ratio as a percentage (`0.25` → "25%"). */
|
|
62
|
-
formatPercentage:
|
|
63
|
-
formatPercentage(value, locale.value, options),
|
|
116
|
+
formatPercentage: formatPercentageIn,
|
|
64
117
|
};
|
|
65
118
|
}
|
|
@@ -229,6 +229,20 @@ export function formatDateTime(
|
|
|
229
229
|
});
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
+
/**
|
|
233
|
+
* A number written for `locale`; a value that is not a number is returned as
|
|
234
|
+
* is. Options Intl refuses (an unknown currency) write the bare number.
|
|
235
|
+
*/
|
|
236
|
+
export function formatNumber(
|
|
237
|
+
value: number,
|
|
238
|
+
locale?: string,
|
|
239
|
+
options?: Intl.NumberFormatOptions,
|
|
240
|
+
): string;
|
|
241
|
+
export function formatNumber(
|
|
242
|
+
value: unknown,
|
|
243
|
+
locale?: string,
|
|
244
|
+
options?: Intl.NumberFormatOptions,
|
|
245
|
+
): unknown;
|
|
232
246
|
export function formatNumber(
|
|
233
247
|
value: unknown,
|
|
234
248
|
locale: string = DEFAULT_LOCALE,
|
|
@@ -238,10 +252,21 @@ export function formatNumber(
|
|
|
238
252
|
try {
|
|
239
253
|
return new Intl.NumberFormat(locale, options).format(value);
|
|
240
254
|
} catch {
|
|
241
|
-
return value;
|
|
255
|
+
return String(value);
|
|
242
256
|
}
|
|
243
257
|
}
|
|
244
258
|
|
|
259
|
+
/** An amount, in euros unless `options.currency` says otherwise. */
|
|
260
|
+
export function formatPrice(
|
|
261
|
+
value: number,
|
|
262
|
+
locale?: string,
|
|
263
|
+
options?: Intl.NumberFormatOptions,
|
|
264
|
+
): string;
|
|
265
|
+
export function formatPrice(
|
|
266
|
+
value: unknown,
|
|
267
|
+
locale?: string,
|
|
268
|
+
options?: Intl.NumberFormatOptions,
|
|
269
|
+
): unknown;
|
|
245
270
|
export function formatPrice(
|
|
246
271
|
value: unknown,
|
|
247
272
|
locale: string = DEFAULT_LOCALE,
|
|
@@ -256,6 +281,17 @@ export function formatPrice(
|
|
|
256
281
|
});
|
|
257
282
|
}
|
|
258
283
|
|
|
284
|
+
/** A ratio as a percentage (`0.25` → "25%"). */
|
|
285
|
+
export function formatPercentage(
|
|
286
|
+
value: number,
|
|
287
|
+
locale?: string,
|
|
288
|
+
options?: Intl.NumberFormatOptions,
|
|
289
|
+
): string;
|
|
290
|
+
export function formatPercentage(
|
|
291
|
+
value: unknown,
|
|
292
|
+
locale?: string,
|
|
293
|
+
options?: Intl.NumberFormatOptions,
|
|
294
|
+
): unknown;
|
|
259
295
|
export function formatPercentage(
|
|
260
296
|
value: unknown,
|
|
261
297
|
locale: string = DEFAULT_LOCALE,
|
|
@@ -47,6 +47,16 @@ const DAY_MS = 24 * 60 * 60 * 1000;
|
|
|
47
47
|
const MONDAY = 1;
|
|
48
48
|
const DAYS_PER_WEEK = 7;
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* The region each language the DMS is translated into is written for: its
|
|
52
|
+
* texts are British English and French of France (`core-en-GB.json`,
|
|
53
|
+
* `core-fr-FR.json`), while the interface language is the bare tag.
|
|
54
|
+
*/
|
|
55
|
+
const DMS_TEXT_LOCALES: Record<string, string> = {
|
|
56
|
+
en: "en-GB",
|
|
57
|
+
fr: "fr-FR",
|
|
58
|
+
};
|
|
59
|
+
|
|
50
60
|
/** `timeStyle` as the fields it stands for, when a date format replaces `dateStyle`. */
|
|
51
61
|
const TIME_STYLE_FIELDS: Record<string, Intl.DateTimeFormatOptions> = {
|
|
52
62
|
full: { hour: "2-digit", minute: "2-digit", second: "2-digit" },
|
|
@@ -196,6 +206,16 @@ export function withRegionalOptions(
|
|
|
196
206
|
return result;
|
|
197
207
|
}
|
|
198
208
|
|
|
209
|
+
/**
|
|
210
|
+
* The locale the DMS's texts are written in for the interface language
|
|
211
|
+
* `locale`: a bare `en` is `en-GB` (24-hour clock, day before month), a bare
|
|
212
|
+
* `fr` is `fr-FR`. A tag naming its region, or a language the DMS is not
|
|
213
|
+
* translated into, is returned as is.
|
|
214
|
+
*/
|
|
215
|
+
export function regionalFormatLocale(locale: string): string {
|
|
216
|
+
return DMS_TEXT_LOCALES[locale.toLowerCase()] ?? locale;
|
|
217
|
+
}
|
|
218
|
+
|
|
199
219
|
/** `new Intl.DateTimeFormat` with the user's preferences applied. */
|
|
200
220
|
export function regionalDateTimeFormat(
|
|
201
221
|
locale: string,
|
|
@@ -4,7 +4,9 @@ import NotificationPopover from "../notification/NotificationPopover.vue";
|
|
|
4
4
|
import QuickActionsPopover from "./QuickActionsPopover.vue";
|
|
5
5
|
import { useSidebarState } from "./sidebarState";
|
|
6
6
|
import { useHeaderActionControls } from "../../composables/layout/useHeaderActionControls";
|
|
7
|
-
import { usePageRecordLabel } from "#dms-core/app/
|
|
7
|
+
import { usePageRecordLabel } from "#dms-core/app/composables/page/usePageRecordLabel";
|
|
8
|
+
import type { CategoryInfo } from "../../../types/page";
|
|
9
|
+
import { resolveModuleLandingSlug } from "../../../utils/moduleLanding";
|
|
8
10
|
|
|
9
11
|
const HOME_ICON = "i-ph-house-light";
|
|
10
12
|
/** Breadcrumb slot of the folded middle crumbs on small screens. */
|
|
@@ -96,6 +98,22 @@ const toggleCurrentPageFavorite = () => {
|
|
|
96
98
|
favoritePages.toggleFavorite(currentPageInfo.value);
|
|
97
99
|
};
|
|
98
100
|
|
|
101
|
+
/** The page a module's root crumb opens: the module's landing page. */
|
|
102
|
+
function moduleLandingSlug(
|
|
103
|
+
metadata: CategoryInfo,
|
|
104
|
+
): string | undefined {
|
|
105
|
+
if (!metadata.isModuleRoot || metadata.hasAccess === false) return undefined;
|
|
106
|
+
const module = siteLayout.modules.value?.[metadata.id];
|
|
107
|
+
if (!module) return undefined;
|
|
108
|
+
return (
|
|
109
|
+
resolveModuleLandingSlug(
|
|
110
|
+
siteLayout.siteLayoutTree.value,
|
|
111
|
+
metadata.id,
|
|
112
|
+
module.landingPage,
|
|
113
|
+
) ?? undefined
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
99
117
|
const breadcrumb = computed((): BreadcrumbItem[] => {
|
|
100
118
|
const base: BreadcrumbItem[] = [
|
|
101
119
|
{ icon: HOME_ICON, to: homepage || "/", "aria-label": t("header.home") },
|
|
@@ -122,7 +140,10 @@ const breadcrumb = computed((): BreadcrumbItem[] => {
|
|
|
122
140
|
|
|
123
141
|
const target = buildBreadcrumbTarget(
|
|
124
142
|
to,
|
|
125
|
-
|
|
143
|
+
{
|
|
144
|
+
...matchingRoute.metadata,
|
|
145
|
+
landingSlug: moduleLandingSlug(matchingRoute.metadata),
|
|
146
|
+
},
|
|
126
147
|
route.query,
|
|
127
148
|
);
|
|
128
149
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { resolveModuleLandingSlug } from "../utils/moduleLanding";
|
|
2
|
+
|
|
1
3
|
const MODULE_NOT_FOUND_KIND = "module-not-found";
|
|
2
4
|
const MODULE_NOT_FOUND_STATUS = 404;
|
|
3
5
|
const MODULE_NOT_FOUND_MESSAGE = "Module not found";
|
|
4
|
-
|
|
6
|
+
|
|
7
|
+
interface GuardedRoute {
|
|
8
|
+
path: string;
|
|
9
|
+
}
|
|
5
10
|
|
|
6
11
|
interface ModuleRouteParts {
|
|
7
12
|
moduleId: string;
|
|
@@ -26,44 +31,24 @@ function parseModuleRoute(path: string): ModuleRouteParts | null {
|
|
|
26
31
|
};
|
|
27
32
|
}
|
|
28
33
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (!tree) return null;
|
|
34
|
-
const modulesNode = tree.children[MODULES_TREE_KEY];
|
|
35
|
-
if (!modulesNode) return null;
|
|
36
|
-
for (const childId of modulesNode.childrenOrders) {
|
|
37
|
-
const child = modulesNode.children[childId];
|
|
38
|
-
if (!child) continue;
|
|
39
|
-
if (child.isModuleRoot && child.id === moduleId) {
|
|
40
|
-
return child;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function pickLandingFromNode(node: SiteLayoutTree): string | null {
|
|
47
|
-
if (node.layoutUrl && node.hasAccess !== false) {
|
|
48
|
-
return node.fullSlug;
|
|
49
|
-
}
|
|
50
|
-
for (const childId of node.childrenOrders) {
|
|
51
|
-
const child = node.children[childId];
|
|
52
|
-
if (!child) continue;
|
|
53
|
-
if (child.hasAccess === false) continue;
|
|
54
|
-
const candidate = pickLandingFromNode(child);
|
|
55
|
-
if (candidate) return candidate;
|
|
56
|
-
}
|
|
57
|
-
return null;
|
|
34
|
+
/** `landing` with the query and hash of `fullPath`, as the module was entered. */
|
|
35
|
+
function withQueryAndHash(landing: string, fullPath: string): string {
|
|
36
|
+
const start = fullPath.search(/[?#]/);
|
|
37
|
+
return start < 0 ? landing : `${landing}${fullPath.slice(start)}`;
|
|
58
38
|
}
|
|
59
39
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Whether the browser already draws the page at `to`: a link that visits the
|
|
42
|
+
* module's address without a navigation guard gets the landing page served
|
|
43
|
+
* there, and the guard then runs from that page's own setup (`to` is the page
|
|
44
|
+
* on screen). A navigation started from there restarts with each remount of
|
|
45
|
+
* the page it starts, so the browser loads the landing page instead.
|
|
46
|
+
*/
|
|
47
|
+
function isDrawnInBrowser(
|
|
48
|
+
to: GuardedRoute,
|
|
49
|
+
from: GuardedRoute | undefined,
|
|
50
|
+
): boolean {
|
|
51
|
+
return typeof window !== "undefined" && from?.path === to.path;
|
|
67
52
|
}
|
|
68
53
|
|
|
69
54
|
function ensureSiteLayoutLoaded(
|
|
@@ -73,7 +58,7 @@ function ensureSiteLayoutLoaded(
|
|
|
73
58
|
return siteLayout.loadSiteLayout();
|
|
74
59
|
}
|
|
75
60
|
|
|
76
|
-
export default defineDmsMiddleware(async (to) => {
|
|
61
|
+
export default defineDmsMiddleware(async (to, from) => {
|
|
77
62
|
const moduleRoute = parseModuleRoute(to.path);
|
|
78
63
|
if (!moduleRoute) return;
|
|
79
64
|
|
|
@@ -126,10 +111,20 @@ export default defineDmsMiddleware(async (to) => {
|
|
|
126
111
|
const landingSlug = resolveModuleLandingSlug(
|
|
127
112
|
siteLayout.siteLayoutTree.value,
|
|
128
113
|
moduleId,
|
|
114
|
+
moduleEntry.landingPage,
|
|
129
115
|
);
|
|
130
116
|
|
|
117
|
+
// Answered rather than navigated to: the navigation that entered the
|
|
118
|
+
// module goes to the landing page instead, so the module's own address
|
|
119
|
+
// never renders (a 404 before the redirect landed), never enters the
|
|
120
|
+
// history, and a server render answers it with a redirect.
|
|
131
121
|
if (landingSlug && landingSlug !== to.path) {
|
|
132
|
-
|
|
122
|
+
const landing = withQueryAndHash(landingSlug, to.fullPath);
|
|
123
|
+
if (isDrawnInBrowser(to, from)) {
|
|
124
|
+
window.location.replace(landing);
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
return landing;
|
|
133
128
|
}
|
|
134
129
|
|
|
135
130
|
return redirectToHomepage();
|
|
@@ -3,6 +3,8 @@ import type { PageValidation } from "../types/page";
|
|
|
3
3
|
export interface BreadcrumbTargetSource {
|
|
4
4
|
layoutUrl?: string;
|
|
5
5
|
validation?: PageValidation;
|
|
6
|
+
/** A module's root: the page the module opens on, its crumb's link. */
|
|
7
|
+
landingSlug?: string;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
/**
|
|
@@ -32,8 +34,9 @@ export function buildPageTarget(
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
/**
|
|
35
|
-
* The link of a breadcrumb crumb: the page's {@link buildPageTarget}.
|
|
36
|
-
*
|
|
37
|
+
* The link of a breadcrumb crumb: the page's {@link buildPageTarget}. A
|
|
38
|
+
* module's root links to its landing page; other categories without a page
|
|
39
|
+
* behind them get no link.
|
|
37
40
|
*/
|
|
38
41
|
export function buildBreadcrumbTarget(
|
|
39
42
|
path: string,
|
|
@@ -41,7 +44,7 @@ export function buildBreadcrumbTarget(
|
|
|
41
44
|
currentQuery: Record<string, unknown>,
|
|
42
45
|
): string | undefined {
|
|
43
46
|
if (!metadata.layoutUrl) {
|
|
44
|
-
return
|
|
47
|
+
return metadata.landingSlug;
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
return buildPageTarget(path, metadata.validation, currentQuery);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SiteLayoutTree } from "../types/page";
|
|
2
|
+
|
|
3
|
+
const MODULES_TREE_KEY = "modules";
|
|
4
|
+
|
|
5
|
+
function findModuleRootNode(
|
|
6
|
+
tree: SiteLayoutTree | undefined,
|
|
7
|
+
moduleId: string,
|
|
8
|
+
): SiteLayoutTree | null {
|
|
9
|
+
if (!tree) return null;
|
|
10
|
+
const modulesNode = tree.children[MODULES_TREE_KEY];
|
|
11
|
+
if (!modulesNode) return null;
|
|
12
|
+
for (const childId of modulesNode.childrenOrders) {
|
|
13
|
+
const child = modulesNode.children[childId];
|
|
14
|
+
if (!child) continue;
|
|
15
|
+
if (child.isModuleRoot && child.id === moduleId) {
|
|
16
|
+
return child;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function isOpenablePage(node: SiteLayoutTree): boolean {
|
|
23
|
+
return !!node.layoutUrl && node.hasAccess !== false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** The first page the caller may open under `node`, in menu order. */
|
|
27
|
+
function findPage(
|
|
28
|
+
node: SiteLayoutTree,
|
|
29
|
+
accepts: (page: SiteLayoutTree) => boolean,
|
|
30
|
+
): SiteLayoutTree | null {
|
|
31
|
+
if (isOpenablePage(node) && accepts(node)) return node;
|
|
32
|
+
for (const childId of node.childrenOrders) {
|
|
33
|
+
const child = node.children[childId];
|
|
34
|
+
if (!child || child.hasAccess === false) continue;
|
|
35
|
+
const found = findPage(child, accepts);
|
|
36
|
+
if (found) return found;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The page a module opens on: its `landingPage` when the caller may open it,
|
|
43
|
+
* else its first page in menu order.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveModuleLandingSlug(
|
|
46
|
+
tree: SiteLayoutTree | undefined,
|
|
47
|
+
moduleId: string,
|
|
48
|
+
landingPage: string | undefined,
|
|
49
|
+
): string | null {
|
|
50
|
+
const moduleRoot = findModuleRootNode(tree, moduleId);
|
|
51
|
+
if (!moduleRoot) return null;
|
|
52
|
+
const declared = landingPage
|
|
53
|
+
? findPage(moduleRoot, (page) => page.id === landingPage)
|
|
54
|
+
: null;
|
|
55
|
+
return (declared ?? findPage(moduleRoot, () => true))?.fullSlug ?? null;
|
|
56
|
+
}
|