@antelopejs/interface-dms 0.9.0 → 0.9.1

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 CHANGED
@@ -1,9 +1,51 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.9.1
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.9.0...v0.9.1)
6
+
7
+ ### 🚀 Enhancements
8
+
9
+ - **menu:** Support nested dynamic menu entries ([#446](https://github.com/AntelopeJS/dms/pull/446))
10
+
11
+ ### 🩹 Fixes
12
+
13
+ - **release:** Build the interface before the release lint ([#454](https://github.com/AntelopeJS/dms/pull/454))
14
+
15
+ ### 📖 Documentation
16
+
17
+ - **changelog:** Upgrade notes of dms 0.11.0 ([#440](https://github.com/AntelopeJS/dms/pull/440))
18
+
19
+ ### 📦 Build
20
+
21
+ - Adopt the AntelopeJS guardrail pack ([#444](https://github.com/AntelopeJS/dms/pull/444))
22
+
23
+ ### 🏡 Chore
24
+
25
+ - **release:** @antelopejs/dms v0.11.0 ([65235375](https://github.com/AntelopeJS/dms/commit/65235375))
26
+ - Configure Renovate with the shared preset ([#445](https://github.com/AntelopeJS/dms/pull/445))
27
+
28
+ ### 🤖 CI
29
+
30
+ - Run docs-playground on main pushes only ([#443](https://github.com/AntelopeJS/dms/pull/443))
31
+
32
+ ### ❤️ Contributors
33
+
34
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
35
+
3
36
  ## v0.9.0
4
37
 
5
38
  [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.8.0...v0.9.0)
6
39
 
40
+ ### Upgrade notes
41
+
42
+ - **Breaking:** `DefaultLayoutOptions.record` is a `PageRecordLoader` instead of `{ fetchUrl }`, and `PageRecordSource` is removed ([#426](https://github.com/AntelopeJS/dms/pull/426)). `record: { fetchUrl: "/api/sites/get?id={{params.id}}" }` becomes `record: ({ params }) => …` reading the row, in `PageLayoutRequest`'s context.
43
+ - **Breaking:** the default tenant is provisioned through `TENANT_BEING_PROVISIONED` ([#420](https://github.com/AntelopeJS/dms/pull/420)). `TenantProvisioningHookPayload.userId` is now `string | undefined`, and an emitter calling `ExecuteHooks(Hook.TENANT_BEING_PROVISIONED, …)` directly no longer gets the schema instance registered: use `ProvisionTenant`.
44
+ - **Behavior change:** in generated forms, the fallback language of a `@Localized` field is required ([#427](https://github.com/AntelopeJS/dms/pull/427)). `FormField.fallbackLocale` carries it, and the column's server validator refuses a localized value that fills another language but not that one.
45
+ - Table view columns take `visibleWhen` and `disabledWhen` conditions, carried to `FormField` ([#431](https://github.com/AntelopeJS/dms/pull/431)). The `new` and `edit` data routes enforce them: a hidden field is neither required nor written, an edit that hides a `visibleWhen` field clears its stored value, and a `disabledWhen` field keeps its stored value.
46
+ - Relations answer "Not found" for unanswered ids; the cascader reads by `?ids=`; lists need the `Foreign` join ([#421](https://github.com/AntelopeJS/dms/pull/421)). The dev manifest lists the origins it rewrites (`originRewrites`, [#434](https://github.com/AntelopeJS/dms/pull/434)).
47
+ - Requires `@antelopejs/interface-data-api` `>=0.4.0` (structured `400 { code, fields }`), `@antelopejs/interface-database-decorators` `>=0.1.10` and `@antelopejs/interface-database` `>=0.1.11`. Modules implementing interface-dms move to `>=0.9.0 <0.10.0`; `@antelopejs/dms` 0.11 implements it.
48
+
7
49
  ### 🚀 Enhancements
8
50
 
9
51
  - **frontend:** List the origins the dev manifest rewrites ([#434](https://github.com/AntelopeJS/dms/pull/434))
@@ -338,7 +338,9 @@ export interface PageInfo extends CategoryInfo {
338
338
  */
339
339
  export interface DynamicMenuItem {
340
340
  /**
341
- * Unique within the provider's category; becomes the entry's `fullId` suffix.
341
+ * Unique among siblings; appended to the parent's `fullId` with a dot.
342
+ * Top-level entries use the provider category as their parent.
343
+ * Duplicate sibling ids are skipped with a warning; the first admitted entry wins.
342
344
  * Dots separate the levels of a `fullId`, so an id may not contain one — an
343
345
  * entry that does is skipped with a warning.
344
346
  */
@@ -362,6 +364,10 @@ export interface DynamicMenuItem {
362
364
  icon?: string;
363
365
  order?: number;
364
366
  variant?: MenuItemVariant;
367
+ /**
368
+ * Status dot, trailing on leaves and on the leading icon for parents.
369
+ * An entry with children and a status should declare an icon.
370
+ */
365
371
  status?: MenuItemStatus;
366
372
  /** Short count or label rendered at the end of the entry (`3`, `new`). */
367
373
  badge?: string;
@@ -378,6 +384,13 @@ export interface DynamicMenuItem {
378
384
  * `<recoveryPageFullId>.settle`.
379
385
  */
380
386
  permissionId?: string;
387
+ /**
388
+ * Nested menu entries, each admitted on its own target access and permission.
389
+ * An unadmitted parent drops its subtree. Omitted and empty arrays mean a leaf.
390
+ * The maximum depth is 3, counting provider entries as level 1.
391
+ * Deeper entries are dropped with a warning.
392
+ */
393
+ children?: readonly DynamicMenuItem[];
381
394
  }
382
395
  /**
383
396
  * Resolves the dynamic entries of a category for one request. `permissions` is
@@ -5,7 +5,11 @@
5
5
  "composite": false,
6
6
  "incremental": false,
7
7
  "tsBuildInfoFile": null,
8
- "noEmit": true
8
+ "noEmit": true,
9
+ "paths": {
10
+ "@antelopejs/interface-dms": ["../src/index.ts"],
11
+ "@antelopejs/interface-dms/*": ["../src/*"]
12
+ }
9
13
  },
10
14
  "include": ["../src/**/*.ts", "**/*.ts"]
11
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-dms",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Public AntelopeJS interfaces of the DMS: pages, components, permissions, tenancy, auth, notifications and HTML rendering.",
5
5
  "keywords": [
6
6
  "antelopejs",
@@ -34,9 +34,6 @@
34
34
  "build": "rimraf dist && tsc",
35
35
  "typecheck": "tsc --noEmit",
36
36
  "test": "pnpm run build && node --test tests/*.test.cjs",
37
- "lint": "oxlint && oxfmt --check .",
38
- "lint:fix": "oxlint --fix --max-warnings=1000000 && oxfmt .",
39
- "format": "oxfmt .",
40
37
  "prepack": "pnpm run build && pnpm run check:exports && pnpm run check:proxies",
41
38
  "check:exports": "node scripts/check-exports.mjs",
42
39
  "check:proxies": "node scripts/check-proxies.mjs",
@@ -69,9 +66,6 @@
69
66
  "@types/node": "^24.0.0",
70
67
  "@types/randomstring": "^1.3.0",
71
68
  "knip": "^6.34.0",
72
- "oxfmt": "^0.66.0",
73
- "oxlint": "1.81.0",
74
- "oxlint-tsgolint": "^7.0.2001",
75
69
  "release-it": "^19.2.4",
76
70
  "release-it-changelogen": "^0.1.0",
77
71
  "rimraf": "^6.1.3",