@conduction/nextcloud-vue 2.109.0 → 2.111.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.
Files changed (47) hide show
  1. package/dist/esm/components/CnActionDialog/CnActionDialog.vue.js +1 -1
  2. package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js +115 -12
  3. package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js.map +1 -1
  4. package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js +36 -9
  5. package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js.map +1 -1
  6. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +2 -1
  7. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  8. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  9. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +20 -0
  10. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  11. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +68 -61
  12. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  13. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +37 -12
  14. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  15. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  16. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
  17. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +1 -1
  18. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
  19. package/dist/esm/components/CnWorkQueue/CnWorkQueue.vue.js +1 -1
  20. package/dist/esm/components/CnWorkQueue/CnWorkQueue.vue2.js +8 -1
  21. package/dist/esm/components/CnWorkQueue/CnWorkQueue.vue2.js.map +1 -1
  22. package/dist/esm/components/CnWorkQueue/CnWorkQueue.vue3.js.map +1 -1
  23. package/dist/esm/library-style.js +1 -1
  24. package/dist/esm/nextcloud-vue.css +131 -64
  25. package/dist/esm/utils/actionsDispatcher.js +5 -2
  26. package/dist/esm/utils/actionsDispatcher.js.map +1 -1
  27. package/dist/esm/utils/savedViewHelpers.js +40 -3
  28. package/dist/esm/utils/savedViewHelpers.js.map +1 -1
  29. package/dist/nextcloud-vue.cjs.js +479 -251
  30. package/dist/nextcloud-vue.cjs.js.map +2 -2
  31. package/dist/nextcloud-vue.css +131 -64
  32. package/package.json +1 -1
  33. package/src/components/CnActionDialog/CnActionDialog.vue +134 -13
  34. package/src/components/CnAppRoot/CnAppRoot.vue +2 -1
  35. package/src/components/CnDetailPage/CnDetailPage.vue +35 -11
  36. package/src/components/CnIndexPage/CnIndexPage.md +1 -1
  37. package/src/components/CnIndexPage/CnIndexPage.vue +37 -12
  38. package/src/components/CnIndexSidebar/CnIndexSidebar.md +1 -1
  39. package/src/components/CnIndexSidebar/CnIndexSidebar.vue +2 -2
  40. package/src/components/CnWorkQueue/CnWorkQueue.vue +8 -1
  41. package/src/css/board.css +5 -2
  42. package/src/css/look-board-detail.css +19 -7
  43. package/src/css/look-board-index.css +14 -10
  44. package/src/css/look-board-reports.css +1 -1
  45. package/src/css/look-board.css +54 -9
  46. package/src/utils/actionsDispatcher.js +4 -1
  47. package/src/utils/savedViewHelpers.js +39 -2
@@ -8028,7 +8028,10 @@ function dispatchAction$1(action, context = {}) {
8028
8028
  return
8029
8029
  }
8030
8030
 
8031
- context.openModal(target, action.props ?? {});
8031
+ // A prop that is exactly a token (`"objectId": "@objectId"`) resolves
8032
+ // against the page's object; one the page cannot answer stays as written.
8033
+ const props = context.tokenCtx ? resolveDeepTokens(action.props ?? {}, context.tokenCtx) : (action.props ?? {});
8034
+ context.openModal(target, props);
8032
8035
  break
8033
8036
  }
8034
8037
 
@@ -12853,7 +12856,7 @@ const _hoisted_17$1u = {
12853
12856
  class: "cn-chart-widget__fallback"
12854
12857
  };
12855
12858
  const _hoisted_18$1k = { class: "cn-chart-widget__error" };
12856
- const _hoisted_19$1b = {
12859
+ const _hoisted_19$1c = {
12857
12860
  key: 6,
12858
12861
  class: "cn-chart-widget__footnote",
12859
12862
  "data-testid": "cn-chart-widget-footnote"
@@ -12980,7 +12983,7 @@ function render$7Y(_ctx, _cache, $props, $setup, $data, $options) {
12980
12983
  ])
12981
12984
  ])),
12982
12985
  ($props.footnote && $data.chartComponent && !$options.showEmptyState && $props.type !== 'bar-list' && $props.type !== 'matrix')
12983
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$1b, vue$1.toDisplayString($options.hostTranslate($props.footnote)), 1 /* TEXT */))
12986
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$1c, vue$1.toDisplayString($options.hostTranslate($props.footnote)), 1 /* TEXT */))
12984
12987
  : vue$1.createCommentVNode("v-if", true)
12985
12988
  ], 2 /* CLASS */))
12986
12989
  }
@@ -15949,7 +15952,7 @@ const _hoisted_15$1V = {
15949
15952
  const _hoisted_16$1K = { class: "cn-conversation-thread__text" };
15950
15953
  const _hoisted_17$1t = ["for"];
15951
15954
  const _hoisted_18$1j = ["id", "placeholder", "disabled", "aria-describedby"];
15952
- const _hoisted_19$1a = ["id"];
15955
+ const _hoisted_19$1b = ["id"];
15953
15956
  const _hoisted_20$12 = { class: "cn-conversation-thread__reply-actions" };
15954
15957
 
15955
15958
  function render$7R(_ctx, _cache, $props, $setup, $data, $options) {
@@ -16061,7 +16064,7 @@ function render$7R(_ctx, _cache, $props, $setup, $data, $options) {
16061
16064
  class: "cn-conversation-thread__error",
16062
16065
  role: "alert",
16063
16066
  "data-testid": "cn-conversation-error"
16064
- }, vue$1.toDisplayString($data.errorMessage), 9 /* TEXT, PROPS */, _hoisted_19$1a))
16067
+ }, vue$1.toDisplayString($data.errorMessage), 9 /* TEXT, PROPS */, _hoisted_19$1b))
16065
16068
  : vue$1.createCommentVNode("v-if", true),
16066
16069
  vue$1.createElementVNode("div", _hoisted_20$12, [
16067
16070
  vue$1.renderSlot(_ctx.$slots, "reply-actions", { draft: $data.draft }),
@@ -21789,7 +21792,7 @@ const _hoisted_15$1U = { class: "cn-column-filter__field" };
21789
21792
  const _hoisted_16$1J = { class: "cn-column-filter__label" };
21790
21793
  const _hoisted_17$1s = ["type"];
21791
21794
  const _hoisted_18$1i = { class: "cn-column-filter__field" };
21792
- const _hoisted_19$19 = { class: "cn-column-filter__label" };
21795
+ const _hoisted_19$1a = { class: "cn-column-filter__label" };
21793
21796
  const _hoisted_20$11 = ["type"];
21794
21797
  const _hoisted_21$_ = {
21795
21798
  key: 3,
@@ -21896,7 +21899,7 @@ function render$7C(_ctx, _cache, $props, $setup, $data, $options) {
21896
21899
  ])
21897
21900
  ]),
21898
21901
  vue$1.createElementVNode("label", _hoisted_18$1i, [
21899
- vue$1.createElementVNode("span", _hoisted_19$19, vue$1.toDisplayString($options.toLabel), 1 /* TEXT */),
21902
+ vue$1.createElementVNode("span", _hoisted_19$1a, vue$1.toDisplayString($options.toLabel), 1 /* TEXT */),
21900
21903
  vue$1.withDirectives(vue$1.createElementVNode("input", {
21901
21904
  "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => (($data.draft.to) = $event)),
21902
21905
  class: "cn-column-filter__input",
@@ -26581,7 +26584,7 @@ const _hoisted_18$1h = {
26581
26584
  class: "cn-cell-renderer__avatar-picture",
26582
26585
  "aria-hidden": "true"
26583
26586
  };
26584
- const _hoisted_19$18 = { class: "cn-cell-renderer__avatar-text" };
26587
+ const _hoisted_19$19 = { class: "cn-cell-renderer__avatar-text" };
26585
26588
  const _hoisted_20$10 = ["title"];
26586
26589
  const _hoisted_21$Z = {
26587
26590
  key: 0,
@@ -26636,8 +26639,8 @@ const _hoisted_40$c = {
26636
26639
  class: "cn-cell-renderer__icon-label",
26637
26640
  "data-testid": "cn-cell-icon-label"
26638
26641
  };
26639
- const _hoisted_41$9 = { key: 2 };
26640
- const _hoisted_42$8 = {
26642
+ const _hoisted_41$a = { key: 2 };
26643
+ const _hoisted_42$9 = {
26641
26644
  key: 3,
26642
26645
  class: "cn-cell-renderer__dash"
26643
26646
  };
@@ -26862,7 +26865,7 @@ function render$7z(_ctx, _cache, $props, $setup, $data, $options) {
26862
26865
  style: vue$1.normalizeStyle({ width: $options.avatarSize + 'px', height: $options.avatarSize + 'px' }),
26863
26866
  "aria-hidden": "true"
26864
26867
  }, vue$1.toDisplayString($options.avatarInitials), 5 /* TEXT, STYLE */)),
26865
- vue$1.createElementVNode("span", _hoisted_19$18, [
26868
+ vue$1.createElementVNode("span", _hoisted_19$19, [
26866
26869
  vue$1.createElementVNode("span", {
26867
26870
  class: "cn-cell-renderer__avatar-name",
26868
26871
  title: $options.avatarName || $options.avatarUserId
@@ -26988,8 +26991,8 @@ function render$7z(_ctx, _cache, $props, $setup, $data, $options) {
26988
26991
  }))
26989
26992
  : vue$1.createCommentVNode("v-if", true),
26990
26993
  ($options.hasValue)
26991
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_41$9, vue$1.toDisplayString($options.labelledValue), 1 /* TEXT */))
26992
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$8, "—"))
26994
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_41$a, vue$1.toDisplayString($options.labelledValue), 1 /* TEXT */))
26995
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$9, "—"))
26993
26996
  ]))
26994
26997
  : ($options.hasFormatter)
26995
26998
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
@@ -29516,7 +29519,7 @@ const _hoisted_18$1g = {
29516
29519
  class: "cn-table-empty",
29517
29520
  "data-testid": "cn-object-list-empty"
29518
29521
  };
29519
- const _hoisted_19$17 = ["colspan"];
29522
+ const _hoisted_19$18 = ["colspan"];
29520
29523
  const _hoisted_20$$ = {
29521
29524
  key: 0,
29522
29525
  class: "cn-table-empty__lens-reason",
@@ -29751,7 +29754,7 @@ function render$7w(_ctx, _cache, $props, $setup, $data, $options) {
29751
29754
  vue$1.createTextVNode(vue$1.toDisplayString($options.translateLabel($props.emptyText)), 1 /* TEXT */)
29752
29755
  ], 64 /* STABLE_FRAGMENT */))
29753
29756
  ])
29754
- ], 8 /* PROPS */, _hoisted_19$17)
29757
+ ], 8 /* PROPS */, _hoisted_19$18)
29755
29758
  ]))
29756
29759
  : (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, { key: 1 }, vue$1.renderList($options.effectiveRows, (row, rowIndex) => {
29757
29760
  return (vue$1.openBlock(), vue$1.createElementBlock("tr", {
@@ -65526,7 +65529,7 @@ const _hoisted_17$1p = {
65526
65529
  class: "cn-icon-browser-panel__cell-label"
65527
65530
  };
65528
65531
  const _hoisted_18$1f = { class: "cn-icon-browser-panel__empty" };
65529
- const _hoisted_19$16 = {
65532
+ const _hoisted_19$17 = {
65530
65533
  key: 2,
65531
65534
  class: "cn-icon-browser-panel__hint"
65532
65535
  };
@@ -65580,7 +65583,7 @@ const _hoisted_40$b = {
65580
65583
  class: "cn-icon-browser-panel__error",
65581
65584
  role: "alert"
65582
65585
  };
65583
- const _hoisted_41$8 = ["id", "aria-labelledby"];
65586
+ const _hoisted_41$9 = ["id", "aria-labelledby"];
65584
65587
 
65585
65588
  function render$7l(_ctx, _cache, $props, $setup, $data, $options) {
65586
65589
  const _component_Cancel = vue$1.resolveComponent("Cancel");
@@ -65705,7 +65708,7 @@ function render$7l(_ctx, _cache, $props, $setup, $data, $options) {
65705
65708
  vue$1.createElementVNode("p", _hoisted_18$1f, vue$1.toDisplayString($options.emptyMessage), 1 /* TEXT */)
65706
65709
  ], undefined, 1),
65707
65710
  ($options.truncated)
65708
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$16, vue$1.toDisplayString($options.t('nextcloud-vue', 'Showing {shown} of {total} — refine your search to narrow results.', { shown: $options.visibleIcons.length, total: $options.matchCount })), 1 /* TEXT */))
65711
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$17, vue$1.toDisplayString($options.t('nextcloud-vue', 'Showing {shown} of {total} — refine your search to narrow results.', { shown: $options.visibleIcons.length, total: $options.matchCount })), 1 /* TEXT */))
65709
65712
  : vue$1.createCommentVNode("v-if", true)
65710
65713
  ], 64 /* STABLE_FRAGMENT */))
65711
65714
  : vue$1.createCommentVNode("v-if", true)
@@ -65861,7 +65864,7 @@ function render$7l(_ctx, _cache, $props, $setup, $data, $options) {
65861
65864
  class: "cn-icon-browser-panel__format",
65862
65865
  onClick: _cache[5] || (_cache[5] = (...args) => ($options.formatCustomSvg && $options.formatCustomSvg(...args)))
65863
65866
  }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Format SVG')), 1 /* TEXT */)
65864
- ], 8 /* PROPS */, _hoisted_41$8)), [
65867
+ ], 8 /* PROPS */, _hoisted_41$9)), [
65865
65868
  [vue$1.vShow, $data.mode === 'svg']
65866
65869
  ])
65867
65870
  : vue$1.createCommentVNode("v-if", true)
@@ -76829,7 +76832,7 @@ const _hoisted_16$1F = {
76829
76832
  };
76830
76833
  const _hoisted_17$1o = { class: "cn-activity-card__day-header" };
76831
76834
  const _hoisted_18$1e = { class: "cn-activity-card__day-count" };
76832
- const _hoisted_19$15 = { class: "cn-activity-card__list" };
76835
+ const _hoisted_19$16 = { class: "cn-activity-card__list" };
76833
76836
  const _hoisted_20$Z = { class: "cn-activity-card__row-main" };
76834
76837
  const _hoisted_21$W = { class: "cn-activity-card__row-subject" };
76835
76838
  const _hoisted_22$T = { class: "cn-activity-card__row-meta" };
@@ -76903,7 +76906,7 @@ function render$7d(_ctx, _cache, $props, $setup, $data, $options) {
76903
76906
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(day.label), 1 /* TEXT */),
76904
76907
  vue$1.createElementVNode("span", _hoisted_18$1e, vue$1.toDisplayString(day.rows.length), 1 /* TEXT */)
76905
76908
  ]),
76906
- vue$1.createElementVNode("ul", _hoisted_19$15, [
76909
+ vue$1.createElementVNode("ul", _hoisted_19$16, [
76907
76910
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(day.rows.slice(0, $data.COMPACT_LIMIT), (entry) => {
76908
76911
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
76909
76912
  key: $options.entryKey(entry),
@@ -77810,7 +77813,7 @@ const _hoisted_15$1P = ["value"];
77810
77813
  const _hoisted_16$1E = { class: "cn-activity-tab__filter" };
77811
77814
  const _hoisted_17$1n = { class: "cn-activity-tab__filter-label" };
77812
77815
  const _hoisted_18$1d = { value: "" };
77813
- const _hoisted_19$14 = ["value"];
77816
+ const _hoisted_19$15 = ["value"];
77814
77817
  const _hoisted_20$Y = {
77815
77818
  key: 1,
77816
77819
  class: "cn-activity-tab__visibility",
@@ -77859,11 +77862,11 @@ const _hoisted_40$a = {
77859
77862
  key: 6,
77860
77863
  class: "cn-activity-tab__timeline cn-activity-tab__timeline--rail"
77861
77864
  };
77862
- const _hoisted_41$7 = {
77865
+ const _hoisted_41$8 = {
77863
77866
  class: "cn-activity-tab__rail",
77864
77867
  "data-testid": "cn-activity-rail"
77865
77868
  };
77866
- const _hoisted_42$7 = {
77869
+ const _hoisted_42$8 = {
77867
77870
  class: "cn-activity-tab__event-icon",
77868
77871
  "aria-hidden": "true"
77869
77872
  };
@@ -78010,7 +78013,7 @@ function render$7c(_ctx, _cache, $props, $setup, $data, $options) {
78010
78013
  return (vue$1.openBlock(), vue$1.createElementBlock("option", {
78011
78014
  key: ac,
78012
78015
  value: ac
78013
- }, vue$1.toDisplayString(ac), 9 /* TEXT, PROPS */, _hoisted_19$14))
78016
+ }, vue$1.toDisplayString(ac), 9 /* TEXT, PROPS */, _hoisted_19$15))
78014
78017
  }), 128 /* KEYED_FRAGMENT */))
78015
78018
  ], 544 /* NEED_HYDRATION, NEED_PATCH */), [
78016
78019
  [vue$1.vModelSelect, $data.selectedActor]
@@ -78120,14 +78123,14 @@ function render$7c(_ctx, _cache, $props, $setup, $data, $options) {
78120
78123
  ]))
78121
78124
  : ($options.isBoard)
78122
78125
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_40$a, [
78123
- vue$1.createElementVNode("ol", _hoisted_41$7, [
78126
+ vue$1.createElementVNode("ol", _hoisted_41$8, [
78124
78127
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.visibleEntries, (entry) => {
78125
78128
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
78126
78129
  key: $options.entryKey(entry),
78127
78130
  class: vue$1.normalizeClass(["cn-activity-tab__event", `cn-activity-tab__event--${entry.kind || 'activity'}`]),
78128
78131
  "data-testid": "cn-activity-event"
78129
78132
  }, [
78130
- vue$1.createElementVNode("span", _hoisted_42$7, [
78133
+ vue$1.createElementVNode("span", _hoisted_42$8, [
78131
78134
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.iconFor(entry)), { size: 18 }))
78132
78135
  ]),
78133
78136
  vue$1.createElementVNode("div", _hoisted_43$6, [
@@ -78620,7 +78623,7 @@ const _hoisted_18$1c = {
78620
78623
  key: 3,
78621
78624
  class: "cn-analytics-card__view-all"
78622
78625
  };
78623
- const _hoisted_19$13 = ["href"];
78626
+ const _hoisted_19$14 = ["href"];
78624
78627
 
78625
78628
  function render$7b(_ctx, _cache, $props, $setup, $data, $options) {
78626
78629
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -78720,7 +78723,7 @@ function render$7b(_ctx, _cache, $props, $setup, $data, $options) {
78720
78723
  href: $props.analyticsAppUrl,
78721
78724
  target: "_blank",
78722
78725
  rel: "noopener noreferrer"
78723
- }, vue$1.toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_19$13)
78726
+ }, vue$1.toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_19$14)
78724
78727
  ]))
78725
78728
  : vue$1.createCommentVNode("v-if", true)
78726
78729
  ], 64 /* STABLE_FRAGMENT */))
@@ -80963,7 +80966,7 @@ const _hoisted_18$1b = {
80963
80966
  key: 2,
80964
80967
  class: "cn-audit-details__new"
80965
80968
  };
80966
- const _hoisted_19$12 = {
80969
+ const _hoisted_19$13 = {
80967
80970
  key: 3,
80968
80971
  class: "cn-audit-details__null"
80969
80972
  };
@@ -81115,7 +81118,7 @@ function render$74(_ctx, _cache, $props, $setup, $data, $options) {
81115
81118
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$1b, vue$1.toDisplayString($options.formatValue(change.new)), 1 /* TEXT */))
81116
81119
  : vue$1.createCommentVNode("v-if", true),
81117
81120
  (change.old === null && change.new === null)
81118
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$12, "null"))
81121
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$13, "null"))
81119
81122
  : vue$1.createCommentVNode("v-if", true)
81120
81123
  ]))
81121
81124
  : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$X, [
@@ -81461,7 +81464,7 @@ const _hoisted_18$1a = {
81461
81464
  key: 2,
81462
81465
  class: "cn-bookmarks-card__list"
81463
81466
  };
81464
- const _hoisted_19$11 = { class: "cn-bookmarks-card__row-icon" };
81467
+ const _hoisted_19$12 = { class: "cn-bookmarks-card__row-icon" };
81465
81468
  const _hoisted_20$W = ["src", "onError"];
81466
81469
  const _hoisted_21$T = { class: "cn-bookmarks-card__row-main" };
81467
81470
  const _hoisted_22$Q = ["href"];
@@ -81575,7 +81578,7 @@ function render$73(_ctx, _cache, $props, $setup, $data, $options) {
81575
81578
  key: $options.bookmarkKey(bookmark),
81576
81579
  class: "cn-bookmarks-card__row"
81577
81580
  }, [
81578
- vue$1.createElementVNode("div", _hoisted_19$11, [
81581
+ vue$1.createElementVNode("div", _hoisted_19$12, [
81579
81582
  ($options.faviconUrl(bookmark))
81580
81583
  ? (vue$1.openBlock(), vue$1.createElementBlock("img", {
81581
81584
  key: 0,
@@ -83542,7 +83545,7 @@ const _hoisted_18$19 = {
83542
83545
  key: 0,
83543
83546
  class: "cn-calendar-event-picker__event-location"
83544
83547
  };
83545
- const _hoisted_19$10 = {
83548
+ const _hoisted_19$11 = {
83546
83549
  key: 3,
83547
83550
  class: "cn-calendar-event-picker__empty"
83548
83551
  };
@@ -83667,7 +83670,7 @@ function render$6Z(_ctx, _cache, $props, $setup, $data, $options) {
83667
83670
  ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_14$1Y))
83668
83671
  }), 128 /* KEYED_FRAGMENT */))
83669
83672
  ]))
83670
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$10, vue$1.toDisplayString($props.noEventsLabel), 1 /* TEXT */))
83673
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$11, vue$1.toDisplayString($props.noEventsLabel), 1 /* TEXT */))
83671
83674
  ]))
83672
83675
  : vue$1.createCommentVNode("v-if", true)
83673
83676
  ])
@@ -84113,7 +84116,7 @@ const _hoisted_18$18 = {
84113
84116
  key: 1,
84114
84117
  class: "cn-calendar-tab__attendees"
84115
84118
  };
84116
- const _hoisted_19$$ = ["title"];
84119
+ const _hoisted_19$10 = ["title"];
84117
84120
  const _hoisted_20$V = ["title"];
84118
84121
  const _hoisted_21$S = {
84119
84122
  key: 1,
@@ -84249,7 +84252,7 @@ function render$6Y(_ctx, _cache, $props, $setup, $data, $options) {
84249
84252
  key: idx,
84250
84253
  class: "cn-calendar-tab__avatar",
84251
84254
  title: att.name
84252
- }, vue$1.toDisplayString(att.initials), 9 /* TEXT, PROPS */, _hoisted_19$$))
84255
+ }, vue$1.toDisplayString(att.initials), 9 /* TEXT, PROPS */, _hoisted_19$10))
84253
84256
  }), 128 /* KEYED_FRAGMENT */)),
84254
84257
  ($options.extraAttendees(ev) > 0)
84255
84258
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
@@ -84811,7 +84814,7 @@ const _hoisted_18$17 = {
84811
84814
  key: 1,
84812
84815
  class: "cn-collectives-card__empty"
84813
84816
  };
84814
- const _hoisted_19$_ = {
84817
+ const _hoisted_19$$ = {
84815
84818
  key: 2,
84816
84819
  class: "cn-collectives-card__list"
84817
84820
  };
@@ -84926,7 +84929,7 @@ function render$6X(_ctx, _cache, $props, $setup, $data, $options) {
84926
84929
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_17$1h, vue$1.toDisplayString($data.degraded), 1 /* TEXT */))
84927
84930
  : ($data.pages.length === 0)
84928
84931
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$17, vue$1.toDisplayString($props.emptyLabel), 1 /* TEXT */))
84929
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$_, [
84932
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$$, [
84930
84933
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.displayedPages, (page) => {
84931
84934
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
84932
84935
  key: $options.pageKey(page),
@@ -88015,7 +88018,7 @@ const _hoisted_18$16 = {
88015
88018
  class: "cn-contacts-tab__sub",
88016
88019
  "data-testid": "cn-contacts-tab-period"
88017
88020
  };
88018
- const _hoisted_19$Z = { class: "cn-contacts-tab__sub-text" };
88021
+ const _hoisted_19$_ = { class: "cn-contacts-tab__sub-text" };
88019
88022
  const _hoisted_20$T = {
88020
88023
  key: 4,
88021
88024
  class: "cn-contacts-tab__sub"
@@ -88177,7 +88180,7 @@ function render$6O(_ctx, _cache, $props, $setup, $data, $options) {
88177
88180
  size: 14,
88178
88181
  class: "cn-contacts-tab__sub-icon"
88179
88182
  }),
88180
- vue$1.createElementVNode("span", _hoisted_19$Z, vue$1.toDisplayString($options.periodOf(contact)), 1 /* TEXT */)
88183
+ vue$1.createElementVNode("span", _hoisted_19$_, vue$1.toDisplayString($options.periodOf(contact)), 1 /* TEXT */)
88181
88184
  ]))
88182
88185
  : vue$1.createCommentVNode("v-if", true),
88183
88186
  (contact.note)
@@ -90027,7 +90030,7 @@ const _hoisted_16$1v = {
90027
90030
  };
90028
90031
  const _hoisted_17$1e = { class: "cn-deck-card__column-header" };
90029
90032
  const _hoisted_18$15 = { class: "cn-deck-card__column-title" };
90030
- const _hoisted_19$Y = { class: "cn-deck-card__column-count" };
90033
+ const _hoisted_19$Z = { class: "cn-deck-card__column-count" };
90031
90034
  const _hoisted_20$S = { class: "cn-deck-card__column-list" };
90032
90035
  const _hoisted_21$P = ["href"];
90033
90036
 
@@ -90112,7 +90115,7 @@ function render$6J(_ctx, _cache, $props, $setup, $data, $options) {
90112
90115
  }, [
90113
90116
  vue$1.createElementVNode("header", _hoisted_17$1e, [
90114
90117
  vue$1.createElementVNode("span", _hoisted_18$15, vue$1.toDisplayString(stack.label), 1 /* TEXT */),
90115
- vue$1.createElementVNode("span", _hoisted_19$Y, vue$1.toDisplayString(stack.cards.length), 1 /* TEXT */)
90118
+ vue$1.createElementVNode("span", _hoisted_19$Z, vue$1.toDisplayString(stack.cards.length), 1 /* TEXT */)
90116
90119
  ]),
90117
90120
  vue$1.createElementVNode("ul", _hoisted_20$S, [
90118
90121
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(stack.cards, (card) => {
@@ -92045,7 +92048,7 @@ const _hoisted_16$1t = {
92045
92048
  };
92046
92049
  const _hoisted_17$1c = ["onClick"];
92047
92050
  const _hoisted_18$14 = { class: "cn-email-picker__message" };
92048
- const _hoisted_19$X = { class: "cn-email-picker__message-subject" };
92051
+ const _hoisted_19$Y = { class: "cn-email-picker__message-subject" };
92049
92052
  const _hoisted_20$R = { class: "cn-email-picker__message-meta" };
92050
92053
  const _hoisted_21$O = { class: "cn-email-picker__message-sender" };
92051
92054
  const _hoisted_22$M = {
@@ -92221,7 +92224,7 @@ function render$6E(_ctx, _cache, $props, $setup, $data, $options) {
92221
92224
  }, [
92222
92225
  vue$1.createVNode(_component_EmailOutline, { size: 18 }),
92223
92226
  vue$1.createElementVNode("span", _hoisted_18$14, [
92224
- vue$1.createElementVNode("span", _hoisted_19$X, vue$1.toDisplayString(msg.subject || $options.t('nextcloud-vue', '(no subject)')), 1 /* TEXT */),
92227
+ vue$1.createElementVNode("span", _hoisted_19$Y, vue$1.toDisplayString(msg.subject || $options.t('nextcloud-vue', '(no subject)')), 1 /* TEXT */),
92225
92228
  vue$1.createElementVNode("span", _hoisted_20$R, [
92226
92229
  vue$1.createElementVNode("span", _hoisted_21$O, vue$1.toDisplayString(msg.sender || $options.t('nextcloud-vue', 'Unknown sender')), 1 /* TEXT */),
92227
92230
  (msg.date)
@@ -95337,7 +95340,7 @@ const _hoisted_15$1B = { value: "no" };
95337
95340
  const _hoisted_16$1r = { value: "na" };
95338
95341
  const _hoisted_17$1a = ["onUpdate:modelValue", "data-testid"];
95339
95342
  const _hoisted_18$12 = ["data-testid"];
95340
- const _hoisted_19$W = {
95343
+ const _hoisted_19$X = {
95341
95344
  key: 0,
95342
95345
  class: "cn-field-inspection__error",
95343
95346
  role: "alert",
@@ -95517,7 +95520,7 @@ function render$6B(_ctx, _cache, $props, $setup, $data, $options) {
95517
95520
  ]))
95518
95521
  }), 128 /* KEYED_FRAGMENT */)),
95519
95522
  ($data.saveError)
95520
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$W, vue$1.toDisplayString($data.saveError), 1 /* TEXT */))
95523
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$X, vue$1.toDisplayString($data.saveError), 1 /* TEXT */))
95521
95524
  : vue$1.createCommentVNode("v-if", true),
95522
95525
  vue$1.createVNode(_component_NcButton, {
95523
95526
  type: "submit",
@@ -100053,7 +100056,7 @@ const _hoisted_17$19 = {
100053
100056
  "data-testid": "cn-files-browser-facets"
100054
100057
  };
100055
100058
  const _hoisted_18$11 = ["aria-label"];
100056
- const _hoisted_19$V = ["aria-pressed", "onClick"];
100059
+ const _hoisted_19$W = ["aria-pressed", "onClick"];
100057
100060
  const _hoisted_20$Q = { class: "cn-files-browser__facet-count" };
100058
100061
  const _hoisted_21$N = ["aria-label"];
100059
100062
  const _hoisted_22$L = {
@@ -100096,11 +100099,11 @@ const _hoisted_37$b = { class: "cn-files-browser__col-icon" };
100096
100099
  const _hoisted_38$b = ["src", "onError"];
100097
100100
  const _hoisted_39$9 = ["src"];
100098
100101
  const _hoisted_40$9 = ["data-testid"];
100099
- const _hoisted_41$6 = {
100102
+ const _hoisted_41$7 = {
100100
100103
  key: 0,
100101
100104
  class: "cn-files-browser__name"
100102
100105
  };
100103
- const _hoisted_42$6 = {
100106
+ const _hoisted_42$7 = {
100104
100107
  key: 1,
100105
100108
  class: "cn-files-browser__name-secondary",
100106
100109
  "data-testid": "cn-files-browser-name-secondary"
@@ -100456,7 +100459,7 @@ function render$6v(_ctx, _cache, $props, $setup, $data, $options) {
100456
100459
  }, [
100457
100460
  vue$1.createTextVNode(vue$1.toDisplayString(option.value) + " ", 1 /* TEXT */),
100458
100461
  vue$1.createElementVNode("strong", _hoisted_20$Q, vue$1.toDisplayString(option.count), 1 /* TEXT */)
100459
- ], 10 /* CLASS, PROPS */, _hoisted_19$V))
100462
+ ], 10 /* CLASS, PROPS */, _hoisted_19$W))
100460
100463
  }), 128 /* KEYED_FRAGMENT */))
100461
100464
  ], 8 /* PROPS */, _hoisted_18$11))
100462
100465
  }), 128 /* KEYED_FRAGMENT */)),
@@ -100689,10 +100692,10 @@ function render$6v(_ctx, _cache, $props, $setup, $data, $options) {
100689
100692
  "data-testid": `cn-files-browser-cell-${column.key}`
100690
100693
  }, [
100691
100694
  (column.key === 'name')
100692
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_41$6, vue$1.toDisplayString(node.basename), 1 /* TEXT */))
100695
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_41$7, vue$1.toDisplayString(node.basename), 1 /* TEXT */))
100693
100696
  : vue$1.createCommentVNode("v-if", true),
100694
100697
  (column.key === 'name' && $options.nameSecondaryOf(node))
100695
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$6, vue$1.toDisplayString($options.nameSecondaryOf(node)), 1 /* TEXT */))
100698
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$7, vue$1.toDisplayString($options.nameSecondaryOf(node)), 1 /* TEXT */))
100696
100699
  : (column.key === 'size')
100697
100700
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 2 }, [
100698
100701
  vue$1.createTextVNode(vue$1.toDisplayString($options.isFolder(node) ? '' : $options.formatSize(node.size)), 1 /* TEXT */)
@@ -105898,7 +105901,7 @@ const _hoisted_18$10 = {
105898
105901
  key: 2,
105899
105902
  class: "cn-maps-card__list"
105900
105903
  };
105901
- const _hoisted_19$U = { class: "cn-maps-card__row-main" };
105904
+ const _hoisted_19$V = { class: "cn-maps-card__row-main" };
105902
105905
  const _hoisted_20$P = { class: "cn-maps-card__row-header" };
105903
105906
  const _hoisted_21$M = ["href"];
105904
105907
  const _hoisted_22$K = {
@@ -106008,7 +106011,7 @@ function render$6m(_ctx, _cache, $props, $setup, $data, $options) {
106008
106011
  size: 14,
106009
106012
  class: "cn-maps-card__row-icon"
106010
106013
  }),
106011
- vue$1.createElementVNode("div", _hoisted_19$U, [
106014
+ vue$1.createElementVNode("div", _hoisted_19$V, [
106012
106015
  vue$1.createElementVNode("div", _hoisted_20$P, [
106013
106016
  vue$1.createElementVNode("a", {
106014
106017
  href: $options.pointUrl(point),
@@ -110410,7 +110413,7 @@ const _hoisted_18$$ = {
110410
110413
  key: 2,
110411
110414
  class: "cn-openproject-card__empty"
110412
110415
  };
110413
- const _hoisted_19$T = {
110416
+ const _hoisted_19$U = {
110414
110417
  key: 3,
110415
110418
  class: "cn-openproject-card__empty"
110416
110419
  };
@@ -110532,7 +110535,7 @@ function render$6c(_ctx, _cache, $props, $setup, $data, $options) {
110532
110535
  : ($data.degraded)
110533
110536
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$$, vue$1.toDisplayString($data.degraded), 1 /* TEXT */))
110534
110537
  : ($data.workPackages.length === 0)
110535
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$T, vue$1.toDisplayString($props.emptyLabel), 1 /* TEXT */))
110538
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$U, vue$1.toDisplayString($props.emptyLabel), 1 /* TEXT */))
110536
110539
  : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_20$O, [
110537
110540
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.workPackages, (wp) => {
110538
110541
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
@@ -112250,7 +112253,7 @@ const _hoisted_18$_ = {
112250
112253
  key: 2,
112251
112254
  class: "cn-photos-card__grid"
112252
112255
  };
112253
- const _hoisted_19$S = ["href", "title"];
112256
+ const _hoisted_19$T = ["href", "title"];
112254
112257
  const _hoisted_20$N = { class: "cn-photos-card__tile-cover" };
112255
112258
  const _hoisted_21$K = ["src", "onError"];
112256
112259
  const _hoisted_22$I = { class: "cn-photos-card__tile-name" };
@@ -112382,7 +112385,7 @@ function render$68(_ctx, _cache, $props, $setup, $data, $options) {
112382
112385
  }))
112383
112386
  ]),
112384
112387
  vue$1.createElementVNode("span", _hoisted_22$I, vue$1.toDisplayString($options.albumName(album)), 1 /* TEXT */)
112385
- ], 8 /* PROPS */, _hoisted_19$S))
112388
+ ], 8 /* PROPS */, _hoisted_19$T))
112386
112389
  }), 128 /* KEYED_FRAGMENT */))
112387
112390
  ])),
112388
112391
  ($data.albums.length > $data.COMPACT_LIMIT)
@@ -113670,7 +113673,7 @@ const _hoisted_18$Z = {
113670
113673
  key: 0,
113671
113674
  class: "cn-polls-card__subtitle"
113672
113675
  };
113673
- const _hoisted_19$R = {
113676
+ const _hoisted_19$S = {
113674
113677
  key: 1,
113675
113678
  class: "cn-polls-card__options"
113676
113679
  };
@@ -113784,7 +113787,7 @@ function render$64(_ctx, _cache, $props, $setup, $data, $options) {
113784
113787
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$Z, vue$1.toDisplayString($options.rowMeta(poll)), 1 /* TEXT */))
113785
113788
  : vue$1.createCommentVNode("v-if", true),
113786
113789
  ($options.pollOptions(poll).length > 0)
113787
- ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$R, [
113790
+ ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$S, [
113788
113791
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.pollOptions(poll), (opt) => {
113789
113792
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
113790
113793
  key: $options.optionKey(opt),
@@ -114673,7 +114676,7 @@ const _hoisted_15$1p = { class: "cn-polls-tab__option-label" };
114673
114676
  const _hoisted_16$1g = { class: "cn-polls-tab__option-text" };
114674
114677
  const _hoisted_17$13 = { class: "cn-polls-tab__option-count" };
114675
114678
  const _hoisted_18$Y = ["aria-valuenow"];
114676
- const _hoisted_19$Q = {
114679
+ const _hoisted_19$R = {
114677
114680
  key: 1,
114678
114681
  class: "cn-polls-tab__description"
114679
114682
  };
@@ -114859,7 +114862,7 @@ function render$61(_ctx, _cache, $props, $setup, $data, $options) {
114859
114862
  ]))
114860
114863
  : vue$1.createCommentVNode("v-if", true),
114861
114864
  ($options.pollDescription(poll))
114862
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$Q, vue$1.toDisplayString($options.pollDescription(poll)), 1 /* TEXT */))
114865
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$R, vue$1.toDisplayString($options.pollDescription(poll)), 1 /* TEXT */))
114863
114866
  : vue$1.createCommentVNode("v-if", true)
114864
114867
  ], 2 /* CLASS */))
114865
114868
  }), 128 /* KEYED_FRAGMENT */))
@@ -127093,7 +127096,7 @@ const _hoisted_16$1b = {
127093
127096
  };
127094
127097
  const _hoisted_17$$ = { class: "cn-xwiki-card__list" };
127095
127098
  const _hoisted_18$V = { class: "cn-xwiki-card__row-header" };
127096
- const _hoisted_19$P = ["href"];
127099
+ const _hoisted_19$Q = ["href"];
127097
127100
  const _hoisted_20$L = {
127098
127101
  key: 0,
127099
127102
  class: "cn-xwiki-card__breadcrumb"
@@ -127194,7 +127197,7 @@ function render$5L(_ctx, _cache, $props, $setup, $data, $options) {
127194
127197
  target: "_blank",
127195
127198
  rel: "noopener",
127196
127199
  class: "cn-xwiki-card__title"
127197
- }, vue$1.toDisplayString($options.pageTitle(page)), 9 /* TEXT, PROPS */, _hoisted_19$P)
127200
+ }, vue$1.toDisplayString($options.pageTitle(page)), 9 /* TEXT, PROPS */, _hoisted_19$Q)
127198
127201
  ]),
127199
127202
  ($options.breadcrumbLabel(page))
127200
127203
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$L, vue$1.toDisplayString($options.breadcrumbLabel(page)), 1 /* TEXT */))
@@ -135456,7 +135459,7 @@ const _hoisted_18$U = {
135456
135459
  key: 6,
135457
135460
  class: "cn-form-dialog__switch-wrapper"
135458
135461
  };
135459
- const _hoisted_19$O = {
135462
+ const _hoisted_19$P = {
135460
135463
  key: 7,
135461
135464
  class: "cn-form-dialog__select-wrapper"
135462
135465
  };
@@ -135517,11 +135520,11 @@ const _hoisted_40$8 = {
135517
135520
  key: 18,
135518
135521
  class: "cn-form-dialog__property-source-wrapper"
135519
135522
  };
135520
- const _hoisted_41$5 = {
135523
+ const _hoisted_41$6 = {
135521
135524
  key: 19,
135522
135525
  class: "cn-form-dialog__icon-wrapper"
135523
135526
  };
135524
- const _hoisted_42$5 = ["for"];
135527
+ const _hoisted_42$6 = ["for"];
135525
135528
  const _hoisted_43$4 = {
135526
135529
  key: 21,
135527
135530
  class: "cn-form-dialog__assigned",
@@ -136051,7 +136054,7 @@ function render$5H(_ctx, _cache, $props, $setup, $data, $options) {
136051
136054
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
136052
136055
  ]))
136053
136056
  : (field.widget === 'select' || field.widget === 'user' || field.widget === 'group')
136054
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$O, [
136057
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$P, [
136055
136058
  (field.look === 'search' && !$options.isUserField(field))
136056
136059
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnSearchSelect, {
136057
136060
  key: 0,
@@ -136483,13 +136486,13 @@ function render$5H(_ctx, _cache, $props, $setup, $data, $options) {
136483
136486
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
136484
136487
  ]))
136485
136488
  : (field.widget === 'icon')
136486
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_41$5, [
136489
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_41$6, [
136487
136490
  (!$options.showsOuterLabel(field))
136488
136491
  ? (vue$1.openBlock(), vue$1.createElementBlock("label", {
136489
136492
  key: 0,
136490
136493
  for: 'cn-form-' + field.key,
136491
136494
  class: "cn-form-dialog__label"
136492
- }, vue$1.toDisplayString(field.label) + vue$1.toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_42$5))
136495
+ }, vue$1.toDisplayString(field.label) + vue$1.toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_42$6))
136493
136496
  : vue$1.createCommentVNode("v-if", true),
136494
136497
  vue$1.createVNode(_component_CnIconBrowser, {
136495
136498
  value: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
@@ -144408,7 +144411,7 @@ const _hoisted_18$S = {
144408
144411
  class: "cn-related-objects-widget__panel",
144409
144412
  role: "tabpanel"
144410
144413
  };
144411
- const _hoisted_19$N = { class: "cn-related-objects-widget__list" };
144414
+ const _hoisted_19$O = { class: "cn-related-objects-widget__list" };
144412
144415
  const _hoisted_20$J = ["href"];
144413
144416
  const _hoisted_21$G = { class: "cn-related-objects-widget__label" };
144414
144417
  const _hoisted_22$E = {
@@ -144456,8 +144459,8 @@ const _hoisted_37$9 = {
144456
144459
  const _hoisted_38$9 = { class: "cn-related-objects-widget__group-title" };
144457
144460
  const _hoisted_39$7 = { class: "cn-related-objects-widget__count" };
144458
144461
  const _hoisted_40$7 = { class: "cn-related-objects-widget__list" };
144459
- const _hoisted_41$4 = ["onClick", "onKeydown"];
144460
- const _hoisted_42$4 = { class: "cn-related-objects-widget__label" };
144462
+ const _hoisted_41$5 = ["onClick", "onKeydown"];
144463
+ const _hoisted_42$5 = { class: "cn-related-objects-widget__label" };
144461
144464
  const _hoisted_43$3 = {
144462
144465
  key: 0,
144463
144466
  class: "cn-related-objects-widget__meta"
@@ -144620,7 +144623,7 @@ function render$5z(_ctx, _cache, $props, $setup, $data, $options) {
144620
144623
  : vue$1.createCommentVNode("v-if", true),
144621
144624
  ($props.layout !== 'sections' && $options.activeGroup)
144622
144625
  ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_18$S, [
144623
- vue$1.createElementVNode("ul", _hoisted_19$N, [
144626
+ vue$1.createElementVNode("ul", _hoisted_19$O, [
144624
144627
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.activeGroup.items, (item, i) => {
144625
144628
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
144626
144629
  key: `item-${$options.activeGroup.key}-${item.id || i}`
@@ -144748,11 +144751,11 @@ function render$5z(_ctx, _cache, $props, $setup, $data, $options) {
144748
144751
  class: "cn-related-objects-widget__icon",
144749
144752
  size: 20
144750
144753
  }),
144751
- vue$1.createElementVNode("span", _hoisted_42$4, vue$1.toDisplayString(item.label), 1 /* TEXT */),
144754
+ vue$1.createElementVNode("span", _hoisted_42$5, vue$1.toDisplayString(item.label), 1 /* TEXT */),
144752
144755
  (item.meta)
144753
144756
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_43$3, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
144754
144757
  : vue$1.createCommentVNode("v-if", true)
144755
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_41$4))
144758
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_41$5))
144756
144759
  }), 128 /* KEYED_FRAGMENT */))
144757
144760
  ])
144758
144761
  ]))
@@ -146121,15 +146124,18 @@ function schemaSlug(schema) {
146121
146124
  * it: three case indexes share their views, the organisations index does
146122
146125
  * not. `savedViewsScope` on a page overrides that, for pages that should
146123
146126
  * share views although they read different sources, or keep them apart
146124
- * although they read the same one.
146127
+ * although they read the same one. A page over a named source
146128
+ * (`entitySource`) and no schema shares its views with the pages over that
146129
+ * source.
146125
146130
  *
146126
146131
  * @param {object} page The page.
146127
146132
  * @param {string} [page.scope] The explicit `savedViewsScope`, when set.
146128
146133
  * @param {string} [page.register] The page's register.
146129
146134
  * @param {object|string} [page.schema] The page's schema, slug or object.
146135
+ * @param {string} [page.source] The page's `entitySource`, when it reads one.
146130
146136
  * @return {string} The scope key, or the empty string for a page with no source.
146131
146137
  */
146132
- function savedViewScope({ scope, register, schema } = {}) {
146138
+ function savedViewScope({ scope, register, schema, source } = {}) {
146133
146139
  if (typeof scope === 'string' && scope !== '') {
146134
146140
  return scope
146135
146141
  }
@@ -146137,9 +146143,43 @@ function savedViewScope({ scope, register, schema } = {}) {
146137
146143
  if (typeof register === 'string' && register !== '' && slug !== '') {
146138
146144
  return `${register}/${slug}`
146139
146145
  }
146146
+ if (typeof source === 'string' && source !== '') {
146147
+ return `source:${source}`
146148
+ }
146140
146149
  return ''
146141
146150
  }
146142
146151
 
146152
+ /**
146153
+ * Whether an index page offers saved views in its sidebar.
146154
+ *
146155
+ * `allowSavedViews` decides when it is set. Unset, every index page that has
146156
+ * a sidebar and a source a view can be scoped to (a register and schema, a
146157
+ * named source, or `savedViewsScope`) offers them, so managing views is
146158
+ * there on every list without each page opting in.
146159
+ *
146160
+ * @param {object} config The page's index config, or CnIndexPage's props.
146161
+ * @param {boolean|null} [config.allowSavedViews] The explicit choice, when made.
146162
+ * @param {object} [config.sidebar] The sidebar config.
146163
+ * @param {string} [config.savedViewsScope] The explicit scope.
146164
+ * @param {string} [config.register] The register.
146165
+ * @param {object|string} [config.schema] The schema.
146166
+ * @param {string} [config.entitySource] The named source.
146167
+ * @return {boolean}
146168
+ */
146169
+ function pageOffersSavedViews(config) {
146170
+ if (!config || typeof config !== 'object') {
146171
+ return false
146172
+ }
146173
+ if (typeof config.allowSavedViews === 'boolean') {
146174
+ return config.allowSavedViews
146175
+ }
146176
+ const sidebar = config.sidebar;
146177
+ if (!sidebar || typeof sidebar !== 'object' || sidebar.enabled !== true || sidebar.show === false) {
146178
+ return false
146179
+ }
146180
+ return savedViewScope({ scope: config.savedViewsScope, register: config.register, schema: config.schema, source: config.entitySource }) !== ''
146181
+ }
146182
+
146143
146183
  /**
146144
146184
  * Whether a saved view belongs on a page.
146145
146185
  *
@@ -159148,7 +159188,7 @@ const _hoisted_18$R = {
159148
159188
  key: 0,
159149
159189
  class: "cn-object-data-widget__deflist cn-object-data-widget__deflist--nested"
159150
159190
  };
159151
- const _hoisted_19$M = { class: "cn-object-data-widget__deflist-text" };
159191
+ const _hoisted_19$N = { class: "cn-object-data-widget__deflist-text" };
159152
159192
  const _hoisted_20$I = {
159153
159193
  key: 1,
159154
159194
  class: "cn-object-data-widget__deflist-text"
@@ -159551,7 +159591,7 @@ function render$5f(_ctx, _cache, $props, $setup, $data, $options) {
159551
159591
  return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: si }, [
159552
159592
  vue$1.createElementVNode("dt", null, vue$1.toDisplayString($options.nestedLabel(field, [pair[0], sub[0]])), 1 /* TEXT */),
159553
159593
  vue$1.createElementVNode("dd", null, [
159554
- vue$1.createElementVNode("span", _hoisted_19$M, vue$1.toDisplayString($options.stringifyNested(sub[1])), 1 /* TEXT */)
159594
+ vue$1.createElementVNode("span", _hoisted_19$N, vue$1.toDisplayString($options.stringifyNested(sub[1])), 1 /* TEXT */)
159555
159595
  ])
159556
159596
  ], 64 /* STABLE_FRAGMENT */))
159557
159597
  }), 128 /* KEYED_FRAGMENT */))
@@ -167814,7 +167854,7 @@ const _hoisted_18$Q = {
167814
167854
  key: 0,
167815
167855
  class: "cn-object-card__description"
167816
167856
  };
167817
- const _hoisted_19$L = {
167857
+ const _hoisted_19$M = {
167818
167858
  key: 0,
167819
167859
  class: "cn-object-card__badges"
167820
167860
  };
@@ -168029,7 +168069,7 @@ function render$4Z(_ctx, _cache, $props, $setup, $data, $options) {
168029
168069
  : vue$1.createCommentVNode("v-if", true)
168030
168070
  ]),
168031
168071
  (_ctx.$slots.badges)
168032
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$L, [
168072
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$M, [
168033
168073
  vue$1.renderSlot(_ctx.$slots, "badges", { object: $props.object })
168034
168074
  ]))
168035
168075
  : vue$1.createCommentVNode("v-if", true),
@@ -171124,7 +171164,7 @@ const _hoisted_18$P = {
171124
171164
  class: "cn-form-page__suggested",
171125
171165
  "data-testid": "cn-form-page-suggested"
171126
171166
  };
171127
- const _hoisted_19$K = { class: "cn-form-page__suggested-tag" };
171167
+ const _hoisted_19$L = { class: "cn-form-page__suggested-tag" };
171128
171168
  const _hoisted_20$G = ["id"];
171129
171169
  const _hoisted_21$E = {
171130
171170
  key: 4,
@@ -171385,7 +171425,7 @@ function render$4R(_ctx, _cache, $props, $setup, $data, $options) {
171385
171425
  : vue$1.createCommentVNode("v-if", true),
171386
171426
  ($data.suggestions[field.key])
171387
171427
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$P, [
171388
- vue$1.createElementVNode("span", _hoisted_19$K, vue$1.toDisplayString($options.t('nextcloud-vue', 'Suggested')), 1 /* TEXT */),
171428
+ vue$1.createElementVNode("span", _hoisted_19$L, vue$1.toDisplayString($options.t('nextcloud-vue', 'Suggested')), 1 /* TEXT */),
171389
171429
  vue$1.createVNode(_component_NcButton, {
171390
171430
  type: "button",
171391
171431
  variant: "tertiary",
@@ -178717,7 +178757,8 @@ const __sfc_main$4B = script$4H;
178717
178757
  * not be read is named at the top rather than folded into "nothing is
178718
178758
  * waiting". A group can be hidden until tomorrow, through the server, so the
178719
178759
  * choice follows the reader to another device. dossiq's personal queue is
178720
- * the first; pipelinq's queue has the same shape.
178760
+ * the first; pipelinq's queue has the same shape. It reads again on
178761
+ * `cn:page:refresh`, so work planned or closed in a dialog shows at once.
178721
178762
  *
178722
178763
  * `content`:
178723
178764
  * - `source`: an endpointSource answering `{ groups, hiddenGroups?, unavailable? }`.
@@ -178784,9 +178825,14 @@ var script$4G = {
178784
178825
  },
178785
178826
 
178786
178827
  mounted() {
178828
+ eventBus.subscribe('cn:page:refresh', this.load);
178787
178829
  this.load();
178788
178830
  },
178789
178831
 
178832
+ beforeUnmount() {
178833
+ eventBus.unsubscribe('cn:page:refresh', this.load);
178834
+ },
178835
+
178790
178836
  methods: {
178791
178837
  t: l10n.translate,
178792
178838
 
@@ -178984,7 +179030,7 @@ const _hoisted_16$13 = {
178984
179030
  };
178985
179031
  const _hoisted_17$U = { key: 0 };
178986
179032
  const _hoisted_18$O = ["data-testid"];
178987
- const _hoisted_19$J = {
179033
+ const _hoisted_19$K = {
178988
179034
  key: 0,
178989
179035
  class: "cn-work-queue__muted"
178990
179036
  };
@@ -179108,7 +179154,7 @@ function render$4F(_ctx, _cache, $props, $setup, $data, $options) {
179108
179154
  : vue$1.createCommentVNode("v-if", true)
179109
179155
  ]),
179110
179156
  (item.dueAt)
179111
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$J, vue$1.toDisplayString(item.dueAt), 1 /* TEXT */))
179157
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$K, vue$1.toDisplayString(item.dueAt), 1 /* TEXT */))
179112
179158
  : vue$1.createCommentVNode("v-if", true)
179113
179159
  ], 10 /* CLASS, PROPS */, _hoisted_12$1r))
179114
179160
  }), 128 /* KEYED_FRAGMENT */))
@@ -179138,7 +179184,7 @@ function render$4F(_ctx, _cache, $props, $setup, $data, $options) {
179138
179184
  }
179139
179185
 
179140
179186
  script$4G.render = render$4F;
179141
- script$4G.__scopeId = "data-v-793630f4";
179187
+ script$4G.__scopeId = "data-v-d5bc0a42";
179142
179188
  const __sfc_main$4A = script$4G;
179143
179189
 
179144
179190
  // 自定义组件前缀
@@ -181169,7 +181215,7 @@ const _hoisted_16$12 = {
181169
181215
  };
181170
181216
  const _hoisted_17$T = { class: "vc-chrome-fields" };
181171
181217
  const _hoisted_18$N = { class: "vc-chrome-field" };
181172
- const _hoisted_19$I = { class: "vc-chrome-field" };
181218
+ const _hoisted_19$J = { class: "vc-chrome-field" };
181173
181219
  const _hoisted_20$E = { class: "vc-chrome-field" };
181174
181220
  const _hoisted_21$C = {
181175
181221
  key: 0,
@@ -181303,7 +181349,7 @@ function render$4z(_ctx, _cache, $props, $setup, $data, $options) {
181303
181349
  onChange: $options.inputChange
181304
181350
  }, null, 8 /* PROPS */, ["value", "onChange"])
181305
181351
  ]),
181306
- vue$1.createElementVNode("div", _hoisted_19$I, [
181352
+ vue$1.createElementVNode("div", _hoisted_19$J, [
181307
181353
  vue$1.createVNode(_component_EdIn, {
181308
181354
  label: "s",
181309
181355
  value: $options.hsl.s,
@@ -189572,7 +189618,7 @@ const _hoisted_15$15 = ["title", "onClick"];
189572
189618
  const _hoisted_16$10 = ["onClick"];
189573
189619
  const _hoisted_17$R = { class: "cn-links-form__options" };
189574
189620
  const _hoisted_18$L = { class: "cn-links-form__option" };
189575
- const _hoisted_19$H = ["value"];
189621
+ const _hoisted_19$I = ["value"];
189576
189622
  const _hoisted_20$D = { class: "cn-links-form__option" };
189577
189623
  const _hoisted_21$B = ["value"];
189578
189624
  const _hoisted_22$B = { value: "card" };
@@ -189717,7 +189763,7 @@ function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
189717
189763
  value: $data.columns,
189718
189764
  class: "cn-links-form__input cn-links-form__input--narrow",
189719
189765
  onInput: _cache[1] || (_cache[1] = $event => ($options.updateOption('columns', $options.clampColumns($event.target.value))))
189720
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_19$H)
189766
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_19$I)
189721
189767
  ]),
189722
189768
  vue$1.createElementVNode("label", _hoisted_20$D, [
189723
189769
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Layout')), 1 /* TEXT */),
@@ -194200,7 +194246,7 @@ const _hoisted_15$13 = ["src", "onError"];
194200
194246
  const _hoisted_16$_ = { class: "cn-files-widget__row-label" };
194201
194247
  const _hoisted_17$P = { class: "cn-files-widget__row-modified" };
194202
194248
  const _hoisted_18$K = { class: "cn-files-widget__row-size" };
194203
- const _hoisted_19$G = ["aria-label", "onClick"];
194249
+ const _hoisted_19$H = ["aria-label", "onClick"];
194204
194250
  const _hoisted_20$C = {
194205
194251
  key: 9,
194206
194252
  class: "cn-files-widget__pagination"
@@ -194342,7 +194388,7 @@ function render$44(_ctx, _cache, $props, $setup, $data, $options) {
194342
194388
  class: "cn-files-widget__row-delete",
194343
194389
  "aria-label": $options.t('nextcloud-vue', 'Delete {name}', { name: item.name }),
194344
194390
  onClick: $event => ($options.confirmDelete(item))
194345
- }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Delete')), 9 /* TEXT, PROPS */, _hoisted_19$G))
194391
+ }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Delete')), 9 /* TEXT, PROPS */, _hoisted_19$H))
194346
194392
  : vue$1.createCommentVNode("v-if", true)
194347
194393
  ], 2 /* CLASS */))
194348
194394
  }), 128 /* KEYED_FRAGMENT */))
@@ -195382,7 +195428,7 @@ const _hoisted_17$O = {
195382
195428
  class: "cn-calendar-widget__week"
195383
195429
  };
195384
195430
  const _hoisted_18$J = { class: "cn-calendar-widget__week-day" };
195385
- const _hoisted_19$F = { class: "cn-calendar-widget__week-name" };
195431
+ const _hoisted_19$G = { class: "cn-calendar-widget__week-name" };
195386
195432
  const _hoisted_20$B = { class: "cn-calendar-widget__week-num" };
195387
195433
  const _hoisted_21$A = {
195388
195434
  key: 0,
@@ -195485,7 +195531,7 @@ function render$42(_ctx, _cache, $props, $setup, $data, $options) {
195485
195531
  class: vue$1.normalizeClass(["cn-calendar-widget__week-col", { 'is-today': day.isToday }])
195486
195532
  }, [
195487
195533
  vue$1.createElementVNode("header", _hoisted_18$J, [
195488
- vue$1.createElementVNode("span", _hoisted_19$F, vue$1.toDisplayString(day.weekday), 1 /* TEXT */),
195534
+ vue$1.createElementVNode("span", _hoisted_19$G, vue$1.toDisplayString(day.weekday), 1 /* TEXT */),
195489
195535
  vue$1.createElementVNode("span", _hoisted_20$B, vue$1.toDisplayString(day.dayNum), 1 /* TEXT */)
195490
195536
  ]),
195491
195537
  (day.events.length)
@@ -196548,7 +196594,7 @@ const _hoisted_18$I = {
196548
196594
  key: 0,
196549
196595
  class: "cn-spend-analytics-widget__panel"
196550
196596
  };
196551
- const _hoisted_19$E = { class: "cn-spend-analytics-widget__panel-title" };
196597
+ const _hoisted_19$F = { class: "cn-spend-analytics-widget__panel-title" };
196552
196598
  const _hoisted_20$A = { class: "cn-spend-analytics-widget__rows" };
196553
196599
  const _hoisted_21$z = {
196554
196600
  key: 1,
@@ -196640,7 +196686,7 @@ function render$40(_ctx, _cache, $props, $setup, $data, $options) {
196640
196686
  ]),
196641
196687
  ($options.viewMode === 'trend')
196642
196688
  ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_18$I, [
196643
- vue$1.createElementVNode("h3", _hoisted_19$E, vue$1.toDisplayString($options.t('nextcloud-vue', 'Spend trend')), 1 /* TEXT */),
196689
+ vue$1.createElementVNode("h3", _hoisted_19$F, vue$1.toDisplayString($options.t('nextcloud-vue', 'Spend trend')), 1 /* TEXT */),
196644
196690
  vue$1.createElementVNode("ul", _hoisted_20$A, [
196645
196691
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.finance.trend, (row) => {
196646
196692
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
@@ -197479,7 +197525,7 @@ const _hoisted_15$_ = {
197479
197525
  const _hoisted_16$V = { class: "cn-stat-widget-form__hint" };
197480
197526
  const _hoisted_17$M = { class: "cn-stat-widget-form__row2" };
197481
197527
  const _hoisted_18$H = { class: "cn-stat-widget-form__color-label" };
197482
- const _hoisted_19$D = { class: "cn-stat-widget-form__color-label" };
197528
+ const _hoisted_19$E = { class: "cn-stat-widget-form__color-label" };
197483
197529
  const _hoisted_20$z = { class: "cn-stat-widget-form__section" };
197484
197530
  const _hoisted_21$y = { class: "cn-stat-widget-form__hint" };
197485
197531
  const _hoisted_22$y = { class: "cn-stat-widget-form__section" };
@@ -197765,7 +197811,7 @@ function render$3$(_ctx, _cache, $props, $setup, $data, $options) {
197765
197811
  onClear: _cache[27] || (_cache[27] = $event => ($options.updateField('valueColor', '')))
197766
197812
  }, null, 8 /* PROPS */, ["value"])
197767
197813
  ]),
197768
- vue$1.createElementVNode("label", _hoisted_19$D, [
197814
+ vue$1.createElementVNode("label", _hoisted_19$E, [
197769
197815
  vue$1.createTextVNode(vue$1.toDisplayString($options.t('nextcloud-vue', 'Icon color')) + " ", 1 /* TEXT */),
197770
197816
  vue$1.createVNode(_component_CnColorPicker, {
197771
197817
  value: $data.iconColor,
@@ -200439,7 +200485,7 @@ const _hoisted_17$L = {
200439
200485
  class: "cn-flow-runs-widget__list"
200440
200486
  };
200441
200487
  const _hoisted_18$G = ["data-status"];
200442
- const _hoisted_19$C = ["title"];
200488
+ const _hoisted_19$D = ["title"];
200443
200489
  const _hoisted_20$y = { class: "cn-flow-runs-widget__body" };
200444
200490
  const _hoisted_21$x = { class: "cn-flow-runs-widget__name" };
200445
200491
  const _hoisted_22$x = { class: "cn-flow-runs-widget__meta" };
@@ -200518,7 +200564,7 @@ function render$3V(_ctx, _cache, $props, $setup, $data, $options) {
200518
200564
  vue$1.createElementVNode("span", {
200519
200565
  class: vue$1.normalizeClass(["cn-flow-runs-widget__dot cn-flow-runs-widget__dot--terminal", `cn-flow-runs-widget__dot--${run.status}`]),
200520
200566
  title: $options.statusLabel(run.status)
200521
- }, null, 10 /* CLASS, PROPS */, _hoisted_19$C),
200567
+ }, null, 10 /* CLASS, PROPS */, _hoisted_19$D),
200522
200568
  vue$1.createElementVNode("span", _hoisted_20$y, [
200523
200569
  vue$1.createElementVNode("span", _hoisted_21$x, vue$1.toDisplayString(run.flowName), 1 /* TEXT */),
200524
200570
  vue$1.createElementVNode("span", _hoisted_22$x, vue$1.toDisplayString($options.metaLine(run)), 1 /* TEXT */)
@@ -203245,7 +203291,7 @@ const _hoisted_16$S = {
203245
203291
  };
203246
203292
  const _hoisted_17$K = ["data-testid"];
203247
203293
  const _hoisted_18$F = { class: "cn-facts-widget__meter-head" };
203248
- const _hoisted_19$B = { class: "cn-facts-widget__meter-label" };
203294
+ const _hoisted_19$C = { class: "cn-facts-widget__meter-label" };
203249
203295
  const _hoisted_20$x = { class: "cn-facts-widget__meter-value" };
203250
203296
  const _hoisted_21$w = ["aria-label", "aria-valuenow", "aria-valuemax", "aria-valuetext", "data-testid"];
203251
203297
  const _hoisted_22$w = { key: 6 };
@@ -203409,7 +203455,7 @@ function render$3R(_ctx, _cache, $props, $setup, $data, $options) {
203409
203455
  "data-testid": `cn-fact-${block.key}`
203410
203456
  }, [
203411
203457
  vue$1.createElementVNode("div", _hoisted_18$F, [
203412
- vue$1.createElementVNode("span", _hoisted_19$B, vue$1.toDisplayString(block.label), 1 /* TEXT */),
203458
+ vue$1.createElementVNode("span", _hoisted_19$C, vue$1.toDisplayString(block.label), 1 /* TEXT */),
203413
203459
  vue$1.createElementVNode("span", _hoisted_20$x, vue$1.toDisplayString(block.value), 1 /* TEXT */)
203414
203460
  ]),
203415
203461
  (block.limit !== null)
@@ -205303,7 +205349,7 @@ const _hoisted_17$J = {
205303
205349
  class: "cn-checklist-run__note-label"
205304
205350
  };
205305
205351
  const _hoisted_18$E = ["onUpdate:modelValue", "onInput"];
205306
- const _hoisted_19$A = {
205352
+ const _hoisted_19$B = {
205307
205353
  key: 6,
205308
205354
  class: "cn-checklist-run__error",
205309
205355
  role: "alert",
@@ -205457,7 +205503,7 @@ function render$3O(_ctx, _cache, $props, $setup, $data, $options) {
205457
205503
  ]))
205458
205504
  : vue$1.createCommentVNode("v-if", true),
205459
205505
  ($data.missing.includes(question.id))
205460
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$A, vue$1.toDisplayString($options.missingLabel), 1 /* TEXT */))
205506
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$B, vue$1.toDisplayString($options.missingLabel), 1 /* TEXT */))
205461
205507
  : vue$1.createCommentVNode("v-if", true)
205462
205508
  ], 8 /* PROPS */, _hoisted_8$1U))
205463
205509
  }), 128 /* KEYED_FRAGMENT */)),
@@ -212727,7 +212773,7 @@ const _hoisted_17$I = {
212727
212773
  "aria-hidden": "true"
212728
212774
  };
212729
212775
  const _hoisted_18$D = { class: "cn-field-list-widget__main" };
212730
- const _hoisted_19$z = { class: "cn-field-list-widget__title" };
212776
+ const _hoisted_19$A = { class: "cn-field-list-widget__title" };
212731
212777
  const _hoisted_20$v = {
212732
212778
  key: 0,
212733
212779
  class: "cn-field-list-widget__meta"
@@ -212961,7 +213007,7 @@ function render$3D(_ctx, _cache, $props, $setup, $data, $options) {
212961
213007
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_17$I, vue$1.toDisplayString(row.initials), 1 /* TEXT */))
212962
213008
  : vue$1.createCommentVNode("v-if", true),
212963
213009
  vue$1.createElementVNode("span", _hoisted_18$D, [
212964
- vue$1.createElementVNode("span", _hoisted_19$z, vue$1.toDisplayString(row.title), 1 /* TEXT */),
213010
+ vue$1.createElementVNode("span", _hoisted_19$A, vue$1.toDisplayString(row.title), 1 /* TEXT */),
212965
213011
  (row.meta)
212966
213012
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$v, vue$1.toDisplayString(row.meta), 1 /* TEXT */))
212967
213013
  : vue$1.createCommentVNode("v-if", true)
@@ -217444,7 +217490,7 @@ const _hoisted_18$C = {
217444
217490
  key: 2,
217445
217491
  class: "cn-record-list__aside"
217446
217492
  };
217447
- const _hoisted_19$y = {
217493
+ const _hoisted_19$z = {
217448
217494
  key: 0,
217449
217495
  class: "cn-record-list__flag",
217450
217496
  "data-testid": "cn-record-list-flag"
@@ -217682,7 +217728,7 @@ function render$3w(_ctx, _cache, $props, $setup, $data, $options) {
217682
217728
  (item.pill || item.badges.length > 0 || item.due || item.trailing || item.flag)
217683
217729
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$C, [
217684
217730
  (item.flag)
217685
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$y, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
217731
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$z, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
217686
217732
  : vue$1.createCommentVNode("v-if", true),
217687
217733
  (item.pill)
217688
217734
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
@@ -237465,7 +237511,7 @@ const _hoisted_16$H = {
237465
237511
  };
237466
237512
  const _hoisted_17$D = { class: "cn-schema-form__cond-accordion-body" };
237467
237513
  const _hoisted_18$A = { class: "cn-schema-form__cond-action-header" };
237468
- const _hoisted_19$x = { class: "cn-schema-form__cond-action-name" };
237514
+ const _hoisted_19$y = { class: "cn-schema-form__cond-action-name" };
237469
237515
  const _hoisted_20$t = {
237470
237516
  key: 0,
237471
237517
  class: "cn-schema-form__cond-empty"
@@ -237747,7 +237793,7 @@ function render$31(_ctx, _cache, $props, $setup, $data, $options) {
237747
237793
  class: "cn-schema-form__cond-action"
237748
237794
  }, [
237749
237795
  vue$1.createElementVNode("div", _hoisted_18$A, [
237750
- vue$1.createElementVNode("strong", _hoisted_19$x, vue$1.toDisplayString($options.capitalize(action)), 1 /* TEXT */),
237796
+ vue$1.createElementVNode("strong", _hoisted_19$y, vue$1.toDisplayString($options.capitalize(action)), 1 /* TEXT */),
237751
237797
  vue$1.createVNode(_component_NcButton, {
237752
237798
  size: "small",
237753
237799
  onClick: $event => ($options.addConditionalRule(action))
@@ -238684,7 +238730,7 @@ const _hoisted_15$J = { class: "cn-schema-form__detail-label" };
238684
238730
  const _hoisted_16$G = { class: "cn-schema-form__detail-value" };
238685
238731
  const _hoisted_17$C = { class: "cn-schema-form__detail-item" };
238686
238732
  const _hoisted_18$z = { class: "cn-schema-form__detail-label" };
238687
- const _hoisted_19$w = { class: "cn-schema-form__detail-value" };
238733
+ const _hoisted_19$x = { class: "cn-schema-form__detail-value" };
238688
238734
  const _hoisted_20$s = { class: "cn-schema-form__detail-item" };
238689
238735
  const _hoisted_21$r = { class: "cn-schema-form__detail-label" };
238690
238736
  const _hoisted_22$r = { class: "cn-schema-form__detail-value" };
@@ -238789,7 +238835,7 @@ function render$30(_ctx, _cache, $props, $setup, $data, $options) {
238789
238835
  : vue$1.createCommentVNode("v-if", true),
238790
238836
  vue$1.createElementVNode("div", _hoisted_17$C, [
238791
238837
  vue$1.createElementVNode("span", _hoisted_18$z, vue$1.toDisplayString($options.t('nextcloud-vue', 'Version:')), 1 /* TEXT */),
238792
- vue$1.createElementVNode("span", _hoisted_19$w, vue$1.toDisplayString($data.schemaItem.version || $options.t('nextcloud-vue', 'Not set')), 1 /* TEXT */)
238838
+ vue$1.createElementVNode("span", _hoisted_19$x, vue$1.toDisplayString($data.schemaItem.version || $options.t('nextcloud-vue', 'Not set')), 1 /* TEXT */)
238793
238839
  ]),
238794
238840
  vue$1.createElementVNode("div", _hoisted_20$s, [
238795
238841
  vue$1.createElementVNode("span", _hoisted_21$r, vue$1.toDisplayString($options.t('nextcloud-vue', 'Owner:')), 1 /* TEXT */),
@@ -239600,7 +239646,7 @@ const _hoisted_18$y = {
239600
239646
  key: 0,
239601
239647
  class: "cn-edit-data__hint"
239602
239648
  };
239603
- const _hoisted_19$v = {
239649
+ const _hoisted_19$w = {
239604
239650
  key: 1,
239605
239651
  class: "cn-edit-data__list"
239606
239652
  };
@@ -239835,7 +239881,7 @@ function render$2$(_ctx, _cache, $props, $setup, $data, $options) {
239835
239881
  ]),
239836
239882
  (!$data.schemas.length)
239837
239883
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_18$y, vue$1.toDisplayString($options.t('nextcloud-vue', 'No schemas yet. Add one to define what data this app stores.')), 1 /* TEXT */))
239838
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$v, [
239884
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$w, [
239839
239885
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.schemas, (schema) => {
239840
239886
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
239841
239887
  key: schema.id,
@@ -274256,7 +274302,7 @@ const _hoisted_15$H = {
274256
274302
  const _hoisted_16$E = { class: "cn-run-sidebar__touched-action" };
274257
274303
  const _hoisted_17$A = { class: "cn-run-sidebar__touched-uuid" };
274258
274304
  const _hoisted_18$x = { class: "cn-run-sidebar__hint" };
274259
- const _hoisted_19$u = {
274305
+ const _hoisted_19$v = {
274260
274306
  key: 0,
274261
274307
  class: "cn-run-sidebar__error",
274262
274308
  "data-testid": "flow-object-unaccounted"
@@ -274381,7 +274427,7 @@ function render$2B(_ctx, _cache, $props, $setup, $data, $options) {
274381
274427
  vue$1.createElementVNode("span", _hoisted_17$A, " · " + vue$1.toDisplayString(obj.objectUuid), 1 /* TEXT */),
274382
274428
  vue$1.createElementVNode("span", _hoisted_18$x, " · " + vue$1.toDisplayString(obj.node), 1 /* TEXT */),
274383
274429
  (obj.unaccounted)
274384
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$u, vue$1.toDisplayString($options.t('nextcloud-vue', 'no matching step')), 1 /* TEXT */))
274430
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$v, vue$1.toDisplayString($options.t('nextcloud-vue', 'no matching step')), 1 /* TEXT */))
274385
274431
  : vue$1.createCommentVNode("v-if", true)
274386
274432
  ]))
274387
274433
  }), 128 /* KEYED_FRAGMENT */))
@@ -276632,7 +276678,7 @@ const _hoisted_15$G = { class: "cn-credentials__item-meta" };
276632
276678
  const _hoisted_16$D = { class: "cn-credentials__item-name" };
276633
276679
  const _hoisted_17$z = { class: "cn-credentials__item-provider" };
276634
276680
  const _hoisted_18$w = { class: "cn-credentials__item-actions" };
276635
- const _hoisted_19$t = {
276681
+ const _hoisted_19$u = {
276636
276682
  key: 0,
276637
276683
  class: "cn-credentials__item-toggle"
276638
276684
  };
@@ -276784,7 +276830,7 @@ function render$2x(_ctx, _cache, $props, $setup, $data, $options) {
276784
276830
  ])
276785
276831
  ]),
276786
276832
  ($props.scope === 'personal')
276787
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$t, [
276833
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$u, [
276788
276834
  vue$1.createVNode(_component_NcCheckboxRadioSwitch, {
276789
276835
  modelValue: $options.appAllowed(cred),
276790
276836
  disabled: cred.saving,
@@ -281431,7 +281477,7 @@ const _hoisted_16$C = {
281431
281477
  };
281432
281478
  const _hoisted_17$y = { class: "cn-version-info__label" };
281433
281479
  const _hoisted_18$v = { class: "cn-version-info__value" };
281434
- const _hoisted_19$s = ["href"];
281480
+ const _hoisted_19$t = ["href"];
281435
281481
  const _hoisted_20$o = ["href"];
281436
281482
  const _hoisted_21$n = { class: "cn-admin-settings-shell__support-line" };
281437
281483
  const _hoisted_22$n = ["href"];
@@ -281674,7 +281720,7 @@ function render$2r(_ctx, _cache, $props, $setup, $data, $options) {
281674
281720
  vue$1.createElementVNode("span", _hoisted_18$v, [
281675
281721
  vue$1.createElementVNode("a", {
281676
281722
  href: `mailto:${$props.supportEmail}`
281677
- }, vue$1.toDisplayString($props.supportEmail), 9 /* TEXT, PROPS */, _hoisted_19$s),
281723
+ }, vue$1.toDisplayString($props.supportEmail), 9 /* TEXT, PROPS */, _hoisted_19$t),
281678
281724
  ($props.slaEmail)
281679
281725
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 0 }, [
281680
281726
  vue$1.createTextVNode(", " + vue$1.toDisplayString($options.slaInline) + " ", 1 /* TEXT */),
@@ -283330,7 +283376,7 @@ const _hoisted_15$E = ["aria-label"];
283330
283376
  const _hoisted_16$B = ["data-card-id", "draggable", "onDragstart", "onKeydown"];
283331
283377
  const _hoisted_17$x = { class: "cn-board-view__card-head" };
283332
283378
  const _hoisted_18$u = ["data-card-id", "checked", "aria-label", "onChange"];
283333
- const _hoisted_19$r = ["data-card-id", "aria-label", "onClick", "onAuxclick"];
283379
+ const _hoisted_19$s = ["data-card-id", "aria-label", "onClick", "onAuxclick"];
283334
283380
  const _hoisted_20$n = { class: "cn-board-view__menu-wrap" };
283335
283381
  const _hoisted_21$m = ["data-card-id", "aria-expanded", "aria-label", "onClick"];
283336
283382
  const _hoisted_22$m = ["aria-label", "onKeydown"];
@@ -283380,12 +283426,12 @@ const _hoisted_37$7 = {
283380
283426
  const _hoisted_38$7 = { class: "cn-board-view__move-label" };
283381
283427
  const _hoisted_39$6 = ["data-card-id", "value", "onChange"];
283382
283428
  const _hoisted_40$6 = ["value"];
283383
- const _hoisted_41$3 = {
283429
+ const _hoisted_41$4 = {
283384
283430
  key: 4,
283385
283431
  class: "cn-board-view__empty",
283386
283432
  "data-testid": "cn-board-column-empty"
283387
283433
  };
283388
- const _hoisted_42$3 = ["onClick"];
283434
+ const _hoisted_42$4 = ["onClick"];
283389
283435
  const _hoisted_43$2 = {
283390
283436
  key: 2,
283391
283437
  class: "cn-board-view__refusal",
@@ -283523,7 +283569,7 @@ function render$2q(_ctx, _cache, $props, $setup, $data, $options) {
283523
283569
  onClick: vue$1.withModifiers($event => ($options.openCard(card, $event)), ["prevent"]),
283524
283570
  onMousedown: _cache[0] || (_cache[0] = (...args) => ($options.preventMiddleClickAutoscroll && $options.preventMiddleClickAutoscroll(...args))),
283525
283571
  onAuxclick: $event => ($options.onCardAuxClick(card, $event))
283526
- }, vue$1.toDisplayString($options.roleText(card, $options.roles.title) || $options.cardKey(card)), 41 /* TEXT, PROPS, NEED_HYDRATION */, _hoisted_19$r),
283572
+ }, vue$1.toDisplayString($options.roleText(card, $options.roles.title) || $options.cardKey(card)), 41 /* TEXT, PROPS, NEED_HYDRATION */, _hoisted_19$s),
283527
283573
  vue$1.createElementVNode("span", _hoisted_20$n, [
283528
283574
  vue$1.createElementVNode("button", {
283529
283575
  type: "button",
@@ -283682,7 +283728,7 @@ function render$2q(_ctx, _cache, $props, $setup, $data, $options) {
283682
283728
  ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_16$B))
283683
283729
  }), 128 /* KEYED_FRAGMENT */))
283684
283730
  ], 8 /* PROPS */, _hoisted_15$E))
283685
- : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_41$3, vue$1.toDisplayString($options.emptyColumnText), 1 /* TEXT */)),
283731
+ : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_41$4, vue$1.toDisplayString($options.emptyColumnText), 1 /* TEXT */)),
283686
283732
  ($options.hiddenCount(lane, column) > 0)
283687
283733
  ? (vue$1.openBlock(), vue$1.createElementBlock("button", {
283688
283734
  key: 5,
@@ -283690,7 +283736,7 @@ function render$2q(_ctx, _cache, $props, $setup, $data, $options) {
283690
283736
  class: "cn-board-view__show-more",
283691
283737
  "data-testid": "cn-board-show-more",
283692
283738
  onClick: $event => ($options.showMore(lane, column))
283693
- }, vue$1.toDisplayString($options.showMoreLabel($options.hiddenCount(lane, column))), 9 /* TEXT, PROPS */, _hoisted_42$3))
283739
+ }, vue$1.toDisplayString($options.showMoreLabel($options.hiddenCount(lane, column))), 9 /* TEXT, PROPS */, _hoisted_42$4))
283694
283740
  : vue$1.createCommentVNode("v-if", true)
283695
283741
  ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_5$1C))
283696
283742
  }), 128 /* KEYED_FRAGMENT */))
@@ -285522,7 +285568,7 @@ const _hoisted_18$t = {
285522
285568
  class: "cn-ordered-list-field__tile",
285523
285569
  "aria-hidden": "true"
285524
285570
  };
285525
- const _hoisted_19$q = { class: "cn-ordered-list-field__text" };
285571
+ const _hoisted_19$r = { class: "cn-ordered-list-field__text" };
285526
285572
  const _hoisted_20$m = { class: "cn-ordered-list-field__name" };
285527
285573
  const _hoisted_21$l = {
285528
285574
  key: 0,
@@ -285670,7 +285716,7 @@ function render$2l(_ctx, _cache, $props, $setup, $data, $options) {
285670
285716
  }, null, 8 /* PROPS */, ["name"])
285671
285717
  ]))
285672
285718
  : vue$1.createCommentVNode("v-if", true),
285673
- vue$1.createElementVNode("span", _hoisted_19$q, [
285719
+ vue$1.createElementVNode("span", _hoisted_19$r, [
285674
285720
  vue$1.createElementVNode("span", _hoisted_20$m, vue$1.toDisplayString(option.label), 1 /* TEXT */),
285675
285721
  (option.description)
285676
285722
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$l, vue$1.toDisplayString(option.description), 1 /* TEXT */))
@@ -288202,7 +288248,7 @@ const _hoisted_18$s = {
288202
288248
  key: 2,
288203
288249
  class: "cn-federation-status__empty"
288204
288250
  };
288205
- const _hoisted_19$p = {
288251
+ const _hoisted_19$q = {
288206
288252
  key: 3,
288207
288253
  class: "cn-federation-status__list"
288208
288254
  };
@@ -288263,7 +288309,7 @@ function render$2f(_ctx, _cache, $props, $setup, $data, $options) {
288263
288309
  : vue$1.createCommentVNode("v-if", true),
288264
288310
  ($props.nodes.length === 0)
288265
288311
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_18$s, vue$1.toDisplayString($props.emptyLabel), 1 /* TEXT */))
288266
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$p, [
288312
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_19$q, [
288267
288313
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.sortedNodes, (node) => {
288268
288314
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
288269
288315
  key: node.id || node.name,
@@ -300184,7 +300230,7 @@ const _hoisted_18$r = {
300184
300230
  class: "cn-actions-bar__row cn-actions-bar__row--search",
300185
300231
  "data-testid": "cn-actions-bar-row-search"
300186
300232
  };
300187
- const _hoisted_19$o = {
300233
+ const _hoisted_19$p = {
300188
300234
  key: 0,
300189
300235
  class: "cn-actions-bar__search"
300190
300236
  };
@@ -300686,7 +300732,7 @@ function render$2a(_ctx, _cache, $props, $setup, $data, $options) {
300686
300732
  ($options.isBoardLayout)
300687
300733
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$r, [
300688
300734
  ($props.showSearch && !$options.searchInToolbar)
300689
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$o, [
300735
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$p, [
300690
300736
  vue$1.createVNode(_component_Magnify, {
300691
300737
  size: 18,
300692
300738
  class: "cn-actions-bar__search-icon"
@@ -304178,7 +304224,7 @@ const _hoisted_16$x = {
304178
304224
  };
304179
304225
  const _hoisted_17$t = { class: "cn-sidebar-columns__order-list" };
304180
304226
  const _hoisted_18$q = ["onDragstart", "onDrop"];
304181
- const _hoisted_19$n = { class: "cn-sidebar-columns__order-label" };
304227
+ const _hoisted_19$o = { class: "cn-sidebar-columns__order-label" };
304182
304228
  const _hoisted_20$j = {
304183
304229
  key: 0,
304184
304230
  class: "cn-sidebar-columns__group cn-sidebar-columns__group--collapsible"
@@ -304428,7 +304474,7 @@ function render$25(_ctx, _cache, $props, $setup, $data, $options) {
304428
304474
  class: "cn-sidebar-columns__handle",
304429
304475
  "aria-hidden": "true"
304430
304476
  }),
304431
- vue$1.createElementVNode("span", _hoisted_19$n, vue$1.toDisplayString(item.label), 1 /* TEXT */),
304477
+ vue$1.createElementVNode("span", _hoisted_19$o, vue$1.toDisplayString(item.label), 1 /* TEXT */),
304432
304478
  vue$1.createVNode(_component_NcButton, {
304433
304479
  variant: "tertiary",
304434
304480
  disabled: index === 0 || index === $props.pinnedCount,
@@ -304599,7 +304645,7 @@ function render$25(_ctx, _cache, $props, $setup, $data, $options) {
304599
304645
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcAppSidebarTab, {
304600
304646
  key: 0,
304601
304647
  id: "filters-tab",
304602
- name: $options.t('nextcloud-vue', 'Filters'),
304648
+ name: $options.t('nextcloud-vue', 'Views'),
304603
304649
  order: 3
304604
304650
  }, {
304605
304651
  icon: vue$1.withCtx(() => [
@@ -306098,7 +306144,7 @@ const _hoisted_18$p = {
306098
306144
  key: 0,
306099
306145
  class: "cn-mass-import__help"
306100
306146
  };
306101
- const _hoisted_19$m = {
306147
+ const _hoisted_19$n = {
306102
306148
  key: 1,
306103
306149
  class: "cn-mass-import__options"
306104
306150
  };
@@ -306306,7 +306352,7 @@ function render$21(_ctx, _cache, $props, $setup, $data, $options) {
306306
306352
  ]))
306307
306353
  : vue$1.createCommentVNode("v-if", true),
306308
306354
  ($props.options.length > 0)
306309
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$m, [
306355
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$n, [
306310
306356
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.options, (opt) => {
306311
306357
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcCheckboxRadioSwitch, {
306312
306358
  key: opt.key,
@@ -309739,11 +309785,22 @@ function declaredFilterFields(props) {
309739
309785
  * @return {object} The `{ fieldKey: values }` map, empty when the link carries none.
309740
309786
  */
309741
309787
  function namedFiltersFromRoute(instance, props) {
309788
+ const route = instance && instance.proxy && instance.proxy.$route;
309789
+ return namedFiltersFromQuery((route && route.query) || {}, props)
309790
+ }
309791
+
309792
+ /**
309793
+ * The named-source filters a query carries, as `namedFiltersFromRoute` reads them.
309794
+ *
309795
+ * @param {object} query The route query.
309796
+ * @param {object} props The CnIndexPage props.
309797
+ *
309798
+ * @return {object} The `{ fieldKey: values }` map.
309799
+ */
309800
+ function namedFiltersFromQuery(query, props) {
309742
309801
  if (!props.entitySource) {
309743
309802
  return {}
309744
309803
  }
309745
- const route = instance && instance.proxy && instance.proxy.$route;
309746
- const query = (route && route.query) || {};
309747
309804
  const properties = declaredFilterFields(props);
309748
309805
  const out = {};
309749
309806
 
@@ -311186,9 +311243,11 @@ var script$1W = {
311186
311243
  },
311187
311244
 
311188
311245
  /**
311189
- * Opt-in flag for the saved-views control (saved-views-ui) rendered
311190
- * in the toolbar. Defaults to `false` — an app must explicitly
311191
- * enable it per page. When `true`, a Views dropdown lists the
311246
+ * Saved views (saved-views-ui). Unset, the sidebar's Views tab is on
311247
+ * for every page with a sidebar and a source a view can be scoped to
311248
+ * (register and schema, `entitySource` or `savedViewsScope`); `false`
311249
+ * turns it off. `true` also forces the sidebar and adds the toolbar
311250
+ * control, where a Views dropdown lists the
311192
311251
  * current user's OpenRegister saved-search views
311193
311252
  * (`GET /apps/openregister/api/views`); applying one writes its
311194
311253
  * stored filters/search/sort into the route query (reusing the
@@ -311200,7 +311259,7 @@ var script$1W = {
311200
311259
  */
311201
311260
  allowSavedViews: {
311202
311261
  type: Boolean,
311203
- default: false,
311262
+ default: null,
311204
311263
  },
311205
311264
 
311206
311265
  /**
@@ -313762,7 +313821,7 @@ var script$1W = {
313762
313821
  * @spec openspec/changes/saved-views-manage-and-defaults/tasks.md#task-6
313763
313822
  */
313764
313823
  savedViewsForSidebar() {
313765
- if (!this.allowSavedViews) {
313824
+ if (!this.savedViewsOffered) {
313766
313825
  return null
313767
313826
  }
313768
313827
  return {
@@ -314903,7 +314962,16 @@ var script$1W = {
314903
314962
  * @return {{ scope: string, register: string, schema: object|string|null }} The page's source.
314904
314963
  */
314905
314964
  savedViewsPage() {
314906
- return { scope: this.savedViewsScope, register: this.register, schema: this.schema }
314965
+ return { scope: this.savedViewsScope, register: this.register, schema: this.schema, source: this.entitySource }
314966
+ },
314967
+
314968
+ /**
314969
+ * Whether this page offers saved views in its sidebar.
314970
+ *
314971
+ * @return {boolean}
314972
+ */
314973
+ savedViewsOffered() {
314974
+ return pageOffersSavedViews(this)
314907
314975
  },
314908
314976
 
314909
314977
  /**
@@ -316476,7 +316544,7 @@ var script$1W = {
316476
316544
  created() {
316477
316545
  this.applyViewModeFromRoute();
316478
316546
  this.pushAiContext();
316479
- if (this.allowSavedViews) {
316547
+ if (this.savedViewsOffered) {
316480
316548
  this.fetchSavedViews();
316481
316549
  }
316482
316550
  this.selfActions = createSelfModeActions({
@@ -319584,8 +319652,8 @@ var script$1W = {
319584
319652
 
319585
319653
  /**
319586
319654
  * Fetch the current user's saved views (own + public) from
319587
- * OpenRegister's views API. Called from created() when
319588
- * `allowSavedViews` is enabled.
319655
+ * OpenRegister's views API. Called from created() when the page
319656
+ * offers saved views.
319589
319657
  */
319590
319658
  async fetchSavedViews() {
319591
319659
  this.savedViewsLoading = true;
@@ -319655,6 +319723,9 @@ var script$1W = {
319655
319723
  query.savedView = this.appliedSavedViewId;
319656
319724
  }
319657
319725
  const nav = this.$router.replace({ query });
319726
+ if (this.isNamedSource) {
319727
+ this.namedActiveFilters = namedFiltersFromQuery(query, this);
319728
+ }
319658
319729
  // Swallow the duplicate-navigation rejection (Vue Router 3)
319659
319730
  // when the applied view matches the current query.
319660
319731
  if (nav && typeof nav.catch === 'function') {
@@ -320533,7 +320604,7 @@ const _hoisted_16$v = {
320533
320604
  };
320534
320605
  const _hoisted_17$r = ["aria-label"];
320535
320606
  const _hoisted_18$o = ["aria-pressed", "data-testid", "onClick"];
320536
- const _hoisted_19$l = {
320607
+ const _hoisted_19$m = {
320537
320608
  key: 0,
320538
320609
  class: "cn-index-page__filter-strip-count"
320539
320610
  };
@@ -320600,8 +320671,8 @@ const _hoisted_39$5 = {
320600
320671
  "aria-hidden": "true"
320601
320672
  };
320602
320673
  const _hoisted_40$5 = { class: "cn-index-page__map-text" };
320603
- const _hoisted_41$2 = ["onClick"];
320604
- const _hoisted_42$2 = {
320674
+ const _hoisted_41$3 = ["onClick"];
320675
+ const _hoisted_42$3 = {
320605
320676
  key: 0,
320606
320677
  class: "cn-index-page__map-sub"
320607
320678
  };
@@ -321291,7 +321362,7 @@ function render$1V(_ctx, _cache, $props, $setup, $data, $options) {
321291
321362
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(entry.label), 1 /* TEXT */),
321292
321363
  _cache[34] || (_cache[34] = vue$1.createTextVNode()),
321293
321364
  (entry.count !== null)
321294
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$l, vue$1.toDisplayString(entry.count), 1 /* TEXT */))
321365
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$m, vue$1.toDisplayString(entry.count), 1 /* TEXT */))
321295
321366
  : vue$1.createCommentVNode("v-if", true)
321296
321367
  ], 10 /* CLASS, PROPS */, _hoisted_18$o))
321297
321368
  }), 128 /* KEYED_FRAGMENT */))
@@ -321837,9 +321908,9 @@ function render$1V(_ctx, _cache, $props, $setup, $data, $options) {
321837
321908
  type: "button",
321838
321909
  class: "cn-index-page__map-title",
321839
321910
  onClick: $event => ($options.onRowClick(item.row))
321840
- }, vue$1.toDisplayString(item.title), 9 /* TEXT, PROPS */, _hoisted_41$2),
321911
+ }, vue$1.toDisplayString(item.title), 9 /* TEXT, PROPS */, _hoisted_41$3),
321841
321912
  (item.sub)
321842
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$2, vue$1.toDisplayString(item.sub), 1 /* TEXT */))
321913
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_42$3, vue$1.toDisplayString(item.sub), 1 /* TEXT */))
321843
321914
  : vue$1.createCommentVNode("v-if", true),
321844
321915
  (item.pills.length > 0 || item.due)
321845
321916
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_43$1, [
@@ -322791,7 +322862,7 @@ const _hoisted_15$w = ["onClick"];
322791
322862
  const _hoisted_16$u = { class: "cn-form-builder__field-meta" };
322792
322863
  const _hoisted_17$q = { class: "cn-form-builder__field-key" };
322793
322864
  const _hoisted_18$n = { class: "cn-form-builder__field-type" };
322794
- const _hoisted_19$k = ["disabled", "title", "onClick"];
322865
+ const _hoisted_19$l = ["disabled", "title", "onClick"];
322795
322866
  const _hoisted_20$h = ["disabled", "title", "onClick"];
322796
322867
  const _hoisted_21$g = ["title", "onClick"];
322797
322868
  const _hoisted_22$g = {
@@ -322883,7 +322954,7 @@ function render$1T(_ctx, _cache, $props, $setup, $data, $options) {
322883
322954
  disabled: idx === 0,
322884
322955
  title: $props.moveUpLabel,
322885
322956
  onClick: $event => ($options.moveField(idx, -1))
322886
- }, " ↑ ", 8 /* PROPS */, _hoisted_19$k),
322957
+ }, " ↑ ", 8 /* PROPS */, _hoisted_19$l),
322887
322958
  vue$1.createElementVNode("button", {
322888
322959
  type: "button",
322889
322960
  class: "cn-form-builder__action",
@@ -323325,7 +323396,7 @@ const _hoisted_17$p = {
323325
323396
  class: "cn-export-wizard__field"
323326
323397
  };
323327
323398
  const _hoisted_18$m = ["for"];
323328
- const _hoisted_19$j = ["id", "placeholder"];
323399
+ const _hoisted_19$k = ["id", "placeholder"];
323329
323400
 
323330
323401
  function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
323331
323402
  const _component_NcNoteCard = vue$1.resolveComponent("NcNoteCard");
@@ -323522,7 +323593,7 @@ function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
323522
323593
  type: "email",
323523
323594
  placeholder: $props.emailPlaceholder,
323524
323595
  class: "cn-export-wizard__input cn-export-wizard__input--inline"
323525
- }, null, 8 /* PROPS */, _hoisted_19$j)), [
323596
+ }, null, 8 /* PROPS */, _hoisted_19$k)), [
323526
323597
  [vue$1.vModelText, $data.formData.emailRecipient]
323527
323598
  ])
323528
323599
  : vue$1.createCommentVNode("v-if", true)
@@ -325171,7 +325242,7 @@ const _hoisted_17$o = {
325171
325242
  class: "cn-rich-submit__field"
325172
325243
  };
325173
325244
  const _hoisted_18$l = ["for"];
325174
- const _hoisted_19$i = {
325245
+ const _hoisted_19$j = {
325175
325246
  key: 0,
325176
325247
  class: "cn-rich-submit__required"
325177
325248
  };
@@ -325342,7 +325413,7 @@ function render$1Q(_ctx, _cache, $props, $setup, $data, $options) {
325342
325413
  }, [
325343
325414
  vue$1.createTextVNode(vue$1.toDisplayString($props.filesLabel), 1 /* TEXT */),
325344
325415
  ($props.filesRequired && !_ctx.isBoardLook)
325345
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$i, "*"))
325416
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$j, "*"))
325346
325417
  : (_ctx.isBoardLook && !$props.filesRequired)
325347
325418
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$g, " (" + vue$1.toDisplayString($props.optionalLabel) + ")", 1 /* TEXT */))
325348
325419
  : vue$1.createCommentVNode("v-if", true)
@@ -326718,7 +326789,7 @@ const _hoisted_16$r = {
326718
326789
  };
326719
326790
  const _hoisted_17$n = ["onClick"];
326720
326791
  const _hoisted_18$k = { class: "cn-register-mapping__board-group-name" };
326721
- const _hoisted_19$h = { class: "cn-register-mapping__board-group-count" };
326792
+ const _hoisted_19$i = { class: "cn-register-mapping__board-group-count" };
326722
326793
  const _hoisted_20$f = {
326723
326794
  key: 1,
326724
326795
  class: "cn-register-mapping__board-save"
@@ -326761,11 +326832,11 @@ const _hoisted_37$4 = { class: "cn-register-mapping__type-name" };
326761
326832
  const _hoisted_38$4 = { class: "cn-register-mapping__type-schema" };
326762
326833
  const _hoisted_39$3 = { class: "cn-register-mapping__type-status" };
326763
326834
  const _hoisted_40$3 = { class: "cn-register-mapping__type-chevron" };
326764
- const _hoisted_41$1 = {
326835
+ const _hoisted_41$2 = {
326765
326836
  key: 0,
326766
326837
  class: "cn-register-mapping__type-detail"
326767
326838
  };
326768
- const _hoisted_42$1 = {
326839
+ const _hoisted_42$2 = {
326769
326840
  key: 0,
326770
326841
  class: "cn-register-mapping__type-description"
326771
326842
  };
@@ -326927,7 +326998,7 @@ function render$1O(_ctx, _cache, $props, $setup, $data, $options) {
326927
326998
  class: "cn-register-mapping__board-chevron"
326928
326999
  }),
326929
327000
  vue$1.createElementVNode("strong", _hoisted_18$k, vue$1.toDisplayString(item.group.name), 1 /* TEXT */),
326930
- vue$1.createElementVNode("span", _hoisted_19$h, vue$1.toDisplayString($options.n('nextcloud-vue', '%n type', '%n types', item.group.types.length)), 1 /* TEXT */),
327001
+ vue$1.createElementVNode("span", _hoisted_19$i, vue$1.toDisplayString($options.n('nextcloud-vue', '%n type', '%n types', item.group.types.length)), 1 /* TEXT */),
326931
327002
  vue$1.createVNode(_component_CnStatusBadge, {
326932
327003
  label: $options.groupStatusLabel(item.idx, false),
326933
327004
  variant: $options.groupStatusVariant(item.idx)
@@ -327074,9 +327145,9 @@ function render$1O(_ctx, _cache, $props, $setup, $data, $options) {
327074
327145
  vue$1.createVNode(vue$1.Transition, { name: "slide" }, {
327075
327146
  default: vue$1.withCtx(() => [
327076
327147
  ($options.isExpanded(groupIdx, type.slug))
327077
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_41$1, [
327148
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_41$2, [
327078
327149
  (type.description)
327079
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_42$1, vue$1.toDisplayString(type.description), 1 /* TEXT */))
327150
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_42$2, vue$1.toDisplayString(type.description), 1 /* TEXT */))
327080
327151
  : vue$1.createCommentVNode("v-if", true),
327081
327152
  vue$1.createVNode(_component_NcSelect, {
327082
327153
  modelValue: $options.selectedSchema(groupIdx, type),
@@ -328656,7 +328727,8 @@ let reasonSeq = 0;
328656
328727
  * note and Archive it.
328657
328728
  *
328658
328729
  * `config`:
328659
- * - `title`, `eyebrow`, `subtitle`, `doneText`: texts, through the host translate.
328730
+ * - `title`, `subtitle`, `doneText`: texts, through the host translate;
328731
+ * `eyebrow` a template filled from the record ("Close off · {identifier}").
328660
328732
  * - `summary`: `{ source?, title, meta?, badge?, icon? }`: templates filled from
328661
328733
  * the record (`source` an endpointSource to read it from, else `object`).
328662
328734
  * - `facts`: `[{ title?, items: [{ label, value }] }]`, `value` a template.
@@ -328664,8 +328736,14 @@ let reasonSeq = 0;
328664
328736
  * `{ id, met, label?, detail? }` read from `source`; `labels[id]` gives an
328665
328737
  * item's `{ label, detail?, unmetDetail? }`; the ids in `required` must be
328666
328738
  * met before the action can run. `met: null` reads as unknown.
328667
- * - `permission`: `{ source, allowedPath, reasonPath? }`: the action runs only
328668
- * while `allowedPath` reads true; `reasonPath` says why not.
328739
+ * - `permission`: `{ source, listPath?, match?, allowedPath, reasonPath? }`:
328740
+ * the action runs only while `allowedPath` reads true; `reasonPath` says
328741
+ * why not. With `listPath` the paths read the entry of that list whose
328742
+ * fields equal `match` (`{ act: "archive" }`).
328743
+ * - `fields`: `[{ field, type?: "text"|"date"|"datetime"|"select", label?,
328744
+ * required?, options?: [{ value, label, fills? }] }]`: inputs sent beside
328745
+ * the reason, required by default; a select option's `fills` sets other
328746
+ * fields that are still empty.
328669
328747
  * - `reason`: `{ label?, hint?, required?, field? }`: a text area; required by
328670
328748
  * default; sent as `field` (default `reason`).
328671
328749
  * - `note`: `{ variant?, title?, text }`: a read-only note.
@@ -328678,7 +328756,7 @@ let reasonSeq = 0;
328678
328756
  var script$1K = {
328679
328757
  name: 'CnActionDialog',
328680
328758
 
328681
- components: { CheckCircle, CircleOutline, CnDialog: __sfc_main$7n, CnIcon: __sfc_main$7O, HelpCircleOutline, NcButton: vue.NcButton, NcNoteCard: vue.NcNoteCard, NcTextArea: vue.NcTextArea },
328759
+ components: { CheckCircle, CircleOutline, CnDialog: __sfc_main$7n, CnIcon: __sfc_main$7O, HelpCircleOutline, NcButton: vue.NcButton, NcNoteCard: vue.NcNoteCard, NcSelect: vue.NcSelect, NcTextArea: vue.NcTextArea, NcTextField: vue.NcTextField },
328682
328760
 
328683
328761
  inject: {
328684
328762
  /** The host app's translate (CnAppRoot `cnTranslate`). */
@@ -328724,6 +328802,7 @@ var script$1K = {
328724
328802
  checklistError: '',
328725
328803
  allowed: true,
328726
328804
  reason: '',
328805
+ values: {},
328727
328806
  busy: false,
328728
328807
  refusal: '',
328729
328808
  done: false,
@@ -328734,7 +328813,21 @@ var script$1K = {
328734
328813
  computed: {
328735
328814
  /** @return {object} The token context. */
328736
328815
  tokenCtx() {
328737
- return { objectId: this.objectId, object: this.record || {} }
328816
+ return { objectId: this.recordId, object: this.record || {} }
328817
+ },
328818
+
328819
+ /**
328820
+ * The record's id: `objectId`, or the route's `id` when the prop is
328821
+ * empty or a token the opener could not resolve.
328822
+ *
328823
+ * @return {string|number}
328824
+ */
328825
+ recordId() {
328826
+ const given = this.objectId;
328827
+ if (given !== '' && given !== null && given !== undefined && !String(given).startsWith('@')) {
328828
+ return given
328829
+ }
328830
+ return (this.$route && this.$route.params && this.$route.params.id) || ''
328738
328831
  },
328739
328832
 
328740
328833
  /** @return {object} The confirm config. */
@@ -328820,7 +328913,27 @@ var script$1K = {
328820
328913
  * @return {boolean}
328821
328914
  */
328822
328915
  canConfirm() {
328823
- return !this.busy && this.allowed && this.requiredMet && (!this.reasonNeeded || this.reason.trim() !== '')
328916
+ return !this.busy && this.allowed && this.requiredMet && this.fieldsFilled && (!this.reasonNeeded || this.reason.trim() !== '')
328917
+ },
328918
+
328919
+ /** @return {string} The eyebrow, filled from the record once it is known. */
328920
+ eyebrowText() {
328921
+ return this.record ? this.fill(this.config.eyebrow) || this.text(this.config.eyebrow) : this.text(this.config.eyebrow)
328922
+ },
328923
+
328924
+ /** @return {Array<object>} The fields with a name. */
328925
+ fields() {
328926
+ return (Array.isArray(this.config.fields) ? this.config.fields : []).filter((f) => f && f.field)
328927
+ },
328928
+
328929
+ /**
328930
+ * Whether every required field has a value.
328931
+ *
328932
+ * @spec openspec/changes/action-dialog-fields-and-acts/specs/action-dialog/spec.md#requirement-an-action-dialog-asks-for-fields-and-reads-a-permission-from-a-list
328933
+ * @return {boolean}
328934
+ */
328935
+ fieldsFilled() {
328936
+ return this.fields.every((f) => f.required === false || String(this.values[f.field] ?? '').trim() !== '')
328824
328937
  },
328825
328938
  },
328826
328939
 
@@ -328895,6 +329008,63 @@ var script$1K = {
328895
329008
  }
328896
329009
  },
328897
329010
 
329011
+ /**
329012
+ * The entry of a list whose fields equal `match`, or null.
329013
+ *
329014
+ * @param {unknown} list The list.
329015
+ * @param {object} [match] The fields to match.
329016
+ * @return {object|null}
329017
+ */
329018
+ matchIn(list, match) {
329019
+ const wanted = Object.entries(match || {});
329020
+ return (Array.isArray(list) ? list : []).find((entry) => entry && wanted.every(([key, value]) => String(entry[key]) === String(value))) || null
329021
+ },
329022
+
329023
+ /**
329024
+ * A select field's options, labels translated.
329025
+ *
329026
+ * @param {object} field The field.
329027
+ * @return {Array<{id: string, label: string, fills?: object}>}
329028
+ */
329029
+ optionsOf(field) {
329030
+ return (Array.isArray(field.options) ? field.options : []).map((o) => ({ id: String(o.value), label: this.text(o.label) || String(o.value), fills: o.fills }))
329031
+ },
329032
+
329033
+ /**
329034
+ * A select field's chosen option.
329035
+ *
329036
+ * @param {object} field The field.
329037
+ * @return {object|null}
329038
+ */
329039
+ selectedOption(field) {
329040
+ return this.optionsOf(field).find((o) => o.id === String(this.values[field.field] ?? '')) || null
329041
+ },
329042
+
329043
+ /**
329044
+ * Set a field's value.
329045
+ *
329046
+ * @param {string} name The field.
329047
+ * @param {unknown} value The value.
329048
+ */
329049
+ setValue(name, value) {
329050
+ this.values = { ...this.values, [name]: value === null || value === undefined ? '' : String(value) };
329051
+ },
329052
+
329053
+ /**
329054
+ * Choose a select option; its `fills` set the fields still empty.
329055
+ *
329056
+ * @param {object} field The select field.
329057
+ * @param {{id: string, fills?: object}|null} option The option.
329058
+ */
329059
+ pick(field, option) {
329060
+ this.setValue(field.field, option ? option.id : '');
329061
+ for (const [name, value] of Object.entries((option && option.fills) || {})) {
329062
+ if (String(this.values[name] ?? '').trim() === '') {
329063
+ this.setValue(name, this.text(value) || value);
329064
+ }
329065
+ }
329066
+ },
329067
+
328898
329068
  /** @return {Promise<void>} */
328899
329069
  async loadPermission() {
328900
329070
  const def = this.config.permission;
@@ -328903,8 +329073,9 @@ var script$1K = {
328903
329073
  }
328904
329074
  try {
328905
329075
  const data = await this.read(def.source);
328906
- this.allowed = readPath$5(data, def.allowedPath || 'allowed') === true;
328907
- this.refusal = this.allowed || !def.reasonPath ? '' : String(readPath$5(data, def.reasonPath) || '');
329076
+ const entry = def.listPath ? this.matchIn(readPath$5(data, def.listPath), def.match) : data;
329077
+ this.allowed = readPath$5(entry, def.allowedPath || 'allowed') === true;
329078
+ this.refusal = this.allowed || !def.reasonPath ? '' : String(readPath$5(entry, def.reasonPath) || '');
328908
329079
  } catch {
328909
329080
  this.allowed = false;
328910
329081
  }
@@ -328935,15 +329106,18 @@ var script$1K = {
328935
329106
  if (this.config.reason) {
328936
329107
  body[this.config.reason.field || 'reason'] = reason;
328937
329108
  }
329109
+ for (const field of this.fields) {
329110
+ body[field.field] = this.values[field.field] ?? '';
329111
+ }
328938
329112
  const method = String(request.method || 'POST').toLowerCase();
328939
329113
  await axios$1[['post', 'put', 'patch', 'delete'].includes(method) ? method : 'post'](/^https?:\/\//i.test(url) ? url : router.generateUrl(url), body);
328940
329114
  } else if (this.confirmConfig.action && typeof this.cnDispatchAction === 'function') {
328941
- await this.cnDispatchAction({ ...this.confirmConfig.action, args: [...(this.confirmConfig.action.args || []), { reason }] });
329115
+ await this.cnDispatchAction({ ...this.confirmConfig.action, args: [...(this.confirmConfig.action.args || []), { ...this.values, reason }] });
328942
329116
  }
328943
329117
  this.done = true;
328944
329118
  eventBus.emit(PAGE_REFRESH$2, {});
328945
- /** @event done The action ran. Payload: `{ reason }`. */
328946
- this.$emit('done', { reason });
329119
+ /** @event done The action ran. Payload: the field values and `reason`. */
329120
+ this.$emit('done', { ...this.values, reason });
328947
329121
  } catch (failure) {
328948
329122
  const data = failure && failure.response && failure.response.data;
328949
329123
  this.refusal = String((data && (data.message || data.error)) || l10n.translate('nextcloud-vue', 'The action could not be completed.'));
@@ -329007,21 +329181,22 @@ const _hoisted_14$u = {
329007
329181
  key: 3,
329008
329182
  class: "cn-action-dialog__muted"
329009
329183
  };
329010
- const _hoisted_15$s = {
329184
+ const _hoisted_15$s = ["data-testid"];
329185
+ const _hoisted_16$q = {
329011
329186
  key: 2,
329012
329187
  class: "cn-action-dialog__field"
329013
329188
  };
329014
- const _hoisted_16$q = {
329189
+ const _hoisted_17$m = {
329015
329190
  key: 0,
329016
329191
  class: "cn-action-dialog__muted"
329017
329192
  };
329018
- const _hoisted_17$m = {
329193
+ const _hoisted_18$j = {
329019
329194
  key: 4,
329020
329195
  class: "cn-action-dialog__error",
329021
329196
  role: "alert",
329022
329197
  "data-testid": "cn-action-dialog-refusal"
329023
329198
  };
329024
- const _hoisted_18$j = {
329199
+ const _hoisted_19$h = {
329025
329200
  key: 1,
329026
329201
  role: "status",
329027
329202
  "data-testid": "cn-action-dialog-done"
@@ -329032,6 +329207,8 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
329032
329207
  const _component_CheckCircle = vue$1.resolveComponent("CheckCircle");
329033
329208
  const _component_HelpCircleOutline = vue$1.resolveComponent("HelpCircleOutline");
329034
329209
  const _component_CircleOutline = vue$1.resolveComponent("CircleOutline");
329210
+ const _component_NcSelect = vue$1.resolveComponent("NcSelect");
329211
+ const _component_NcTextField = vue$1.resolveComponent("NcTextField");
329035
329212
  const _component_NcTextArea = vue$1.resolveComponent("NcTextArea");
329036
329213
  const _component_NcNoteCard = vue$1.resolveComponent("NcNoteCard");
329037
329214
  const _component_NcButton = vue$1.resolveComponent("NcButton");
@@ -329039,7 +329216,7 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
329039
329216
 
329040
329217
  return (vue$1.openBlock(), vue$1.createBlock(_component_CnDialog, {
329041
329218
  name: $options.text($props.config.title) || $options.t('nextcloud-vue', 'Confirm'),
329042
- eyebrow: $options.text($props.config.eyebrow),
329219
+ eyebrow: $options.eyebrowText,
329043
329220
  subtitle: $options.text($props.config.subtitle),
329044
329221
  width: "form",
329045
329222
  noClose: $data.busy,
@@ -329169,8 +329346,32 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
329169
329346
  ])
329170
329347
  ]))
329171
329348
  : vue$1.createCommentVNode("v-if", true),
329349
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.fields, (field) => {
329350
+ return (vue$1.openBlock(), vue$1.createElementBlock("div", {
329351
+ key: field.field,
329352
+ class: "cn-action-dialog__field",
329353
+ "data-testid": `cn-action-dialog-field-${field.field}`
329354
+ }, [
329355
+ (field.type === 'select')
329356
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
329357
+ key: 0,
329358
+ modelValue: $options.selectedOption(field),
329359
+ options: $options.optionsOf(field),
329360
+ inputLabel: $options.text(field.label) || field.field,
329361
+ clearable: field.required === false,
329362
+ "onUpdate:modelValue": (option) => $options.pick(field, option)
329363
+ }, null, 8 /* PROPS */, ["modelValue", "options", "inputLabel", "clearable", "onUpdate:modelValue"]))
329364
+ : (vue$1.openBlock(), vue$1.createBlock(_component_NcTextField, {
329365
+ key: 1,
329366
+ modelValue: $data.values[field.field] || '',
329367
+ type: field.type === 'datetime' ? 'datetime-local' : (field.type === 'date' ? 'date' : 'text'),
329368
+ label: $options.text(field.label) || field.field,
329369
+ "onUpdate:modelValue": (value) => $options.setValue(field.field, value)
329370
+ }, null, 8 /* PROPS */, ["modelValue", "type", "label", "onUpdate:modelValue"]))
329371
+ ], 8 /* PROPS */, _hoisted_15$s))
329372
+ }), 128 /* KEYED_FRAGMENT */)),
329172
329373
  ($props.config.reason)
329173
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_15$s, [
329374
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_16$q, [
329174
329375
  vue$1.createVNode(_component_NcTextArea, {
329175
329376
  id: $data.reasonId,
329176
329377
  modelValue: $data.reason,
@@ -329181,7 +329382,7 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
329181
329382
  "data-testid": "cn-action-dialog-reason"
329182
329383
  }, null, 8 /* PROPS */, ["id", "modelValue", "label"]),
329183
329384
  ($props.config.reason.hint)
329184
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_16$q, vue$1.toDisplayString($options.text($props.config.reason.hint)), 1 /* TEXT */))
329385
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_17$m, vue$1.toDisplayString($options.text($props.config.reason.hint)), 1 /* TEXT */))
329185
329386
  : vue$1.createCommentVNode("v-if", true)
329186
329387
  ]))
329187
329388
  : vue$1.createCommentVNode("v-if", true),
@@ -329199,17 +329400,17 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
329199
329400
  }, 8 /* PROPS */, ["type", "heading"]))
329200
329401
  : vue$1.createCommentVNode("v-if", true),
329201
329402
  ($data.refusal)
329202
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_17$m, vue$1.toDisplayString($data.refusal), 1 /* TEXT */))
329403
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_18$j, vue$1.toDisplayString($data.refusal), 1 /* TEXT */))
329203
329404
  : vue$1.createCommentVNode("v-if", true)
329204
329405
  ]))
329205
- : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_18$j, vue$1.toDisplayString($options.text($props.config.doneText) || $options.t('nextcloud-vue', 'Done')), 1 /* TEXT */))
329406
+ : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$h, vue$1.toDisplayString($options.text($props.config.doneText) || $options.t('nextcloud-vue', 'Done')), 1 /* TEXT */))
329206
329407
  ]),
329207
329408
  _: 1 /* STABLE */
329208
329409
  }, 8 /* PROPS */, ["name", "eyebrow", "subtitle", "noClose", "onClosing"]))
329209
329410
  }
329210
329411
 
329211
329412
  script$1K.render = render$1J;
329212
- script$1K.__scopeId = "data-v-53fea6f0";
329413
+ script$1K.__scopeId = "data-v-0bb28fd1";
329213
329414
  const __sfc_main$1K = script$1K;
329214
329415
 
329215
329416
  var CnActionDialog = /*#__PURE__*/Object.freeze({
@@ -338226,6 +338427,26 @@ var script$1y = {
338226
338427
  && this.register !== '' && this.schema !== '' && this.objectId !== ''
338227
338428
  },
338228
338429
 
338430
+ /**
338431
+ * The props of the Follow control, wherever the header draws it.
338432
+ *
338433
+ * @return {object} The CnFollowToggle props.
338434
+ * @spec openspec/changes/board-follow-row/specs/board-follow-row/spec.md#requirement-the-board-follow-control-sits-under-the-breadcrumb
338435
+ */
338436
+ followToggleProps() {
338437
+ const self = this.resolvedSelf;
338438
+ return {
338439
+ register: this.register,
338440
+ schema: this.schema,
338441
+ objectId: String(this.objectId),
338442
+ watching: self.watching === true,
338443
+ notify: typeof self.watchNotify === 'boolean' ? self.watchNotify : null,
338444
+ watcherCount: typeof self.watcherCount === 'number' ? self.watcherCount : null,
338445
+ canManage: !!(self.can && self.can.manage === true),
338446
+ notifies: this.followNotifies,
338447
+ }
338448
+ },
338449
+
338229
338450
  /**
338230
338451
  * The `_extend[]` values of the object read: the page's own, plus
338231
338452
  * `@self.can` while the Follow toggle can render (OpenRegister returns
@@ -340846,84 +341067,93 @@ const _hoisted_15$r = {
340846
341067
  };
340847
341068
  const _hoisted_16$p = {
340848
341069
  key: 1,
341070
+ class: "cn-detail-page__header-row3",
341071
+ "data-testid": "cn-detail-page-header-row3"
341072
+ };
341073
+ const _hoisted_17$l = {
341074
+ class: "cn-detail-page__interactions",
341075
+ "data-testid": "cn-detail-page-interactions"
341076
+ };
341077
+ const _hoisted_18$i = {
341078
+ key: 2,
340849
341079
  class: "cn-detail-page__header-widget",
340850
341080
  "data-testid": "cn-detail-page-header-widget"
340851
341081
  };
340852
- const _hoisted_17$l = {
341082
+ const _hoisted_19$g = {
340853
341083
  key: 4,
340854
341084
  class: "cn-detail-page__lock-refusal",
340855
341085
  role: "alert",
340856
341086
  "data-testid": "cn-detail-page-lock-refusal"
340857
341087
  };
340858
- const _hoisted_18$i = {
341088
+ const _hoisted_20$e = {
340859
341089
  key: 6,
340860
341090
  class: "cn-detail-page__not-found",
340861
341091
  "data-testid": "cn-detail-page-not-found"
340862
341092
  };
340863
- const _hoisted_19$g = {
341093
+ const _hoisted_21$d = {
340864
341094
  key: 7,
340865
341095
  class: "cn-detail-page__loading"
340866
341096
  };
340867
- const _hoisted_20$e = {
341097
+ const _hoisted_22$d = {
340868
341098
  key: 8,
340869
341099
  class: "cn-detail-page__error"
340870
341100
  };
340871
- const _hoisted_21$d = {
341101
+ const _hoisted_23$b = {
340872
341102
  key: 9,
340873
341103
  class: "cn-detail-page__empty"
340874
341104
  };
340875
- const _hoisted_22$d = {
341105
+ const _hoisted_24$b = {
340876
341106
  key: 10,
340877
341107
  class: "cn-detail-page__body"
340878
341108
  };
340879
- const _hoisted_23$b = {
341109
+ const _hoisted_25$9 = {
340880
341110
  key: 0,
340881
341111
  class: "cn-detail-page__before-body"
340882
341112
  };
340883
- const _hoisted_24$b = ["aria-labelledby"];
340884
- const _hoisted_25$9 = {
341113
+ const _hoisted_26$7 = ["aria-labelledby"];
341114
+ const _hoisted_27$4 = {
340885
341115
  key: 0,
340886
341116
  class: "cn-detail-page__widget-edit"
340887
341117
  };
340888
- const _hoisted_26$7 = ["id"];
340889
- const _hoisted_27$4 = ["id", "aria-label"];
340890
- const _hoisted_28$4 = {
341118
+ const _hoisted_28$4 = ["id"];
341119
+ const _hoisted_29$4 = ["id", "aria-label"];
341120
+ const _hoisted_30$4 = {
340891
341121
  key: 3,
340892
341122
  class: "cn-detail-page__stats"
340893
341123
  };
340894
- const _hoisted_29$4 = {
341124
+ const _hoisted_31$3 = {
340895
341125
  key: 0,
340896
341126
  class: "cn-detail-page__section-title"
340897
341127
  };
340898
- const _hoisted_30$4 = { class: "cn-detail-page__stats-table" };
340899
- const _hoisted_31$3 = { key: 0 };
340900
- const _hoisted_32$3 = {
341128
+ const _hoisted_32$3 = { class: "cn-detail-page__stats-table" };
341129
+ const _hoisted_33$3 = { key: 0 };
341130
+ const _hoisted_34$3 = {
340901
341131
  key: 4,
340902
341132
  class: "cn-detail-page__content"
340903
341133
  };
340904
- const _hoisted_33$3 = {
341134
+ const _hoisted_35$3 = {
340905
341135
  key: 0,
340906
341136
  class: "cn-detail-page__content"
340907
341137
  };
340908
- const _hoisted_34$3 = {
341138
+ const _hoisted_36$3 = {
340909
341139
  key: 1,
340910
341140
  class: "cn-detail-page__sections"
340911
341141
  };
340912
- const _hoisted_35$3 = {
341142
+ const _hoisted_37$3 = {
340913
341143
  key: 6,
340914
341144
  class: "cn-detail-page__related-collections"
340915
341145
  };
340916
- const _hoisted_36$3 = {
341146
+ const _hoisted_38$3 = {
340917
341147
  key: 0,
340918
341148
  class: "cn-detail-page__relation-links"
340919
341149
  };
340920
- const _hoisted_37$3 = {
341150
+ const _hoisted_39$2 = {
340921
341151
  key: 9,
340922
341152
  class: "cn-detail-page__footer"
340923
341153
  };
340924
- const _hoisted_38$3 = ["aria-label"];
340925
- const _hoisted_39$2 = ["data-testid"];
340926
- const _hoisted_40$2 = {
341154
+ const _hoisted_40$2 = ["aria-label"];
341155
+ const _hoisted_41$1 = ["data-testid"];
341156
+ const _hoisted_42$1 = {
340927
341157
  key: 0,
340928
341158
  class: "cn-detail-page__side-identifier",
340929
341159
  "data-testid": "cn-detail-page-side-identifier"
@@ -341053,18 +341283,9 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341053
341283
  _: 1 /* STABLE */
341054
341284
  }, 8 /* PROPS */, ["title"]))
341055
341285
  : vue$1.createCommentVNode("v-if", true),
341056
- ($options.showFollowToggle)
341286
+ ($options.showFollowToggle && !$options.isBoard)
341057
341287
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_7$U, [
341058
- vue$1.createVNode(_component_CnFollowToggle, {
341059
- register: $props.register,
341060
- schema: $props.schema,
341061
- objectId: String($props.objectId),
341062
- watching: $options.resolvedSelf.watching === true,
341063
- notify: typeof $options.resolvedSelf.watchNotify === 'boolean' ? $options.resolvedSelf.watchNotify : null,
341064
- watcherCount: typeof $options.resolvedSelf.watcherCount === 'number' ? $options.resolvedSelf.watcherCount : null,
341065
- canManage: !!($options.resolvedSelf.can && $options.resolvedSelf.can.manage === true),
341066
- notifies: $props.followNotifies
341067
- }, null, 8 /* PROPS */, ["register", "schema", "objectId", "watching", "notify", "watcherCount", "canManage", "notifies"])
341288
+ vue$1.createVNode(_component_CnFollowToggle, vue$1.normalizeProps(vue$1.guardReactiveProps($options.followToggleProps)), null, 16 /* FULL_PROPS */)
341068
341289
  ]))
341069
341290
  : vue$1.createCommentVNode("v-if", true)
341070
341291
  ]))
@@ -341476,8 +341697,15 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341476
341697
  : vue$1.createCommentVNode("v-if", true)
341477
341698
  ]))
341478
341699
  : vue$1.createCommentVNode("v-if", true),
341479
- ($options.headerWidgetDef !== null)
341700
+ ($options.isBoard && $options.showFollowToggle)
341480
341701
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_16$p, [
341702
+ vue$1.createElementVNode("span", _hoisted_17$l, [
341703
+ vue$1.createVNode(_component_CnFollowToggle, vue$1.normalizeProps(vue$1.guardReactiveProps($options.followToggleProps)), null, 16 /* FULL_PROPS */)
341704
+ ])
341705
+ ]))
341706
+ : vue$1.createCommentVNode("v-if", true),
341707
+ ($options.headerWidgetDef !== null)
341708
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$i, [
341481
341709
  vue$1.renderSlot(_ctx.$slots, `widget-${$options.headerWidgetDef.id}`, {
341482
341710
  item: { id: $options.headerWidgetDef.id, widgetId: $options.headerWidgetDef.id },
341483
341711
  widget: $options.headerWidgetDef,
@@ -341523,7 +341751,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341523
341751
  }, null, 8 /* PROPS */, ["lockedBy", "lockedByMe", "expiresAt", "unlocking", "onUnlock"]))
341524
341752
  : vue$1.createCommentVNode("v-if", true),
341525
341753
  ($data.editLockRefusal)
341526
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_17$l, vue$1.toDisplayString($data.editLockRefusal), 1 /* TEXT */))
341754
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$g, vue$1.toDisplayString($data.editLockRefusal), 1 /* TEXT */))
341527
341755
  : vue$1.createCommentVNode("v-if", true),
341528
341756
  ($options.showsNextStepCard)
341529
341757
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnNextStepCard, {
@@ -341561,7 +341789,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341561
341789
  ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "items", "after"]))
341562
341790
  : vue$1.createCommentVNode("v-if", true),
341563
341791
  ($data.objectNotFound)
341564
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$i, [
341792
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$e, [
341565
341793
  vue$1.renderSlot(_ctx.$slots, "not-found", { target: $options.notFoundTarget }, () => [
341566
341794
  vue$1.createVNode(_component_NcEmptyContent, {
341567
341795
  name: $options.notFoundLabels.name,
@@ -341597,12 +341825,12 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341597
341825
  ])
341598
341826
  ]))
341599
341827
  : ($options.showLoadingState)
341600
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$g, [
341828
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$d, [
341601
341829
  vue$1.createVNode(_component_NcLoadingIcon, { size: 32 }),
341602
341830
  vue$1.createElementVNode("span", null, vue$1.toDisplayString($props.loadingLabel), 1 /* TEXT */)
341603
341831
  ]))
341604
341832
  : ($props.error)
341605
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$e, [
341833
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$d, [
341606
341834
  vue$1.renderSlot(_ctx.$slots, "error", {}, () => [
341607
341835
  vue$1.createVNode(_component_NcEmptyContent, { name: $props.errorMessage }, {
341608
341836
  icon: vue$1.withCtx(() => [
@@ -341631,7 +341859,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341631
341859
  ])
341632
341860
  ]))
341633
341861
  : ($props.empty)
341634
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$d, [
341862
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$b, [
341635
341863
  vue$1.renderSlot(_ctx.$slots, "empty", {}, () => [
341636
341864
  vue$1.createVNode(_component_NcEmptyContent, { name: $props.emptyLabel }, {
341637
341865
  icon: vue$1.withCtx(() => [
@@ -341644,9 +341872,9 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341644
341872
  }, 8 /* PROPS */, ["name"])
341645
341873
  ])
341646
341874
  ]))
341647
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$d, [
341875
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_24$b, [
341648
341876
  (_ctx.$slots['before-body'] || _ctx.$slots['before-body'])
341649
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$b, [
341877
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_25$9, [
341650
341878
  vue$1.renderSlot(_ctx.$slots, "before-body", {
341651
341879
  object: $options.resolvedObject,
341652
341880
  schema: $options.currentSchema,
@@ -341682,7 +341910,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341682
341910
  "aria-labelledby": $options.showGridTitle(item) ? `widget-title-${item.id}` : undefined
341683
341911
  }, [
341684
341912
  ($options.showsCog(item))
341685
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_25$9, [
341913
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_27$4, [
341686
341914
  vue$1.createVNode(_component_NcButton, {
341687
341915
  variant: "tertiary",
341688
341916
  "aria-label": _ctx.t('nextcloud-vue', 'Configure widget'),
@@ -341700,7 +341928,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341700
341928
  key: 1,
341701
341929
  id: `widget-title-${item.id}`,
341702
341930
  class: "cn-detail-page__widget-title"
341703
- }, vue$1.toDisplayString($options.gridTitle(item)), 9 /* TEXT, PROPS */, _hoisted_26$7))
341931
+ }, vue$1.toDisplayString($options.gridTitle(item)), 9 /* TEXT, PROPS */, _hoisted_28$4))
341704
341932
  : vue$1.createCommentVNode("v-if", true),
341705
341933
  vue$1.renderSlot(_ctx.$slots, `widget-${item.widgetId}`, {
341706
341934
  item: item,
@@ -341735,7 +341963,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341735
341963
  onSelectObject: $options.onRelatedObjectSelect
341736
341964
  }, null, 8 /* PROPS */, ["widget", "showCardTitle", "showActions", "objectId", "object", "objectType", "schemaObject", "register", "schema", "store", "surface", "integrationContext", "hideEmpty", "cnRegistry", "availableWidgets", "onGeoSaved", "onOpenIntegration", "onSelectObject"])
341737
341965
  ])
341738
- ], 10 /* CLASS, PROPS */, _hoisted_24$b)
341966
+ ], 10 /* CLASS, PROPS */, _hoisted_26$7)
341739
341967
  ]),
341740
341968
  _: 3 /* FORWARDED */
341741
341969
  }, 16 /* FULL_PROPS */, ["layout", "editable", "columnOpts", "onLayoutChange"]))
@@ -341755,18 +341983,18 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341755
341983
  ]),
341756
341984
  _: 1 /* STABLE */
341757
341985
  }, 8 /* PROPS */, ["description"])
341758
- ], 8 /* PROPS */, _hoisted_27$4))
341986
+ ], 8 /* PROPS */, _hoisted_29$4))
341759
341987
  : vue$1.createCommentVNode("v-if", true),
341760
341988
  ($options.hasStats)
341761
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_28$4, [
341989
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_30$4, [
341762
341990
  vue$1.renderSlot(_ctx.$slots, "stats-header", {}, () => [
341763
341991
  ($props.statsTitle)
341764
- ? (vue$1.openBlock(), vue$1.createElementBlock("h3", _hoisted_29$4, vue$1.toDisplayString($options.resolvedStatsTitle), 1 /* TEXT */))
341992
+ ? (vue$1.openBlock(), vue$1.createElementBlock("h3", _hoisted_31$3, vue$1.toDisplayString($options.resolvedStatsTitle), 1 /* TEXT */))
341765
341993
  : vue$1.createCommentVNode("v-if", true)
341766
341994
  ]),
341767
- vue$1.createElementVNode("table", _hoisted_30$4, [
341995
+ vue$1.createElementVNode("table", _hoisted_32$3, [
341768
341996
  ($props.statsColumns.length > 0)
341769
- ? (vue$1.openBlock(), vue$1.createElementBlock("thead", _hoisted_31$3, [
341997
+ ? (vue$1.openBlock(), vue$1.createElementBlock("thead", _hoisted_33$3, [
341770
341998
  vue$1.createElementVNode("tr", null, [
341771
341999
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.statsColumns, (col) => {
341772
342000
  return (vue$1.openBlock(), vue$1.createElementBlock("th", {
@@ -341797,14 +342025,14 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341797
342025
  ])
341798
342026
  ])
341799
342027
  ]))
341800
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_32$3, [
342028
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_34$3, [
341801
342029
  (!$options.hasBodyGrid)
341802
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_33$3, [
342030
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_35$3, [
341803
342031
  vue$1.renderSlot(_ctx.$slots, "default")
341804
342032
  ]))
341805
342033
  : vue$1.createCommentVNode("v-if", true),
341806
342034
  (_ctx.$slots.sections)
341807
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_34$3, [
342035
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_36$3, [
341808
342036
  vue$1.renderSlot(_ctx.$slots, "sections")
341809
342037
  ]))
341810
342038
  : vue$1.createCommentVNode("v-if", true)
@@ -341819,9 +342047,9 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341819
342047
  }, null, 8 /* PROPS */, ["sections", "context"]))
341820
342048
  : vue$1.createCommentVNode("v-if", true),
341821
342049
  (($props.relatedCollections && $props.relatedCollections.length > 0) || ($props.relationLinks && $props.relationLinks.length > 0))
341822
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_35$3, [
342050
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_37$3, [
341823
342051
  ($props.relationLinks && $props.relationLinks.length > 0)
341824
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_36$3, [
342052
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_38$3, [
341825
342053
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.relationLinks, (link, li) => {
341826
342054
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
341827
342055
  key: li,
@@ -341868,7 +342096,7 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341868
342096
  }, null, 8 /* PROPS */, ["sections", "context"]))
341869
342097
  : vue$1.createCommentVNode("v-if", true),
341870
342098
  (_ctx.$slots.footer)
341871
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_37$3, [
342099
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_39$2, [
341872
342100
  vue$1.renderSlot(_ctx.$slots, "footer")
341873
342101
  ]))
341874
342102
  : vue$1.createCommentVNode("v-if", true)
@@ -341919,11 +342147,11 @@ function render$1x(_ctx, _cache, $props, $setup, $data, $options) {
341919
342147
  }, null, 8 /* PROPS */, ["widget", "showActions", "objectId", "object", "objectType", "schemaObject", "register", "schema", "store", "surface", "integrationContext", "hideEmpty", "cnRegistry", "availableWidgets", "onGeoSaved", "onOpenIntegration", "onSelectObject"])
341920
342148
  ]),
341921
342149
  ($options.isBoard && widget.id === $options.sideHistoryId && $options.identifierLine !== '')
341922
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_40$2, vue$1.toDisplayString($options.identifierLine), 1 /* TEXT */))
342150
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_42$1, vue$1.toDisplayString($options.identifierLine), 1 /* TEXT */))
341923
342151
  : vue$1.createCommentVNode("v-if", true)
341924
- ], 10 /* CLASS, PROPS */, _hoisted_39$2))
342152
+ ], 10 /* CLASS, PROPS */, _hoisted_41$1))
341925
342153
  }), 128 /* KEYED_FRAGMENT */))
341926
- ], 8 /* PROPS */, _hoisted_38$3))
342154
+ ], 8 /* PROPS */, _hoisted_40$2))
341927
342155
  : vue$1.createCommentVNode("v-if", true),
341928
342156
  ($data.showWidgetConfig)
341929
342157
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnWidgetStyleEditorModal, {
@@ -386517,7 +386745,7 @@ var script$j = {
386517
386745
  */
386518
386746
  offersSavedViews() {
386519
386747
  const pages = this.manifest && Array.isArray(this.manifest.pages) ? this.manifest.pages : [];
386520
- return pages.some((page) => page && page.config && page.config.allowSavedViews === true)
386748
+ return pages.some((page) => page && page.type === 'index' && pageOffersSavedViews(page.config))
386521
386749
  },
386522
386750
 
386523
386751
  /**