@antelopejs/dms 0.4.2 → 0.4.3

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 (25) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/pages/settings/users/invites.js +6 -5
  3. package/dist/pages/settings/users/invites.js.map +1 -1
  4. package/dist/pages/settings/users/members.d.ts +1 -0
  5. package/dist/pages/settings/users/members.js +12 -3
  6. package/dist/pages/settings/users/members.js.map +1 -1
  7. package/frontend-vue/dms.frontend.ts +2 -0
  8. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +4 -2
  9. package/frontend-vue/layers/dms-layout/app/composables/general/types/index.ts +7 -0
  10. package/frontend-vue/layers/dms-layout/app/composables/general/useColorModePreference.ts +17 -0
  11. package/frontend-vue/layers/dms-layout/app/custom-pages/settings/appearance.vue +6 -6
  12. package/frontend-vue/layers/dms-layout/app/plugins/color-mode.ts +100 -0
  13. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +41 -1
  14. package/frontend-vue/layers/dms-ui/app/components/form/components/Calendar.vue +49 -26
  15. package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +77 -32
  16. package/frontend-vue/layers/dms-ui/app/composables/chart/useThemeRevision.ts +0 -22
  17. package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +23 -0
  18. package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +1 -0
  19. package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +1 -0
  20. package/frontend-vue/package.json +2 -2
  21. package/frontend-vue/pnpm-lock.yaml +7 -33
  22. package/frontend-vue/tests/color-mode-server-render.test.ts +84 -0
  23. package/frontend-vue/tests/color-mode-sync.test.ts +320 -0
  24. package/frontend-vue/tests/form-required-fields.test.ts +44 -0
  25. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.4.3
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.2...v0.4.3)
6
+
7
+ ### 🚀 Enhancements
8
+
9
+ - **form:** Mark required fields and add a required legend ([#46](https://github.com/AntelopeJS/dms/pull/46))
10
+ - **settings:** Reach pending invites from the members page ([#47](https://github.com/AntelopeJS/dms/pull/47))
11
+
12
+ ### 🩹 Fixes
13
+
14
+ - **playground:** Build the dms and the playground before starting ([ce1e7bd](https://github.com/AntelopeJS/dms/commit/ce1e7bd))
15
+ - **form:** Handle partial ranges and show range and multiple dates in the date picker ([b12efcf](https://github.com/AntelopeJS/dms/commit/b12efcf))
16
+ - **form:** Emit ISO strings for multiple dates in the calendar and date picker ([327ebc2](https://github.com/AntelopeJS/dms/commit/327ebc2))
17
+ - **layout:** Keep the current page in the breadcrumb when the URL has a query ([#53](https://github.com/AntelopeJS/dms/pull/53))
18
+ - **layout:** Keep the color-mode preference in a dms-color-mode cookie ([#56](https://github.com/AntelopeJS/dms/pull/56))
19
+
20
+ ### 🏡 Chore
21
+
22
+ - **release:** @antelopejs/interface-dms v0.2.2 ([2be2aba](https://github.com/AntelopeJS/dms/commit/2be2aba))
23
+ - **playground:** Add sibling pages whose slugs share a prefix ([#49](https://github.com/AntelopeJS/dms/pull/49))
24
+
25
+ ### ❤️ Contributors
26
+
27
+ - Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
28
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
29
+
3
30
  ## v0.4.2
4
31
 
5
32
  [compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.1...v0.4.2)
@@ -30,9 +30,9 @@ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/defau
30
30
  const status_type_1 = require("@antelopejs/interface-dms/base/data-types/status-type");
31
31
  const types_1 = require("@antelopejs/interface-dms/base/types");
32
32
  const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
33
- const category_1 = require("./category");
34
33
  const member_invite_form_1 = require("./member-invite-form");
35
34
  const members_1 = require("./members");
35
+ const INVITES_PERMISSION_ID = "settings.user.invites";
36
36
  let inviteSettingDataAPI = class inviteSettingDataAPI extends (0, interface_data_api_1.DataController)(db_1.UserInvite, {
37
37
  list: base_1.TableViewRoutes.List,
38
38
  get: base_1.TableViewRoutes.Get,
@@ -188,9 +188,10 @@ exports.inviteSettingDataAPI = inviteSettingDataAPI = __decorate([
188
188
  ], inviteSettingDataAPI);
189
189
  let InvitesSettingsController = class InvitesSettingsController extends (0, page_1.PageController)("invites", {
190
190
  displayName: "$menu.invites",
191
- category: category_1.userCategory,
191
+ category: members_1.MembersSettingsController,
192
+ permission: { id: INVITES_PERMISSION_ID },
193
+ hidden: true,
192
194
  icon: "i-ph-envelope-simple",
193
- order: 5,
194
195
  description: "$page.settings.description.invites",
195
196
  }) {
196
197
  static table = (0, base_1.TableView)(inviteSettingDataAPI, {
@@ -225,7 +226,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
225
226
  icon: "i-ph-arrow-clockwise",
226
227
  target: {
227
228
  type: "api",
228
- url: "/settings/user/invites/{_id}/resend",
229
+ url: `${members_1.INVITES_PAGE_PATH}/{_id}/resend`,
229
230
  method: "POST",
230
231
  successMessage: "$page.settings.invites.action.resend_success",
231
232
  confirm: {
@@ -240,7 +241,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
240
241
  icon: "i-ph-trash",
241
242
  target: {
242
243
  type: "api",
243
- url: "/settings/user/invites/{_id}/cancel",
244
+ url: `${members_1.INVITES_PAGE_PATH}/{_id}/cancel`,
244
245
  method: "DELETE",
245
246
  successMessage: "$page.settings.invites.action.cancel_success",
246
247
  confirm: {
@@ -1 +1 @@
1
- {"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type RequestContext } from "@antelopejs/interface-api";
2
2
  import type { Action } from "@antelopejs/interface-dms/component";
3
3
  import { type User, UserModel } from "@antelopejs/interface-dms/auth/db";
4
+ export declare const INVITES_PAGE_PATH = "/settings/user/members/invites";
4
5
  export declare const membersTable: import("@antelopejs/interface-dms").ComponentBuilder<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>;
5
6
  export declare const membersTableAddAction: Action;
6
7
  declare const MembersSettingsController_base: {
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = void 0;
15
+ exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = exports.INVITES_PAGE_PATH = void 0;
16
16
  const interface_api_1 = require("@antelopejs/interface-api");
17
17
  const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
18
  const interface_data_api_1 = require("@antelopejs/interface-data-api");
@@ -28,13 +28,14 @@ const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
28
28
  const tenant_ownership_1 = require("@antelopejs/interface-dms/tenant-ownership");
29
29
  const db_2 = require("@antelopejs/interface-dms/auth/db");
30
30
  const base_1 = require("@antelopejs/interface-dms/base");
31
+ const types_1 = require("@antelopejs/interface-dms/base/types");
31
32
  const saas_mode_1 = require("@antelopejs/interface-dms/utils/saas-mode");
32
33
  const member_invite_schema_1 = require("../../../validation/member-invite.schema");
33
34
  const category_1 = require("./category");
34
35
  const member_invite_form_1 = require("./member-invite-form");
35
36
  (0, interface_data_api_1.RegisterDataController)()(data_controllers_1.memberSettingDataAPI);
36
37
  const MEMBERS_PAGE_PATH = "/settings/user/members";
37
- const INVITES_PAGE_PATH = "/settings/user/invites";
38
+ exports.INVITES_PAGE_PATH = `${MEMBERS_PAGE_PATH}/invites`;
38
39
  function detectOwnerChange(current, body) {
39
40
  if (body.isTenantOwner === undefined)
40
41
  return null;
@@ -93,6 +94,14 @@ exports.membersTable = (0, base_1.TableView)(data_controllers_1.memberSettingDat
93
94
  ],
94
95
  },
95
96
  customButtons: [
97
+ {
98
+ label: "$menu.invites",
99
+ icon: "i-ph-envelope-simple",
100
+ color: "neutral",
101
+ variant: types_1.ButtonVariant.outline,
102
+ permission: "add",
103
+ target: { type: "page", url: exports.INVITES_PAGE_PATH },
104
+ },
96
105
  {
97
106
  label: "$page.settings.members.invite.button",
98
107
  icon: "i-ph-user-plus",
@@ -180,7 +189,7 @@ let MembersSettingsController = class MembersSettingsController extends (0, page
180
189
  extensions,
181
190
  });
182
191
  return {
183
- redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : INVITES_PAGE_PATH,
192
+ redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : exports.INVITES_PAGE_PATH,
184
193
  };
185
194
  }
186
195
  async validateMemberEmail(ctx, memberId, userModel) {
@@ -1 +1 @@
1
- {"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import authMiddleware from "./layers/dms-auth/app/middleware/auth";
9
9
  import homepageRedirectMiddleware from "./layers/dms-layout/app/middleware/homepage-redirect.global";
10
10
  import moduleRoutingMiddleware from "./layers/dms-layout/app/middleware/module-routing.global";
11
11
  import pageLeaveGuardMiddleware from "./layers/dms-layout/app/middleware/page-leave-guard.global";
12
+ import colorModePlugin from "./layers/dms-layout/app/plugins/color-mode";
12
13
  import interfaceScalePlugin from "./layers/dms-layout/app/plugins/interface-scale";
13
14
  import languageSyncPlugin from "./layers/dms-layout/app/plugins/language-sync";
14
15
  import seoPlugin from "./layers/dms-layout/app/plugins/seo";
@@ -143,6 +144,7 @@ function registerPlugins(sdk: Parameters<DmsFrontendModule["setup"]>[0]): void {
143
144
  await plugin.default(context);
144
145
  }, clientOnly);
145
146
  }
147
+ sdk.registerPlugin(colorModePlugin);
146
148
  sdk.registerPlugin(interfaceScalePlugin);
147
149
  sdk.registerPlugin(languageSyncPlugin);
148
150
  sdk.registerPlugin(seoPlugin);
@@ -93,11 +93,13 @@ const toggleCurrentPageFavorite = () => {
93
93
  const breadcrumb = computed((): BreadcrumbItem[] => {
94
94
  const base: BreadcrumbItem[] = [{ label: "home", to: homepage || "/" }];
95
95
 
96
- if (route.fullPath === (homepage || "/")) {
96
+ // The path only: with the query, the last segment ("data?table=x") matched
97
+ // no route and the current page dropped out of the breadcrumb.
98
+ if (route.path === (homepage || "/")) {
97
99
  return base;
98
100
  }
99
101
 
100
- const paths = route.fullPath.split("/").filter((path) => path);
102
+ const paths = route.path.split("/").filter((path) => path);
101
103
 
102
104
  return base.concat(
103
105
  paths
@@ -6,6 +6,13 @@ export interface ScaleOption {
6
6
  hint: string;
7
7
  }
8
8
 
9
+ export type ColorModePreference = "light" | "dark" | "system";
10
+
11
+ export interface ColorModeOption {
12
+ value: ColorModePreference;
13
+ label: string;
14
+ }
15
+
9
16
  export interface SystemStateMeta {
10
17
  title: string;
11
18
  description: string;
@@ -0,0 +1,17 @@
1
+ import type { ColorModePreference } from "./types";
2
+
3
+ export const COLOR_MODE_COOKIE = "dms-color-mode";
4
+ const COLOR_MODE_COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
5
+ const DEFAULT_COLOR_MODE_PREFERENCE: ColorModePreference = "system";
6
+
7
+ /**
8
+ * The user's color mode as a cookie ref shared by every caller: assign it to
9
+ * change the theme. The server reads the same cookie, so an explicit `light`
10
+ * or `dark` is already in the rendered HTML; `system` resolves in the browser.
11
+ */
12
+ export const useColorModePreference = () => {
13
+ return useDmsCookie<ColorModePreference>(COLOR_MODE_COOKIE, {
14
+ default: () => DEFAULT_COLOR_MODE_PREFERENCE,
15
+ maxAge: COLOR_MODE_COOKIE_MAX_AGE,
16
+ });
17
+ };
@@ -3,7 +3,7 @@ import ThemePreview from "../../build/components/pages/settings/theme/ThemePrevi
3
3
  import ScalePreview from "../../build/components/pages/settings/theme/ScalePreview.vue";
4
4
  import CssVariablesList from "../../build/components/pages/settings/theme/CssVariablesList.vue";
5
5
 
6
- const colorOptions = [
6
+ const colorOptions: ColorModeOption[] = [
7
7
  {
8
8
  value: "system",
9
9
  label: "$page.settings.appearance.system",
@@ -36,7 +36,7 @@ const scaleOptions: ScaleOption[] = [
36
36
  },
37
37
  ];
38
38
 
39
- const colorMode = useColorMode();
39
+ const colorModePreference = useColorModePreference();
40
40
  const interfaceScale = useInterfaceScale();
41
41
  const { processI18n } = useTranslation();
42
42
  </script>
@@ -60,13 +60,13 @@ const { processI18n } = useTranslation();
60
60
  :key="`color-option-${index}`"
61
61
  class="group bg-elevated relative flex cursor-pointer flex-col overflow-hidden rounded-xl transition-all"
62
62
  :class="
63
- colorMode.preference === option.value
63
+ colorModePreference === option.value
64
64
  ? 'outline-primary outline-2 outline-offset-2'
65
65
  : 'ring-default hover:ring-accented ring hover:-translate-y-0.5'
66
66
  "
67
67
  >
68
68
  <input
69
- v-model="colorMode.preference"
69
+ v-model="colorModePreference"
70
70
  type="radio"
71
71
  :value="option.value"
72
72
  class="sr-only"
@@ -85,13 +85,13 @@ const { processI18n } = useTranslation();
85
85
  <span
86
86
  class="ring-accented grid size-4 shrink-0 place-items-center rounded-full ring ring-inset"
87
87
  :class="
88
- colorMode.preference === option.value
88
+ colorModePreference === option.value
89
89
  ? 'bg-primary ring-primary'
90
90
  : ''
91
91
  "
92
92
  >
93
93
  <span
94
- v-if="colorMode.preference === option.value"
94
+ v-if="colorModePreference === option.value"
95
95
  class="bg-default size-1.5 rounded-full"
96
96
  />
97
97
  </span>
@@ -0,0 +1,100 @@
1
+ import {
2
+ type BasicColorSchema,
3
+ useColorMode as useVueUseColorMode,
4
+ } from "@vueuse/core";
5
+ import { type Ref, watch } from "vue";
6
+ import type { ColorModePreference } from "../composables/general/types";
7
+ import {
8
+ COLOR_MODE_COOKIE,
9
+ useColorModePreference,
10
+ } from "../composables/general/useColorModePreference";
11
+
12
+ type ExplicitColorMode = Exclude<ColorModePreference, "system">;
13
+
14
+ /** The preferences that pin their class on `<html>`; any other follows the system. */
15
+ const EXPLICIT_COLOR_MODES: ExplicitColorMode[] = ["light", "dark"];
16
+ const SYSTEM_PREFERENCE: ColorModePreference = "system";
17
+ const VUEUSE_SYSTEM_MODE: BasicColorSchema = "auto";
18
+ /**
19
+ * vueuse's default key. Nuxt UI's `useDark()`, installed with the app, and its
20
+ * color-mode components (`UDashboardSearch`'s theme group…) all read it.
21
+ */
22
+ const VUEUSE_STORAGE_KEY = "vueuse-color-scheme";
23
+ const DARK_SCHEME_QUERY = "(prefers-color-scheme: dark)";
24
+ const PRE_PAINT_SCRIPT_ID = "dms-color-mode";
25
+
26
+ /**
27
+ * Runs in `<head>` before first paint, and so before the entry module installs
28
+ * Nuxt UI: it hands vueuse the cookie's mode, which `useDark()` reads on boot,
29
+ * and sets the `<html>` class, resolving `system` itself. The cookie is read
30
+ * the way `useDmsCookie` writes it (URI-encoded JSON), falling back to the raw
31
+ * value. Source text rather than a serialized function, which a bundler could
32
+ * fill with helpers the page does not have.
33
+ */
34
+ const PRE_PAINT_SCRIPT = `(() => {
35
+ const modes = ${JSON.stringify(EXPLICIT_COLOR_MODES)};
36
+ const prefix = ${JSON.stringify(`${COLOR_MODE_COOKIE}=`)};
37
+ const entry = document.cookie.split("; ").find((cookie) => cookie.startsWith(prefix)) ?? "";
38
+ let preference = "";
39
+ try {
40
+ preference = decodeURIComponent(entry.slice(prefix.length));
41
+ preference = JSON.parse(preference);
42
+ } catch {}
43
+ const mode = modes.includes(preference) ? preference : ${JSON.stringify(VUEUSE_SYSTEM_MODE)};
44
+ try {
45
+ localStorage.setItem(${JSON.stringify(VUEUSE_STORAGE_KEY)}, mode);
46
+ } catch {}
47
+ const system = matchMedia(${JSON.stringify(DARK_SCHEME_QUERY)}).matches ? "dark" : "light";
48
+ document.documentElement.classList.remove(...modes);
49
+ document.documentElement.classList.add(modes.includes(mode) ? mode : system);
50
+ })();`;
51
+
52
+ function explicitColorMode(value: string): ExplicitColorMode | undefined {
53
+ return EXPLICIT_COLOR_MODES.find((mode) => mode === value);
54
+ }
55
+
56
+ /**
57
+ * Mirrors the cookie, the source of truth, into the vueuse store Nuxt UI
58
+ * shares, and a change made from a Nuxt UI component back into the cookie.
59
+ * Each side is written only when it would change, so neither echoes the other.
60
+ */
61
+ function syncWithVueUse(preference: Ref<ColorModePreference>): void {
62
+ const { store } = useVueUseColorMode({ storageKey: VUEUSE_STORAGE_KEY });
63
+ watch(
64
+ preference,
65
+ (next) => {
66
+ const mode = explicitColorMode(next) ?? VUEUSE_SYSTEM_MODE;
67
+ if (store.value !== mode) store.value = mode;
68
+ },
69
+ { immediate: true },
70
+ );
71
+ watch(store, (next) => {
72
+ const nextPreference = explicitColorMode(next) ?? SYSTEM_PREFERENCE;
73
+ if (preference.value !== nextPreference) preference.value = nextPreference;
74
+ });
75
+ }
76
+
77
+ /**
78
+ * The server renders an explicit preference's class, so the first paint is
79
+ * right before any script runs, and the pre-paint script, which only matters
80
+ * before that paint: inserted later by the browser head it would run after
81
+ * boot and redo what the sync already did. In the browser the class belongs to
82
+ * vueuse, which Nuxt UI already drives it with: were unhead tracking it as
83
+ * well, it would remove it when `dark` gives way to a `system` that still
84
+ * resolves dark, and vueuse, seeing no change, would not put it back. A page
85
+ * rendered without the script (client-side fallback) is corrected by the sync,
86
+ * which applies the cookie on boot.
87
+ */
88
+ export default defineDmsPlugin(() => {
89
+ const preference = useColorModePreference();
90
+
91
+ if (!import.meta.env.SSR) {
92
+ syncWithVueUse(preference);
93
+ return;
94
+ }
95
+ const mode = explicitColorMode(preference.value);
96
+ useHead({
97
+ htmlAttrs: mode ? { class: mode } : {},
98
+ script: [{ id: PRE_PAINT_SCRIPT_ID, innerHTML: PRE_PAINT_SCRIPT }],
99
+ });
100
+ });
@@ -1,7 +1,10 @@
1
1
  <script setup lang="ts">
2
2
  import type { FormProps } from "../../composables/form/types";
3
3
  import type { FormFieldValue } from "../../composables/form/types/value";
4
- import { cloneFormValue } from "../../composables/form/useForm";
4
+ import {
5
+ cloneFormValue,
6
+ isFieldMarkedRequired,
7
+ } from "../../composables/form/useForm";
5
8
  import {
6
9
  FORM_VALIDATOR_KEY,
7
10
  type FormValidator,
@@ -38,6 +41,7 @@ const {
38
41
  allFields,
39
42
  disabledFields,
40
43
  hiddenFields,
44
+ requiredFields,
41
45
  isFieldGroup,
42
46
  submitSucceeded,
43
47
  resolvedFetchUrl,
@@ -200,6 +204,23 @@ function isGroupVisible(group: { fields: FormField[] }): boolean {
200
204
  return group.fields.some((field) => !isFieldHidden(field));
201
205
  }
202
206
 
207
+ function isFieldRequired(field: FormField): boolean {
208
+ return isFieldMarkedRequired(
209
+ field,
210
+ disabledFields.value,
211
+ hiddenFields.value,
212
+ requiredFields.value,
213
+ );
214
+ }
215
+
216
+ function isGroupRequired(group: { fields: FormField[] }): boolean {
217
+ return group.fields.some(isFieldRequired);
218
+ }
219
+
220
+ const hasRequiredFields = computed(() =>
221
+ toValue(allFields).some(isFieldRequired),
222
+ );
223
+
203
224
  function shouldShowDisplay(field: FormField): boolean {
204
225
  return isFieldDisabled(field) && !!field.type;
205
226
  }
@@ -379,6 +400,13 @@ onUnmounted(async () => {
379
400
  class="text-default block text-base font-semibold sm:text-sm"
380
401
  >
381
402
  {{ processI18n(item.label || "") }}
403
+ <span
404
+ v-if="isGroupRequired(item)"
405
+ class="text-error ms-0.5"
406
+ aria-hidden="true"
407
+ >
408
+ *
409
+ </span>
382
410
  </label>
383
411
  <p v-if="item.description" class="text-dimmed text-xs">
384
412
  {{ processI18n(item.description || "") }}
@@ -453,6 +481,13 @@ onUnmounted(async () => {
453
481
  class="text-default block text-base font-semibold sm:text-sm"
454
482
  >
455
483
  {{ processI18n(item.label || "") }}
484
+ <span
485
+ v-if="isFieldRequired(item)"
486
+ class="text-error ms-0.5"
487
+ aria-hidden="true"
488
+ >
489
+ *
490
+ </span>
456
491
  </label>
457
492
  <p v-if="item.description" class="text-dimmed text-xs">
458
493
  {{ processI18n(item.description || "") }}
@@ -509,6 +544,11 @@ onUnmounted(async () => {
509
544
  </template>
510
545
  </div>
511
546
 
547
+ <p v-if="hasRequiredFields" class="text-dimmed mt-6 text-xs">
548
+ <span class="text-error" aria-hidden="true">*</span>
549
+ {{ $t("dms.form.required_legend") }}
550
+ </p>
551
+
512
552
  <template v-if="showActions">
513
553
  <section class="mt-6 flex justify-end gap-2">
514
554
  <UButton
@@ -11,27 +11,39 @@ import {
11
11
  type CalendarDate,
12
12
  } from "@internationalized/date";
13
13
 
14
+ // Mid-selection, the range calendar emits a range whose end is still unset.
14
15
  interface StrictDateRange {
15
- start: CalendarDate;
16
- end: CalendarDate;
16
+ start: CalendarDate | undefined;
17
+ end: CalendarDate | undefined;
17
18
  }
18
19
 
19
20
  interface StringDateRange {
20
- start: string;
21
- end: string;
21
+ start: string | undefined;
22
+ end: string | undefined;
22
23
  }
23
24
 
24
25
  interface NativeDateRange {
25
- start: Date;
26
- end: Date;
26
+ start: Date | undefined;
27
+ end: Date | undefined;
27
28
  }
28
29
 
29
- type DateValue = CalendarDate | StrictDateRange | string | null | undefined;
30
+ type DateValue =
31
+ | CalendarDate
32
+ | StrictDateRange
33
+ | string
34
+ | (string | Date | CalendarDate)[]
35
+ | null
36
+ | undefined;
30
37
 
31
38
  const props = defineProps<CalendarProps<R, M>>();
32
39
  const emits = defineEmits<{
33
40
  "update:modelValue": [
34
- value: string | { start: string; end: string } | null | undefined,
41
+ value:
42
+ | string
43
+ | { start: string | undefined; end: string | undefined }
44
+ | string[]
45
+ | null
46
+ | undefined,
35
47
  ];
36
48
  "update:placeholder": [date: CalendarDate];
37
49
  "update:startValue": [date: CalendarDate | undefined];
@@ -42,22 +54,25 @@ function convertIsoStringToCalendarDate(value: string): CalendarDate {
42
54
  return parseDate(value.split("T")[0]!);
43
55
  }
44
56
 
45
- function convertDateRangeValue(
46
- rangeValue: StringDateRange | StrictDateRange | NativeDateRange,
47
- ): StrictDateRange | undefined {
48
- if (isString(rangeValue.start) && isString(rangeValue.end)) {
49
- return {
50
- start: convertIsoStringToCalendarDate(rangeValue.start),
51
- end: convertIsoStringToCalendarDate(rangeValue.end),
52
- };
57
+ function convertToCalendarDate(
58
+ value: string | Date | CalendarDate | undefined,
59
+ ): CalendarDate | undefined {
60
+ if (isString(value)) {
61
+ return convertIsoStringToCalendarDate(value);
53
62
  }
54
- if (rangeValue.start instanceof Date && rangeValue.end instanceof Date) {
55
- return {
56
- start: toCalendarDate(fromDate(rangeValue.start, "UTC")),
57
- end: toCalendarDate(fromDate(rangeValue.end, "UTC")),
58
- };
63
+ if (value instanceof Date) {
64
+ return toCalendarDate(fromDate(value, "UTC"));
59
65
  }
60
- return undefined;
66
+ return value;
67
+ }
68
+
69
+ function convertDateRangeValue(
70
+ rangeValue: StringDateRange | StrictDateRange | NativeDateRange,
71
+ ): StrictDateRange {
72
+ return {
73
+ start: convertToCalendarDate(rangeValue.start),
74
+ end: convertToCalendarDate(rangeValue.end),
75
+ };
61
76
  }
62
77
 
63
78
  function isDateRangeValue(
@@ -73,7 +88,10 @@ function convertModelValue(value: DateValue): DateValue {
73
88
  return convertIsoStringToCalendarDate(value);
74
89
  }
75
90
  if (isDateRangeValue(value)) {
76
- return convertDateRangeValue(value) ?? value;
91
+ return convertDateRangeValue(value);
92
+ }
93
+ if (Array.isArray(value)) {
94
+ return value.map(convertToCalendarDate) as CalendarDate[];
77
95
  }
78
96
  return value;
79
97
  }
@@ -88,7 +106,12 @@ type EmitValue = unknown;
88
106
 
89
107
  const wrappedEmits = (event: EmitEvent, value: EmitValue) => {
90
108
  if (event === "update:modelValue" && value) {
91
- if (
109
+ if (Array.isArray(value)) {
110
+ const isoStrings = (value as CalendarDate[]).map((date) =>
111
+ date.toString(),
112
+ );
113
+ emits("update:modelValue", isoStrings);
114
+ } else if (
92
115
  isObject(value) &&
93
116
  "year" in value &&
94
117
  "month" in value &&
@@ -98,8 +121,8 @@ const wrappedEmits = (event: EmitEvent, value: EmitValue) => {
98
121
  emits("update:modelValue", isoString);
99
122
  } else if (isObject(value) && "start" in value && "end" in value) {
100
123
  const dateRange = value as unknown as StrictDateRange;
101
- const startIso = dateRange.start.toString();
102
- const endIso = dateRange.end.toString();
124
+ const startIso = dateRange.start?.toString();
125
+ const endIso = dateRange.end?.toString();
103
126
  emits("update:modelValue", { start: startIso, end: endIso });
104
127
  } else {
105
128
  emits("update:modelValue", value as string | null | undefined);