@nexdom/uimed-vue 2.0.0-beta.32 → 2.0.0-beta.33

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/AGENTS.md CHANGED
@@ -205,7 +205,7 @@ Use an existing composable (e.g. `use-toast`) as the reference, and deliver in t
205
205
  - Component layout: `src/components/<name>/<name>.vue`, `types.ts` for prop/option types, `__tests__/<name>.test.ts` for unit tests. Components that belong to a group live in the group's folder (e.g. the internal `src/components/dialogs/toast.vue`).
206
206
  - Composables live in a group folder: `src/composables/<group>/<name>.ts`, with `types.ts` and `__tests__/` in the group folder (e.g. `src/composables/dialogs/use-toast.ts`). A composable (`use-*.ts`) must depend on `vue` or `vue-router`, directly or through other modules (enforced by dependency-cruiser's `composables-use-vue` rule).
207
207
  - Library-wide configuration constants that aren't components or composables live in `src/consts/<name>.ts` (e.g. `src/consts/locale.ts`, the language set by `createUimed()` and `vueTestUtilsPluginUimed()`).
208
- - Pure helpers that don't use Vue live in `src/utils/<name>.ts`, with tests in `src/utils/__tests__/` (e.g. `src/utils/is-deep-equal.ts`).
208
+ - Pure helpers that don't use Vue live in `src/utils/<name>.ts`, with tests in `src/utils/__tests__/`. Generic helpers that any TypeScript project could use (e.g. `isDeepEqual`) belong in `@nexdom/shared` instead.
209
209
  - Public components/composables are re-exported from `src/components/index.ts` and `src/composables/index.ts`. Prop types stay internal (`types.ts` is not re-exported); consumers derive them with `ComponentProps` (see [Usage](#usage)).
210
210
  - Every publicly exported component must use the `U` prefix on its export identifier (e.g., `UButton`, `UMain`), while internal file names and component names remain unprefixed.
211
211
  - Use [JSDoc](https://jsdoc.app/about-getting-started) on every method/prop/type intended to be part of the public API — it's the primary documentation surface and supports markdown/code examples.
@@ -433,8 +433,8 @@ declare const __VLS_export$14: import("vue", { with: { "resolution-mode": "impor
433
433
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
434
434
  }>, {
435
435
  variant: TextFieldVariant;
436
- clearable: boolean;
437
436
  type: TextFieldType;
437
+ clearable: boolean;
438
438
  }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
439
439
  //#endregion
440
440
  //#region src/components/inputs/checkbox/types.d.ts
@@ -333,7 +333,11 @@ var app_bar_default = /* @__PURE__ */ defineComponent({
333
333
  class: "py-2 ml-5 mr-n3",
334
334
  cover: ""
335
335
  }, null, 8, ["src"])) : createCommentVNode("v-if", true),
336
- props.title ? (openBlock(), createBlock(unref(VAppBarTitle), { key: 2 }, {
336
+ props.title ? (openBlock(), createBlock(unref(VAppBarTitle), {
337
+ key: 2,
338
+ role: "heading",
339
+ "aria-level": "1"
340
+ }, {
337
341
  default: withCtx(() => [createTextVNode(toDisplayString(props.title), 1)]),
338
342
  _: 1
339
343
  })) : createCommentVNode("v-if", true)
@@ -1,5 +1,6 @@
1
1
  import { i as useDialog, o as useToast, t as openDialog } from "./use-dialog-Ck2_ZW7T.js";
2
2
  import { computed, onActivated, onDeactivated, onMounted, onUnmounted, ref, toValue, watch } from "vue";
3
+ import { isDeepEqual } from "@nexdom/shared/utils";
3
4
  import { onBeforeRouteLeave } from "vue-router";
4
5
  //#region src/composables/dialogs/use-run-or-toast.ts
5
6
  const { toast } = useToast();
@@ -115,32 +116,6 @@ function useConfirm() {
115
116
  };
116
117
  }
117
118
  //#endregion
118
- //#region src/utils/is-deep-equal.ts
119
- /**
120
- * Compares two values in depth, as a form would: key order doesn't matter, a key holding
121
- * `undefined` equals a missing key, dates are compared by their time and arrays item by item, in
122
- * order. Only plain objects are compared by their keys: other objects (e.g. `File`, `Map`, `Set`
123
- * or class instances) and the remaining values are compared with `Object.is`, so `NaN` equals
124
- * `NaN`, `0` differs from `-0`, and `null`, `""` and `undefined` differ from each other.
125
- */
126
- function isDeepEqual(a, b) {
127
- if (Object.is(a, b)) return true;
128
- if (a instanceof Date && b instanceof Date) return Object.is(a.getTime(), b.getTime());
129
- if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((item, index) => isDeepEqual(item, b[index]));
130
- if (!isPlainObject(a) || !isPlainObject(b)) return false;
131
- return [.../* @__PURE__ */ new Set([...Object.keys(a), ...Object.keys(b)])].every((key) => isDeepEqual(a[key], b[key]));
132
- }
133
- /**
134
- * Whether the value is an object literal or an object without prototype. Checks the prototype's
135
- * prototype instead of comparing it to `Object.prototype`, since objects from other realms (e.g.
136
- * iframes, or `structuredClone` in some test environments) have their own `Object.prototype`.
137
- */
138
- function isPlainObject(value) {
139
- if (value == null) return false;
140
- const prototype = Object.getPrototypeOf(value);
141
- return prototype === null || Object.getPrototypeOf(prototype) === null;
142
- }
143
- //#endregion
144
119
  //#region src/composables/navigation/use-unsaved-changes.ts
145
120
  /**
146
121
  * Calls whose page is on display with unsaved changes. The `beforeunload` listener is registered
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexdom/uimed-vue",
3
- "version": "2.0.0-beta.32",
3
+ "version": "2.0.0-beta.33",
4
4
  "description": "A ui framework for NEXDOM applications.",
5
5
  "keywords": [
6
6
  "lib",
@@ -55,7 +55,7 @@
55
55
  "@commitlint/cli": "^21.2.1",
56
56
  "@commitlint/config-conventional": "^21.2.0",
57
57
  "@mdi/font": "^7.4.47",
58
- "@nexdom/shared": "^2.1.1",
58
+ "@nexdom/shared": "^2.3.0",
59
59
  "@playwright/test": "^1.62.1",
60
60
  "@sonar/scan": "^5.0.0",
61
61
  "@stryker-mutator/core": "^10.0.0",
@@ -87,7 +87,7 @@
87
87
  },
88
88
  "peerDependencies": {
89
89
  "@mdi/font": "^7.4.47",
90
- "@nexdom/shared": "^2.1.1",
90
+ "@nexdom/shared": "^2.3.0",
91
91
  "resize-observer-polyfill": "^1.5.1",
92
92
  "sass-embedded": "^1.103.1",
93
93
  "vite-plus": "^1.0.0",