@conduction/nextcloud-vue 2.145.0 → 2.146.0
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/dist/esm/components/CnAiCompanion/CnAiChatPanel.vue2.js.map +1 -1
- package/dist/esm/components/CnAiCompanion/CnAiChatPanel.vue3.js.map +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue.js +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +12 -2
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +42 -30
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +22 -0
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +2 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue3.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +46 -8
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js +3 -3
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue.js +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js +1 -0
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js.map +1 -1
- package/dist/esm/components/CnNotificationMatrix/CnNotificationMatrix.vue.js +1 -1
- package/dist/esm/components/CnNotificationMatrix/CnNotificationMatrix.vue2.js +21 -2
- package/dist/esm/components/CnNotificationMatrix/CnNotificationMatrix.vue2.js.map +1 -1
- package/dist/esm/components/CnNotificationMatrix/CnNotificationMatrix.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue.js +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +601 -280
- package/dist/esm/utils/detailObjectContext.js +7 -2
- package/dist/esm/utils/detailObjectContext.js.map +1 -1
- package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/esm/utils/visibleWhen.js +6 -0
- package/dist/esm/utils/visibleWhen.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +175 -63
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +601 -280
- package/package.json +1 -1
- package/src/components/CnAiCompanion/CnAiChatPanel.vue +3 -0
- package/src/components/CnChecklistRunWidget/CnChecklistRunWidget.vue +4 -2
- package/src/components/CnDataTable/CnDataTable.vue +19 -2
- package/src/components/CnDetailPage/CnDetailPage.md +1 -0
- package/src/components/CnDetailPage/CnDetailPage.vue +23 -0
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue +1 -0
- package/src/components/CnFactsWidget/CnFactsWidget.vue +74 -9
- package/src/components/CnNotesCard/CnNotesCard.vue +7 -2
- package/src/components/CnNotificationMatrix/CnNotificationMatrix.vue +21 -2
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +1 -0
- package/src/components/CnRetentionWidget/CnRetentionWidget.vue +2 -0
- package/src/components/CnTabsWidget/CnTabsWidget.vue +6 -1
- package/src/css/dialog.css +7 -0
- package/src/css/look-board-detail.css +152 -8
- package/src/css/look-board-index.css +78 -0
- package/src/css/look-board.css +33 -3
- package/src/css/table.css +9 -0
- package/src/schemas/app-manifest-v2.schema.json +2 -2
- package/src/utils/detailObjectContext.js +7 -2
- package/src/utils/validateManifestV2.compiled.js +2 -2
- package/src/utils/visibleWhen.js +6 -0
|
@@ -47,8 +47,10 @@ function unwrap(v) {
|
|
|
47
47
|
*
|
|
48
48
|
* @param {object|null} objectCtx The `cnObjectContext` inject (ref or plain object).
|
|
49
49
|
* @param {object|null} detailCtx The `cnDetailObjectContext` inject (`{ value }` holder).
|
|
50
|
-
* @return {{objectId: (string|number|null), object: (object|null), register: string, schema: (string|object)}|null}
|
|
51
|
-
* The merged context, or null when neither inject resolves.
|
|
50
|
+
* @return {{objectId: (string|number|null), object: (object|null), register: string, schema: (string|object), context?: object}|null}
|
|
51
|
+
* The merged context, or null when neither inject resolves. `context` is the
|
|
52
|
+
* records the page's conditions name (`@context.<name>`), when the primary
|
|
53
|
+
* inject carries them.
|
|
52
54
|
*/
|
|
53
55
|
function resolveObjectTokenContext(objectCtx, detailCtx) {
|
|
54
56
|
const primary = unwrap(objectCtx);
|
|
@@ -81,6 +83,9 @@ function resolveObjectTokenContext(objectCtx, detailCtx) {
|
|
|
81
83
|
if (primary.schema) {
|
|
82
84
|
out.schema = primary.schema;
|
|
83
85
|
}
|
|
86
|
+
if (primary.context && typeof primary.context === 'object') {
|
|
87
|
+
out.context = primary.context;
|
|
88
|
+
}
|
|
84
89
|
}
|
|
85
90
|
return out
|
|
86
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detailObjectContext.js","sources":["../../../src/utils/detailObjectContext.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * detailObjectContext — resolve the object token context (`{ objectId,\n * object, register, schema }`) for `@objectId` / `@object.<field>` token\n * resolution from EITHER detail-surface provider, in the same order the\n * Wave-1 audit-trail widget established:\n *\n * 1. `cnObjectContext` — provided by CnDetailPage's config grid (a\n * reactive `{ objectId, object, register, schema }` ref, kept current\n * as the object loads) and by CnAddWidgetModal's data sub-form.\n * 2. `cnDetailObjectContext` — provided by CnPageRenderer for the v2\n * slot grid (a `{ value: { objectData, schema, objectType, objectId,\n * register, store } | null }` holder; note the object lives under\n * `objectData` there).\n *\n * The holder's fields BACKFILL whatever the primary inject leaves null,\n * so a widget mounted where both providers exist never loses `@object.*`\n * resolution to a not-yet-loaded primary context. Returns `null` when\n * neither surface provides anything (dashboards without object scope).\n *\n * Internal helper (not a public export) — used by the endpoint-bound\n * widgets (chart / stat / delta / object-table) so ZGW-style sidebar tabs\n * can interpolate the parent object into endpoint params + source filters\n * (#91 Wave 3).\n *\n * @module utils/detailObjectContext\n */\n\n/**\n * Unwrap a value that may be a plain object, a Vue ref, or a `{ value }`\n * holder.\n *\n * @param {unknown} v The injected value.\n * @return {object|null} The unwrapped bag, or null.\n */\nfunction unwrap(v) {\n\tif (!v || typeof v !== 'object') {\n\t\treturn null\n\t}\n\treturn ('value' in v) ? (v.value || null) : v\n}\n\n/**\n * Build the object token context from the two detail-surface injects.\n *\n * @param {object|null} objectCtx The `cnObjectContext` inject (ref or plain object).\n * @param {object|null} detailCtx The `cnDetailObjectContext` inject (`{ value }` holder).\n * @return {{objectId: (string|number|null), object: (object|null), register: string, schema: (string|object)}|null}\n * The merged context, or null when neither inject resolves.\n */\nexport function resolveObjectTokenContext(objectCtx, detailCtx) {\n\tconst primary = unwrap(objectCtx)\n\tconst holder = unwrap(detailCtx)\n\tif (!primary && !holder) {\n\t\treturn null\n\t}\n\tconst fromHolder = holder\n\t\t? {\n\t\t\t\tobjectId: holder.objectId ?? null,\n\t\t\t\t// CnPageRenderer's holder carries the loaded object as `objectData`.\n\t\t\t\tobject: holder.object || holder.objectData || null,\n\t\t\t\tregister: holder.register || '',\n\t\t\t\tschema: holder.schema || '',\n\t\t\t}\n\t\t: {}\n\tconst out = { objectId: null, object: null, register: '', schema: '', ...fromHolder }\n\tif (primary) {\n\t\t// The primary (CnDetailPage) context wins per field, but its null /\n\t\t// empty fields fall back to the holder's values.\n\t\tif (primary.objectId !== undefined && primary.objectId !== null) {\n\t\t\tout.objectId = primary.objectId\n\t\t}\n\t\tif (primary.object) {\n\t\t\tout.object = primary.object\n\t\t}\n\t\tif (primary.register) {\n\t\t\tout.register = primary.register\n\t\t}\n\t\tif (primary.schema) {\n\t\t\tout.schema = primary.schema\n\t\t}\n\t}\n\treturn out\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,CAAC,EAAE;AACnB,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE;AAChE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAC;AAClC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAC;AACjC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE;AAC1B,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,MAAM;AAC1B,IAAI;AACJ,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;AACrC;AACA,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;AACtD,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;AACnC,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;AAC/B,IAAI;AACJ,IAAI,GAAE;AACN,CAAC,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,GAAE;AACtF,CAAC,IAAI,OAAO,EAAE;AACd;AACA;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE;AACnE,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAQ;AAClC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,OAAM;AAC9B,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxB,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAQ;AAClC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,OAAM;AAC9B,GAAG;AACH,EAAE;AACF,CAAC,OAAO,GAAG;AACX;;;;"}
|
|
1
|
+
{"version":3,"file":"detailObjectContext.js","sources":["../../../src/utils/detailObjectContext.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * detailObjectContext — resolve the object token context (`{ objectId,\n * object, register, schema }`) for `@objectId` / `@object.<field>` token\n * resolution from EITHER detail-surface provider, in the same order the\n * Wave-1 audit-trail widget established:\n *\n * 1. `cnObjectContext` — provided by CnDetailPage's config grid (a\n * reactive `{ objectId, object, register, schema }` ref, kept current\n * as the object loads) and by CnAddWidgetModal's data sub-form.\n * 2. `cnDetailObjectContext` — provided by CnPageRenderer for the v2\n * slot grid (a `{ value: { objectData, schema, objectType, objectId,\n * register, store } | null }` holder; note the object lives under\n * `objectData` there).\n *\n * The holder's fields BACKFILL whatever the primary inject leaves null,\n * so a widget mounted where both providers exist never loses `@object.*`\n * resolution to a not-yet-loaded primary context. Returns `null` when\n * neither surface provides anything (dashboards without object scope).\n *\n * Internal helper (not a public export) — used by the endpoint-bound\n * widgets (chart / stat / delta / object-table) so ZGW-style sidebar tabs\n * can interpolate the parent object into endpoint params + source filters\n * (#91 Wave 3).\n *\n * @module utils/detailObjectContext\n */\n\n/**\n * Unwrap a value that may be a plain object, a Vue ref, or a `{ value }`\n * holder.\n *\n * @param {unknown} v The injected value.\n * @return {object|null} The unwrapped bag, or null.\n */\nfunction unwrap(v) {\n\tif (!v || typeof v !== 'object') {\n\t\treturn null\n\t}\n\treturn ('value' in v) ? (v.value || null) : v\n}\n\n/**\n * Build the object token context from the two detail-surface injects.\n *\n * @param {object|null} objectCtx The `cnObjectContext` inject (ref or plain object).\n * @param {object|null} detailCtx The `cnDetailObjectContext` inject (`{ value }` holder).\n * @return {{objectId: (string|number|null), object: (object|null), register: string, schema: (string|object), context?: object}|null}\n * The merged context, or null when neither inject resolves. `context` is the\n * records the page's conditions name (`@context.<name>`), when the primary\n * inject carries them.\n */\nexport function resolveObjectTokenContext(objectCtx, detailCtx) {\n\tconst primary = unwrap(objectCtx)\n\tconst holder = unwrap(detailCtx)\n\tif (!primary && !holder) {\n\t\treturn null\n\t}\n\tconst fromHolder = holder\n\t\t? {\n\t\t\t\tobjectId: holder.objectId ?? null,\n\t\t\t\t// CnPageRenderer's holder carries the loaded object as `objectData`.\n\t\t\t\tobject: holder.object || holder.objectData || null,\n\t\t\t\tregister: holder.register || '',\n\t\t\t\tschema: holder.schema || '',\n\t\t\t}\n\t\t: {}\n\tconst out = { objectId: null, object: null, register: '', schema: '', ...fromHolder }\n\tif (primary) {\n\t\t// The primary (CnDetailPage) context wins per field, but its null /\n\t\t// empty fields fall back to the holder's values.\n\t\tif (primary.objectId !== undefined && primary.objectId !== null) {\n\t\t\tout.objectId = primary.objectId\n\t\t}\n\t\tif (primary.object) {\n\t\t\tout.object = primary.object\n\t\t}\n\t\tif (primary.register) {\n\t\t\tout.register = primary.register\n\t\t}\n\t\tif (primary.schema) {\n\t\t\tout.schema = primary.schema\n\t\t}\n\t\tif (primary.context && typeof primary.context === 'object') {\n\t\t\tout.context = primary.context\n\t\t}\n\t}\n\treturn out\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,CAAC,EAAE;AACnB,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE;AAChE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAC;AAClC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAC;AACjC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE;AAC1B,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,MAAM;AAC1B,IAAI;AACJ,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;AACrC;AACA,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;AACtD,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;AACnC,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;AAC/B,IAAI;AACJ,IAAI,GAAE;AACN,CAAC,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,GAAE;AACtF,CAAC,IAAI,OAAO,EAAE;AACd;AACA;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE;AACnE,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAQ;AAClC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,OAAM;AAC9B,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxB,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAQ;AAClC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,OAAM;AAC9B,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9D,GAAG,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,QAAO;AAChC,GAAG;AACH,EAAE;AACF,CAAC,OAAO,GAAG;AACX;;;;"}
|