@conduction/nextcloud-vue 2.89.2 → 2.91.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/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +13 -0
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +3 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +18 -0
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +15 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnDialog/CnDialog.vue2.js +1 -1
- package/dist/esm/components/CnDialog/CnDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnDialog/CnDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnDialogHeader/CnDialogHeader.vue2.js +1 -1
- package/dist/esm/components/CnDialogHeader/CnDialogHeader.vue2.js.map +1 -1
- package/dist/esm/components/CnDialogHeader/CnDialogHeader.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue.js +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js +16 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue2.js +6 -3
- package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue3.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +74 -74
- package/dist/esm/utils/declaredProps.js +106 -0
- package/dist/esm/utils/declaredProps.js.map +1 -0
- package/dist/nextcloud-vue.cjs.js +185 -20
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +74 -74
- package/package.json +1 -1
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +14 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +20 -2
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +16 -2
- package/src/components/CnDialog/CnDialog.vue +1 -1
- package/src/components/CnDialog/index.js +7 -0
- package/src/components/CnDialogHeader/CnDialogHeader.vue +1 -1
- package/src/components/CnDialogHeader/index.js +7 -0
- package/src/components/CnIndexPage/CnIndexPageWidgets.vue +17 -2
- package/src/components/CnObjectSidebar/CnObjectSidebar.vue +6 -3
- package/src/components/index.js +2 -0
- package/src/index.js +2 -0
- package/src/utils/declaredProps.js +115 -0
|
@@ -26166,7 +26166,7 @@ script$6Y.__scopeId = "data-v-52ba5fea";
|
|
|
26166
26166
|
const __sfc_main$6S = script$6Y;
|
|
26167
26167
|
|
|
26168
26168
|
/**
|
|
26169
|
-
* CnDialogHeader
|
|
26169
|
+
* CnDialogHeader - the board dialog header: eyebrow, 20px title,
|
|
26170
26170
|
* subtitle and a round 36px close button.
|
|
26171
26171
|
*
|
|
26172
26172
|
* The close button emits `close` and is disabled while `noClose` is set, so a
|
|
@@ -26293,7 +26293,7 @@ function resolveDialogWidth(width, defaultWidth) {
|
|
|
26293
26293
|
}
|
|
26294
26294
|
|
|
26295
26295
|
/**
|
|
26296
|
-
* CnDialog
|
|
26296
|
+
* CnDialog - the one place where a `Cn*` dialog turns into the
|
|
26297
26297
|
* board dialog (screens-dialog-parity).
|
|
26298
26298
|
*
|
|
26299
26299
|
* In the Nextcloud look it is `NcDialog` with the caller's `size`, unchanged.
|
|
@@ -51261,7 +51261,7 @@ function matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, b
|
|
|
51261
51261
|
}
|
|
51262
51262
|
const noTokens = /*@__PURE__*/Object.create(null);
|
|
51263
51263
|
const typeArray = [NodeType.none];
|
|
51264
|
-
const warned$
|
|
51264
|
+
const warned$3 = [];
|
|
51265
51265
|
// Cache of node types by name and tags
|
|
51266
51266
|
const byTag = /*@__PURE__*/Object.create(null);
|
|
51267
51267
|
const defaultTable = /*@__PURE__*/Object.create(null);
|
|
@@ -51281,9 +51281,9 @@ for (let [legacyName, name] of [
|
|
|
51281
51281
|
])
|
|
51282
51282
|
defaultTable[legacyName] = /*@__PURE__*/createTokenType(noTokens, name);
|
|
51283
51283
|
function warnForPart(part, msg) {
|
|
51284
|
-
if (warned$
|
|
51284
|
+
if (warned$3.indexOf(part) > -1)
|
|
51285
51285
|
return;
|
|
51286
|
-
warned$
|
|
51286
|
+
warned$3.push(part);
|
|
51287
51287
|
console.warn(msg);
|
|
51288
51288
|
}
|
|
51289
51289
|
function createTokenType(extra, tagStr) {
|
|
@@ -152257,6 +152257,108 @@ script$4K.render = render$4K;
|
|
|
152257
152257
|
script$4K.__scopeId = "data-v-f0af265a";
|
|
152258
152258
|
const __sfc_main$4E = script$4K;
|
|
152259
152259
|
|
|
152260
|
+
/**
|
|
152261
|
+
* SPDX-FileCopyrightText: 2026 Conduction B.V.
|
|
152262
|
+
* SPDX-License-Identifier: EUPL-1.2
|
|
152263
|
+
*/
|
|
152264
|
+
|
|
152265
|
+
|
|
152266
|
+
const warned$2 = new Set();
|
|
152267
|
+
|
|
152268
|
+
/**
|
|
152269
|
+
* Add the prop names one component options object declares, following its
|
|
152270
|
+
* `extends` and `mixins`.
|
|
152271
|
+
*
|
|
152272
|
+
* @param {object} options A component options object.
|
|
152273
|
+
* @param {Set<string>} names The set to add camelCase prop names to.
|
|
152274
|
+
* @param {number} depth Recursion guard.
|
|
152275
|
+
*/
|
|
152276
|
+
function collect(options, names, depth) {
|
|
152277
|
+
if (!options || typeof options !== 'object' || depth > 8) {
|
|
152278
|
+
return
|
|
152279
|
+
}
|
|
152280
|
+
const props = options.props;
|
|
152281
|
+
if (Array.isArray(props)) {
|
|
152282
|
+
props.forEach((name) => names.add(vue$1.camelize(String(name))));
|
|
152283
|
+
} else if (props && typeof props === 'object') {
|
|
152284
|
+
Object.keys(props).forEach((name) => names.add(vue$1.camelize(name)));
|
|
152285
|
+
}
|
|
152286
|
+
collect(options.extends, names, depth + 1);
|
|
152287
|
+
if (Array.isArray(options.mixins)) {
|
|
152288
|
+
options.mixins.forEach((mixin) => collect(mixin, names, depth + 1));
|
|
152289
|
+
}
|
|
152290
|
+
}
|
|
152291
|
+
|
|
152292
|
+
/**
|
|
152293
|
+
* The prop names a component declares, or `null` when it takes every
|
|
152294
|
+
* attribute itself and so must keep receiving all of them:
|
|
152295
|
+
* - `inheritAttrs: false`: the component forwards `$attrs` on purpose;
|
|
152296
|
+
* - a functional component without `props`: its attrs are its props;
|
|
152297
|
+
* - an async component that has not resolved yet.
|
|
152298
|
+
*
|
|
152299
|
+
* @spec openspec/changes/dashboard-declared-widget-props/specs/dashboard-page/spec.md#requirement-a-dashboard-widget-receives-only-the-content-keys-it-declares
|
|
152300
|
+
* @param {object|((...args: unknown[]) => unknown)|null} component A component definition.
|
|
152301
|
+
* @return {Set<string>|null} camelCase prop names, or null for "all".
|
|
152302
|
+
*/
|
|
152303
|
+
function declaredPropNames(component) {
|
|
152304
|
+
if (!component) {
|
|
152305
|
+
return null
|
|
152306
|
+
}
|
|
152307
|
+
if (typeof component === 'function') {
|
|
152308
|
+
if (!component.props) {
|
|
152309
|
+
return null
|
|
152310
|
+
}
|
|
152311
|
+
const names = new Set();
|
|
152312
|
+
collect({ props: component.props }, names, 0);
|
|
152313
|
+
return names
|
|
152314
|
+
}
|
|
152315
|
+
if (typeof component !== 'object') {
|
|
152316
|
+
return null
|
|
152317
|
+
}
|
|
152318
|
+
if (component.__asyncLoader) {
|
|
152319
|
+
return component.__asyncResolved ? declaredPropNames(component.__asyncResolved) : null
|
|
152320
|
+
}
|
|
152321
|
+
const chain = [component, component.extends, ...(component.mixins || [])];
|
|
152322
|
+
if (chain.some((options) => options && options.inheritAttrs === false)) {
|
|
152323
|
+
return null
|
|
152324
|
+
}
|
|
152325
|
+
const names = new Set();
|
|
152326
|
+
collect(component, names, 0);
|
|
152327
|
+
return names
|
|
152328
|
+
}
|
|
152329
|
+
|
|
152330
|
+
/**
|
|
152331
|
+
* Keep the entries of `bindings` whose key `component` declares as a prop.
|
|
152332
|
+
* A component for which {@link declaredPropNames} returns null gets every
|
|
152333
|
+
* entry. A dropped key is warned about once outside production when the
|
|
152334
|
+
* component has no `content` prop either, so the key reaches nothing.
|
|
152335
|
+
*
|
|
152336
|
+
* @spec openspec/changes/dashboard-declared-widget-props/specs/dashboard-page/spec.md#requirement-a-dashboard-widget-receives-only-the-content-keys-it-declares
|
|
152337
|
+
* @param {object|((...args: unknown[]) => unknown)|null} component The component that will receive the bindings.
|
|
152338
|
+
* @param {object} bindings The candidate bindings.
|
|
152339
|
+
* @param {string} label Names the component in the warning (for example the widget type).
|
|
152340
|
+
* @return {object} The bindings the component declares.
|
|
152341
|
+
*/
|
|
152342
|
+
function pickDeclaredProps(component, bindings, label) {
|
|
152343
|
+
const declared = declaredPropNames(component);
|
|
152344
|
+
if (!declared || !bindings || typeof bindings !== 'object') {
|
|
152345
|
+
return bindings
|
|
152346
|
+
}
|
|
152347
|
+
const out = {};
|
|
152348
|
+
for (const [key, value] of Object.entries(bindings)) {
|
|
152349
|
+
if (declared.has(vue$1.camelize(key))) {
|
|
152350
|
+
out[key] = value;
|
|
152351
|
+
continue
|
|
152352
|
+
}
|
|
152353
|
+
if (process.env.NODE_ENV !== 'production' && !declared.has('content') && !warned$2.has(`${label}\u0000${key}`)) {
|
|
152354
|
+
warned$2.add(`${label}\u0000${key}`);
|
|
152355
|
+
// eslint-disable-next-line no-console
|
|
152356
|
+
console.warn(`[nextcloud-vue] content key "${key}" is not passed to widget "${label}": it declares neither that prop nor \`content\`.`);
|
|
152357
|
+
}
|
|
152358
|
+
}
|
|
152359
|
+
return out
|
|
152360
|
+
}
|
|
152361
|
+
|
|
152260
152362
|
// SPDX-FileCopyrightText: 2026 Conduction B.V.
|
|
152261
152363
|
// SPDX-License-Identifier: EUPL-1.2
|
|
152262
152364
|
|
|
@@ -163778,7 +163880,20 @@ var script$4p = {
|
|
|
163778
163880
|
if (title) {
|
|
163779
163881
|
base.title = title;
|
|
163780
163882
|
}
|
|
163781
|
-
return { ...base, ...this.
|
|
163883
|
+
return { ...base, ...this.declaredContent }
|
|
163884
|
+
},
|
|
163885
|
+
|
|
163886
|
+
/**
|
|
163887
|
+
* The content keys the renderer declares as props. An undeclared key
|
|
163888
|
+
* would fall through as an attribute onto the renderer's root and could
|
|
163889
|
+
* override a value the widget computes there; the whole content still
|
|
163890
|
+
* arrives as `content`.
|
|
163891
|
+
*
|
|
163892
|
+
* @return {object} The declared content keys.
|
|
163893
|
+
* @spec openspec/changes/declared-props-detail-index-sidebar/specs/widget-hosts/spec.md#requirement-a-widget-host-passes-only-the-keys-a-widget-declares
|
|
163894
|
+
*/
|
|
163895
|
+
declaredContent() {
|
|
163896
|
+
return pickDeclaredProps(this.renderer, this.content, this.widget?.type || '')
|
|
163782
163897
|
},
|
|
163783
163898
|
|
|
163784
163899
|
/**
|
|
@@ -164268,7 +164383,7 @@ function render$4p(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
164268
164383
|
class: "cn-detail-page__card-fit"
|
|
164269
164384
|
}, vue$1.createSlots({
|
|
164270
164385
|
default: vue$1.withCtx(() => [
|
|
164271
|
-
(vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.renderer), vue$1.mergeProps({ content: $options.content }, $options.
|
|
164386
|
+
(vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.renderer), vue$1.mergeProps({ content: $options.content }, $options.declaredContent), null, 16 /* FULL_PROPS */, ["content"]))
|
|
164272
164387
|
]),
|
|
164273
164388
|
_: 2 /* DYNAMIC */
|
|
164274
164389
|
}, [
|
|
@@ -164295,7 +164410,7 @@ function render$4p(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
164295
164410
|
}
|
|
164296
164411
|
|
|
164297
164412
|
script$4p.render = render$4p;
|
|
164298
|
-
script$4p.__scopeId = "data-v-
|
|
164413
|
+
script$4p.__scopeId = "data-v-47b3ec9e";
|
|
164299
164414
|
const __sfc_main$4j = script$4p;
|
|
164300
164415
|
|
|
164301
164416
|
/**
|
|
@@ -257390,6 +257505,19 @@ var script$2k = {
|
|
|
257390
257505
|
default: '',
|
|
257391
257506
|
},
|
|
257392
257507
|
|
|
257508
|
+
/**
|
|
257509
|
+
* Mount a tab's `tab-<id>` slot only while that tab is open, and
|
|
257510
|
+
* unmount it when another tab opens, so each visit mounts it afresh
|
|
257511
|
+
* and the page does not load every tab at once. Off (the default),
|
|
257512
|
+
* every panel stays mounted and only the open one shows.
|
|
257513
|
+
*
|
|
257514
|
+
* @spec openspec/changes/admin-settings-lazy-tabs/specs/settings-board-look/spec.md#requirement-the-admin-shell-can-mount-only-the-open-tab
|
|
257515
|
+
*/
|
|
257516
|
+
lazyTabs: {
|
|
257517
|
+
type: Boolean,
|
|
257518
|
+
default: false,
|
|
257519
|
+
},
|
|
257520
|
+
|
|
257393
257521
|
/**
|
|
257394
257522
|
* How the `tabs` strip is drawn, as CnTabs' `variant`: `line`, the
|
|
257395
257523
|
* folder tabs (the default), or `underline`, plain labels on a rule
|
|
@@ -257950,7 +258078,9 @@ function render$2k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
257950
258078
|
class: "cn-admin-settings-shell__panel",
|
|
257951
258079
|
"data-tab": tab.id
|
|
257952
258080
|
}, [
|
|
257953
|
-
|
|
258081
|
+
(!$props.lazyTabs || tab.id === $options.activeTabId)
|
|
258082
|
+
? vue$1.renderSlot(_ctx.$slots, `tab-${tab.id}`, {}, undefined, undefined, 0)
|
|
258083
|
+
: vue$1.createCommentVNode("v-if", true)
|
|
257954
258084
|
], 8 /* PROPS */, _hoisted_11$N)
|
|
257955
258085
|
]),
|
|
257956
258086
|
_: 2 /* DYNAMIC */
|
|
@@ -258089,7 +258219,7 @@ function render$2k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
258089
258219
|
}
|
|
258090
258220
|
|
|
258091
258221
|
script$2k.render = render$2k;
|
|
258092
|
-
script$2k.__scopeId = "data-v-
|
|
258222
|
+
script$2k.__scopeId = "data-v-038f200a";
|
|
258093
258223
|
const __sfc_main$2k = script$2k;
|
|
258094
258224
|
|
|
258095
258225
|
/**
|
|
@@ -265277,7 +265407,7 @@ var script$25 = {
|
|
|
265277
265407
|
* The renderable entries, in the listed order.
|
|
265278
265408
|
*
|
|
265279
265409
|
* @spec openspec/changes/screens-index-stat-row/specs/index-page/spec.md#requirement-an-index-page-can-draw-a-stat-row-above-the-list
|
|
265280
|
-
* @return {Array<{id: string, title: string, content: object, headerLink: (object|null), renderer: object}>}
|
|
265410
|
+
* @return {Array<{id: string, type: string, title: string, content: object, headerLink: (object|null), renderer: object}>}
|
|
265281
265411
|
*/
|
|
265282
265412
|
entries() {
|
|
265283
265413
|
const list = Array.isArray(this.widgets) ? this.widgets : [];
|
|
@@ -265297,6 +265427,7 @@ var script$25 = {
|
|
|
265297
265427
|
const translate = typeof this.cnTranslate === 'function' ? this.cnTranslate : (key) => key;
|
|
265298
265428
|
out.push({
|
|
265299
265429
|
id: def.id,
|
|
265430
|
+
type: def.type,
|
|
265300
265431
|
title: typeof def.title === 'string' && def.title !== '' ? translate(def.title) : '',
|
|
265301
265432
|
content: (def.content && typeof def.content === 'object') ? def.content : {},
|
|
265302
265433
|
headerLink: (def.headerLink && typeof def.headerLink === 'object') ? def.headerLink : null,
|
|
@@ -265308,6 +265439,19 @@ var script$25 = {
|
|
|
265308
265439
|
},
|
|
265309
265440
|
|
|
265310
265441
|
methods: {
|
|
265442
|
+
/**
|
|
265443
|
+
* The content keys an entry's renderer declares as props. An undeclared
|
|
265444
|
+
* key would fall through onto the renderer's root; the whole content
|
|
265445
|
+
* still arrives as `content`.
|
|
265446
|
+
*
|
|
265447
|
+
* @param {{ renderer: object, content: object, type?: string, id: string }} entry A resolved entry.
|
|
265448
|
+
* @return {object} The declared content keys.
|
|
265449
|
+
* @spec openspec/changes/declared-props-detail-index-sidebar/specs/widget-hosts/spec.md#requirement-a-widget-host-passes-only-the-keys-a-widget-declares
|
|
265450
|
+
*/
|
|
265451
|
+
declaredContent(entry) {
|
|
265452
|
+
return pickDeclaredProps(entry.renderer, entry.content, entry.type || entry.id)
|
|
265453
|
+
},
|
|
265454
|
+
|
|
265311
265455
|
/**
|
|
265312
265456
|
* Resolve a widget type: the consumer registry, then the dashboard
|
|
265313
265457
|
* catalog (the type as written, then its alias), then the built-ins.
|
|
@@ -265361,7 +265505,7 @@ function render$25(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
265361
265505
|
(vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent(entry.renderer), vue$1.mergeProps({
|
|
265362
265506
|
widgetId: entry.id,
|
|
265363
265507
|
content: entry.content
|
|
265364
|
-
}, { ref_for: true }, entry
|
|
265508
|
+
}, { ref_for: true }, $options.declaredContent(entry)), null, 16 /* FULL_PROPS */, ["widgetId", "content"]))
|
|
265365
265509
|
]),
|
|
265366
265510
|
_: 2 /* DYNAMIC */
|
|
265367
265511
|
}, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "showTitle", "headerLink", "flush"])
|
|
@@ -265374,7 +265518,7 @@ function render$25(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
265374
265518
|
}
|
|
265375
265519
|
|
|
265376
265520
|
script$25.render = render$25;
|
|
265377
|
-
script$25.__scopeId = "data-v-
|
|
265521
|
+
script$25.__scopeId = "data-v-319129cb";
|
|
265378
265522
|
const __sfc_main$25 = script$25;
|
|
265379
265523
|
|
|
265380
265524
|
/**
|
|
@@ -321041,6 +321185,23 @@ var script$1i = {
|
|
|
321041
321185
|
return outcome ? { ...content, conditionOutcome: outcome } : content
|
|
321042
321186
|
},
|
|
321043
321187
|
|
|
321188
|
+
/**
|
|
321189
|
+
* The content keys a registry widget receives as props: only the ones
|
|
321190
|
+
* its renderer declares. An undeclared key would otherwise fall through
|
|
321191
|
+
* as an attribute onto the renderer's root component and could override
|
|
321192
|
+
* a value the widget computes for it. The whole content still arrives
|
|
321193
|
+
* as `content`. A renderer that forwards its own attributes
|
|
321194
|
+
* (`inheritAttrs: false`) keeps receiving every key.
|
|
321195
|
+
*
|
|
321196
|
+
* @param {object} item Layout item.
|
|
321197
|
+
* @return {object} The bindings the renderer declares.
|
|
321198
|
+
* @spec openspec/changes/dashboard-declared-widget-props/specs/dashboard-page/spec.md#requirement-a-dashboard-widget-receives-only-the-content-keys-it-declares
|
|
321199
|
+
*/
|
|
321200
|
+
registryWidgetProps(item) {
|
|
321201
|
+
const def = this.getWidgetDef(item.widgetId);
|
|
321202
|
+
return pickDeclaredProps(this.registryRenderer(item), this.registryWidgetBindings(item), def?.type || item.widgetId)
|
|
321203
|
+
},
|
|
321204
|
+
|
|
321044
321205
|
/**
|
|
321045
321206
|
* What a container widget (registry `container`, such as `tabs`) needs
|
|
321046
321207
|
* beside its content: the page's widget definitions, so its tabs find
|
|
@@ -322681,7 +322842,7 @@ function render$1i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
322681
322842
|
(vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.registryRenderer(item)), vue$1.mergeProps({
|
|
322682
322843
|
widgetId: item.widgetId,
|
|
322683
322844
|
content: $options.registryWidgetBindings(item)
|
|
322684
|
-
}, { ref_for: true }, { ...$options.
|
|
322845
|
+
}, { ref_for: true }, { ...$options.registryWidgetProps(item), ...$options.containerBindings(item) }, {
|
|
322685
322846
|
onHeader: $event => ($options.onWidgetHeader(item, $event))
|
|
322686
322847
|
}), null, 16 /* FULL_PROPS */, ["widgetId", "content", "onHeader"]))
|
|
322687
322848
|
]),
|
|
@@ -323150,7 +323311,7 @@ function render$1i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
323150
323311
|
(vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.registryRenderer(item)), vue$1.mergeProps({
|
|
323151
323312
|
widgetId: item.widgetId,
|
|
323152
323313
|
content: $options.registryWidgetBindings(item)
|
|
323153
|
-
}, { ref_for: true }, { ...$options.
|
|
323314
|
+
}, { ref_for: true }, { ...$options.registryWidgetProps(item), ...$options.containerBindings(item), ...$options.cellChromeBindings(item) }, {
|
|
323154
323315
|
onHeader: $event => ($options.onWidgetHeader(item, $event))
|
|
323155
323316
|
}), null, 16 /* FULL_PROPS */, ["widgetId", "content", "onHeader"]))
|
|
323156
323317
|
]),
|
|
@@ -323310,7 +323471,7 @@ function render$1i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
323310
323471
|
}
|
|
323311
323472
|
|
|
323312
323473
|
script$1i.render = render$1i;
|
|
323313
|
-
script$1i.__scopeId = "data-v-
|
|
323474
|
+
script$1i.__scopeId = "data-v-42bc14a4";
|
|
323314
323475
|
const __sfc_main$1i = script$1i;
|
|
323315
323476
|
|
|
323316
323477
|
var CnDashboardPage = /*#__PURE__*/Object.freeze({
|
|
@@ -334901,9 +335062,11 @@ var script$N = {
|
|
|
334901
335062
|
* widgets get the shared coordinate context plus the loaded object
|
|
334902
335063
|
* (`objectData`); the prop-driven `data` built-in also gets the schema
|
|
334903
335064
|
* OBJECT bound to its `schema` prop (the other tabs use the `schema`
|
|
334904
|
-
* slug string, so the override is scoped to `type: 'data'`).
|
|
334905
|
-
* own `props
|
|
335065
|
+
* slug string, so the override is scoped to `type: 'data'`). Of a
|
|
335066
|
+
* widget's own `props`, the ones its component declares win on overlap;
|
|
335067
|
+
* an undeclared one would only fall through onto the component's root.
|
|
334906
335068
|
*
|
|
335069
|
+
* @spec openspec/changes/declared-props-detail-index-sidebar/specs/widget-hosts/spec.md#requirement-a-widget-host-passes-only-the-keys-a-widget-declares
|
|
334907
335070
|
* @param {{ type: string, props?: object }} w Widget spec
|
|
334908
335071
|
* @return {object} Props to v-bind onto the resolved widget component
|
|
334909
335072
|
*/
|
|
@@ -334916,7 +335079,7 @@ var script$N = {
|
|
|
334916
335079
|
// a String `schema`.
|
|
334917
335080
|
bindings.schema = this.objectSchema;
|
|
334918
335081
|
}
|
|
334919
|
-
return { ...bindings, ...(w.props || {}) }
|
|
335082
|
+
return { ...bindings, ...pickDeclaredProps(this.resolveWidgetComponent(w.type), w.props || {}, w.type || '') }
|
|
334920
335083
|
},
|
|
334921
335084
|
|
|
334922
335085
|
/**
|
|
@@ -335238,7 +335401,7 @@ function render$N(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
335238
335401
|
}
|
|
335239
335402
|
|
|
335240
335403
|
script$N.render = render$N;
|
|
335241
|
-
script$N.__scopeId = "data-v-
|
|
335404
|
+
script$N.__scopeId = "data-v-09402703";
|
|
335242
335405
|
const __sfc_main$N = script$N;
|
|
335243
335406
|
|
|
335244
335407
|
/**
|
|
@@ -397423,6 +397586,8 @@ exports.CnDetailCard = __sfc_main$6E;
|
|
|
397423
397586
|
exports.CnDetailGrid = __sfc_main$4J;
|
|
397424
397587
|
exports.CnDetailPage = __sfc_main$1m;
|
|
397425
397588
|
exports.CnDetailWidgetHost = __sfc_main$4j;
|
|
397589
|
+
exports.CnDialog = __sfc_main$6Q;
|
|
397590
|
+
exports.CnDialogHeader = __sfc_main$6R;
|
|
397426
397591
|
exports.CnDividerWidget = __sfc_main$4B;
|
|
397427
397592
|
exports.CnDividerWidgetForm = __sfc_main$42;
|
|
397428
397593
|
exports.CnDocumentReviewList = __sfc_main$76;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/nextcloud-vue.cjs.js.map
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 40783800 bytes
|
|
4
|
+
sha256: 38ecb05b1a9c62bd250ca390394a3597748055d8c7dc1363ad11aa8069730ec1
|