@antelopejs/dms 0.7.14 → 0.7.16

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/db/models/userNotifications.model.js +3 -27
  3. package/dist/db/models/userNotifications.model.js.map +1 -1
  4. package/dist/implementations/dms/frontend-modules.d.ts +4 -2
  5. package/dist/implementations/dms/frontend-modules.js +4 -0
  6. package/dist/implementations/dms/frontend-modules.js.map +1 -1
  7. package/dist/implementations/dms/frontend-public-endpoints.d.ts +3 -0
  8. package/dist/implementations/dms/frontend-public-endpoints.js +70 -0
  9. package/dist/implementations/dms/frontend-public-endpoints.js.map +1 -0
  10. package/dist/implementations/dms/manifest.d.ts +1 -0
  11. package/dist/implementations/dms/manifest.js +3 -1
  12. package/dist/implementations/dms/manifest.js.map +1 -1
  13. package/dist/test/integration/notifications.test.js +6 -3
  14. package/dist/test/integration/notifications.test.js.map +1 -1
  15. package/dist/test/unit/implementations/dms/frontend-public-endpoints.test.d.ts +1 -0
  16. package/dist/test/unit/implementations/dms/frontend-public-endpoints.test.js +74 -0
  17. package/dist/test/unit/implementations/dms/frontend-public-endpoints.test.js.map +1 -0
  18. package/dist/test/unit/implementations/dms/manifest-strip.test.js +5 -0
  19. package/dist/test/unit/implementations/dms/manifest-strip.test.js.map +1 -1
  20. package/dist/test/unit/interfaces/dms/page-layout-query.test.js +16 -0
  21. package/dist/test/unit/interfaces/dms/page-layout-query.test.js.map +1 -1
  22. package/dist/test/unit/interfaces/dms-base/layout-header-actions.test.js +66 -0
  23. package/dist/test/unit/interfaces/dms-base/layout-header-actions.test.js.map +1 -1
  24. package/frontend-vue/layers/dms-core/app/composables/period/presetResolvers.ts +19 -1
  25. package/frontend-vue/layers/dms-core/app/composables/period/usePeriod.ts +52 -28
  26. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
  27. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
  28. package/frontend-vue/layers/dms-layout/app/build/components/layout/PageHeaderActionBar.vue +48 -4
  29. package/frontend-vue/layers/dms-layout/app/build/components/layout/PageHeaderActionsOutlet.vue +6 -2
  30. package/frontend-vue/layers/dms-layout/app/composables/layout/usePageHeaderActions.ts +32 -1
  31. package/frontend-vue/layers/dms-layout/app/emails/components/EmailLayout.vue +35 -12
  32. package/frontend-vue/layers/dms-layout/app/emails/components/email-logo.ts +54 -0
  33. package/frontend-vue/layers/dms-layout/app/emails/components/index.ts +2 -0
  34. package/frontend-vue/layers/dms-ui/app/build/components/period/PeriodRangeCalendar.vue +17 -1
  35. package/frontend-vue/layers/dms-ui/app/build/components/table/FiltersRow.vue +39 -2
  36. package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +18 -1
  37. package/frontend-vue/layers/dms-ui/app/build/composables/form/formControlErrors.ts +10 -0
  38. package/frontend-vue/layers/dms-ui/app/build/composables/form/useControlError.ts +8 -32
  39. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodDisplay.ts +49 -0
  40. package/frontend-vue/layers/dms-ui/app/build/composables/period/usePeriodLocation.ts +34 -11
  41. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableUrlTab.ts +47 -0
  42. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/recordLink.ts +34 -3
  43. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/urlFilters.ts +29 -0
  44. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +1 -1
  45. package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +1 -1
  46. package/frontend-vue/layers/dms-ui/app/components/form/components/InputCode.vue +1 -1
  47. package/frontend-vue/layers/dms-ui/app/components/form/components/InputNumber.vue +1 -1
  48. package/frontend-vue/layers/dms-ui/app/components/form/components/InputTags.vue +1 -1
  49. package/frontend-vue/layers/dms-ui/app/components/form/components/InputTime.vue +1 -1
  50. package/frontend-vue/layers/dms-ui/app/components/form/components/KeyValue.vue +1 -1
  51. package/frontend-vue/layers/dms-ui/app/components/period/PeriodSelector.vue +32 -6
  52. package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +75 -6
  53. package/frontend-vue/layers/dms-ui/app/composables/form/useControlError.ts +30 -0
  54. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +4 -0
  55. package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +6 -0
  56. package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +6 -0
  57. package/frontend-vue/tests/control-error-path.test.ts +11 -0
  58. package/frontend-vue/tests/email-layout.test.ts +124 -0
  59. package/frontend-vue/tests/header-action-page-query.test.ts +96 -1
  60. package/frontend-vue/tests/input-number-range.test.ts +1 -1
  61. package/frontend-vue/tests/input-tags.test.ts +1 -1
  62. package/frontend-vue/tests/period-day-rollover.test.ts +80 -0
  63. package/frontend-vue/tests/period-max-days.test.ts +128 -0
  64. package/frontend-vue/tests/period-selector-url.test.ts +44 -8
  65. package/frontend-vue/tests/row-side-panel.test.ts +2 -2
  66. package/frontend-vue/tests/table-url-filters.test.ts +158 -0
  67. package/frontend-vue/tests/table-view-bulk-drawer.test.ts +23 -0
  68. package/frontend-vue/tests/table-view-url-tab.test.ts +115 -0
  69. package/package.json +2 -2
  70. package/skills/dms-pages/REFERENCE.md +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-strip.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/implementations/dms/manifest-strip.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest-strip.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/implementations/dms/manifest-strip.test.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,12 @@ describe("[unit] interfaces/dms/page — header availability reads the page quer
67
67
  ? undefined
68
68
  : { reason: "$lang.unknown_workspace" },
69
69
  },
70
+ {
71
+ id: "add-language",
72
+ label: "Add language",
73
+ target: { type: "page", url: "/languages/new" },
74
+ availability: ({ query }) => query?.workspace === "locked" ? { hidden: true } : undefined,
75
+ },
70
76
  ],
71
77
  }));
72
78
  cleanups.push(await (0, page_access_1.registerTestPage)(controller));
@@ -97,6 +103,16 @@ describe("[unit] interfaces/dms/page — header availability reads the page quer
97
103
  (0, chai_1.expect)(bare.headerActions[0]).to.deep.include({ disabled: true });
98
104
  (0, chai_1.expect)(bare.headerActionsQuery).to.deep.equal({});
99
105
  });
106
+ it("leaves out the button its availability hides for the query", async () => {
107
+ const ids = (options) => options.headerActions.map((action) => action.id);
108
+ const locked = await serve({ workspace: "locked" });
109
+ (0, chai_1.expect)(ids(locked)).to.deep.equal(["download"]);
110
+ (0, chai_1.expect)(locked.headerActionsQuery).to.deep.equal({ workspace: "locked" });
111
+ (0, chai_1.expect)(ids(await serve({ workspace: "web" }))).to.deep.equal([
112
+ "download",
113
+ "add-language",
114
+ ]);
115
+ });
100
116
  it("reads one value per name from the layout request", () => {
101
117
  (0, chai_1.expect)((0, metadata_helpers_1.readRequestQuery)({
102
118
  url: new URL("http://dms.test/p/pagelayout?workspace=web&tag=a&tag=b"),
@@ -1 +1 @@
1
- {"version":3,"file":"page-layout-query.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms/page-layout-query.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-layout-query.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms/page-layout-query.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ const chai_1 = require("chai");
4
4
  const layouts_1 = require("@antelopejs/interface-dms/base/layouts");
5
5
  const layout_filter_1 = require("@antelopejs/interface-dms/page/internal/layout-filter");
6
6
  const permission_ids_1 = require("@antelopejs/interface-dms/internal/permission-ids");
7
+ const request_filter_1 = require("@antelopejs/interface-dms/base/table-view/internal/request-filter");
7
8
  const CONTEXT = { tenantId: "tenant", user: undefined };
8
9
  function actionsOf(options) {
9
10
  return options
@@ -62,6 +63,19 @@ describe("[unit] interfaces/dms-base/layouts — header buttons", () => {
62
63
  },
63
64
  ]);
64
65
  });
66
+ it("serves the order a button declares", () => {
67
+ const layout = (0, layouts_1.DefaultLayout)({
68
+ headerActions: [
69
+ {
70
+ id: "add",
71
+ label: "Add",
72
+ target: { type: "page", url: "/a" },
73
+ order: 1,
74
+ },
75
+ ],
76
+ });
77
+ (0, chai_1.expect)(actionsOf(layout.options)[0]).to.deep.include({ order: 1 });
78
+ });
65
79
  it("keeps the full-width default next to the buttons", () => {
66
80
  const layout = (0, layouts_1.DefaultLayout)({ headerActions: [] });
67
81
  (0, chai_1.expect)(layout.options).to.deep.equal({
@@ -114,6 +128,29 @@ describe("[unit] interfaces/dms/page — header buttons served per caller", () =
114
128
  });
115
129
  (0, chai_1.expect)(invite).to.not.have.property("availability");
116
130
  });
131
+ it("leaves out a button its availability hides, for that query only", async () => {
132
+ const scoped = (0, layouts_1.DefaultLayout)({
133
+ headerActions: [
134
+ link("open"),
135
+ {
136
+ ...link("add-key"),
137
+ availability: ({ query }) => query?.workspace === "modules" ? { hidden: true } : undefined,
138
+ },
139
+ ],
140
+ });
141
+ const serve = async (query) => (await (0, layout_filter_1.filterLayoutHeaderActions)(scoped, async () => new Set(), { ...CONTEXT, query }, "pages.lang")).options;
142
+ const readOnly = await serve({ workspace: "modules" });
143
+ (0, chai_1.expect)(readOnly.headerActions.map((action) => action.id)).to.deep.equal([
144
+ "open",
145
+ ]);
146
+ (0, chai_1.expect)(readOnly.headerActionsQuery).to.deep.equal({ workspace: "modules" });
147
+ const own = await serve({ workspace: "own" });
148
+ (0, chai_1.expect)(own.headerActions.map((action) => action.id)).to.deep.equal([
149
+ "open",
150
+ "add-key",
151
+ ]);
152
+ (0, chai_1.expect)(own.headerActions[1]).to.not.have.property("disabled");
153
+ });
117
154
  it("hands availability the page query, and says which query it served", async () => {
118
155
  const queue = (0, layouts_1.DefaultLayout)({
119
156
  headerActions: [
@@ -246,4 +283,33 @@ describe("[unit] interfaces/dms/page — a table's buttons placed in the header"
246
283
  ]);
247
284
  });
248
285
  });
286
+ describe("[unit] interfaces/dms-base/table-view — a toolbar button its availability hides", () => {
287
+ it("is left out of the buttons served, the others kept", async () => {
288
+ const declared = [
289
+ { id: "export", label: "Export", target: { type: "page", url: "/x" } },
290
+ {
291
+ id: "add",
292
+ label: "Add",
293
+ target: { type: "page", url: "/new" },
294
+ availability: () => ({ hidden: true }),
295
+ },
296
+ {
297
+ id: "purge",
298
+ label: "Purge",
299
+ target: { type: "page", url: "/purge" },
300
+ availability: () => ({ reason: "$locked" }),
301
+ },
302
+ ];
303
+ const serialized = declared.map(({ availability: _availability, ...button }) => button);
304
+ const served = await (0, request_filter_1.resolveCustomButtons)(new Set(), declared, serialized, "pages.lang.table", CONTEXT);
305
+ (0, chai_1.expect)(served?.map((button) => button.id)).to.deep.equal([
306
+ "export",
307
+ "purge",
308
+ ]);
309
+ (0, chai_1.expect)(served?.[1]).to.deep.include({
310
+ disabled: true,
311
+ disabledReason: "$locked",
312
+ });
313
+ });
314
+ });
249
315
  //# sourceMappingURL=layout-header-actions.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-header-actions.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/layout-header-actions.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-header-actions.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/layout-header-actions.test.ts"],"names":[],"mappings":"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"}
@@ -115,17 +115,35 @@ const PRESET_RANGE_RESOLVERS: Record<
115
115
  all: () => null,
116
116
  };
117
117
 
118
+ const HOURS_PER_DAY = 24;
118
119
  const RELATIVE_PRESETS = new Set<PeriodPreset>(["last-hour", "last-24h"]);
120
+ const UNBOUNDED_PRESETS = new Set<PeriodPreset>(["all", "custom"]);
119
121
 
120
122
  /**
121
123
  * Relative presets resolve against the instant they are read: a live
122
124
  * dashboard must re-resolve them as time passes, where calendar presets
123
- * stay valid until the preset itself changes.
125
+ * stay valid until the next local midnight.
124
126
  */
125
127
  export function isRelativePreset(preset: PeriodPreset): boolean {
126
128
  return RELATIVE_PRESETS.has(preset);
127
129
  }
128
130
 
131
+ /**
132
+ * Calendar presets (`today`, `last-7-days`, `this-month`...) snap to day
133
+ * boundaries: they hold for the rest of the day, then move at the next local
134
+ * midnight. `custom` and `all` never move on their own.
135
+ */
136
+ export function isCalendarPreset(preset: PeriodPreset): boolean {
137
+ return !RELATIVE_PRESETS.has(preset) && !UNBOUNDED_PRESETS.has(preset);
138
+ }
139
+
140
+ /** The time left until the next local midnight, from `now`. */
141
+ export function msUntilNextMidnight(now: Date): number {
142
+ const midnight = new Date(now);
143
+ midnight.setHours(HOURS_PER_DAY, 0, 0, 0);
144
+ return midnight.getTime() - now.getTime();
145
+ }
146
+
129
147
  /**
130
148
  * Resolves a preset into a concrete range.
131
149
  *
@@ -16,7 +16,12 @@ import {
16
16
  type PeriodRange,
17
17
  type PeriodState,
18
18
  } from "./types";
19
- import { isRelativePreset, resolvePresetRange } from "./presetResolvers";
19
+ import {
20
+ isCalendarPreset,
21
+ isRelativePreset,
22
+ msUntilNextMidnight,
23
+ resolvePresetRange,
24
+ } from "./presetResolvers";
20
25
  import { resolveComparisonRange } from "./compareResolvers";
21
26
 
22
27
  export interface UsePeriodOptions {
@@ -25,11 +30,11 @@ export interface UsePeriodOptions {
25
30
  presets?: PeriodPreset[];
26
31
  comparisons?: PeriodComparison[];
27
32
  /**
28
- * While it answers true, a relative preset stops sliding: the period keeps
29
- * the range it had, so nothing reading it refetches on the clock. The
30
- * minutes it skipped are caught up once, when it answers false again. A
31
- * period the user changes still applies at once. The selector holds it
32
- * while its live page is paused.
33
+ * While it answers true, the period stops following the clock: a relative
34
+ * preset stops sliding and a calendar preset does not move at midnight, so
35
+ * nothing reading it refetches on the clock. What it skipped is caught up
36
+ * once, when it answers false again. A period the user changes still
37
+ * applies at once. The selector holds it while its live page is paused.
33
38
  */
34
39
  holdClock?: () => boolean;
35
40
  }
@@ -56,30 +61,46 @@ const RELATIVE_REFRESH_INTERVAL_MS = 60000;
56
61
 
57
62
  const NEVER_HELD = () => false;
58
63
 
59
- function useRelativePresetClock(
64
+ type ClockKind = "relative" | "calendar" | "still";
65
+
66
+ function clockKind(preset: PeriodPreset): ClockKind {
67
+ if (isRelativePreset(preset)) return "relative";
68
+ return isCalendarPreset(preset) ? "calendar" : "still";
69
+ }
70
+
71
+ const CLOCK_DELAYS: Record<Exclude<ClockKind, "still">, () => number> = {
72
+ relative: () => RELATIVE_REFRESH_INTERVAL_MS,
73
+ calendar: () => msUntilNextMidnight(new Date()),
74
+ };
75
+
76
+ /**
77
+ * Ticks whenever the active preset's range moves on its own: every minute
78
+ * for a relative preset, at each local midnight for a calendar one. Each
79
+ * timeout is armed from the time it is set, so a machine waking from sleep
80
+ * resolves once, then lines up on the next boundary again.
81
+ */
82
+ function usePresetClock(
60
83
  preset: Ref<PeriodPreset>,
61
84
  isHeld: () => boolean = NEVER_HELD,
62
85
  ): Ref<number> {
63
86
  const tick = ref(0);
64
87
  if (typeof window === "undefined") return tick;
65
- let timer: ReturnType<typeof setInterval> | null = null;
88
+ let timer: ReturnType<typeof setTimeout> | null = null;
66
89
  let hasSkippedTick = false;
67
90
  const stop = () => {
68
- if (timer !== null) clearInterval(timer);
91
+ if (timer !== null) clearTimeout(timer);
69
92
  timer = null;
70
93
  };
71
- watch(
72
- () => isRelativePreset(preset.value),
73
- (isRelative) => {
74
- stop();
75
- if (!isRelative) return;
76
- timer = setInterval(() => {
77
- if (isHeld()) hasSkippedTick = true;
78
- else tick.value += 1;
79
- }, RELATIVE_REFRESH_INTERVAL_MS);
80
- },
81
- { immediate: true },
82
- );
94
+ const arm = (kind: ClockKind) => {
95
+ stop();
96
+ if (kind === "still") return;
97
+ timer = setTimeout(() => {
98
+ if (isHeld()) hasSkippedTick = true;
99
+ else tick.value += 1;
100
+ arm(kind);
101
+ }, CLOCK_DELAYS[kind]());
102
+ };
103
+ watch(() => clockKind(preset.value), arm, { immediate: true });
83
104
  watch(isHeld, (held) => {
84
105
  if (held || !hasSkippedTick) return;
85
106
  hasSkippedTick = false;
@@ -155,11 +176,14 @@ function makeSetters(refs: PeriodRefs) {
155
176
  * Reactive period state machine behind `PeriodSelector` — presets,
156
177
  * comparisons and custom ranges resolved into a publishable `state`.
157
178
  *
158
- * Call it inside a component `setup` or an `effectScope`: the interval that
159
- * keeps relative presets (`last-hour`, `last-24h`) sliding is disposed with
160
- * that scope, and leaks if none exists. Under `KeepAlive`, a deactivated
161
- * component keeps its scope, so a relative preset keeps ticking (one
162
- * re-resolution per minute) until unmount.
179
+ * Relative presets (`last-hour`, `last-24h`) re-resolve every minute, and
180
+ * calendar presets (`today`, `last-7-days`, `this-month`...) at each local
181
+ * midnight, so a page left open overnight moves on to the new day.
182
+ *
183
+ * Call it inside a component `setup` or an `effectScope`: the timer that
184
+ * keeps the presets following the clock is disposed with that scope, and
185
+ * leaks if none exists. Under `KeepAlive`, a deactivated component keeps its
186
+ * scope, so the period keeps re-resolving until unmount.
163
187
  */
164
188
  export function usePeriod(options: UsePeriodOptions = {}): UsePeriodReturn {
165
189
  const refs: PeriodRefs = {
@@ -176,9 +200,9 @@ export function usePeriod(options: UsePeriodOptions = {}): UsePeriodReturn {
176
200
  const comparisons = computed<PeriodComparison[]>(
177
201
  () => options.comparisons ?? DEFAULT_COMPARISONS,
178
202
  );
179
- const relativeClock = useRelativePresetClock(refs.preset, options.holdClock);
203
+ const presetClock = usePresetClock(refs.preset, options.holdClock);
180
204
  const state = computed<PeriodState>(() => {
181
- void relativeClock.value;
205
+ void presetClock.value;
182
206
  return buildState(refs);
183
207
  });
184
208
  const setters = makeSetters(refs);
@@ -487,6 +487,7 @@
487
487
  "vs": "vs",
488
488
  "days": "{count} day | {count} days",
489
489
  "hours": "{count} hour | {count} hours",
490
+ "max_days": "Up to {count} day | Up to {count} days",
490
491
  "previous_month": "Previous month",
491
492
  "next_month": "Next month"
492
493
  }
@@ -487,6 +487,7 @@
487
487
  "vs": "vs",
488
488
  "days": "{count} jour | {count} jours",
489
489
  "hours": "{count} heure | {count} heures",
490
+ "max_days": "{count} jour maximum | {count} jours maximum",
490
491
  "previous_month": "Mois précédent",
491
492
  "next_month": "Mois suivant"
492
493
  }
@@ -23,6 +23,7 @@ import {
23
23
  dispatchQuickActionTarget,
24
24
  findServedQuickAction,
25
25
  } from "#dms-ui/app/build/utils/dispatchQuickActionTarget";
26
+ import { DEFAULT_PAGE_HEADER_ACTIONS_ORDER } from "../../../composables/layout/usePageHeaderActions";
26
27
 
27
28
  /**
28
29
  * A button of the page header as the server serves it (`DefaultLayout({
@@ -40,14 +41,22 @@ export interface LayoutHeaderAction
40
41
  componentId?: string;
41
42
  /** Id of that component's button; absent for its built-in add. */
42
43
  buttonId?: string;
44
+ /** Place among the header's buttons, smallest first; `0` by default. */
45
+ order?: number;
43
46
  }
44
47
 
45
48
  interface PageHeaderActionBarProps {
46
49
  actions: LayoutHeaderAction[];
50
+ /**
51
+ * Where the default slot (the actions of `usePageHeaderActions`) goes
52
+ * among the buttons: after every button of an order up to this one.
53
+ */
54
+ slotOrder?: number;
47
55
  }
48
56
 
49
57
  interface ResolvedHeaderAction {
50
58
  id: string;
59
+ order: number;
51
60
  button: ButtonProps;
52
61
  /** Why the button is disabled, shown in a tooltip. */
53
62
  disabledReason?: string;
@@ -55,7 +64,9 @@ interface ResolvedHeaderAction {
55
64
  previewLocked?: string;
56
65
  }
57
66
 
58
- const props = defineProps<PageHeaderActionBarProps>();
67
+ const props = withDefaults(defineProps<PageHeaderActionBarProps>(), {
68
+ slotOrder: DEFAULT_PAGE_HEADER_ACTIONS_ORDER,
69
+ });
59
70
 
60
71
  const { processI18n } = useTranslation();
61
72
  const siteLayout = useSiteLayout();
@@ -103,6 +114,9 @@ const defaultVariant = (
103
114
  ): ButtonProps["variant"] =>
104
115
  !color || color === "neutral" ? "outline" : "solid";
105
116
 
117
+ const orderOf = (action: LayoutHeaderAction): number =>
118
+ action.order ?? DEFAULT_PAGE_HEADER_ACTIONS_ORDER;
119
+
106
120
  function baseButton(action: LayoutHeaderAction): ButtonProps {
107
121
  const color = action.color ?? "neutral";
108
122
  return {
@@ -174,6 +188,7 @@ function resolveQuickActionButton(
174
188
  if (!quickAction) return null;
175
189
  return {
176
190
  id: action.id,
191
+ order: orderOf(action),
177
192
  button: {
178
193
  ...base,
179
194
  icon: action.icon ?? quickAction.icon,
@@ -199,6 +214,7 @@ function resolveAction(
199
214
  const { componentId, buttonId } = action;
200
215
  return {
201
216
  id: action.id,
217
+ order: orderOf(action),
202
218
  button: {
203
219
  ...base,
204
220
  onClick: () => pressComponentButton(componentId, buttonId),
@@ -212,6 +228,7 @@ function resolveAction(
212
228
  }
213
229
  return {
214
230
  id: action.id,
231
+ order: orderOf(action),
215
232
  button: {
216
233
  ...base,
217
234
  ...(linkProps(action) ?? {
@@ -251,15 +268,42 @@ const resolved = computed(() =>
251
268
  props.actions
252
269
  .map(resolveAction)
253
270
  .filter((action): action is ResolvedHeaderAction => action !== null)
254
- .map(lockForPreview),
271
+ .map(lockForPreview)
272
+ .sort((first, second) => first.order - second.order),
255
273
  );
274
+
275
+ // The slot (the page's own actions) goes after every served button of an
276
+ // order up to its own: at an equal order the served ones lead, as they did
277
+ // before `order` existed.
278
+ const SLOT_KEY = "dms-page-header-slot";
279
+
280
+ interface HeaderBarEntry {
281
+ key: string;
282
+ /** Absent for the slot's place. */
283
+ action?: ResolvedHeaderAction;
284
+ }
285
+
286
+ const entries = computed<HeaderBarEntry[]>(() => {
287
+ const toEntry = (action: ResolvedHeaderAction) => ({
288
+ key: action.id,
289
+ action,
290
+ });
291
+ const leading = resolved.value.filter(
292
+ (action) => action.order <= props.slotOrder,
293
+ );
294
+ const trailing = resolved.value.filter(
295
+ (action) => action.order > props.slotOrder,
296
+ );
297
+ return [...leading.map(toEntry), { key: SLOT_KEY }, ...trailing.map(toEntry)];
298
+ });
256
299
  </script>
257
300
 
258
301
  <template>
259
- <template v-for="action in resolved" :key="action.id">
302
+ <template v-for="{ key, action } in entries" :key="key">
303
+ <slot v-if="!action" />
260
304
  <!-- A disabled button fires no pointer event: the tooltip hangs on a
261
305
  focusable wrapper, so the reason also reaches keyboard users. -->
262
- <UTooltip v-if="action.previewLocked" :text="action.previewLocked">
306
+ <UTooltip v-else-if="action.previewLocked" :text="action.previewLocked">
263
307
  <UButton v-bind="action.button" />
264
308
  </UTooltip>
265
309
  <UTooltip v-else-if="action.disabledReason" :text="action.disabledReason">
@@ -66,7 +66,11 @@ const showsServerMarkup = computed(
66
66
  data-dms-page-header-actions
67
67
  :class="ROOT_CLASS"
68
68
  >
69
- <PageHeaderActionBar :actions="actions" />
70
- <component :is="pageActions" v-if="pageActions" />
69
+ <PageHeaderActionBar
70
+ :actions="actions"
71
+ :slot-order="host?.actionsOrder.value"
72
+ >
73
+ <component :is="pageActions" v-if="pageActions" />
74
+ </PageHeaderActionBar>
71
75
  </div>
72
76
  </template>
@@ -19,6 +19,20 @@ import {
19
19
  /** Renders the actions shown on the right of the page header. */
20
20
  export type PageHeaderActionsRender = () => VNodeChild;
21
21
 
22
+ /** Where the actions of `usePageHeaderActions` go in the page header. */
23
+ export interface PageHeaderActionsOptions {
24
+ /**
25
+ * Place among the buttons the page layout serves (`headerActions`, each
26
+ * with its own `order`), smallest first; defaults to `0`. At an equal
27
+ * order the served buttons come first, so `-1` puts these actions before
28
+ * every served button left at the default.
29
+ */
30
+ order?: number;
31
+ }
32
+
33
+ /** The order of actions that do not name one, and of served buttons. */
34
+ export const DEFAULT_PAGE_HEADER_ACTIONS_ORDER = 0;
35
+
22
36
  /**
23
37
  * What a layout rendering a page header shares with the page in its slot.
24
38
  *
@@ -32,6 +46,10 @@ export type PageHeaderActionsRender = () => VNodeChild;
32
46
  export interface PageHeaderActionsHost {
33
47
  /** The render function the page asked for, if any. */
34
48
  actions: ShallowRef<PageHeaderActionsRender | null>;
49
+ /** The `order` the page gave its actions. */
50
+ actionsOrder: Readonly<Ref<number>>;
51
+ /** Places the page's actions among the served buttons. */
52
+ setActionsOrder: (order: number) => void;
35
53
  /** Once the page in the slot has set up and set its actions. */
36
54
  isReady: Readonly<Ref<boolean>>;
37
55
  /** Called right after the page in the slot rendered (its sync setup ran). */
@@ -57,6 +75,7 @@ const SERVER_READY_TIMEOUT_MS = 5000;
57
75
  */
58
76
  export const providePageHeaderActions = (): PageHeaderActionsHost => {
59
77
  const actions = shallowRef<PageHeaderActionsRender | null>(null);
78
+ const actionsOrder = ref(DEFAULT_PAGE_HEADER_ACTIONS_ORDER);
60
79
  const isReady = ref(false);
61
80
  let slotRendered = false;
62
81
  let pending = 0;
@@ -79,6 +98,10 @@ export const providePageHeaderActions = (): PageHeaderActionsHost => {
79
98
  });
80
99
  const host: PageHeaderActionsHost = {
81
100
  actions,
101
+ actionsOrder: readonly(actionsOrder),
102
+ setActionsOrder: (order) => {
103
+ actionsOrder.value = order;
104
+ },
82
105
  isReady: readonly(isReady),
83
106
  markSlotRendered: () => {
84
107
  slotRendered = true;
@@ -135,13 +158,21 @@ export const holdPageHeaderActions = (): Component => {
135
158
  * Call it before the first `await` of the setup: the header then renders
136
159
  * the actions in the server pass, with the page.
137
160
  *
161
+ * They come after the buttons the page layout serves (`headerActions`)
162
+ * unless `options.order` places them among those.
163
+ *
138
164
  * @param render Render function of the actions, e.g. `() => h(UButton, …)`
165
+ * @param options Where the actions go among the served buttons
139
166
  */
140
- export const usePageHeaderActions = (render: PageHeaderActionsRender): void => {
167
+ export const usePageHeaderActions = (
168
+ render: PageHeaderActionsRender,
169
+ options: PageHeaderActionsOptions = {},
170
+ ): void => {
141
171
  const host = inject(PAGE_HEADER_ACTIONS_KEY, null);
142
172
  if (!host) return;
143
173
  const release = host.expect();
144
174
  const show = () => {
175
+ host.setActionsOrder(options.order ?? DEFAULT_PAGE_HEADER_ACTIONS_ORDER);
145
176
  host.actions.value = render;
146
177
  release();
147
178
  };