@conduction/nextcloud-vue 2.124.0 → 2.125.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 (66) hide show
  1. package/dist/esm/components/CnActionDialog/CnActionDialog.vue.js +1 -1
  2. package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js +120 -11
  3. package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js.map +1 -1
  4. package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js +78 -32
  5. package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js.map +1 -1
  6. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +8 -7
  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/CnAssignDialog/CnAssignDialog.vue.js +1 -1
  10. package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue2.js +2 -1
  11. package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue2.js.map +1 -1
  12. package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue3.js +2 -2
  13. package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue3.js.map +1 -1
  14. package/dist/esm/components/CnDialog/CnDialog.vue2.js +5 -0
  15. package/dist/esm/components/CnDialog/CnDialog.vue2.js.map +1 -1
  16. package/dist/esm/components/CnDialog/CnDialog.vue3.js +1 -1
  17. package/dist/esm/components/CnDialog/CnDialog.vue3.js.map +1 -1
  18. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +13 -0
  19. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  20. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +2 -1
  21. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  22. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue.js +1 -1
  23. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +7 -2
  24. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  25. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  26. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  27. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +159 -10
  28. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  29. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +151 -90
  30. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  31. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js +12 -0
  32. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js.map +1 -1
  33. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js +1 -1
  34. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js.map +1 -1
  35. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +1 -1
  36. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +39 -68
  37. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -1
  38. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +70 -116
  39. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -1
  40. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  41. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +19 -3
  42. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  43. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  44. package/dist/esm/l10n/en.json.js +8 -8
  45. package/dist/esm/l10n/nl.json.js +8 -8
  46. package/dist/esm/library-style.js +1 -1
  47. package/dist/esm/nextcloud-vue.css +316 -185
  48. package/dist/nextcloud-vue.cjs.js +1149 -808
  49. package/dist/nextcloud-vue.cjs.js.map +2 -2
  50. package/dist/nextcloud-vue.css +316 -185
  51. package/l10n/en.json +8 -8
  52. package/l10n/nl.json +8 -8
  53. package/package.json +1 -1
  54. package/src/components/CnActionDialog/CnActionDialog.vue +173 -14
  55. package/src/components/CnAppRoot/CnAppRoot.vue +8 -7
  56. package/src/components/CnAssignDialog/CnAssignDialog.vue +4 -3
  57. package/src/components/CnDialog/CnDialog.vue +6 -1
  58. package/src/components/CnIndexPage/CnIndexPage.vue +14 -0
  59. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +7 -2
  60. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +237 -23
  61. package/src/components/CnSavedViewsControl/CnSavedViewsControl.vue +13 -1
  62. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +147 -145
  63. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +19 -3
  64. package/src/css/dialog.css +23 -0
  65. package/src/css/look-board-index.css +5 -1
  66. package/src/css/look-board.css +19 -0
@@ -4505,13 +4505,13 @@ const _hoisted_19$1m = {
4505
4505
  class: "cn-ai-message-list__bubble cn-ai-message-list__bubble--assistant",
4506
4506
  "aria-live": "polite"
4507
4507
  };
4508
- const _hoisted_20$1a = {
4508
+ const _hoisted_20$1b = {
4509
4509
  key: 2,
4510
4510
  class: "cn-ai-message-list__item cn-ai-message-list__item--assistant",
4511
4511
  "data-testid": "cn-ai-thinking"
4512
4512
  };
4513
- const _hoisted_21$15 = ["aria-label"];
4514
- const _hoisted_22$11 = { class: "cn-ai-message-list__thinking-text" };
4513
+ const _hoisted_21$16 = ["aria-label"];
4514
+ const _hoisted_22$12 = { class: "cn-ai-message-list__thinking-text" };
4515
4515
 
4516
4516
  function render$8s(_ctx, _cache, $props, $setup, $data, $options) {
4517
4517
  const _component_NcRichText = vue$1.resolveComponent("NcRichText");
@@ -4643,14 +4643,14 @@ function render$8s(_ctx, _cache, $props, $setup, $data, $options) {
4643
4643
  ]))
4644
4644
  : vue$1.createCommentVNode("v-if", true),
4645
4645
  ($options.isThinking)
4646
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$1a, [
4646
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$1b, [
4647
4647
  vue$1.createElementVNode("div", {
4648
4648
  class: "cn-ai-message-list__bubble cn-ai-message-list__bubble--assistant cn-ai-message-list__bubble--thinking",
4649
4649
  "aria-label": $options.cnTranslate('AI is thinking'),
4650
4650
  role: "status",
4651
4651
  "aria-live": "polite"
4652
4652
  }, [
4653
- vue$1.createElementVNode("span", _hoisted_22$11, vue$1.toDisplayString($options.cnTranslate('Thinking')), 1 /* TEXT */),
4653
+ vue$1.createElementVNode("span", _hoisted_22$12, vue$1.toDisplayString($options.cnTranslate('Thinking')), 1 /* TEXT */),
4654
4654
  _cache[0] || (_cache[0] = vue$1.createElementVNode("span", {
4655
4655
  class: "cn-ai-message-list__thinking-dots",
4656
4656
  "aria-hidden": "true"
@@ -4659,7 +4659,7 @@ function render$8s(_ctx, _cache, $props, $setup, $data, $options) {
4659
4659
  vue$1.createElementVNode("span", { class: "cn-ai-message-list__thinking-dot" }),
4660
4660
  vue$1.createElementVNode("span", { class: "cn-ai-message-list__thinking-dot" })
4661
4661
  ], -1 /* CACHED */))
4662
- ], 8 /* PROPS */, _hoisted_21$15)
4662
+ ], 8 /* PROPS */, _hoisted_21$16)
4663
4663
  ]))
4664
4664
  : vue$1.createCommentVNode("v-if", true)
4665
4665
  ]))
@@ -5709,7 +5709,7 @@ const _hoisted_18$1s = {
5709
5709
  "data-testid": "cn-ai-panel-mark"
5710
5710
  };
5711
5711
  const _hoisted_19$1l = ["src", "alt"];
5712
- const _hoisted_20$19 = { class: "cn-ai-chat-window__mark-label" };
5712
+ const _hoisted_20$1a = { class: "cn-ai-chat-window__mark-label" };
5713
5713
 
5714
5714
  function render$8r(_ctx, _cache, $props, $setup, $data, $options) {
5715
5715
  const _component_CnDashboardIcon = vue$1.resolveComponent("CnDashboardIcon");
@@ -6010,7 +6010,7 @@ function render$8r(_ctx, _cache, $props, $setup, $data, $options) {
6010
6010
  alt: $data.assistantMark.logo.alt
6011
6011
  }, null, 8 /* PROPS */, _hoisted_19$1l))
6012
6012
  : vue$1.createCommentVNode("v-if", true),
6013
- vue$1.createElementVNode("span", _hoisted_20$19, vue$1.toDisplayString($data.assistantMark.label), 1 /* TEXT */)
6013
+ vue$1.createElementVNode("span", _hoisted_20$1a, vue$1.toDisplayString($data.assistantMark.label), 1 /* TEXT */)
6014
6014
  ]))
6015
6015
  : vue$1.createCommentVNode("v-if", true)
6016
6016
  ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_1$82))
@@ -22982,7 +22982,7 @@ const _hoisted_16$1R = { class: "cn-conversation-thread__text" };
22982
22982
  const _hoisted_17$1C = ["for"];
22983
22983
  const _hoisted_18$1q = ["id", "placeholder", "disabled", "aria-describedby"];
22984
22984
  const _hoisted_19$1j = ["id"];
22985
- const _hoisted_20$18 = { class: "cn-conversation-thread__reply-actions" };
22985
+ const _hoisted_20$19 = { class: "cn-conversation-thread__reply-actions" };
22986
22986
 
22987
22987
  function render$8f(_ctx, _cache, $props, $setup, $data, $options) {
22988
22988
  const _component_CnQuickFilterBar = vue$1.resolveComponent("CnQuickFilterBar");
@@ -23095,7 +23095,7 @@ function render$8f(_ctx, _cache, $props, $setup, $data, $options) {
23095
23095
  "data-testid": "cn-conversation-error"
23096
23096
  }, vue$1.toDisplayString($data.errorMessage), 9 /* TEXT, PROPS */, _hoisted_19$1j))
23097
23097
  : vue$1.createCommentVNode("v-if", true),
23098
- vue$1.createElementVNode("div", _hoisted_20$18, [
23098
+ vue$1.createElementVNode("div", _hoisted_20$19, [
23099
23099
  vue$1.renderSlot(_ctx.$slots, "reply-actions", { draft: $data.draft }),
23100
23100
  vue$1.createVNode(_component_NcButton, {
23101
23101
  variant: "primary",
@@ -33933,13 +33933,13 @@ const _hoisted_16$1Q = { class: "cn-column-filter__label" };
33933
33933
  const _hoisted_17$1B = ["type"];
33934
33934
  const _hoisted_18$1p = { class: "cn-column-filter__field" };
33935
33935
  const _hoisted_19$1i = { class: "cn-column-filter__label" };
33936
- const _hoisted_20$17 = ["type"];
33937
- const _hoisted_21$14 = {
33936
+ const _hoisted_20$18 = ["type"];
33937
+ const _hoisted_21$15 = {
33938
33938
  key: 3,
33939
33939
  class: "cn-column-filter__field"
33940
33940
  };
33941
- const _hoisted_22$10 = { class: "cn-column-filter__label" };
33942
- const _hoisted_23$T = { class: "cn-column-filter__actions" };
33941
+ const _hoisted_22$11 = { class: "cn-column-filter__label" };
33942
+ const _hoisted_23$U = { class: "cn-column-filter__actions" };
33943
33943
 
33944
33944
  function render$7_(_ctx, _cache, $props, $setup, $data, $options) {
33945
33945
  return (vue$1.openBlock(), vue$1.createBlock(vue$1.Teleport, {
@@ -34045,13 +34045,13 @@ function render$7_(_ctx, _cache, $props, $setup, $data, $options) {
34045
34045
  class: "cn-column-filter__input",
34046
34046
  type: $props.def.kind === 'date' ? 'date' : 'number',
34047
34047
  "data-testid": "cn-column-filter-to"
34048
- }, null, 8 /* PROPS */, _hoisted_20$17), [
34048
+ }, null, 8 /* PROPS */, _hoisted_20$18), [
34049
34049
  [vue$1.vModelDynamic, $data.draft.to]
34050
34050
  ])
34051
34051
  ])
34052
34052
  ]))
34053
- : (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_21$14, [
34054
- vue$1.createElementVNode("span", _hoisted_22$10, vue$1.toDisplayString($options.containsLabel), 1 /* TEXT */),
34053
+ : (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_21$15, [
34054
+ vue$1.createElementVNode("span", _hoisted_22$11, vue$1.toDisplayString($options.containsLabel), 1 /* TEXT */),
34055
34055
  vue$1.withDirectives(vue$1.createElementVNode("input", {
34056
34056
  "onUpdate:modelValue": _cache[4] || (_cache[4] = $event => (($data.draft.value) = $event)),
34057
34057
  class: "cn-column-filter__input",
@@ -34061,7 +34061,7 @@ function render$7_(_ctx, _cache, $props, $setup, $data, $options) {
34061
34061
  [vue$1.vModelText, $data.draft.value]
34062
34062
  ])
34063
34063
  ])),
34064
- vue$1.createElementVNode("div", _hoisted_23$T, [
34064
+ vue$1.createElementVNode("div", _hoisted_23$U, [
34065
34065
  vue$1.createElementVNode("button", {
34066
34066
  type: "button",
34067
34067
  class: "cn-column-filter__button",
@@ -36792,14 +36792,14 @@ const _hoisted_19$1h = {
36792
36792
  key: 0,
36793
36793
  class: "cn-cell-renderer__avatar"
36794
36794
  };
36795
- const _hoisted_20$16 = {
36795
+ const _hoisted_20$17 = {
36796
36796
  key: 0,
36797
36797
  class: "cn-cell-renderer__avatar-picture",
36798
36798
  "aria-hidden": "true"
36799
36799
  };
36800
- const _hoisted_21$13 = { class: "cn-cell-renderer__avatar-text" };
36801
- const _hoisted_22$$ = ["title"];
36802
- const _hoisted_23$S = {
36800
+ const _hoisted_21$14 = { class: "cn-cell-renderer__avatar-text" };
36801
+ const _hoisted_22$10 = ["title"];
36802
+ const _hoisted_23$T = {
36803
36803
  key: 0,
36804
36804
  class: "cn-cell-renderer__avatar-secondary",
36805
36805
  "data-testid": "cn-cell-secondary"
@@ -36853,12 +36853,12 @@ const _hoisted_42$b = {
36853
36853
  "data-testid": "cn-cell-icon-label"
36854
36854
  };
36855
36855
  const _hoisted_43$a = { key: 2 };
36856
- const _hoisted_44$8 = {
36856
+ const _hoisted_44$9 = {
36857
36857
  key: 3,
36858
36858
  class: "cn-cell-renderer__dash"
36859
36859
  };
36860
- const _hoisted_45$6 = ["title"];
36861
- const _hoisted_46$6 = {
36860
+ const _hoisted_45$7 = ["title"];
36861
+ const _hoisted_46$7 = {
36862
36862
  key: 17,
36863
36863
  class: "cn-cell-renderer__swatch-wrap"
36864
36864
  };
@@ -37093,7 +37093,7 @@ function render$7X(_ctx, _cache, $props, $setup, $data, $options) {
37093
37093
  ($options.avatarName || $options.avatarUserId)
37094
37094
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$1h, [
37095
37095
  ($options.avatarUserId)
37096
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$16, [
37096
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$17, [
37097
37097
  vue$1.createVNode(_component_NcAvatar, {
37098
37098
  user: $options.avatarUserId,
37099
37099
  displayName: $options.avatarName || $options.avatarUserId,
@@ -37108,13 +37108,13 @@ function render$7X(_ctx, _cache, $props, $setup, $data, $options) {
37108
37108
  style: vue$1.normalizeStyle({ width: $options.avatarSize + 'px', height: $options.avatarSize + 'px' }),
37109
37109
  "aria-hidden": "true"
37110
37110
  }, vue$1.toDisplayString($options.avatarInitials), 5 /* TEXT, STYLE */)),
37111
- vue$1.createElementVNode("span", _hoisted_21$13, [
37111
+ vue$1.createElementVNode("span", _hoisted_21$14, [
37112
37112
  vue$1.createElementVNode("span", {
37113
37113
  class: "cn-cell-renderer__avatar-name",
37114
37114
  title: $options.avatarName || $options.avatarUserId
37115
- }, vue$1.toDisplayString($options.avatarName || $options.avatarUserId), 9 /* TEXT, PROPS */, _hoisted_22$$),
37115
+ }, vue$1.toDisplayString($options.avatarName || $options.avatarUserId), 9 /* TEXT, PROPS */, _hoisted_22$10),
37116
37116
  ($props.secondary)
37117
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$S, vue$1.toDisplayString($props.secondary), 1 /* TEXT */))
37117
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$T, vue$1.toDisplayString($props.secondary), 1 /* TEXT */))
37118
37118
  : vue$1.createCommentVNode("v-if", true)
37119
37119
  ])
37120
37120
  ]))
@@ -37257,15 +37257,15 @@ function render$7X(_ctx, _cache, $props, $setup, $data, $options) {
37257
37257
  : vue$1.createCommentVNode("v-if", true),
37258
37258
  ($options.hasValue)
37259
37259
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_43$a, vue$1.toDisplayString($options.labelledValue), 1 /* TEXT */))
37260
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_44$8, "—"))
37260
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_44$9, "—"))
37261
37261
  ]))
37262
37262
  : ($options.hasFormatter)
37263
37263
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
37264
37264
  key: 16,
37265
37265
  title: $options.rawTitle
37266
- }, vue$1.toDisplayString($options.formattedValue), 9 /* TEXT, PROPS */, _hoisted_45$6))
37266
+ }, vue$1.toDisplayString($options.formattedValue), 9 /* TEXT, PROPS */, _hoisted_45$7))
37267
37267
  : ($options.isSwatch)
37268
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_46$6, [
37268
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_46$7, [
37269
37269
  ($options.swatchColor)
37270
37270
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
37271
37271
  key: 0,
@@ -39653,14 +39653,14 @@ const _hoisted_18$1n = {
39653
39653
  "data-testid": "cn-object-list-empty"
39654
39654
  };
39655
39655
  const _hoisted_19$1g = ["colspan"];
39656
- const _hoisted_20$15 = {
39656
+ const _hoisted_20$16 = {
39657
39657
  key: 0,
39658
39658
  class: "cn-table-empty__lens-reason",
39659
39659
  "data-testid": "cn-data-table-lens-reason"
39660
39660
  };
39661
- const _hoisted_21$12 = ["draggable", "data-testid-row-id", "onDragstart", "onDragover", "onDragleave", "onDrop", "onClick", "onAuxclick", "onContextmenu"];
39662
- const _hoisted_22$_ = ["href", "aria-label", "onClick"];
39663
- const _hoisted_23$R = {
39661
+ const _hoisted_21$13 = ["draggable", "data-testid-row-id", "onDragstart", "onDragover", "onDragleave", "onDrop", "onClick", "onAuxclick", "onContextmenu"];
39662
+ const _hoisted_22$$ = ["href", "aria-label", "onClick"];
39663
+ const _hoisted_23$S = {
39664
39664
  key: 3,
39665
39665
  class: "cn-table-row-indicators",
39666
39666
  "data-testid": "cn-row-indicators"
@@ -39882,7 +39882,7 @@ function render$7U(_ctx, _cache, $props, $setup, $data, $options) {
39882
39882
  vue$1.createElementVNode("td", { colspan: $options.totalColumns }, [
39883
39883
  vue$1.renderSlot(_ctx.$slots, "empty", {}, () => [
39884
39884
  ($options.lensReasonText)
39885
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$15, vue$1.toDisplayString($options.lensReasonText), 1 /* TEXT */))
39885
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$16, vue$1.toDisplayString($options.lensReasonText), 1 /* TEXT */))
39886
39886
  : (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 1 }, [
39887
39887
  vue$1.createTextVNode(vue$1.toDisplayString($options.translateLabel($props.emptyText)), 1 /* TEXT */)
39888
39888
  ], 64 /* STABLE_FRAGMENT */))
@@ -39956,7 +39956,7 @@ function render$7U(_ctx, _cache, $props, $setup, $data, $options) {
39956
39956
  draggable: "false",
39957
39957
  "data-testid": "cn-row-link",
39958
39958
  onClick: $event => ($options.onRowLinkClick(row, $event))
39959
- }, null, 8 /* PROPS */, _hoisted_22$_))
39959
+ }, null, 8 /* PROPS */, _hoisted_22$$))
39960
39960
  : vue$1.createCommentVNode("v-if", true),
39961
39961
  (colIndex === $options.titleColumnIndex && $options.isUnreadRow(row))
39962
39962
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnUnreadMarker, { key: 1 }))
@@ -39969,7 +39969,7 @@ function render$7U(_ctx, _cache, $props, $setup, $data, $options) {
39969
39969
  }, null, 8 /* PROPS */, ["object"]))
39970
39970
  : vue$1.createCommentVNode("v-if", true),
39971
39971
  (colIndex === $options.titleColumnIndex && $options.indicatorsFor(row).shown.length > 0)
39972
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$R, [
39972
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$S, [
39973
39973
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.indicatorsFor(row).shown, (indicator) => {
39974
39974
  return (vue$1.openBlock(), vue$1.createElementBlock("span", {
39975
39975
  key: indicator.id || indicator.field,
@@ -40021,7 +40021,7 @@ function render$7U(_ctx, _cache, $props, $setup, $data, $options) {
40021
40021
  vue$1.renderSlot(_ctx.$slots, "row-actions", { row: row })
40022
40022
  ], 34 /* CLASS, NEED_HYDRATION */))
40023
40023
  : vue$1.createCommentVNode("v-if", true)
40024
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_21$12))
40024
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_21$13))
40025
40025
  }), 128 /* KEYED_FRAGMENT */))
40026
40026
  ])
40027
40027
  ], 2 /* CLASS */)
@@ -40957,6 +40957,11 @@ var script$7R = {
40957
40957
  eyebrow: { type: String, default: '' },
40958
40958
  /** Sentence under the title (board look). */
40959
40959
  subtitle: { type: String, default: '' },
40960
+ /**
40961
+ * Leave out the board header: the body draws its own title and close
40962
+ * button (CnUserSettingsDialog). `name` stays the accessible name.
40963
+ */
40964
+ headless: { type: Boolean, default: false },
40960
40965
  },
40961
40966
 
40962
40967
  emits: ['closing'],
@@ -41010,7 +41015,7 @@ function render$7Q(_ctx, _cache, $props, $setup, $data, $options) {
41010
41015
  onClosing: $options.onClosing
41011
41016
  }, vue$1.createSlots({
41012
41017
  default: vue$1.withCtx(() => [
41013
- ($setup.isBoard)
41018
+ ($setup.isBoard && !$props.headless)
41014
41019
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnDialogHeader, {
41015
41020
  key: 0,
41016
41021
  title: $props.name,
@@ -75666,17 +75671,17 @@ const _hoisted_19$1f = {
75666
75671
  key: 2,
75667
75672
  class: "cn-icon-browser-panel__hint"
75668
75673
  };
75669
- const _hoisted_20$14 = ["id", "aria-labelledby"];
75670
- const _hoisted_21$11 = {
75674
+ const _hoisted_20$15 = ["id", "aria-labelledby"];
75675
+ const _hoisted_21$12 = {
75671
75676
  key: 0,
75672
75677
  class: "cn-icon-browser-panel__hint"
75673
75678
  };
75674
- const _hoisted_22$Z = {
75679
+ const _hoisted_22$_ = {
75675
75680
  key: 1,
75676
75681
  class: "cn-icon-browser-panel__error",
75677
75682
  role: "alert"
75678
75683
  };
75679
- const _hoisted_23$Q = ["placeholder", "aria-label"];
75684
+ const _hoisted_23$R = ["placeholder", "aria-label"];
75680
75685
  const _hoisted_24$L = {
75681
75686
  key: 3,
75682
75687
  class: "cn-icon-browser-panel__grid"
@@ -75860,9 +75865,9 @@ function render$7J(_ctx, _cache, $props, $setup, $data, $options) {
75860
75865
  ($data.mode === $options.groupKey(group))
75861
75866
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 0 }, [
75862
75867
  ($data.groupLoading[group.key])
75863
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$11, vue$1.toDisplayString($options.t('nextcloud-vue', 'Loading icon set…')), 1 /* TEXT */))
75868
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$12, vue$1.toDisplayString($options.t('nextcloud-vue', 'Loading icon set…')), 1 /* TEXT */))
75864
75869
  : ($data.groupError[group.key])
75865
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$Z, vue$1.toDisplayString($data.groupError[group.key]), 1 /* TEXT */))
75870
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$_, vue$1.toDisplayString($data.groupError[group.key]), 1 /* TEXT */))
75866
75871
  : vue$1.createCommentVNode("v-if", true),
75867
75872
  (group.icons.length > $props.maxResults)
75868
75873
  ? vue$1.withDirectives((vue$1.openBlock(), vue$1.createElementBlock("input", {
@@ -75872,7 +75877,7 @@ function render$7J(_ctx, _cache, $props, $setup, $data, $options) {
75872
75877
  class: "cn-icon-browser-panel__search",
75873
75878
  placeholder: $options.t('nextcloud-vue', 'Search icons…'),
75874
75879
  "aria-label": $options.t('nextcloud-vue', 'Search icons')
75875
- }, null, 8 /* PROPS */, _hoisted_23$Q)), [
75880
+ }, null, 8 /* PROPS */, _hoisted_23$R)), [
75876
75881
  [vue$1.vModelText, $data.customQuery]
75877
75882
  ])
75878
75883
  : vue$1.createCommentVNode("v-if", true),
@@ -75905,7 +75910,7 @@ function render$7J(_ctx, _cache, $props, $setup, $data, $options) {
75905
75910
  : vue$1.createCommentVNode("v-if", true)
75906
75911
  ], 64 /* STABLE_FRAGMENT */))
75907
75912
  : vue$1.createCommentVNode("v-if", true)
75908
- ], 8 /* PROPS */, _hoisted_20$14)), [
75913
+ ], 8 /* PROPS */, _hoisted_20$15)), [
75909
75914
  [vue$1.vShow, $data.mode === $options.groupKey(group)]
75910
75915
  ])
75911
75916
  }), 128 /* KEYED_FRAGMENT */)),
@@ -78545,7 +78550,7 @@ script$7I.__scopeId = "data-v-aaa45660";
78545
78550
  const __sfc_main$7C = script$7I;
78546
78551
 
78547
78552
  /** How long typing rests before a search runs, in ms. */
78548
- const SEARCH_DELAY$2 = 250;
78553
+ const SEARCH_DELAY$3 = 250;
78549
78554
 
78550
78555
  /**
78551
78556
  * CnPartyPicker — one search field over several kinds of party: people and
@@ -78765,7 +78770,7 @@ var script$7H = {
78765
78770
  this.options = this.selectedOption ? [this.selectedOption] : [];
78766
78771
  return
78767
78772
  }
78768
- this.timer = setTimeout(() => this.search(term), SEARCH_DELAY$2);
78773
+ this.timer = setTimeout(() => this.search(term), SEARCH_DELAY$3);
78769
78774
  },
78770
78775
 
78771
78776
  /**
@@ -85621,9 +85626,9 @@ const _hoisted_16$1M = {
85621
85626
  const _hoisted_17$1x = { class: "cn-activity-card__day-header" };
85622
85627
  const _hoisted_18$1l = { class: "cn-activity-card__day-count" };
85623
85628
  const _hoisted_19$1e = { class: "cn-activity-card__list" };
85624
- const _hoisted_20$13 = { class: "cn-activity-card__row-main" };
85625
- const _hoisted_21$10 = { class: "cn-activity-card__row-subject" };
85626
- const _hoisted_22$Y = { class: "cn-activity-card__row-meta" };
85629
+ const _hoisted_20$14 = { class: "cn-activity-card__row-main" };
85630
+ const _hoisted_21$11 = { class: "cn-activity-card__row-subject" };
85631
+ const _hoisted_22$Z = { class: "cn-activity-card__row-meta" };
85627
85632
 
85628
85633
  function render$7A(_ctx, _cache, $props, $setup, $data, $options) {
85629
85634
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -85701,9 +85706,9 @@ function render$7A(_ctx, _cache, $props, $setup, $data, $options) {
85701
85706
  class: "cn-activity-card__row"
85702
85707
  }, [
85703
85708
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.iconFor(entry)), { size: 14 })),
85704
- vue$1.createElementVNode("div", _hoisted_20$13, [
85705
- vue$1.createElementVNode("span", _hoisted_21$10, vue$1.toDisplayString($options.subjectFor(entry)), 1 /* TEXT */),
85706
- vue$1.createElementVNode("span", _hoisted_22$Y, vue$1.toDisplayString($options.actorFor(entry)) + " · " + vue$1.toDisplayString($options.relativeTime(entry)), 1 /* TEXT */),
85709
+ vue$1.createElementVNode("div", _hoisted_20$14, [
85710
+ vue$1.createElementVNode("span", _hoisted_21$11, vue$1.toDisplayString($options.subjectFor(entry)), 1 /* TEXT */),
85711
+ vue$1.createElementVNode("span", _hoisted_22$Z, vue$1.toDisplayString($options.actorFor(entry)) + " · " + vue$1.toDisplayString($options.relativeTime(entry)), 1 /* TEXT */),
85707
85712
  ($props.showVisibility)
85708
85713
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnVisibilityChip, {
85709
85714
  key: 0,
@@ -86602,21 +86607,21 @@ const _hoisted_16$1L = { class: "cn-activity-tab__filter" };
86602
86607
  const _hoisted_17$1w = { class: "cn-activity-tab__filter-label" };
86603
86608
  const _hoisted_18$1k = { value: "" };
86604
86609
  const _hoisted_19$1d = ["value"];
86605
- const _hoisted_20$12 = {
86610
+ const _hoisted_20$13 = {
86606
86611
  key: 1,
86607
86612
  class: "cn-activity-tab__visibility",
86608
86613
  "data-testid": "cn-activity-visibility"
86609
86614
  };
86610
- const _hoisted_21$$ = {
86615
+ const _hoisted_21$10 = {
86611
86616
  key: 0,
86612
86617
  class: "cn-activity-tab__visibility-fixed",
86613
86618
  "data-testid": "cn-activity-visibility-fixed"
86614
86619
  };
86615
- const _hoisted_22$X = {
86620
+ const _hoisted_22$Y = {
86616
86621
  key: 1,
86617
86622
  class: "cn-activity-tab__filter"
86618
86623
  };
86619
- const _hoisted_23$P = { class: "cn-activity-tab__filter-label" };
86624
+ const _hoisted_23$Q = { class: "cn-activity-tab__filter-label" };
86620
86625
  const _hoisted_24$K = { value: "" };
86621
86626
  const _hoisted_25$E = { value: "internal" };
86622
86627
  const _hoisted_26$y = { value: "public" };
@@ -86659,9 +86664,9 @@ const _hoisted_42$a = {
86659
86664
  "aria-hidden": "true"
86660
86665
  };
86661
86666
  const _hoisted_43$9 = { class: "cn-activity-tab__event-body" };
86662
- const _hoisted_44$7 = { class: "cn-activity-tab__event-line" };
86663
- const _hoisted_45$5 = { class: "cn-activity-tab__event-meta" };
86664
- const _hoisted_46$5 = {
86667
+ const _hoisted_44$8 = { class: "cn-activity-tab__event-line" };
86668
+ const _hoisted_45$6 = { class: "cn-activity-tab__event-meta" };
86669
+ const _hoisted_46$6 = {
86665
86670
  key: 0,
86666
86671
  class: "cn-activity-tab__footer"
86667
86672
  };
@@ -86809,14 +86814,14 @@ function render$7z(_ctx, _cache, $props, $setup, $data, $options) {
86809
86814
  ])
86810
86815
  ]),
86811
86816
  ($props.showVisibility)
86812
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$12, [
86817
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$13, [
86813
86818
  ($props.publicViewOnly)
86814
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$$, [
86819
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$10, [
86815
86820
  vue$1.createVNode(_component_CnVisibilityChip, { visibility: "public" }),
86816
86821
  vue$1.createTextVNode(" " + vue$1.toDisplayString($data.publicOnlyLabel), 1 /* TEXT */)
86817
86822
  ]))
86818
- : (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_22$X, [
86819
- vue$1.createElementVNode("span", _hoisted_23$P, vue$1.toDisplayString($data.visibilityLabel), 1 /* TEXT */),
86823
+ : (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_22$Y, [
86824
+ vue$1.createElementVNode("span", _hoisted_23$Q, vue$1.toDisplayString($data.visibilityLabel), 1 /* TEXT */),
86820
86825
  vue$1.withDirectives(vue$1.createElementVNode("select", {
86821
86826
  "onUpdate:modelValue": _cache[5] || (_cache[5] = $event => (($data.selectedVisibility) = $event)),
86822
86827
  class: "cn-activity-tab__select",
@@ -86922,11 +86927,11 @@ function render$7z(_ctx, _cache, $props, $setup, $data, $options) {
86922
86927
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.iconFor(entry)), { size: 18 }))
86923
86928
  ]),
86924
86929
  vue$1.createElementVNode("div", _hoisted_43$9, [
86925
- vue$1.createElementVNode("p", _hoisted_44$7, [
86930
+ vue$1.createElementVNode("p", _hoisted_44$8, [
86926
86931
  vue$1.createElementVNode("strong", null, vue$1.toDisplayString($options.splitSubject(entry).verb), 1 /* TEXT */),
86927
86932
  vue$1.createTextVNode(vue$1.toDisplayString($options.splitSubject(entry).rest), 1 /* TEXT */)
86928
86933
  ]),
86929
- vue$1.createElementVNode("p", _hoisted_45$5, vue$1.toDisplayString($options.eventMeta(entry)), 1 /* TEXT */)
86934
+ vue$1.createElementVNode("p", _hoisted_45$6, vue$1.toDisplayString($options.eventMeta(entry)), 1 /* TEXT */)
86930
86935
  ]),
86931
86936
  ($props.showVisibility)
86932
86937
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnVisibilityChip, {
@@ -86938,7 +86943,7 @@ function render$7z(_ctx, _cache, $props, $setup, $data, $options) {
86938
86943
  }), 128 /* KEYED_FRAGMENT */))
86939
86944
  ]),
86940
86945
  ($options.hasMore)
86941
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_46$5, [
86946
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_46$6, [
86942
86947
  vue$1.createVNode(_component_NcButton, {
86943
86948
  variant: "tertiary",
86944
86949
  wide: true,
@@ -89866,12 +89871,12 @@ const _hoisted_19$1b = {
89866
89871
  key: 3,
89867
89872
  class: "cn-audit-details__null"
89868
89873
  };
89869
- const _hoisted_20$11 = {
89874
+ const _hoisted_20$12 = {
89870
89875
  key: 1,
89871
89876
  class: "cn-audit-details__values"
89872
89877
  };
89873
- const _hoisted_21$_ = { class: "cn-audit-details__mono" };
89874
- const _hoisted_22$W = {
89878
+ const _hoisted_21$$ = { class: "cn-audit-details__mono" };
89879
+ const _hoisted_22$X = {
89875
89880
  key: 2,
89876
89881
  class: "cn-sidebar-tab__empty"
89877
89882
  };
@@ -90017,8 +90022,8 @@ function render$7r(_ctx, _cache, $props, $setup, $data, $options) {
90017
90022
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$1b, "null"))
90018
90023
  : vue$1.createCommentVNode("v-if", true)
90019
90024
  ]))
90020
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$11, [
90021
- vue$1.createElementVNode("span", _hoisted_21$_, vue$1.toDisplayString($options.formatValue(change)), 1 /* TEXT */)
90025
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$12, [
90026
+ vue$1.createElementVNode("span", _hoisted_21$$, vue$1.toDisplayString($options.formatValue(change)), 1 /* TEXT */)
90022
90027
  ]))
90023
90028
  ]))
90024
90029
  }), 128 /* KEYED_FRAGMENT */))
@@ -90055,7 +90060,7 @@ function render$7r(_ctx, _cache, $props, $setup, $data, $options) {
90055
90060
  : vue$1.createCommentVNode("v-if", true)
90056
90061
  ]))
90057
90062
  ], 64 /* STABLE_FRAGMENT */))
90058
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$W, vue$1.toDisplayString($props.noAuditTrailLabel), 1 /* TEXT */)),
90063
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$X, vue$1.toDisplayString($props.noAuditTrailLabel), 1 /* TEXT */)),
90059
90064
  ($data.restoreEntry)
90060
90065
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnConfirmDialog, {
90061
90066
  key: 3,
@@ -90361,10 +90366,10 @@ const _hoisted_18$1h = {
90361
90366
  class: "cn-bookmarks-card__list"
90362
90367
  };
90363
90368
  const _hoisted_19$1a = { class: "cn-bookmarks-card__row-icon" };
90364
- const _hoisted_20$10 = ["src", "onError"];
90365
- const _hoisted_21$Z = { class: "cn-bookmarks-card__row-main" };
90366
- const _hoisted_22$V = ["href"];
90367
- const _hoisted_23$O = {
90369
+ const _hoisted_20$11 = ["src", "onError"];
90370
+ const _hoisted_21$_ = { class: "cn-bookmarks-card__row-main" };
90371
+ const _hoisted_22$W = ["href"];
90372
+ const _hoisted_23$P = {
90368
90373
  key: 1,
90369
90374
  class: "cn-bookmarks-card__title"
90370
90375
  };
@@ -90482,13 +90487,13 @@ function render$7q(_ctx, _cache, $props, $setup, $data, $options) {
90482
90487
  alt: "",
90483
90488
  class: "cn-bookmarks-card__favicon",
90484
90489
  onError: $event => ($options.onFaviconError(bookmark))
90485
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$10))
90490
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$11))
90486
90491
  : (vue$1.openBlock(), vue$1.createBlock(_component_Bookmark, {
90487
90492
  key: 1,
90488
90493
  size: 14
90489
90494
  }))
90490
90495
  ]),
90491
- vue$1.createElementVNode("div", _hoisted_21$Z, [
90496
+ vue$1.createElementVNode("div", _hoisted_21$_, [
90492
90497
  ($options.hasSafeUrl(bookmark))
90493
90498
  ? (vue$1.openBlock(), vue$1.createElementBlock("a", {
90494
90499
  key: 0,
@@ -90496,8 +90501,8 @@ function render$7q(_ctx, _cache, $props, $setup, $data, $options) {
90496
90501
  target: "_blank",
90497
90502
  rel: "noopener noreferrer",
90498
90503
  class: "cn-bookmarks-card__title"
90499
- }, vue$1.toDisplayString($options.bookmarkTitle(bookmark)), 9 /* TEXT, PROPS */, _hoisted_22$V))
90500
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$O, vue$1.toDisplayString($options.bookmarkTitle(bookmark)), 1 /* TEXT */))
90504
+ }, vue$1.toDisplayString($options.bookmarkTitle(bookmark)), 9 /* TEXT, PROPS */, _hoisted_22$W))
90505
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$P, vue$1.toDisplayString($options.bookmarkTitle(bookmark)), 1 /* TEXT */))
90501
90506
  ])
90502
90507
  ]))
90503
90508
  }), 128 /* KEYED_FRAGMENT */))
@@ -93013,13 +93018,13 @@ const _hoisted_18$1f = {
93013
93018
  class: "cn-calendar-tab__attendees"
93014
93019
  };
93015
93020
  const _hoisted_19$18 = ["title"];
93016
- const _hoisted_20$$ = ["title"];
93017
- const _hoisted_21$Y = {
93021
+ const _hoisted_20$10 = ["title"];
93022
+ const _hoisted_21$Z = {
93018
93023
  key: 1,
93019
93024
  class: "cn-calendar-tab__group"
93020
93025
  };
93021
- const _hoisted_22$U = { class: "cn-calendar-tab__group-title cn-calendar-tab__group-title--past" };
93022
- const _hoisted_23$N = {
93026
+ const _hoisted_22$V = { class: "cn-calendar-tab__group-title cn-calendar-tab__group-title--past" };
93027
+ const _hoisted_23$O = {
93023
93028
  class: "cn-calendar-tab__date cn-calendar-tab__date--past",
93024
93029
  "aria-hidden": "true"
93025
93030
  };
@@ -93155,7 +93160,7 @@ function render$7j(_ctx, _cache, $props, $setup, $data, $options) {
93155
93160
  key: 0,
93156
93161
  class: "cn-calendar-tab__avatar cn-calendar-tab__avatar--more",
93157
93162
  title: $options.attendeeCountLabel(ev)
93158
- }, " +" + vue$1.toDisplayString($options.extraAttendees(ev)), 9 /* TEXT, PROPS */, _hoisted_20$$))
93163
+ }, " +" + vue$1.toDisplayString($options.extraAttendees(ev)), 9 /* TEXT, PROPS */, _hoisted_20$10))
93159
93164
  : vue$1.createCommentVNode("v-if", true)
93160
93165
  ]))
93161
93166
  : vue$1.createCommentVNode("v-if", true)
@@ -93197,14 +93202,14 @@ function render$7j(_ctx, _cache, $props, $setup, $data, $options) {
93197
93202
  ]))
93198
93203
  : vue$1.createCommentVNode("v-if", true),
93199
93204
  ($options.pastEvents.length > 0)
93200
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$Y, [
93201
- vue$1.createElementVNode("h4", _hoisted_22$U, vue$1.toDisplayString($props.pastLabel), 1 /* TEXT */),
93205
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$Z, [
93206
+ vue$1.createElementVNode("h4", _hoisted_22$V, vue$1.toDisplayString($props.pastLabel), 1 /* TEXT */),
93202
93207
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.pastEvents, (ev) => {
93203
93208
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
93204
93209
  key: $options.rowKey(ev),
93205
93210
  class: "cn-calendar-tab__event cn-calendar-tab__event--past"
93206
93211
  }, [
93207
- vue$1.createElementVNode("div", _hoisted_23$N, [
93212
+ vue$1.createElementVNode("div", _hoisted_23$O, [
93208
93213
  vue$1.createElementVNode("span", _hoisted_24$I, vue$1.toDisplayString($options.monthOf(ev)), 1 /* TEXT */),
93209
93214
  vue$1.createElementVNode("span", _hoisted_25$C, vue$1.toDisplayString($options.dayOf(ev)), 1 /* TEXT */)
93210
93215
  ]),
@@ -93714,13 +93719,13 @@ const _hoisted_19$17 = {
93714
93719
  key: 2,
93715
93720
  class: "cn-collectives-card__list"
93716
93721
  };
93717
- const _hoisted_20$_ = {
93722
+ const _hoisted_20$$ = {
93718
93723
  class: "cn-collectives-card__chip-emoji",
93719
93724
  "aria-hidden": true
93720
93725
  };
93721
- const _hoisted_21$X = { class: "cn-collectives-card__row-main" };
93722
- const _hoisted_22$T = ["href"];
93723
- const _hoisted_23$M = {
93726
+ const _hoisted_21$Y = { class: "cn-collectives-card__row-main" };
93727
+ const _hoisted_22$U = ["href"];
93728
+ const _hoisted_23$N = {
93724
93729
  key: 0,
93725
93730
  class: "cn-collectives-card__row-collective"
93726
93731
  };
@@ -93831,7 +93836,7 @@ function render$7i(_ctx, _cache, $props, $setup, $data, $options) {
93831
93836
  key: $options.pageKey(page),
93832
93837
  class: "cn-collectives-card__row"
93833
93838
  }, [
93834
- vue$1.createElementVNode("span", _hoisted_20$_, [
93839
+ vue$1.createElementVNode("span", _hoisted_20$$, [
93835
93840
  ($options.pageEmoji(page))
93836
93841
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 0 }, [
93837
93842
  vue$1.createTextVNode(vue$1.toDisplayString($options.pageEmoji(page)), 1 /* TEXT */)
@@ -93841,15 +93846,15 @@ function render$7i(_ctx, _cache, $props, $setup, $data, $options) {
93841
93846
  size: 14
93842
93847
  }))
93843
93848
  ]),
93844
- vue$1.createElementVNode("div", _hoisted_21$X, [
93849
+ vue$1.createElementVNode("div", _hoisted_21$Y, [
93845
93850
  vue$1.createElementVNode("a", {
93846
93851
  href: $options.pageUrl(page),
93847
93852
  target: "_blank",
93848
93853
  rel: "noopener",
93849
93854
  class: "cn-collectives-card__title"
93850
- }, vue$1.toDisplayString($options.pageTitle(page)), 9 /* TEXT, PROPS */, _hoisted_22$T),
93855
+ }, vue$1.toDisplayString($options.pageTitle(page)), 9 /* TEXT, PROPS */, _hoisted_22$U),
93851
93856
  ($options.collectiveLabel(page))
93852
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$M, vue$1.toDisplayString($options.collectiveLabel(page)), 1 /* TEXT */))
93857
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$N, vue$1.toDisplayString($options.collectiveLabel(page)), 1 /* TEXT */))
93853
93858
  : vue$1.createCommentVNode("v-if", true)
93854
93859
  ])
93855
93860
  ]))
@@ -96915,12 +96920,12 @@ const _hoisted_18$1d = {
96915
96920
  "data-testid": "cn-contacts-tab-period"
96916
96921
  };
96917
96922
  const _hoisted_19$16 = { class: "cn-contacts-tab__sub-text" };
96918
- const _hoisted_20$Z = {
96923
+ const _hoisted_20$_ = {
96919
96924
  key: 4,
96920
96925
  class: "cn-contacts-tab__sub"
96921
96926
  };
96922
- const _hoisted_21$W = { class: "cn-contacts-tab__sub-text" };
96923
- const _hoisted_22$S = ["aria-label", "title", "onClick"];
96927
+ const _hoisted_21$X = { class: "cn-contacts-tab__sub-text" };
96928
+ const _hoisted_22$T = ["aria-label", "title", "onClick"];
96924
96929
 
96925
96930
  function render$79(_ctx, _cache, $props, $setup, $data, $options) {
96926
96931
  const _component_AccountPlus = vue$1.resolveComponent("AccountPlus");
@@ -97080,8 +97085,8 @@ function render$79(_ctx, _cache, $props, $setup, $data, $options) {
97080
97085
  ]))
97081
97086
  : vue$1.createCommentVNode("v-if", true),
97082
97087
  (contact.note)
97083
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$Z, [
97084
- vue$1.createElementVNode("span", _hoisted_21$W, vue$1.toDisplayString(contact.note), 1 /* TEXT */)
97088
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$_, [
97089
+ vue$1.createElementVNode("span", _hoisted_21$X, vue$1.toDisplayString(contact.note), 1 /* TEXT */)
97085
97090
  ]))
97086
97091
  : vue$1.createCommentVNode("v-if", true)
97087
97092
  ]),
@@ -97093,7 +97098,7 @@ function render$79(_ctx, _cache, $props, $setup, $data, $options) {
97093
97098
  onClick: vue$1.withModifiers($event => ($options.unlink(contact)), ["stop"])
97094
97099
  }, [
97095
97100
  vue$1.createVNode(_component_Close, { size: 18 })
97096
- ], 8 /* PROPS */, _hoisted_22$S)
97101
+ ], 8 /* PROPS */, _hoisted_22$T)
97097
97102
  ], 8 /* PROPS */, _hoisted_7$3X))
97098
97103
  }), 128 /* KEYED_FRAGMENT */))
97099
97104
  ])
@@ -98927,8 +98932,8 @@ const _hoisted_16$1C = {
98927
98932
  const _hoisted_17$1n = { class: "cn-deck-card__column-header" };
98928
98933
  const _hoisted_18$1c = { class: "cn-deck-card__column-title" };
98929
98934
  const _hoisted_19$15 = { class: "cn-deck-card__column-count" };
98930
- const _hoisted_20$Y = { class: "cn-deck-card__column-list" };
98931
- const _hoisted_21$V = ["href"];
98935
+ const _hoisted_20$Z = { class: "cn-deck-card__column-list" };
98936
+ const _hoisted_21$W = ["href"];
98932
98937
 
98933
98938
  function render$74(_ctx, _cache, $props, $setup, $data, $options) {
98934
98939
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -99013,7 +99018,7 @@ function render$74(_ctx, _cache, $props, $setup, $data, $options) {
99013
99018
  vue$1.createElementVNode("span", _hoisted_18$1c, vue$1.toDisplayString(stack.label), 1 /* TEXT */),
99014
99019
  vue$1.createElementVNode("span", _hoisted_19$15, vue$1.toDisplayString(stack.cards.length), 1 /* TEXT */)
99015
99020
  ]),
99016
- vue$1.createElementVNode("ul", _hoisted_20$Y, [
99021
+ vue$1.createElementVNode("ul", _hoisted_20$Z, [
99017
99022
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(stack.cards, (card) => {
99018
99023
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
99019
99024
  key: $options.cardKey(card),
@@ -99024,7 +99029,7 @@ function render$74(_ctx, _cache, $props, $setup, $data, $options) {
99024
99029
  target: "_blank",
99025
99030
  rel: "noopener",
99026
99031
  class: "cn-deck-card__title"
99027
- }, vue$1.toDisplayString($options.cardTitle(card)), 9 /* TEXT, PROPS */, _hoisted_21$V)
99032
+ }, vue$1.toDisplayString($options.cardTitle(card)), 9 /* TEXT, PROPS */, _hoisted_21$W)
99028
99033
  ], 2 /* CLASS */))
99029
99034
  }), 128 /* KEYED_FRAGMENT */))
99030
99035
  ])
@@ -100945,9 +100950,9 @@ const _hoisted_16$1A = {
100945
100950
  const _hoisted_17$1l = ["onClick"];
100946
100951
  const _hoisted_18$1b = { class: "cn-email-picker__message" };
100947
100952
  const _hoisted_19$14 = { class: "cn-email-picker__message-subject" };
100948
- const _hoisted_20$X = { class: "cn-email-picker__message-meta" };
100949
- const _hoisted_21$U = { class: "cn-email-picker__message-sender" };
100950
- const _hoisted_22$R = {
100953
+ const _hoisted_20$Y = { class: "cn-email-picker__message-meta" };
100954
+ const _hoisted_21$V = { class: "cn-email-picker__message-sender" };
100955
+ const _hoisted_22$S = {
100951
100956
  key: 0,
100952
100957
  class: "cn-email-picker__message-date"
100953
100958
  };
@@ -101121,10 +101126,10 @@ function render$6$(_ctx, _cache, $props, $setup, $data, $options) {
101121
101126
  vue$1.createVNode(_component_EmailOutline, { size: 18 }),
101122
101127
  vue$1.createElementVNode("span", _hoisted_18$1b, [
101123
101128
  vue$1.createElementVNode("span", _hoisted_19$14, vue$1.toDisplayString(msg.subject || $options.t('nextcloud-vue', '(no subject)')), 1 /* TEXT */),
101124
- vue$1.createElementVNode("span", _hoisted_20$X, [
101125
- vue$1.createElementVNode("span", _hoisted_21$U, vue$1.toDisplayString(msg.sender || $options.t('nextcloud-vue', 'Unknown sender')), 1 /* TEXT */),
101129
+ vue$1.createElementVNode("span", _hoisted_20$Y, [
101130
+ vue$1.createElementVNode("span", _hoisted_21$V, vue$1.toDisplayString(msg.sender || $options.t('nextcloud-vue', 'Unknown sender')), 1 /* TEXT */),
101126
101131
  (msg.date)
101127
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$R, vue$1.toDisplayString($options.formatDate(msg.date)), 1 /* TEXT */))
101132
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$S, vue$1.toDisplayString($options.formatDate(msg.date)), 1 /* TEXT */))
101128
101133
  : vue$1.createCommentVNode("v-if", true)
101129
101134
  ])
101130
101135
  ])
@@ -109004,14 +109009,14 @@ const _hoisted_17$1i = {
109004
109009
  };
109005
109010
  const _hoisted_18$18 = ["aria-label"];
109006
109011
  const _hoisted_19$12 = ["aria-pressed", "onClick"];
109007
- const _hoisted_20$W = { class: "cn-files-browser__facet-count" };
109008
- const _hoisted_21$T = ["aria-label"];
109009
- const _hoisted_22$Q = {
109012
+ const _hoisted_20$X = { class: "cn-files-browser__facet-count" };
109013
+ const _hoisted_21$U = ["aria-label"];
109014
+ const _hoisted_22$R = {
109010
109015
  class: "cn-files-browser__bulk-count",
109011
109016
  "aria-live": "polite",
109012
109017
  "data-testid": "cn-files-browser-bulk-count"
109013
109018
  };
109014
- const _hoisted_23$L = {
109019
+ const _hoisted_23$M = {
109015
109020
  class: "cn-files-browser__table",
109016
109021
  "data-testid": "cn-files-browser-table"
109017
109022
  };
@@ -109059,9 +109064,9 @@ const _hoisted_43$8 = {
109059
109064
  key: 0,
109060
109065
  class: "cn-files-browser__no-match-row"
109061
109066
  };
109062
- const _hoisted_44$6 = ["colspan"];
109063
- const _hoisted_45$4 = ["data-name", "onClick", "onAuxclick"];
109064
- const _hoisted_46$4 = {
109067
+ const _hoisted_44$7 = ["colspan"];
109068
+ const _hoisted_45$5 = ["data-name", "onClick", "onAuxclick"];
109069
+ const _hoisted_46$5 = {
109065
109070
  key: 0,
109066
109071
  class: "cn-files-browser__col-select"
109067
109072
  };
@@ -109405,7 +109410,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109405
109410
  onClick: $event => ($options.toggleFacet(facet.key, option.value))
109406
109411
  }, [
109407
109412
  vue$1.createTextVNode(vue$1.toDisplayString(option.value) + " ", 1 /* TEXT */),
109408
- vue$1.createElementVNode("strong", _hoisted_20$W, vue$1.toDisplayString(option.count), 1 /* TEXT */)
109413
+ vue$1.createElementVNode("strong", _hoisted_20$X, vue$1.toDisplayString(option.count), 1 /* TEXT */)
109409
109414
  ], 10 /* CLASS, PROPS */, _hoisted_19$12))
109410
109415
  }), 128 /* KEYED_FRAGMENT */))
109411
109416
  ], 8 /* PROPS */, _hoisted_18$18))
@@ -109433,7 +109438,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109433
109438
  "aria-label": $options.t('nextcloud-vue', 'Actions for the selected files'),
109434
109439
  "data-testid": "cn-files-browser-bulk-bar"
109435
109440
  }, [
109436
- vue$1.createElementVNode("span", _hoisted_22$Q, vue$1.toDisplayString($options.selectionCountText), 1 /* TEXT */),
109441
+ vue$1.createElementVNode("span", _hoisted_22$R, vue$1.toDisplayString($options.selectionCountText), 1 /* TEXT */),
109437
109442
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.bulkActions, (action) => {
109438
109443
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
109439
109444
  key: action.id,
@@ -109465,7 +109470,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109465
109470
  _: 1 /* STABLE */
109466
109471
  }, 8 /* PROPS */, ["onClick"]))
109467
109472
  : vue$1.createCommentVNode("v-if", true)
109468
- ], 8 /* PROPS */, _hoisted_21$T))
109473
+ ], 8 /* PROPS */, _hoisted_21$U))
109469
109474
  : vue$1.createCommentVNode("v-if", true),
109470
109475
  ($data.loading)
109471
109476
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcLoadingIcon, {
@@ -109509,7 +109514,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109509
109514
  key: 9,
109510
109515
  class: vue$1.normalizeClass(["cn-files-browser__body", { 'cn-files-browser__body--with-side': $options.sideNode !== null && !$options.sideInPage }])
109511
109516
  }, [
109512
- vue$1.createElementVNode("table", _hoisted_23$L, [
109517
+ vue$1.createElementVNode("table", _hoisted_23$M, [
109513
109518
  vue$1.createElementVNode("thead", null, [
109514
109519
  vue$1.createElementVNode("tr", null, [
109515
109520
  ($options.bulkEnabled)
@@ -109810,7 +109815,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109810
109815
  colspan: $options.columnCount,
109811
109816
  class: "cn-files-browser__no-match",
109812
109817
  "data-testid": "cn-files-browser-no-match"
109813
- }, vue$1.toDisplayString($options.t('nextcloud-vue', 'No files match the filter.')), 9 /* TEXT, PROPS */, _hoisted_44$6)
109818
+ }, vue$1.toDisplayString($options.t('nextcloud-vue', 'No files match the filter.')), 9 /* TEXT, PROPS */, _hoisted_44$7)
109814
109819
  ]))
109815
109820
  : vue$1.createCommentVNode("v-if", true),
109816
109821
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.linkedItems, (item) => {
@@ -109824,7 +109829,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109824
109829
  onAuxclick: $event => ($options.onLinkedAuxClick(item, $event))
109825
109830
  }, [
109826
109831
  ($options.bulkEnabled)
109827
- ? (vue$1.openBlock(), vue$1.createElementBlock("td", _hoisted_46$4))
109832
+ ? (vue$1.openBlock(), vue$1.createElementBlock("td", _hoisted_46$5))
109828
109833
  : vue$1.createCommentVNode("v-if", true),
109829
109834
  vue$1.createElementVNode("td", _hoisted_47$4, [
109830
109835
  ($options.mimeIconFor({ mime: item.mime }))
@@ -109923,7 +109928,7 @@ function render$6S(_ctx, _cache, $props, $setup, $data, $options) {
109923
109928
  _: 2 /* DYNAMIC */
109924
109929
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["ariaLabel"])
109925
109930
  ], 32 /* NEED_HYDRATION */)
109926
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_45$4))
109931
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_45$5))
109927
109932
  }), 128 /* KEYED_FRAGMENT */))
109928
109933
  ])
109929
109934
  ]),
@@ -114858,13 +114863,13 @@ const _hoisted_18$17 = {
114858
114863
  class: "cn-maps-card__list"
114859
114864
  };
114860
114865
  const _hoisted_19$11 = { class: "cn-maps-card__row-main" };
114861
- const _hoisted_20$V = { class: "cn-maps-card__row-header" };
114862
- const _hoisted_21$S = ["href"];
114863
- const _hoisted_22$P = {
114866
+ const _hoisted_20$W = { class: "cn-maps-card__row-header" };
114867
+ const _hoisted_21$T = ["href"];
114868
+ const _hoisted_22$Q = {
114864
114869
  key: 0,
114865
114870
  class: "cn-maps-card__category"
114866
114871
  };
114867
- const _hoisted_23$K = {
114872
+ const _hoisted_23$L = {
114868
114873
  key: 0,
114869
114874
  class: "cn-maps-card__coords"
114870
114875
  };
@@ -114968,19 +114973,19 @@ function render$6J(_ctx, _cache, $props, $setup, $data, $options) {
114968
114973
  class: "cn-maps-card__row-icon"
114969
114974
  }),
114970
114975
  vue$1.createElementVNode("div", _hoisted_19$11, [
114971
- vue$1.createElementVNode("div", _hoisted_20$V, [
114976
+ vue$1.createElementVNode("div", _hoisted_20$W, [
114972
114977
  vue$1.createElementVNode("a", {
114973
114978
  href: $options.pointUrl(point),
114974
114979
  target: "_blank",
114975
114980
  rel: "noopener",
114976
114981
  class: "cn-maps-card__title"
114977
- }, vue$1.toDisplayString($options.pointName(point)), 9 /* TEXT, PROPS */, _hoisted_21$S),
114982
+ }, vue$1.toDisplayString($options.pointName(point)), 9 /* TEXT, PROPS */, _hoisted_21$T),
114978
114983
  ($options.pointCategory(point))
114979
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$P, vue$1.toDisplayString($options.pointCategory(point)), 1 /* TEXT */))
114984
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$Q, vue$1.toDisplayString($options.pointCategory(point)), 1 /* TEXT */))
114980
114985
  : vue$1.createCommentVNode("v-if", true)
114981
114986
  ]),
114982
114987
  ($options.coordsLabel(point))
114983
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$K, vue$1.toDisplayString($options.coordsLabel(point)), 1 /* TEXT */))
114988
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$L, vue$1.toDisplayString($options.coordsLabel(point)), 1 /* TEXT */))
114984
114989
  : vue$1.createCommentVNode("v-if", true)
114985
114990
  ])
114986
114991
  ]))
@@ -119687,12 +119692,12 @@ const _hoisted_19$10 = {
119687
119692
  key: 3,
119688
119693
  class: "cn-openproject-card__empty"
119689
119694
  };
119690
- const _hoisted_20$U = {
119695
+ const _hoisted_20$V = {
119691
119696
  key: 4,
119692
119697
  class: "cn-openproject-card__rows"
119693
119698
  };
119694
- const _hoisted_21$R = ["href"];
119695
- const _hoisted_22$O = {
119699
+ const _hoisted_21$S = ["href"];
119700
+ const _hoisted_22$P = {
119696
119701
  key: 1,
119697
119702
  class: "cn-openproject-card__assignee"
119698
119703
  };
@@ -119806,7 +119811,7 @@ function render$6z(_ctx, _cache, $props, $setup, $data, $options) {
119806
119811
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_18$16, vue$1.toDisplayString($data.degraded), 1 /* TEXT */))
119807
119812
  : ($data.workPackages.length === 0)
119808
119813
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_19$10, vue$1.toDisplayString($props.emptyLabel), 1 /* TEXT */))
119809
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_20$U, [
119814
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_20$V, [
119810
119815
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.workPackages, (wp) => {
119811
119816
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
119812
119817
  key: $options.wpKey(wp),
@@ -119817,7 +119822,7 @@ function render$6z(_ctx, _cache, $props, $setup, $data, $options) {
119817
119822
  target: "_blank",
119818
119823
  rel: "noopener",
119819
119824
  class: "cn-openproject-card__title"
119820
- }, vue$1.toDisplayString($options.wpSubject(wp)), 9 /* TEXT, PROPS */, _hoisted_21$R),
119825
+ }, vue$1.toDisplayString($options.wpSubject(wp)), 9 /* TEXT, PROPS */, _hoisted_21$S),
119821
119826
  ($options.wpStatus(wp))
119822
119827
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
119823
119828
  key: 0,
@@ -119825,7 +119830,7 @@ function render$6z(_ctx, _cache, $props, $setup, $data, $options) {
119825
119830
  }, vue$1.toDisplayString($options.wpStatus(wp)), 3 /* TEXT, CLASS */))
119826
119831
  : vue$1.createCommentVNode("v-if", true),
119827
119832
  ($options.wpAssignee(wp))
119828
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$O, [
119833
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$P, [
119829
119834
  vue$1.createVNode(_component_AccountCircleOutline, { size: 12 }),
119830
119835
  vue$1.createTextVNode(" " + vue$1.toDisplayString($options.wpAssignee(wp)), 1 /* TEXT */)
119831
119836
  ]))
@@ -121524,10 +121529,10 @@ const _hoisted_18$15 = {
121524
121529
  class: "cn-photos-card__grid"
121525
121530
  };
121526
121531
  const _hoisted_19$$ = ["href", "title"];
121527
- const _hoisted_20$T = { class: "cn-photos-card__tile-cover" };
121528
- const _hoisted_21$Q = ["src", "onError"];
121529
- const _hoisted_22$N = { class: "cn-photos-card__tile-name" };
121530
- const _hoisted_23$J = {
121532
+ const _hoisted_20$U = { class: "cn-photos-card__tile-cover" };
121533
+ const _hoisted_21$R = ["src", "onError"];
121534
+ const _hoisted_22$O = { class: "cn-photos-card__tile-name" };
121535
+ const _hoisted_23$K = {
121531
121536
  key: 3,
121532
121537
  class: "cn-photos-card__view-all"
121533
121538
  };
@@ -121638,7 +121643,7 @@ function render$6v(_ctx, _cache, $props, $setup, $data, $options) {
121638
121643
  rel: "noopener noreferrer",
121639
121644
  title: $options.albumName(album)
121640
121645
  }, [
121641
- vue$1.createElementVNode("div", _hoisted_20$T, [
121646
+ vue$1.createElementVNode("div", _hoisted_20$U, [
121642
121647
  ($options.coverUrl(album))
121643
121648
  ? (vue$1.openBlock(), vue$1.createElementBlock("img", {
121644
121649
  key: 0,
@@ -121647,19 +121652,19 @@ function render$6v(_ctx, _cache, $props, $setup, $data, $options) {
121647
121652
  class: "cn-photos-card__tile-cover-img",
121648
121653
  loading: "lazy",
121649
121654
  onError: $event => ($options.onCoverError(album))
121650
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$Q))
121655
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$R))
121651
121656
  : (vue$1.openBlock(), vue$1.createBlock(_component_ImageMultiple, {
121652
121657
  key: 1,
121653
121658
  size: 20,
121654
121659
  class: "cn-photos-card__tile-fallback"
121655
121660
  }))
121656
121661
  ]),
121657
- vue$1.createElementVNode("span", _hoisted_22$N, vue$1.toDisplayString($options.albumName(album)), 1 /* TEXT */)
121662
+ vue$1.createElementVNode("span", _hoisted_22$O, vue$1.toDisplayString($options.albumName(album)), 1 /* TEXT */)
121658
121663
  ], 8 /* PROPS */, _hoisted_19$$))
121659
121664
  }), 128 /* KEYED_FRAGMENT */))
121660
121665
  ])),
121661
121666
  ($data.albums.length > $data.COMPACT_LIMIT)
121662
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$J, [
121667
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$K, [
121663
121668
  vue$1.createElementVNode("a", {
121664
121669
  href: $props.photosAppUrl,
121665
121670
  target: "_blank",
@@ -122947,10 +122952,10 @@ const _hoisted_19$_ = {
122947
122952
  key: 1,
122948
122953
  class: "cn-polls-card__options"
122949
122954
  };
122950
- const _hoisted_20$S = { class: "cn-polls-card__option-label" };
122951
- const _hoisted_21$P = { class: "cn-polls-card__option-text" };
122952
- const _hoisted_22$M = { class: "cn-polls-card__option-count" };
122953
- const _hoisted_23$I = ["aria-valuenow"];
122955
+ const _hoisted_20$T = { class: "cn-polls-card__option-label" };
122956
+ const _hoisted_21$Q = { class: "cn-polls-card__option-text" };
122957
+ const _hoisted_22$N = { class: "cn-polls-card__option-count" };
122958
+ const _hoisted_23$J = ["aria-valuenow"];
122954
122959
 
122955
122960
  function render$6r(_ctx, _cache, $props, $setup, $data, $options) {
122956
122961
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -123063,9 +123068,9 @@ function render$6r(_ctx, _cache, $props, $setup, $data, $options) {
123063
123068
  key: $options.optionKey(opt),
123064
123069
  class: "cn-polls-card__option"
123065
123070
  }, [
123066
- vue$1.createElementVNode("div", _hoisted_20$S, [
123067
- vue$1.createElementVNode("span", _hoisted_21$P, vue$1.toDisplayString($options.optionLabel(opt)), 1 /* TEXT */),
123068
- vue$1.createElementVNode("span", _hoisted_22$M, vue$1.toDisplayString($options.optionPercent(poll, opt)) + "%", 1 /* TEXT */)
123071
+ vue$1.createElementVNode("div", _hoisted_20$T, [
123072
+ vue$1.createElementVNode("span", _hoisted_21$Q, vue$1.toDisplayString($options.optionLabel(opt)), 1 /* TEXT */),
123073
+ vue$1.createElementVNode("span", _hoisted_22$N, vue$1.toDisplayString($options.optionPercent(poll, opt)) + "%", 1 /* TEXT */)
123069
123074
  ]),
123070
123075
  vue$1.createElementVNode("div", {
123071
123076
  class: "cn-polls-card__option-bar",
@@ -123078,7 +123083,7 @@ function render$6r(_ctx, _cache, $props, $setup, $data, $options) {
123078
123083
  class: "cn-polls-card__option-bar-fill",
123079
123084
  style: vue$1.normalizeStyle({ width: $options.optionPercent(poll, opt) + '%' })
123080
123085
  }, null, 4 /* STYLE */)
123081
- ], 8 /* PROPS */, _hoisted_23$I)
123086
+ ], 8 /* PROPS */, _hoisted_23$J)
123082
123087
  ]))
123083
123088
  }), 128 /* KEYED_FRAGMENT */))
123084
123089
  ]))
@@ -136719,15 +136724,15 @@ const _hoisted_16$1i = {
136719
136724
  const _hoisted_17$18 = { class: "cn-xwiki-card__list" };
136720
136725
  const _hoisted_18$10 = { class: "cn-xwiki-card__row-header" };
136721
136726
  const _hoisted_19$Y = ["href"];
136722
- const _hoisted_20$R = {
136727
+ const _hoisted_20$S = {
136723
136728
  key: 0,
136724
136729
  class: "cn-xwiki-card__breadcrumb"
136725
136730
  };
136726
- const _hoisted_21$O = {
136731
+ const _hoisted_21$P = {
136727
136732
  key: 0,
136728
136733
  class: "cn-xwiki-card__preview"
136729
136734
  };
136730
- const _hoisted_22$L = ["href"];
136735
+ const _hoisted_22$M = ["href"];
136731
136736
 
136732
136737
  function render$66(_ctx, _cache, $props, $setup, $data, $options) {
136733
136738
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -136822,13 +136827,13 @@ function render$66(_ctx, _cache, $props, $setup, $data, $options) {
136822
136827
  }, vue$1.toDisplayString($options.pageTitle(page)), 9 /* TEXT, PROPS */, _hoisted_19$Y)
136823
136828
  ]),
136824
136829
  ($options.breadcrumbLabel(page))
136825
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$R, vue$1.toDisplayString($options.breadcrumbLabel(page)), 1 /* TEXT */))
136830
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$S, vue$1.toDisplayString($options.breadcrumbLabel(page)), 1 /* TEXT */))
136826
136831
  : vue$1.createCommentVNode("v-if", true)
136827
136832
  ]))
136828
136833
  }), 128 /* KEYED_FRAGMENT */))
136829
136834
  ]),
136830
136835
  ($options.previewText)
136831
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$O, [
136836
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$P, [
136832
136837
  vue$1.createElementVNode("p", null, vue$1.toDisplayString($options.previewText), 1 /* TEXT */),
136833
136838
  ($options.firstPageUrl)
136834
136839
  ? (vue$1.openBlock(), vue$1.createElementBlock("a", {
@@ -136837,7 +136842,7 @@ function render$66(_ctx, _cache, $props, $setup, $data, $options) {
136837
136842
  target: "_blank",
136838
136843
  rel: "noopener",
136839
136844
  class: "cn-xwiki-card__open-link"
136840
- }, vue$1.toDisplayString($props.openLabel), 9 /* TEXT, PROPS */, _hoisted_22$L))
136845
+ }, vue$1.toDisplayString($props.openLabel), 9 /* TEXT, PROPS */, _hoisted_22$M))
136841
136846
  : vue$1.createCommentVNode("v-if", true)
136842
136847
  ]))
136843
136848
  : vue$1.createCommentVNode("v-if", true)
@@ -143994,16 +143999,16 @@ const _hoisted_19$X = {
143994
143999
  key: 7,
143995
144000
  class: "cn-form-dialog__switch-wrapper"
143996
144001
  };
143997
- const _hoisted_20$Q = {
144002
+ const _hoisted_20$R = {
143998
144003
  key: 8,
143999
144004
  class: "cn-form-dialog__switch-wrapper"
144000
144005
  };
144001
- const _hoisted_21$N = {
144006
+ const _hoisted_21$O = {
144002
144007
  key: 9,
144003
144008
  class: "cn-form-dialog__select-wrapper"
144004
144009
  };
144005
- const _hoisted_22$K = { class: "cn-form-dialog__option" };
144006
- const _hoisted_23$H = {
144010
+ const _hoisted_22$L = { class: "cn-form-dialog__option" };
144011
+ const _hoisted_23$I = {
144007
144012
  key: 2,
144008
144013
  class: "cn-form-dialog__option-group"
144009
144014
  };
@@ -144063,14 +144068,14 @@ const _hoisted_43$7 = {
144063
144068
  key: 21,
144064
144069
  class: "cn-form-dialog__icon-wrapper"
144065
144070
  };
144066
- const _hoisted_44$5 = ["for"];
144067
- const _hoisted_45$3 = {
144071
+ const _hoisted_44$6 = ["for"];
144072
+ const _hoisted_45$4 = {
144068
144073
  key: 23,
144069
144074
  class: "cn-form-dialog__assigned",
144070
144075
  "aria-live": "polite",
144071
144076
  "data-testid": "cn-form-dialog-assigned"
144072
144077
  };
144073
- const _hoisted_46$3 = ["data-testid"];
144078
+ const _hoisted_46$4 = ["data-testid"];
144074
144079
  const _hoisted_47$3 = ["data-testid"];
144075
144080
  const _hoisted_48$3 = {
144076
144081
  key: 0,
@@ -144624,7 +144629,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
144624
144629
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label"])
144625
144630
  ]))
144626
144631
  : (field.widget === 'switch')
144627
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$Q, [
144632
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$R, [
144628
144633
  vue$1.createVNode(_component_NcCheckboxRadioSwitch, {
144629
144634
  modelValue: $options.isSwitchOn(field),
144630
144635
  disabled: field.readOnly,
@@ -144646,7 +144651,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
144646
144651
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
144647
144652
  ]))
144648
144653
  : (field.widget === 'select' || field.widget === 'user' || field.widget === 'group')
144649
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$N, [
144654
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$O, [
144650
144655
  (field.look === 'search' && !$options.isUserField(field))
144651
144656
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnSearchSelect, {
144652
144657
  key: 0,
@@ -144688,7 +144693,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
144688
144693
  ? {
144689
144694
  name: "option",
144690
144695
  fn: vue$1.withCtx((optionProps) => [
144691
- vue$1.createElementVNode("span", _hoisted_22$K, [
144696
+ vue$1.createElementVNode("span", _hoisted_22$L, [
144692
144697
  ($options.optionSwatch(field, optionProps))
144693
144698
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
144694
144699
  key: 0,
@@ -144704,7 +144709,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
144704
144709
  }, null, 8 /* PROPS */, ["name"]))
144705
144710
  : vue$1.createCommentVNode("v-if", true),
144706
144711
  (optionProps.group)
144707
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$H, vue$1.toDisplayString(optionProps.group) + " ·", 1 /* TEXT */))
144712
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$I, vue$1.toDisplayString(optionProps.group) + " ·", 1 /* TEXT */))
144708
144713
  : vue$1.createCommentVNode("v-if", true),
144709
144714
  vue$1.createTextVNode(" " + vue$1.toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
144710
144715
  ])
@@ -145084,7 +145089,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
145084
145089
  key: 0,
145085
145090
  for: 'cn-form-' + field.key,
145086
145091
  class: "cn-form-dialog__label"
145087
- }, vue$1.toDisplayString(field.label) + vue$1.toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_44$5))
145092
+ }, vue$1.toDisplayString(field.label) + vue$1.toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_44$6))
145088
145093
  : vue$1.createCommentVNode("v-if", true),
145089
145094
  vue$1.createVNode(_component_CnIconBrowser, {
145090
145095
  value: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
@@ -145125,7 +145130,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
145125
145130
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
145126
145131
  ], 64 /* STABLE_FRAGMENT */)),
145127
145132
  ($data.assignedFrom[field.key])
145128
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_45$3, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
145133
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_45$4, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
145129
145134
  : vue$1.createCommentVNode("v-if", true)
145130
145135
  ], 64 /* STABLE_FRAGMENT */))
145131
145136
  ], 10 /* CLASS, PROPS */, _hoisted_7$38))
@@ -145148,7 +145153,7 @@ function render$62(_ctx, _cache, $props, $setup, $data, $options) {
145148
145153
  value: $data.formData[field.key],
145149
145154
  formData: $data.formData
145150
145155
  }, null, 8 /* PROPS */, ["field", "value", "formData"]))
145151
- ], 8 /* PROPS */, _hoisted_46$3))
145156
+ ], 8 /* PROPS */, _hoisted_46$4))
145152
145157
  : vue$1.createCommentVNode("v-if", true),
145153
145158
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(($options.isInFoldedSection(field) ? [] : $options.fieldWarnings(field)), (warning, index) => {
145154
145159
  return (vue$1.openBlock(), vue$1.createElementBlock("p", {
@@ -146257,13 +146262,15 @@ var script$61 = {
146257
146262
  * `hideHeader: true` drops the table's column header row (CnDataTable's
146258
146263
  * `hideHeader`), for a short list that reads as rows, not as a table.
146259
146264
  *
146265
+ * `rowIdField` (a dot-path) names the row field holding the id
146266
+ * `rowRoute` opens, for a row that links to another record.
146260
146267
  * `footnote` is a line under the table, through the host translate.
146261
146268
  *
146262
146269
  * `export` (`{ label?, format?, group? }`) offers the filtered list as a
146263
146270
  * download in the card's header; `group` shows it to one group only.
146264
146271
  *
146265
146272
  * @spec openspec/changes/zuiddrecht-pixel-gaps/specs/zuiddrecht-pixel-gaps/spec.md#requirement-small-opt-ins-from-the-decidiq-and-learniq-lanes
146266
- * @type {{register?: string, schema?: string, filter?: object, sort?: {field?: string, dir?: string}, limit?: number, extend?: Array<string>, columns?: Array, rowActions?: Array<object>, dropZone?: object, upload?: boolean, groupBy?: string, groupLabel?: string, groupLabelResolve?: {register: string, schema: string, labelField?: string}, selectable?: boolean, bulkActions?: Array<object>, sortable?: boolean, facet?: {field: string, label?: string}, rowRoute?: string, prompt?: string, emptyText?: string, footnote?: string, viewAllRoute?: string, viewAllQuery?: object, hideHeader?: boolean, export?: {label?: string, format?: ('csv'|'excel'), group?: string}}}
146273
+ * @type {{register?: string, schema?: string, filter?: object, sort?: {field?: string, dir?: string}, limit?: number, extend?: Array<string>, columns?: Array, rowActions?: Array<object>, dropZone?: object, upload?: boolean, groupBy?: string, groupLabel?: string, groupLabelResolve?: {register: string, schema: string, labelField?: string}, selectable?: boolean, bulkActions?: Array<object>, sortable?: boolean, facet?: {field: string, label?: string}, rowRoute?: string, rowIdField?: string, prompt?: string, emptyText?: string, footnote?: string, viewAllRoute?: string, viewAllQuery?: object, hideHeader?: boolean, export?: {label?: string, format?: ('csv'|'excel'), group?: string}}}
146267
146274
  */
146268
146275
  content: {
146269
146276
  type: Object,
@@ -147905,7 +147912,9 @@ var script$61 = {
147905
147912
  */
147906
147913
  openRowRoute(row, event) {
147907
147914
  const route = this.content.rowRoute;
147908
- const id = row && (row.id || (row['@self'] && row['@self'].id));
147915
+ const field = this.content.rowIdField;
147916
+ const raw = field ? readPath$8(row, field) : row && (row.id || (row['@self'] && row['@self'].id));
147917
+ const id = typeof raw === 'string' || typeof raw === 'number' ? String(raw) : '';
147909
147918
  if (route && id && this.$router) {
147910
147919
  markNewTabHandled(event, openRowTarget(event, { name: route, params: { id } }, this.$router));
147911
147920
  }
@@ -148282,21 +148291,21 @@ const _hoisted_18$_ = {
148282
148291
  "data-testid": "cn-object-list-widget-links"
148283
148292
  };
148284
148293
  const _hoisted_19$W = ["href", "onClick"];
148285
- const _hoisted_20$P = {
148294
+ const _hoisted_20$Q = {
148286
148295
  key: 0,
148287
148296
  class: "cn-object-list-widget__link-note",
148288
148297
  "data-testid": "cn-object-list-widget-link-note"
148289
148298
  };
148290
- const _hoisted_21$M = {
148299
+ const _hoisted_21$N = {
148291
148300
  key: 9,
148292
148301
  class: "cn-object-list-widget__hidden-note",
148293
148302
  "data-testid": "cn-object-list-widget-hidden-note"
148294
148303
  };
148295
- const _hoisted_22$J = {
148304
+ const _hoisted_22$K = {
148296
148305
  key: 10,
148297
148306
  class: "cn-object-list-widget__add"
148298
148307
  };
148299
- const _hoisted_23$G = ["aria-label"];
148308
+ const _hoisted_23$H = ["aria-label"];
148300
148309
 
148301
148310
  function render$60(_ctx, _cache, $props, $setup, $data, $options) {
148302
148311
  const _component_Plus = vue$1.resolveComponent("Plus");
@@ -148549,17 +148558,17 @@ function render$60(_ctx, _cache, $props, $setup, $data, $options) {
148549
148558
  onClick: $event => ($options.onFooterLink($event, link))
148550
148559
  }, vue$1.toDisplayString(link.label), 9 /* TEXT, PROPS */, _hoisted_19$W),
148551
148560
  (link.note)
148552
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$P, vue$1.toDisplayString(link.note), 1 /* TEXT */))
148561
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$Q, vue$1.toDisplayString(link.note), 1 /* TEXT */))
148553
148562
  : vue$1.createCommentVNode("v-if", true)
148554
148563
  ]))
148555
148564
  }), 128 /* KEYED_FRAGMENT */))
148556
148565
  ]))
148557
148566
  : vue$1.createCommentVNode("v-if", true),
148558
148567
  ($options.createHiddenNote && !$options.waitingForContext && !$data.error)
148559
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$M, vue$1.toDisplayString($options.createHiddenNote), 1 /* TEXT */))
148568
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$N, vue$1.toDisplayString($options.createHiddenNote), 1 /* TEXT */))
148560
148569
  : vue$1.createCommentVNode("v-if", true),
148561
148570
  ($options.allowCreate && !$options.waitingForContext && !$options.showingEmptyState)
148562
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$J, [
148571
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$K, [
148563
148572
  vue$1.createVNode(_component_NcButton, {
148564
148573
  variant: "tertiary",
148565
148574
  wide: "",
@@ -148594,7 +148603,7 @@ function render$60(_ctx, _cache, $props, $setup, $data, $options) {
148594
148603
  class: "cn-object-list-widget__upload-input",
148595
148604
  "data-testid": "object-list-upload-input",
148596
148605
  onChange: _cache[6] || (_cache[6] = (...args) => ($options.onUploadFilesSelected && $options.onUploadFilesSelected(...args)))
148597
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$G))
148606
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$H))
148598
148607
  : vue$1.createCommentVNode("v-if", true),
148599
148608
  (($data.showCreate || $data.editingRow) && $data.createSchema)
148600
148609
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnFormDialog, {
@@ -148618,7 +148627,7 @@ function render$60(_ctx, _cache, $props, $setup, $data, $options) {
148618
148627
  }
148619
148628
 
148620
148629
  script$61.render = render$60;
148621
- script$61.__scopeId = "data-v-ec0414c2";
148630
+ script$61.__scopeId = "data-v-50a61b52";
148622
148631
  const __sfc_main$5X = script$61;
148623
148632
 
148624
148633
  const DEFAULT_CONTENT$s = Object.freeze({
@@ -153848,14 +153857,14 @@ const _hoisted_17$15 = {
153848
153857
  };
153849
153858
  const _hoisted_18$Z = ["aria-selected", "onClick"];
153850
153859
  const _hoisted_19$V = { class: "cn-related-objects-widget__tab-label" };
153851
- const _hoisted_20$O = { class: "cn-related-objects-widget__count" };
153852
- const _hoisted_21$L = {
153860
+ const _hoisted_20$P = { class: "cn-related-objects-widget__count" };
153861
+ const _hoisted_21$M = {
153853
153862
  key: 2,
153854
153863
  class: "cn-related-objects-widget__panel",
153855
153864
  role: "tabpanel"
153856
153865
  };
153857
- const _hoisted_22$I = { class: "cn-related-objects-widget__list" };
153858
- const _hoisted_23$F = ["href"];
153866
+ const _hoisted_22$J = { class: "cn-related-objects-widget__list" };
153867
+ const _hoisted_23$G = ["href"];
153859
153868
  const _hoisted_24$C = { class: "cn-related-objects-widget__label" };
153860
153869
  const _hoisted_25$x = {
153861
153870
  key: 0,
@@ -153910,12 +153919,12 @@ const _hoisted_40$9 = { class: "cn-related-objects-widget__group-title" };
153910
153919
  const _hoisted_41$7 = { class: "cn-related-objects-widget__count" };
153911
153920
  const _hoisted_42$7 = { class: "cn-related-objects-widget__list" };
153912
153921
  const _hoisted_43$6 = ["onClick", "onKeydown"];
153913
- const _hoisted_44$4 = { class: "cn-related-objects-widget__label" };
153914
- const _hoisted_45$2 = {
153922
+ const _hoisted_44$5 = { class: "cn-related-objects-widget__label" };
153923
+ const _hoisted_45$3 = {
153915
153924
  key: 0,
153916
153925
  class: "cn-related-objects-widget__meta"
153917
153926
  };
153918
- const _hoisted_46$2 = {
153927
+ const _hoisted_46$3 = {
153919
153928
  key: 1,
153920
153929
  class: "cn-related-objects-widget__group"
153921
153930
  };
@@ -154102,14 +154111,14 @@ function render$5W(_ctx, _cache, $props, $setup, $data, $options) {
154102
154111
  class: "cn-related-objects-widget__tab-icon"
154103
154112
  }, null, 8 /* PROPS */, ["name"]),
154104
154113
  vue$1.createElementVNode("span", _hoisted_19$V, vue$1.toDisplayString(group.label), 1 /* TEXT */),
154105
- vue$1.createElementVNode("span", _hoisted_20$O, vue$1.toDisplayString(group.total), 1 /* TEXT */)
154114
+ vue$1.createElementVNode("span", _hoisted_20$P, vue$1.toDisplayString(group.total), 1 /* TEXT */)
154106
154115
  ], 10 /* CLASS, PROPS */, _hoisted_18$Z))
154107
154116
  }), 128 /* KEYED_FRAGMENT */))
154108
154117
  ]))
154109
154118
  : vue$1.createCommentVNode("v-if", true),
154110
154119
  ($props.layout !== 'sections' && $options.activeGroup)
154111
- ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_21$L, [
154112
- vue$1.createElementVNode("ul", _hoisted_22$I, [
154120
+ ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_21$M, [
154121
+ vue$1.createElementVNode("ul", _hoisted_22$J, [
154113
154122
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.activeGroup.items, (item, i) => {
154114
154123
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
154115
154124
  key: `item-${$options.activeGroup.key}-${item.id || i}`
@@ -154131,7 +154140,7 @@ function render$5W(_ctx, _cache, $props, $setup, $data, $options) {
154131
154140
  (item.meta)
154132
154141
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_25$x, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
154133
154142
  : vue$1.createCommentVNode("v-if", true)
154134
- ], 8 /* PROPS */, _hoisted_23$F))
154143
+ ], 8 /* PROPS */, _hoisted_23$G))
154135
154144
  : ($options.isStaticRow($options.activeGroup, item))
154136
154145
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_26$u, [
154137
154146
  vue$1.createVNode(_component_CnIcon, {
@@ -154258,9 +154267,9 @@ function render$5W(_ctx, _cache, $props, $setup, $data, $options) {
154258
154267
  class: "cn-related-objects-widget__icon",
154259
154268
  size: 20
154260
154269
  }),
154261
- vue$1.createElementVNode("span", _hoisted_44$4, vue$1.toDisplayString(item.label), 1 /* TEXT */),
154270
+ vue$1.createElementVNode("span", _hoisted_44$5, vue$1.toDisplayString(item.label), 1 /* TEXT */),
154262
154271
  (item.meta)
154263
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_45$2, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
154272
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_45$3, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
154264
154273
  : vue$1.createCommentVNode("v-if", true)
154265
154274
  ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_43$6))
154266
154275
  }), 128 /* KEYED_FRAGMENT */))
@@ -154268,7 +154277,7 @@ function render$5W(_ctx, _cache, $props, $setup, $data, $options) {
154268
154277
  ]))
154269
154278
  : vue$1.createCommentVNode("v-if", true),
154270
154279
  ($props.showFiles && $data.fileItems.length)
154271
- ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_46$2, [
154280
+ ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_46$3, [
154272
154281
  vue$1.createElementVNode("h4", _hoisted_47$2, [
154273
154282
  vue$1.createTextVNode(vue$1.toDisplayString($props.filesLabel) + " ", 1 /* TEXT */),
154274
154283
  vue$1.createElementVNode("span", _hoisted_48$2, vue$1.toDisplayString($data.fileItems.length), 1 /* TEXT */)
@@ -156664,7 +156673,7 @@ const _hoisted_19$U = {
156664
156673
  key: 0,
156665
156674
  "data-testid": "cn-schema-rules-operand"
156666
156675
  };
156667
- const _hoisted_20$N = { key: 1 };
156676
+ const _hoisted_20$O = { key: 1 };
156668
156677
 
156669
156678
  function render$5Q(_ctx, _cache, $props, $setup, $data, $options) {
156670
156679
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -156741,7 +156750,7 @@ function render$5Q(_ctx, _cache, $props, $setup, $data, $options) {
156741
156750
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_19$U, vue$1.toDisplayString($options.t('nextcloud-vue', 'It read {operand} and found {value}.', { operand: $data.trace.operand, value: $data.trace.operandValue || $options.t('nextcloud-vue', 'nothing') })), 1 /* TEXT */))
156742
156751
  : vue$1.createCommentVNode("v-if", true),
156743
156752
  ($data.trace.message)
156744
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$N, vue$1.toDisplayString($data.trace.message), 1 /* TEXT */))
156753
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$O, vue$1.toDisplayString($data.trace.message), 1 /* TEXT */))
156745
156754
  : vue$1.createCommentVNode("v-if", true)
156746
156755
  ]))
156747
156756
  : vue$1.createCommentVNode("v-if", true)
@@ -158747,11 +158756,11 @@ const _hoisted_16$1c = ["data-testid"];
158747
158756
  const _hoisted_17$13 = ["data-testid"];
158748
158757
  const _hoisted_18$X = { class: "cn-transition-input-fields__label" };
158749
158758
  const _hoisted_19$T = ["data-testid"];
158750
- const _hoisted_20$M = {
158759
+ const _hoisted_20$N = {
158751
158760
  key: 0,
158752
158761
  class: "cn-transition-input-fields__muted"
158753
158762
  };
158754
- const _hoisted_21$K = ["data-testid"];
158763
+ const _hoisted_21$L = ["data-testid"];
158755
158764
 
158756
158765
  function render$5M(_ctx, _cache, $props, $setup, $data, $options) {
158757
158766
  const _component_CnTemplateSelect = vue$1.resolveComponent("CnTemplateSelect");
@@ -158980,7 +158989,7 @@ function render$5M(_ctx, _cache, $props, $setup, $data, $options) {
158980
158989
  "data-testid": `${field.input.preview.testid || `cn-transition-input-preview-${field.key}`}-value`
158981
158990
  }, vue$1.toDisplayString(field.previewText), 9 /* TEXT, PROPS */, _hoisted_19$T),
158982
158991
  (field.input.preview.note)
158983
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$M, vue$1.toDisplayString(field.input.preview.note), 1 /* TEXT */))
158992
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$N, vue$1.toDisplayString(field.input.preview.note), 1 /* TEXT */))
158984
158993
  : vue$1.createCommentVNode("v-if", true)
158985
158994
  ], 8 /* PROPS */, _hoisted_17$13))
158986
158995
  : vue$1.createCommentVNode("v-if", true)
@@ -159004,7 +159013,7 @@ function render$5M(_ctx, _cache, $props, $setup, $data, $options) {
159004
159013
  key: `unoffered-${key}`,
159005
159014
  class: "cn-transition-input__field-error",
159006
159015
  "data-testid": `cn-transition-input-error-${key}`
159007
- }, vue$1.toDisplayString($options.t('nextcloud-vue', 'This action does not accept the field "{field}".', { field: key })), 9 /* TEXT, PROPS */, _hoisted_21$K))
159016
+ }, vue$1.toDisplayString($options.t('nextcloud-vue', 'This action does not accept the field "{field}".', { field: key })), 9 /* TEXT, PROPS */, _hoisted_21$L))
159008
159017
  }), 128 /* KEYED_FRAGMENT */))
159009
159018
  ], 2 /* CLASS */))
159010
159019
  }
@@ -170518,7 +170527,7 @@ const _hoisted_18$W = {
170518
170527
  class: "cn-object-data-widget__deflist cn-object-data-widget__deflist--nested"
170519
170528
  };
170520
170529
  const _hoisted_19$S = { class: "cn-object-data-widget__deflist-text" };
170521
- const _hoisted_20$L = {
170530
+ const _hoisted_20$M = {
170522
170531
  key: 1,
170523
170532
  class: "cn-object-data-widget__deflist-text"
170524
170533
  };
@@ -170925,7 +170934,7 @@ function render$5x(_ctx, _cache, $props, $setup, $data, $options) {
170925
170934
  ], 64 /* STABLE_FRAGMENT */))
170926
170935
  }), 128 /* KEYED_FRAGMENT */))
170927
170936
  ]))
170928
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$L, vue$1.toDisplayString($options.stringifyNested(pair[1])), 1 /* TEXT */))
170937
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$M, vue$1.toDisplayString($options.stringifyNested(pair[1])), 1 /* TEXT */))
170929
170938
  ])
170930
170939
  ], 64 /* STABLE_FRAGMENT */))
170931
170940
  }), 128 /* KEYED_FRAGMENT */))
@@ -179031,21 +179040,21 @@ const _hoisted_18$V = {
179031
179040
  "data-testid": "cn-timeline-followup-open"
179032
179041
  };
179033
179042
  const _hoisted_19$R = { class: "cn-timeline-manage__message" };
179034
- const _hoisted_20$K = {
179043
+ const _hoisted_20$L = {
179035
179044
  key: 0,
179036
179045
  class: "cn-timeline-manage__siblings",
179037
179046
  "data-testid": "cn-timeline-siblings"
179038
179047
  };
179039
- const _hoisted_21$J = {
179048
+ const _hoisted_21$K = {
179040
179049
  key: 1,
179041
179050
  class: "cn-timeline-manage__actions"
179042
179051
  };
179043
- const _hoisted_22$H = {
179052
+ const _hoisted_22$I = {
179044
179053
  key: 4,
179045
179054
  class: "cn-timeline-manage__count",
179046
179055
  "data-testid": "cn-timeline-count"
179047
179056
  };
179048
- const _hoisted_23$E = { class: "cn-timeline-manage__composer-title" };
179057
+ const _hoisted_23$F = { class: "cn-timeline-manage__composer-title" };
179049
179058
  const _hoisted_24$B = { class: "cn-timeline-manage__composer-hint" };
179050
179059
  const _hoisted_25$w = ["for"];
179051
179060
  const _hoisted_26$t = ["id", "placeholder"];
@@ -179179,10 +179188,10 @@ function render$5g(_ctx, _cache, $props, $setup, $data, $options) {
179179
179188
  ]),
179180
179189
  vue$1.createElementVNode("p", _hoisted_19$R, vue$1.toDisplayString(entry.message), 1 /* TEXT */),
179181
179190
  (entry.siblings && entry.siblings.length)
179182
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$K, vue$1.toDisplayString($options.n('nextcloud-vue', 'Also written on %n other record', 'Also written on %n other records', entry.siblings.length)), 1 /* TEXT */))
179191
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$L, vue$1.toDisplayString($options.n('nextcloud-vue', 'Also written on %n other record', 'Also written on %n other records', entry.siblings.length)), 1 /* TEXT */))
179183
179192
  : vue$1.createCommentVNode("v-if", true),
179184
179193
  ($data.canManage)
179185
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$J, [
179194
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$K, [
179186
179195
  vue$1.createVNode(_component_NcButton, {
179187
179196
  variant: "tertiary",
179188
179197
  "data-testid": 'cn-timeline-pin-' + entry.id,
@@ -179225,7 +179234,7 @@ function render$5g(_ctx, _cache, $props, $setup, $data, $options) {
179225
179234
  }), 128 /* KEYED_FRAGMENT */))
179226
179235
  ])),
179227
179236
  (!$data.loading && !$data.error && $data.allEntries.length > 0)
179228
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$H, vue$1.toDisplayString($options.t('nextcloud-vue', '{shown} of {total} events', { shown: $data.entries.length, total: $data.allEntries.length })), 1 /* TEXT */))
179237
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$I, vue$1.toDisplayString($options.t('nextcloud-vue', '{shown} of {total} events', { shown: $data.entries.length, total: $data.allEntries.length })), 1 /* TEXT */))
179229
179238
  : vue$1.createCommentVNode("v-if", true),
179230
179239
  ($data.canManage && $options.composerEnabled)
179231
179240
  ? (vue$1.openBlock(), vue$1.createElementBlock("form", {
@@ -179235,7 +179244,7 @@ function render$5g(_ctx, _cache, $props, $setup, $data, $options) {
179235
179244
  "data-testid": "cn-timeline-composer",
179236
179245
  onSubmit: _cache[4] || (_cache[4] = vue$1.withModifiers((...args) => ($options.submit && $options.submit(...args)), ["prevent"]))
179237
179246
  }, [
179238
- vue$1.createElementVNode("h3", _hoisted_23$E, vue$1.toDisplayString($options.t('nextcloud-vue', 'Add a note')), 1 /* TEXT */),
179247
+ vue$1.createElementVNode("h3", _hoisted_23$F, vue$1.toDisplayString($options.t('nextcloud-vue', 'Add a note')), 1 /* TEXT */),
179239
179248
  vue$1.createElementVNode("p", _hoisted_24$B, vue$1.toDisplayString($options.t('nextcloud-vue', 'Goes on the timeline above, internal unless you make it visible')), 1 /* TEXT */),
179240
179249
  ($data.textBlocks.length)
179241
179250
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
@@ -180784,8 +180793,8 @@ const _hoisted_19$Q = {
180784
180793
  key: 0,
180785
180794
  class: "cn-object-card__badges"
180786
180795
  };
180787
- const _hoisted_20$J = { class: "cn-object-card__meta-label" };
180788
- const _hoisted_21$I = {
180796
+ const _hoisted_20$K = { class: "cn-object-card__meta-label" };
180797
+ const _hoisted_21$J = {
180789
180798
  key: 0,
180790
180799
  class: "cn-object-card__footer-meta"
180791
180800
  };
@@ -181052,7 +181061,7 @@ function render$5e(_ctx, _cache, $props, $setup, $data, $options) {
181052
181061
  key: field.key,
181053
181062
  class: "cn-object-card__meta-item"
181054
181063
  }, [
181055
- vue$1.createElementVNode("span", _hoisted_20$J, vue$1.toDisplayString(field.label), 1 /* TEXT */),
181064
+ vue$1.createElementVNode("span", _hoisted_20$K, vue$1.toDisplayString(field.label), 1 /* TEXT */),
181056
181065
  vue$1.createVNode(_component_CnCellRenderer, {
181057
181066
  value: field.value,
181058
181067
  property: field.property,
@@ -181077,7 +181086,7 @@ function render$5e(_ctx, _cache, $props, $setup, $data, $options) {
181077
181086
  onAuxclick: _cache[9] || (_cache[9] = vue$1.withModifiers(() => {}, ["stop"]))
181078
181087
  }, [
181079
181088
  ($props.footerAction.meta)
181080
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$I, vue$1.toDisplayString($props.footerAction.meta), 1 /* TEXT */))
181089
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$J, vue$1.toDisplayString($props.footerAction.meta), 1 /* TEXT */))
181081
181090
  : vue$1.createCommentVNode("v-if", true),
181082
181091
  vue$1.createVNode(_component_NcButton, {
181083
181092
  variant: "secondary",
@@ -184082,20 +184091,20 @@ const _hoisted_18$T = {
184082
184091
  "data-testid": "cn-form-page-suggested"
184083
184092
  };
184084
184093
  const _hoisted_19$P = { class: "cn-form-page__suggested-tag" };
184085
- const _hoisted_20$I = ["id"];
184086
- const _hoisted_21$H = {
184094
+ const _hoisted_20$J = ["id"];
184095
+ const _hoisted_21$I = {
184087
184096
  key: 4,
184088
184097
  class: "cn-form-page__field-assigned",
184089
184098
  "aria-live": "polite",
184090
184099
  "data-testid": "cn-form-page-assigned"
184091
184100
  };
184092
- const _hoisted_22$G = {
184101
+ const _hoisted_22$H = {
184093
184102
  key: 5,
184094
184103
  class: "cn-form-page__field-calculating",
184095
184104
  role: "status",
184096
184105
  "data-testid": "cn-form-page-calculating"
184097
184106
  };
184098
- const _hoisted_23$D = {
184107
+ const _hoisted_23$E = {
184099
184108
  key: 6,
184100
184109
  class: "cn-form-page__field-error",
184101
184110
  role: "alert",
@@ -184361,16 +184370,16 @@ function render$56(_ctx, _cache, $props, $setup, $data, $options) {
184361
184370
  key: 3,
184362
184371
  id: $options.helpIdFor(field),
184363
184372
  class: "cn-form-page__field-help"
184364
- }, vue$1.toDisplayString($options.resolveLabel(field.help)), 9 /* TEXT, PROPS */, _hoisted_20$I))
184373
+ }, vue$1.toDisplayString($options.resolveLabel(field.help)), 9 /* TEXT, PROPS */, _hoisted_20$J))
184365
184374
  : vue$1.createCommentVNode("v-if", true),
184366
184375
  ($data.assignedFrom[field.key])
184367
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_21$H, vue$1.toDisplayString($options.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
184376
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_21$I, vue$1.toDisplayString($options.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
184368
184377
  : vue$1.createCommentVNode("v-if", true),
184369
184378
  ($data.calculating[field.key])
184370
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_22$G, vue$1.toDisplayString($options.t('nextcloud-vue', 'Calculating')), 1 /* TEXT */))
184379
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_22$H, vue$1.toDisplayString($options.t('nextcloud-vue', 'Calculating')), 1 /* TEXT */))
184371
184380
  : vue$1.createCommentVNode("v-if", true),
184372
184381
  ($data.calcErrors[field.key])
184373
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_23$D, vue$1.toDisplayString($data.calcErrors[field.key]), 1 /* TEXT */))
184382
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_23$E, vue$1.toDisplayString($data.calcErrors[field.key]), 1 /* TEXT */))
184374
184383
  : vue$1.createCommentVNode("v-if", true)
184375
184384
  ], 10 /* CLASS, PROPS */, _hoisted_16$18))
184376
184385
  }), 128 /* KEYED_FRAGMENT */)),
@@ -185309,6 +185318,19 @@ var script$54 = {
185309
185318
  default: '',
185310
185319
  },
185311
185320
 
185321
+ /**
185322
+ * The row field (a dot-path) holding the id `rowRoute` opens, for a row
185323
+ * that links to another record (a payment row opening its case:
185324
+ * `rowIdField: "case"`). Empty (the default) uses the row's own id; a
185325
+ * row whose field is empty does not link.
185326
+ *
185327
+ * @spec openspec/changes/object-table-row-id-field/specs/object-table/spec.md#requirement-a-row-can-link-to-the-record-a-field-names
185328
+ */
185329
+ rowIdField: {
185330
+ type: String,
185331
+ default: '',
185332
+ },
185333
+
185312
185334
  /**
185313
185335
  * Client-side row cap, forwarded to CnDataTable (`0` = all rows).
185314
185336
  * This is what makes `viewAllRoute` reachable for `endpointSource`
@@ -185694,7 +185716,7 @@ var script$54 = {
185694
185716
  * @return {object}
185695
185717
  */
185696
185718
  innerProps() {
185697
- const { title, documentationUrl, widgetId, hideWrapper, source, endpointSource, actions, rowRoute, rowClass, schema, exportCsv, exportFileName, ...rest } = this.$props;
185719
+ const { title, documentationUrl, widgetId, hideWrapper, source, endpointSource, actions, rowRoute, rowIdField, rowClass, schema, exportCsv, exportFileName, ...rest } = this.$props;
185698
185720
  const inner = {};
185699
185721
  for (const [k, v] of Object.entries(rest)) {
185700
185722
  if (v !== undefined) {
@@ -185757,8 +185779,10 @@ var script$54 = {
185757
185779
  */
185758
185780
  rowRouteFn() {
185759
185781
  return (row) => {
185760
- const id = row && (row.id || (row['@self'] && row['@self'].id));
185761
- return id ? { name: this.rowRoute, params: { id: String(id) } } : null
185782
+ const id = this.rowIdField
185783
+ ? readPath$8(row, this.rowIdField)
185784
+ : row && (row.id || (row['@self'] && row['@self'].id));
185785
+ return id !== null && id !== undefined && id !== '' && typeof id !== 'object' ? { name: this.rowRoute, params: { id: String(id) } } : null
185762
185786
  }
185763
185787
  },
185764
185788
 
@@ -186243,7 +186267,7 @@ function render$53(_ctx, _cache, $props, $setup, $data, $options) {
186243
186267
  }
186244
186268
 
186245
186269
  script$54.render = render$53;
186246
- script$54.__scopeId = "data-v-629f0a9a";
186270
+ script$54.__scopeId = "data-v-f7b516a8";
186247
186271
  const __sfc_main$4_ = script$54;
186248
186272
 
186249
186273
  /**
@@ -192787,13 +192811,13 @@ const _hoisted_17$_ = {
192787
192811
  };
192788
192812
  const _hoisted_18$S = { key: 1 };
192789
192813
  const _hoisted_19$O = { key: 2 };
192790
- const _hoisted_20$H = ["data-testid"];
192791
- const _hoisted_21$G = {
192814
+ const _hoisted_20$I = ["data-testid"];
192815
+ const _hoisted_21$H = {
192792
192816
  key: 0,
192793
192817
  class: "cn-work-queue__muted"
192794
192818
  };
192795
- const _hoisted_22$F = ["href"];
192796
- const _hoisted_23$C = {
192819
+ const _hoisted_22$G = ["href"];
192820
+ const _hoisted_23$D = {
192797
192821
  key: 4,
192798
192822
  class: "cn-work-queue__group",
192799
192823
  "data-testid": "cn-work-queue-hidden"
@@ -192915,13 +192939,13 @@ function render$4W(_ctx, _cache, $props, $setup, $data, $options) {
192915
192939
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
192916
192940
  key: 3,
192917
192941
  "data-testid": `cn-work-queue-waiting-${item.id}`
192918
- }, vue$1.toDisplayString($options.waitingText(item)), 9 /* TEXT, PROPS */, _hoisted_20$H))
192942
+ }, vue$1.toDisplayString($options.waitingText(item)), 9 /* TEXT, PROPS */, _hoisted_20$I))
192919
192943
  : vue$1.createCommentVNode("v-if", true)
192920
192944
  ]))
192921
192945
  : vue$1.createCommentVNode("v-if", true)
192922
192946
  ]),
192923
192947
  ($options.dueOf(item))
192924
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$G, vue$1.toDisplayString($options.dueOf(item)), 1 /* TEXT */))
192948
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$H, vue$1.toDisplayString($options.dueOf(item)), 1 /* TEXT */))
192925
192949
  : vue$1.createCommentVNode("v-if", true)
192926
192950
  ], 10 /* CLASS, PROPS */, _hoisted_12$1B))
192927
192951
  }), 128 /* KEYED_FRAGMENT */))
@@ -192935,11 +192959,11 @@ function render$4W(_ctx, _cache, $props, $setup, $data, $options) {
192935
192959
  class: "cn-work-queue__view-all",
192936
192960
  "data-testid": "cn-work-queue-view-all",
192937
192961
  onClick: _cache[0] || (_cache[0] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
192938
- }, vue$1.toDisplayString($options.viewAllText), 9 /* TEXT, PROPS */, _hoisted_22$F))
192962
+ }, vue$1.toDisplayString($options.viewAllText), 9 /* TEXT, PROPS */, _hoisted_22$G))
192939
192963
  : vue$1.createCommentVNode("v-if", true)
192940
192964
  ], 64 /* STABLE_FRAGMENT */)),
192941
192965
  ($props.content.hide && $data.hidden.length)
192942
- ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_23$C, [
192966
+ ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_23$D, [
192943
192967
  vue$1.createElementVNode("h3", _hoisted_24$z, vue$1.toDisplayString($options.t('nextcloud-vue', 'Hidden until tomorrow')), 1 /* TEXT */),
192944
192968
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.hidden, (key) => {
192945
192969
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
@@ -194992,18 +195016,18 @@ const _hoisted_16$16 = {
194992
195016
  const _hoisted_17$Z = { class: "vc-chrome-fields" };
194993
195017
  const _hoisted_18$R = { class: "vc-chrome-field" };
194994
195018
  const _hoisted_19$N = { class: "vc-chrome-field" };
194995
- const _hoisted_20$G = { class: "vc-chrome-field" };
194996
- const _hoisted_21$F = {
195019
+ const _hoisted_20$H = { class: "vc-chrome-field" };
195020
+ const _hoisted_21$G = {
194997
195021
  key: 0,
194998
195022
  class: "vc-chrome-field"
194999
195023
  };
195000
- const _hoisted_22$E = { class: "vc-chrome-toggle-icon" };
195001
- const _hoisted_23$B = /*#__PURE__*/vue$1.createElementVNode("path", {
195024
+ const _hoisted_22$F = { class: "vc-chrome-toggle-icon" };
195025
+ const _hoisted_23$C = /*#__PURE__*/vue$1.createElementVNode("path", {
195002
195026
  fill: "#333",
195003
195027
  d: "M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"
195004
195028
  }, null, -1 /* HOISTED */);
195005
195029
  const _hoisted_24$y = [
195006
- _hoisted_23$B
195030
+ _hoisted_23$C
195007
195031
  ];
195008
195032
  const _hoisted_25$u = { class: "vc-chrome-toggle-icon-highlight" };
195009
195033
 
@@ -195132,7 +195156,7 @@ function render$4Q(_ctx, _cache, $props, $setup, $data, $options) {
195132
195156
  onChange: $options.inputChange
195133
195157
  }, null, 8 /* PROPS */, ["value", "onChange"])
195134
195158
  ]),
195135
- vue$1.createElementVNode("div", _hoisted_20$G, [
195159
+ vue$1.createElementVNode("div", _hoisted_20$H, [
195136
195160
  vue$1.createVNode(_component_EdIn, {
195137
195161
  label: "l",
195138
195162
  value: $options.hsl.l,
@@ -195140,7 +195164,7 @@ function render$4Q(_ctx, _cache, $props, $setup, $data, $options) {
195140
195164
  }, null, 8 /* PROPS */, ["value", "onChange"])
195141
195165
  ]),
195142
195166
  (!$props.disableAlpha)
195143
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$F, [
195167
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$G, [
195144
195168
  vue$1.createVNode(_component_EdIn, {
195145
195169
  label: "a",
195146
195170
  value: _ctx.colors.a,
@@ -195160,7 +195184,7 @@ function render$4Q(_ctx, _cache, $props, $setup, $data, $options) {
195160
195184
  "aria-label": "Change another color definition",
195161
195185
  onClick: _cache[3] || (_cache[3] = (...args) => ($options.toggleViews && $options.toggleViews(...args)))
195162
195186
  }, [
195163
- vue$1.createElementVNode("div", _hoisted_22$E, [
195187
+ vue$1.createElementVNode("div", _hoisted_22$F, [
195164
195188
  (vue$1.openBlock(), vue$1.createElementBlock("svg", {
195165
195189
  style: {"width":"24px","height":"24px"},
195166
195190
  viewBox: "0 0 24 24",
@@ -203395,10 +203419,10 @@ const _hoisted_16$14 = ["onClick"];
203395
203419
  const _hoisted_17$X = { class: "cn-links-form__options" };
203396
203420
  const _hoisted_18$P = { class: "cn-links-form__option" };
203397
203421
  const _hoisted_19$M = ["value"];
203398
- const _hoisted_20$F = { class: "cn-links-form__option" };
203399
- const _hoisted_21$E = ["value"];
203400
- const _hoisted_22$D = { value: "card" };
203401
- const _hoisted_23$A = { value: "inline" };
203422
+ const _hoisted_20$G = { class: "cn-links-form__option" };
203423
+ const _hoisted_21$F = ["value"];
203424
+ const _hoisted_22$E = { value: "card" };
203425
+ const _hoisted_23$B = { value: "inline" };
203402
203426
  const _hoisted_24$x = { value: "icon-only" };
203403
203427
  const _hoisted_25$t = { class: "cn-links-form__option" };
203404
203428
  const _hoisted_26$r = ["value"];
@@ -203541,17 +203565,17 @@ function render$4x(_ctx, _cache, $props, $setup, $data, $options) {
203541
203565
  onInput: _cache[1] || (_cache[1] = $event => ($options.updateOption('columns', $options.clampColumns($event.target.value))))
203542
203566
  }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_19$M)
203543
203567
  ]),
203544
- vue$1.createElementVNode("label", _hoisted_20$F, [
203568
+ vue$1.createElementVNode("label", _hoisted_20$G, [
203545
203569
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Layout')), 1 /* TEXT */),
203546
203570
  vue$1.createElementVNode("select", {
203547
203571
  value: $data.linkLayout,
203548
203572
  class: "cn-links-form__input",
203549
203573
  onChange: _cache[2] || (_cache[2] = $event => ($options.updateOption('linkLayout', $event.target.value)))
203550
203574
  }, [
203551
- vue$1.createElementVNode("option", _hoisted_22$D, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Card')), 1 /* TEXT */),
203552
- vue$1.createElementVNode("option", _hoisted_23$A, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Inline')), 1 /* TEXT */),
203575
+ vue$1.createElementVNode("option", _hoisted_22$E, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Card')), 1 /* TEXT */),
203576
+ vue$1.createElementVNode("option", _hoisted_23$B, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Inline')), 1 /* TEXT */),
203553
203577
  vue$1.createElementVNode("option", _hoisted_24$x, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Icon only')), 1 /* TEXT */)
203554
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$E)
203578
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$F)
203555
203579
  ]),
203556
203580
  vue$1.createElementVNode("label", _hoisted_25$t, [
203557
203581
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Icon size')), 1 /* TEXT */),
@@ -208091,7 +208115,7 @@ const _hoisted_16$12 = { class: "cn-files-widget__row-label" };
208091
208115
  const _hoisted_17$V = { class: "cn-files-widget__row-modified" };
208092
208116
  const _hoisted_18$O = { class: "cn-files-widget__row-size" };
208093
208117
  const _hoisted_19$L = ["aria-label", "onClick"];
208094
- const _hoisted_20$E = {
208118
+ const _hoisted_20$F = {
208095
208119
  key: 9,
208096
208120
  class: "cn-files-widget__pagination"
208097
208121
  };
@@ -208238,7 +208262,7 @@ function render$4l(_ctx, _cache, $props, $setup, $data, $options) {
208238
208262
  }), 128 /* KEYED_FRAGMENT */))
208239
208263
  ], 2 /* CLASS */)),
208240
208264
  ($data.nextCursor)
208241
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$E, [
208265
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$F, [
208242
208266
  vue$1.createElementVNode("button", {
208243
208267
  type: "button",
208244
208268
  class: "cn-files-widget__more",
@@ -209273,13 +209297,13 @@ const _hoisted_17$U = {
209273
209297
  };
209274
209298
  const _hoisted_18$N = { class: "cn-calendar-widget__week-day" };
209275
209299
  const _hoisted_19$K = { class: "cn-calendar-widget__week-name" };
209276
- const _hoisted_20$D = { class: "cn-calendar-widget__week-num" };
209277
- const _hoisted_21$D = {
209300
+ const _hoisted_20$E = { class: "cn-calendar-widget__week-num" };
209301
+ const _hoisted_21$E = {
209278
209302
  key: 0,
209279
209303
  class: "cn-calendar-widget__week-events"
209280
209304
  };
209281
- const _hoisted_22$C = { class: "cn-calendar-widget__week-time" };
209282
- const _hoisted_23$z = { class: "cn-calendar-widget__week-title" };
209305
+ const _hoisted_22$D = { class: "cn-calendar-widget__week-time" };
209306
+ const _hoisted_23$A = { class: "cn-calendar-widget__week-title" };
209283
209307
  const _hoisted_24$w = {
209284
209308
  key: 1,
209285
209309
  class: "cn-calendar-widget__week-empty"
@@ -209376,18 +209400,18 @@ function render$4j(_ctx, _cache, $props, $setup, $data, $options) {
209376
209400
  }, [
209377
209401
  vue$1.createElementVNode("header", _hoisted_18$N, [
209378
209402
  vue$1.createElementVNode("span", _hoisted_19$K, vue$1.toDisplayString(day.weekday), 1 /* TEXT */),
209379
- vue$1.createElementVNode("span", _hoisted_20$D, vue$1.toDisplayString(day.dayNum), 1 /* TEXT */)
209403
+ vue$1.createElementVNode("span", _hoisted_20$E, vue$1.toDisplayString(day.dayNum), 1 /* TEXT */)
209380
209404
  ]),
209381
209405
  (day.events.length)
209382
- ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$D, [
209406
+ ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$E, [
209383
209407
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(day.events, (event) => {
209384
209408
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
209385
209409
  key: event.uid + '-' + event.start,
209386
209410
  class: "cn-calendar-widget__week-event",
209387
209411
  style: vue$1.normalizeStyle($options.eventStyle(event))
209388
209412
  }, [
209389
- vue$1.createElementVNode("span", _hoisted_22$C, vue$1.toDisplayString($options.formatTime(event)), 1 /* TEXT */),
209390
- vue$1.createElementVNode("span", _hoisted_23$z, vue$1.toDisplayString(event.title), 1 /* TEXT */)
209413
+ vue$1.createElementVNode("span", _hoisted_22$D, vue$1.toDisplayString($options.formatTime(event)), 1 /* TEXT */),
209414
+ vue$1.createElementVNode("span", _hoisted_23$A, vue$1.toDisplayString(event.title), 1 /* TEXT */)
209391
209415
  ], 4 /* STYLE */))
209392
209416
  }), 128 /* KEYED_FRAGMENT */))
209393
209417
  ]))
@@ -210439,13 +210463,13 @@ const _hoisted_18$M = {
210439
210463
  class: "cn-spend-analytics-widget__panel"
210440
210464
  };
210441
210465
  const _hoisted_19$J = { class: "cn-spend-analytics-widget__panel-title" };
210442
- const _hoisted_20$C = { class: "cn-spend-analytics-widget__rows" };
210443
- const _hoisted_21$C = {
210466
+ const _hoisted_20$D = { class: "cn-spend-analytics-widget__rows" };
210467
+ const _hoisted_21$D = {
210444
210468
  key: 1,
210445
210469
  class: "cn-spend-analytics-widget__panel"
210446
210470
  };
210447
- const _hoisted_22$B = { class: "cn-spend-analytics-widget__panel-title" };
210448
- const _hoisted_23$y = { class: "cn-spend-analytics-widget__rows" };
210471
+ const _hoisted_22$C = { class: "cn-spend-analytics-widget__panel-title" };
210472
+ const _hoisted_23$z = { class: "cn-spend-analytics-widget__rows" };
210449
210473
  const _hoisted_24$v = ["href"];
210450
210474
  const _hoisted_25$r = {
210451
210475
  key: 1,
@@ -210531,7 +210555,7 @@ function render$4h(_ctx, _cache, $props, $setup, $data, $options) {
210531
210555
  ($options.viewMode === 'trend')
210532
210556
  ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_18$M, [
210533
210557
  vue$1.createElementVNode("h3", _hoisted_19$J, vue$1.toDisplayString($options.t('nextcloud-vue', 'Spend trend')), 1 /* TEXT */),
210534
- vue$1.createElementVNode("ul", _hoisted_20$C, [
210558
+ vue$1.createElementVNode("ul", _hoisted_20$D, [
210535
210559
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.finance.trend, (row) => {
210536
210560
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
210537
210561
  key: row.month,
@@ -210544,9 +210568,9 @@ function render$4h(_ctx, _cache, $props, $setup, $data, $options) {
210544
210568
  ])
210545
210569
  ]))
210546
210570
  : ($options.viewMode === 'top-categories')
210547
- ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_21$C, [
210548
- vue$1.createElementVNode("h3", _hoisted_22$B, vue$1.toDisplayString($options.t('nextcloud-vue', 'Top categories')), 1 /* TEXT */),
210549
- vue$1.createElementVNode("ul", _hoisted_23$y, [
210571
+ ? (vue$1.openBlock(), vue$1.createElementBlock("section", _hoisted_21$D, [
210572
+ vue$1.createElementVNode("h3", _hoisted_22$C, vue$1.toDisplayString($options.t('nextcloud-vue', 'Top categories')), 1 /* TEXT */),
210573
+ vue$1.createElementVNode("ul", _hoisted_23$z, [
210550
210574
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.finance.byCategory, (row, i) => {
210551
210575
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
210552
210576
  key: row.category
@@ -211370,10 +211394,10 @@ const _hoisted_16$Z = { class: "cn-stat-widget-form__hint" };
211370
211394
  const _hoisted_17$S = { class: "cn-stat-widget-form__row2" };
211371
211395
  const _hoisted_18$L = { class: "cn-stat-widget-form__color-label" };
211372
211396
  const _hoisted_19$I = { class: "cn-stat-widget-form__color-label" };
211373
- const _hoisted_20$B = { class: "cn-stat-widget-form__section" };
211374
- const _hoisted_21$B = { class: "cn-stat-widget-form__hint" };
211375
- const _hoisted_22$A = { class: "cn-stat-widget-form__section" };
211376
- const _hoisted_23$x = { class: "cn-stat-widget-form__row2" };
211397
+ const _hoisted_20$C = { class: "cn-stat-widget-form__section" };
211398
+ const _hoisted_21$C = { class: "cn-stat-widget-form__hint" };
211399
+ const _hoisted_22$B = { class: "cn-stat-widget-form__section" };
211400
+ const _hoisted_23$y = { class: "cn-stat-widget-form__row2" };
211377
211401
 
211378
211402
  function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
211379
211403
  const _component_NcSelect = vue$1.resolveComponent("NcSelect");
@@ -211665,8 +211689,8 @@ function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
211665
211689
  }, null, 8 /* PROPS */, ["value"])
211666
211690
  ])
211667
211691
  ]),
211668
- vue$1.createElementVNode("h4", _hoisted_20$B, vue$1.toDisplayString($options.t('nextcloud-vue', 'Special states')), 1 /* TEXT */),
211669
- vue$1.createElementVNode("p", _hoisted_21$B, vue$1.toDisplayString($options.t('nextcloud-vue', 'When the record matches, the tile shows this label and colour instead. The first match wins.')), 1 /* TEXT */),
211692
+ vue$1.createElementVNode("h4", _hoisted_20$C, vue$1.toDisplayString($options.t('nextcloud-vue', 'Special states')), 1 /* TEXT */),
211693
+ vue$1.createElementVNode("p", _hoisted_21$C, vue$1.toDisplayString($options.t('nextcloud-vue', 'When the record matches, the tile shows this label and colour instead. The first match wins.')), 1 /* TEXT */),
211670
211694
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.shownOverrideRows, ({ row, i }) => {
211671
211695
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
211672
211696
  key: 'override-' + i,
@@ -211752,8 +211776,8 @@ function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
211752
211776
  ]),
211753
211777
  _: 1 /* STABLE */
211754
211778
  }),
211755
- vue$1.createElementVNode("h4", _hoisted_22$A, vue$1.toDisplayString($options.t('nextcloud-vue', 'Format')), 1 /* TEXT */),
211756
- vue$1.createElementVNode("div", _hoisted_23$x, [
211779
+ vue$1.createElementVNode("h4", _hoisted_22$B, vue$1.toDisplayString($options.t('nextcloud-vue', 'Format')), 1 /* TEXT */),
211780
+ vue$1.createElementVNode("div", _hoisted_23$y, [
211757
211781
  vue$1.createVNode(_component_NcSelect, {
211758
211782
  modelValue: $data.format.style,
211759
211783
  options: $options.styleOptions,
@@ -214330,10 +214354,10 @@ const _hoisted_17$R = {
214330
214354
  };
214331
214355
  const _hoisted_18$K = ["data-status"];
214332
214356
  const _hoisted_19$H = ["title"];
214333
- const _hoisted_20$A = { class: "cn-flow-runs-widget__body" };
214334
- const _hoisted_21$A = { class: "cn-flow-runs-widget__name" };
214335
- const _hoisted_22$z = { class: "cn-flow-runs-widget__meta" };
214336
- const _hoisted_23$w = { class: "cn-flow-runs-widget__age" };
214357
+ const _hoisted_20$B = { class: "cn-flow-runs-widget__body" };
214358
+ const _hoisted_21$B = { class: "cn-flow-runs-widget__name" };
214359
+ const _hoisted_22$A = { class: "cn-flow-runs-widget__meta" };
214360
+ const _hoisted_23$x = { class: "cn-flow-runs-widget__age" };
214337
214361
  const _hoisted_24$u = {
214338
214362
  key: 2,
214339
214363
  class: "cn-flow-runs-widget__more"
@@ -214409,11 +214433,11 @@ function render$4a(_ctx, _cache, $props, $setup, $data, $options) {
214409
214433
  class: vue$1.normalizeClass(["cn-flow-runs-widget__dot cn-flow-runs-widget__dot--terminal", `cn-flow-runs-widget__dot--${run.status}`]),
214410
214434
  title: $options.statusLabel(run.status)
214411
214435
  }, null, 10 /* CLASS, PROPS */, _hoisted_19$H),
214412
- vue$1.createElementVNode("span", _hoisted_20$A, [
214413
- vue$1.createElementVNode("span", _hoisted_21$A, vue$1.toDisplayString(run.flowName), 1 /* TEXT */),
214414
- vue$1.createElementVNode("span", _hoisted_22$z, vue$1.toDisplayString($options.metaLine(run)), 1 /* TEXT */)
214436
+ vue$1.createElementVNode("span", _hoisted_20$B, [
214437
+ vue$1.createElementVNode("span", _hoisted_21$B, vue$1.toDisplayString(run.flowName), 1 /* TEXT */),
214438
+ vue$1.createElementVNode("span", _hoisted_22$A, vue$1.toDisplayString($options.metaLine(run)), 1 /* TEXT */)
214415
214439
  ]),
214416
- vue$1.createElementVNode("span", _hoisted_23$w, vue$1.toDisplayString($options.ageLabel(run)), 1 /* TEXT */)
214440
+ vue$1.createElementVNode("span", _hoisted_23$x, vue$1.toDisplayString($options.ageLabel(run)), 1 /* TEXT */)
214417
214441
  ]),
214418
214442
  _: 2 /* DYNAMIC */
214419
214443
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["href", "onClick"]))
@@ -216719,18 +216743,18 @@ const _hoisted_19$G = {
216719
216743
  key: 1,
216720
216744
  class: "cn-tasks-widget__meta"
216721
216745
  };
216722
- const _hoisted_20$z = { class: "cn-tasks-widget__cell-actions" };
216723
- const _hoisted_21$z = {
216746
+ const _hoisted_20$A = { class: "cn-tasks-widget__cell-actions" };
216747
+ const _hoisted_21$A = {
216724
216748
  key: 1,
216725
216749
  class: "cn-tasks-widget__empty",
216726
216750
  "data-testid": "cn-tasks-widget-empty"
216727
216751
  };
216728
- const _hoisted_22$y = {
216752
+ const _hoisted_22$z = {
216729
216753
  key: 2,
216730
216754
  class: "cn-tasks-widget__others",
216731
216755
  "data-testid": "cn-tasks-widget-others"
216732
216756
  };
216733
- const _hoisted_23$v = { class: "cn-tasks-widget__others-title" };
216757
+ const _hoisted_23$w = { class: "cn-tasks-widget__others-title" };
216734
216758
  const _hoisted_24$t = { class: "cn-tasks-widget__others-list" };
216735
216759
  const _hoisted_25$q = ["data-testid"];
216736
216760
  const _hoisted_26$o = { class: "cn-tasks-widget__body" };
@@ -216904,7 +216928,7 @@ function render$45(_ctx, _cache, $props, $setup, $data, $options) {
216904
216928
  variant: task.isTerminal === true ? 'default' : 'info'
216905
216929
  }, null, 8 /* PROPS */, ["label", "variant"])
216906
216930
  ]),
216907
- vue$1.createElementVNode("td", _hoisted_20$z, [
216931
+ vue$1.createElementVNode("td", _hoisted_20$A, [
216908
216932
  ($options.canClaim(task))
216909
216933
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
216910
216934
  key: 0,
@@ -217009,10 +217033,10 @@ function render$45(_ctx, _cache, $props, $setup, $data, $options) {
217009
217033
  onComplete: _cache[9] || (_cache[9] = $event => ($options.completeInPlace($options.focusTask))),
217010
217034
  onCancel: _cache[10] || (_cache[10] = $event => ($options.cancel($options.focusTask)))
217011
217035
  }, null, 8 /* PROPS */, ["task", "values", "claimable", "claimAvailable", "cancelable", "busy", "openRoute", "tr"]))
217012
- : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$z, vue$1.toDisplayString($options.emptyLabel), 1 /* TEXT */)),
217036
+ : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_21$A, vue$1.toDisplayString($options.emptyLabel), 1 /* TEXT */)),
217013
217037
  ($options.otherOpenTasks.length > 0)
217014
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$y, [
217015
- vue$1.createElementVNode("h5", _hoisted_23$v, vue$1.toDisplayString($options.tr('Other open tasks')), 1 /* TEXT */),
217038
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$z, [
217039
+ vue$1.createElementVNode("h5", _hoisted_23$w, vue$1.toDisplayString($options.tr('Other open tasks')), 1 /* TEXT */),
217016
217040
  vue$1.createElementVNode("ul", _hoisted_24$t, [
217017
217041
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.otherOpenTasks, (task) => {
217018
217042
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
@@ -224456,10 +224480,10 @@ const _hoisted_18$I = {
224456
224480
  class: "cn-facts-widget__lead-subtitle"
224457
224481
  };
224458
224482
  const _hoisted_19$F = ["data-testid"];
224459
- const _hoisted_20$y = { class: "cn-facts-widget__meter-head" };
224460
- const _hoisted_21$y = { class: "cn-facts-widget__meter-label" };
224461
- const _hoisted_22$x = { class: "cn-facts-widget__meter-value" };
224462
- const _hoisted_23$u = ["aria-label", "aria-valuenow", "aria-valuemax", "aria-valuetext", "data-testid"];
224483
+ const _hoisted_20$z = { class: "cn-facts-widget__meter-head" };
224484
+ const _hoisted_21$z = { class: "cn-facts-widget__meter-label" };
224485
+ const _hoisted_22$y = { class: "cn-facts-widget__meter-value" };
224486
+ const _hoisted_23$v = ["aria-label", "aria-valuenow", "aria-valuemax", "aria-valuetext", "data-testid"];
224463
224487
  const _hoisted_24$s = ["data-testid"];
224464
224488
  const _hoisted_25$p = ["aria-label", "aria-valuenow", "data-testid"];
224465
224489
  const _hoisted_26$n = { class: "cn-facts-widget__line" };
@@ -224652,9 +224676,9 @@ function render$3Y(_ctx, _cache, $props, $setup, $data, $options) {
224652
224676
  class: vue$1.normalizeClass(["cn-facts-widget__meter", { 'cn-facts-widget__meter--over': block.over }]),
224653
224677
  "data-testid": `cn-fact-${block.key}`
224654
224678
  }, [
224655
- vue$1.createElementVNode("div", _hoisted_20$y, [
224656
- vue$1.createElementVNode("span", _hoisted_21$y, vue$1.toDisplayString(block.label), 1 /* TEXT */),
224657
- vue$1.createElementVNode("span", _hoisted_22$x, vue$1.toDisplayString(block.value), 1 /* TEXT */)
224679
+ vue$1.createElementVNode("div", _hoisted_20$z, [
224680
+ vue$1.createElementVNode("span", _hoisted_21$z, vue$1.toDisplayString(block.label), 1 /* TEXT */),
224681
+ vue$1.createElementVNode("span", _hoisted_22$y, vue$1.toDisplayString(block.value), 1 /* TEXT */)
224658
224682
  ]),
224659
224683
  (block.limit !== null)
224660
224684
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", {
@@ -224672,7 +224696,7 @@ function render$3Y(_ctx, _cache, $props, $setup, $data, $options) {
224672
224696
  class: "cn-facts-widget__meter-bar",
224673
224697
  style: vue$1.normalizeStyle({ width: `${block.percent}%` })
224674
224698
  }, null, 4 /* STYLE */)
224675
- ], 8 /* PROPS */, _hoisted_23$u))
224699
+ ], 8 /* PROPS */, _hoisted_23$v))
224676
224700
  : vue$1.createCommentVNode("v-if", true)
224677
224701
  ], 10 /* CLASS, PROPS */, _hoisted_19$F))
224678
224702
  : (block.kind === 'progress')
@@ -227084,13 +227108,13 @@ const _hoisted_19$E = {
227084
227108
  role: "alert",
227085
227109
  "data-testid": "cn-checklist-run-missing"
227086
227110
  };
227087
- const _hoisted_20$x = { class: "cn-checklist-run__photos-title" };
227088
- const _hoisted_21$x = {
227111
+ const _hoisted_20$y = { class: "cn-checklist-run__photos-title" };
227112
+ const _hoisted_21$y = {
227089
227113
  key: 0,
227090
227114
  class: "cn-checklist-run__photo-list"
227091
227115
  };
227092
- const _hoisted_22$w = { class: "cn-checklist-run__photo-button" };
227093
- const _hoisted_23$t = ["aria-describedby", "onChange"];
227116
+ const _hoisted_22$x = { class: "cn-checklist-run__photo-button" };
227117
+ const _hoisted_23$u = ["aria-describedby", "onChange"];
227094
227118
  const _hoisted_24$r = ["id"];
227095
227119
  const _hoisted_25$o = { class: "cn-checklist-run__nav" };
227096
227120
  const _hoisted_26$m = {
@@ -227242,9 +227266,9 @@ function render$3U(_ctx, _cache, $props, $setup, $data, $options) {
227242
227266
  class: "cn-checklist-run__photos",
227243
227267
  "data-testid": "cn-checklist-run-photos"
227244
227268
  }, [
227245
- vue$1.createElementVNode("strong", _hoisted_20$x, vue$1.toDisplayString($options.photoTitle(question)), 1 /* TEXT */),
227269
+ vue$1.createElementVNode("strong", _hoisted_20$y, vue$1.toDisplayString($options.photoTitle(question)), 1 /* TEXT */),
227246
227270
  ($options.photoNamesFor(question).length)
227247
- ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$x, [
227271
+ ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$y, [
227248
227272
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.photoNamesFor(question), (name) => {
227249
227273
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
227250
227274
  key: name,
@@ -227253,7 +227277,7 @@ function render$3U(_ctx, _cache, $props, $setup, $data, $options) {
227253
227277
  }), 128 /* KEYED_FRAGMENT */))
227254
227278
  ]))
227255
227279
  : vue$1.createCommentVNode("v-if", true),
227256
- vue$1.createElementVNode("label", _hoisted_22$w, [
227280
+ vue$1.createElementVNode("label", _hoisted_22$x, [
227257
227281
  vue$1.createElementVNode("input", {
227258
227282
  class: "cn-checklist-run__photo-input",
227259
227283
  type: "file",
@@ -227262,7 +227286,7 @@ function render$3U(_ctx, _cache, $props, $setup, $data, $options) {
227262
227286
  "aria-describedby": $data.missingPhoto.includes(question.id) ? `${$data.uid}-photo-${question.id}` : null,
227263
227287
  "data-testid": "cn-checklist-run-photo-input",
227264
227288
  onChange: $event => ($options.addPhotos($event, question.id))
227265
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$t),
227289
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$u),
227266
227290
  vue$1.createTextVNode(" " + vue$1.toDisplayString($options.photoNamesFor(question).length || ($data.storedPhotos[question.id] || []).length ? $options.morePhotoLabel : $options.addPhotoLabel), 1 /* TEXT */)
227267
227291
  ]),
227268
227292
  ($data.missingPhoto.includes(question.id))
@@ -230095,16 +230119,16 @@ const _hoisted_18$G = {
230095
230119
  "aria-hidden": "true"
230096
230120
  };
230097
230121
  const _hoisted_19$D = { class: "cn-field-list-widget__main" };
230098
- const _hoisted_20$w = { class: "cn-field-list-widget__title" };
230099
- const _hoisted_21$w = {
230122
+ const _hoisted_20$x = { class: "cn-field-list-widget__title" };
230123
+ const _hoisted_21$x = {
230100
230124
  key: 0,
230101
230125
  class: "cn-field-list-widget__meta"
230102
230126
  };
230103
- const _hoisted_22$v = {
230127
+ const _hoisted_22$w = {
230104
230128
  key: 2,
230105
230129
  class: "cn-field-list-widget__aside"
230106
230130
  };
230107
- const _hoisted_23$s = {
230131
+ const _hoisted_23$t = {
230108
230132
  key: 0,
230109
230133
  class: "cn-field-list-widget__detail"
230110
230134
  };
@@ -230346,9 +230370,9 @@ function render$3P(_ctx, _cache, $props, $setup, $data, $options) {
230346
230370
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$G, vue$1.toDisplayString(row.initials), 1 /* TEXT */))
230347
230371
  : vue$1.createCommentVNode("v-if", true),
230348
230372
  vue$1.createElementVNode("span", _hoisted_19$D, [
230349
- vue$1.createElementVNode("span", _hoisted_20$w, vue$1.toDisplayString(row.title), 1 /* TEXT */),
230373
+ vue$1.createElementVNode("span", _hoisted_20$x, vue$1.toDisplayString(row.title), 1 /* TEXT */),
230350
230374
  (row.meta)
230351
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$w, vue$1.toDisplayString(row.meta), 1 /* TEXT */))
230375
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$x, vue$1.toDisplayString(row.meta), 1 /* TEXT */))
230352
230376
  : vue$1.createCommentVNode("v-if", true)
230353
230377
  ]),
230354
230378
  (row.pill)
@@ -230360,7 +230384,7 @@ function render$3P(_ctx, _cache, $props, $setup, $data, $options) {
230360
230384
  }, null, 8 /* PROPS */, ["label", "variant"]))
230361
230385
  : vue$1.createCommentVNode("v-if", true),
230362
230386
  (row.aside)
230363
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$v, vue$1.toDisplayString(row.aside), 1 /* TEXT */))
230387
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$w, vue$1.toDisplayString(row.aside), 1 /* TEXT */))
230364
230388
  : vue$1.createCommentVNode("v-if", true),
230365
230389
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(row.actions, (action) => {
230366
230390
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
@@ -230393,7 +230417,7 @@ function render$3P(_ctx, _cache, $props, $setup, $data, $options) {
230393
230417
  : vue$1.createCommentVNode("v-if", true)
230394
230418
  ]),
230395
230419
  (row.detail)
230396
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$s, vue$1.toDisplayString(row.detail), 1 /* TEXT */))
230420
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$t, vue$1.toDisplayString(row.detail), 1 /* TEXT */))
230397
230421
  : vue$1.createCommentVNode("v-if", true),
230398
230422
  (row.detail && row.copies.length > 0)
230399
230423
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_24$q, [
@@ -234087,6 +234111,22 @@ const PAGE_REFRESH_CHANNEL$2 = 'cn:page:refresh';
234087
234111
  let footerSeq = 0;
234088
234112
  const PRESENTATIONS = ['rows', 'feed', 'inline', 'cards', 'notice', 'table', 'notes'];
234089
234113
 
234114
+ /**
234115
+ * Compare two table cell texts: as numbers when both read as one, else as text.
234116
+ *
234117
+ * @param {string} a One cell text.
234118
+ * @param {string} b The other.
234119
+ * @return {number} Negative, zero or positive.
234120
+ */
234121
+ function compareCells(a, b) {
234122
+ const x = Number(a);
234123
+ const y = Number(b);
234124
+ if (a !== '' && b !== '' && Number.isFinite(x) && Number.isFinite(y)) {
234125
+ return x - y
234126
+ }
234127
+ return String(a).localeCompare(String(b))
234128
+ }
234129
+
234090
234130
  /** The tones a `notice` list takes. */
234091
234131
  const NOTICE_VARIANTS = ['info', 'warning', 'error'];
234092
234132
 
@@ -234138,7 +234178,7 @@ function unwrap$1(value) {
234138
234178
  var script$3I = {
234139
234179
  name: 'CnRecordListWidget',
234140
234180
 
234141
- components: { ChevronRight, CnIcon: __sfc_main$8c, CnRecordNoteRows: __sfc_main$3J, CnStatusBadge: __sfc_main$85, NcActionButton: vue.NcActionButton, NcActions: vue.NcActions, NcButton: vue.NcButton, NcLoadingIcon: vue.NcLoadingIcon },
234181
+ components: { ChevronRight, CnIcon: __sfc_main$8c, CnRecordNoteRows: __sfc_main$3J, CnStatusBadge: __sfc_main$85, NcActionButton: vue.NcActionButton, NcActionLink: vue.NcActionLink, NcActions: vue.NcActions, NcButton: vue.NcButton, NcLoadingIcon: vue.NcLoadingIcon },
234142
234182
 
234143
234183
  inject: {
234144
234184
  /** Detail-page object context (`{ objectId, object, register, schema }`). */
@@ -234184,6 +234224,8 @@ var script$3I = {
234184
234224
  * per value, headed by the field's `valueLabels` entry; `groupOrder`
234185
234225
  * (values) orders the groups and `groupEmptyLabel` heads the rows
234186
234226
  * without a value.
234227
+ * `density: "compact"` draws the rows 10px above and below, at least
234228
+ * 56px tall, with the title at 500 (DqProcesanalyse).
234187
234229
  *
234188
234230
  * @type {object}
234189
234231
  */
@@ -234234,6 +234276,8 @@ var script$3I = {
234234
234276
 
234235
234277
  data() {
234236
234278
  return {
234279
+ /** The reader's sort of a `table`: the column key and `ascending` or `descending`. */
234280
+ tableSort: { key: '', dir: '' },
234237
234281
  rows: [],
234238
234282
  total: 0,
234239
234283
  loading: false,
@@ -234435,6 +234479,7 @@ var script$3I = {
234435
234479
  dot: this.dotOf(row),
234436
234480
  flag: this.flagOf(row),
234437
234481
  links: this.linksOf(row),
234482
+ rowActions: this.rowActionsOf(row),
234438
234483
  }
234439
234484
  })
234440
234485
  },
@@ -234513,8 +234558,11 @@ var script$3I = {
234513
234558
  * @spec openspec/changes/record-list-table/specs/record-list-table/spec.md#requirement-a-record-list-can-draw-its-rows-as-a-small-table
234514
234559
  */
234515
234560
  tableRows() {
234516
- return this.items.map((item) => ({
234561
+ const indentPath = this.content?.indentPath;
234562
+ const rows = this.items.map((item) => ({
234517
234563
  key: item.key,
234564
+ to: item.attrs.to || null,
234565
+ depth: indentPath ? Math.max(0, Math.floor(Number(readPath$8(item.row, indentPath)) || 0)) : 0,
234518
234566
  cells: this.tableColumns.map((col) => {
234519
234567
  const text = this.fill(col.value, item.row);
234520
234568
  const limit = Number(col.alertAbove);
@@ -234524,9 +234572,17 @@ var script$3I = {
234524
234572
  text,
234525
234573
  align: col.align,
234526
234574
  alert: col.alertAbove !== undefined && Number.isFinite(limit) && text !== '' && Number.isFinite(value) && value > limit,
234575
+ tone: this.cellToneOf(col, item.row, text),
234527
234576
  }
234528
234577
  }),
234529
- }))
234578
+ }));
234579
+ const { key, dir } = this.tableSort;
234580
+ const index = this.tableColumns.findIndex((col) => col.key === key);
234581
+ if (index < 0 || !dir) {
234582
+ return rows
234583
+ }
234584
+ const sign = dir === 'descending' ? -1 : 1;
234585
+ return [...rows].sort((a, b) => sign * compareCells(a.cells[index].text, b.cells[index].text))
234530
234586
  },
234531
234587
 
234532
234588
  /** @return {string} The note under the list (`footnote`), translated. */
@@ -235188,6 +235244,123 @@ var script$3I = {
235188
235244
  }
235189
235245
  },
235190
235246
 
235247
+ /**
235248
+ * The badge variant of a `table` cell with a `tone`
235249
+ * (`{ field?, map, default?, override?: { when, tone } }`): the value at
235250
+ * `field` (else the cell text) looked up in `map`, else `default`. While
235251
+ * `override.when` (a condition over the row) holds, the cell takes
235252
+ * `override.tone` instead, so a verdict is never green unless a second
235253
+ * field allows it.
235254
+ *
235255
+ * @param {object} col The column.
235256
+ * @param {object} row The row.
235257
+ * @param {string} text The cell text.
235258
+ * @return {string} A badge variant, or '' for a plain cell.
235259
+ * @spec openspec/changes/record-list-table-shape/specs/record-list-table-shape/spec.md#requirement-a-record-list-table-takes-its-shape-from-the-rows
235260
+ */
235261
+ cellToneOf(col, row, text) {
235262
+ const tone = col.tone;
235263
+ if (!tone || typeof tone !== 'object') {
235264
+ return ''
235265
+ }
235266
+ let variant;
235267
+ if (tone.override && typeof tone.override === 'object' && evaluateVisibleWhenLocal(tone.override.when, row || {})) {
235268
+ variant = tone.override.tone;
235269
+ } else {
235270
+ const value = tone.field ? readPath$8(row, tone.field) : text;
235271
+ const map = tone.map && typeof tone.map === 'object' ? tone.map : {};
235272
+ variant = Object.hasOwn(map, String(value)) ? map[String(value)] : tone.default;
235273
+ }
235274
+ return isBadgeVariant(variant) ? variant : 'default'
235275
+ },
235276
+
235277
+ /**
235278
+ * The `aria-sort` of a sortable `table` column.
235279
+ *
235280
+ * @param {string} key The column key.
235281
+ * @return {string} `ascending`, `descending` or `none`.
235282
+ */
235283
+ sortStateOf(key) {
235284
+ return this.tableSort.key === key && this.tableSort.dir ? this.tableSort.dir : 'none'
235285
+ },
235286
+
235287
+ /**
235288
+ * The arrow after a sortable column's label.
235289
+ *
235290
+ * @param {string} key The column key.
235291
+ * @return {string} An up or down arrow, or '' while the column is not the sort.
235292
+ */
235293
+ sortMarkOf(key) {
235294
+ const state = this.sortStateOf(key);
235295
+ if (state === 'ascending') {
235296
+ return '▲'
235297
+ }
235298
+ return state === 'descending' ? '▼' : ''
235299
+ },
235300
+
235301
+ /**
235302
+ * Sort the `table` by a column: ascending first, then descending.
235303
+ *
235304
+ * @param {string} key The column key.
235305
+ * @spec openspec/changes/record-list-table-shape/specs/record-list-table-shape/spec.md#requirement-a-record-list-table-takes-its-shape-from-the-rows
235306
+ */
235307
+ toggleTableSort(key) {
235308
+ const dir = this.tableSort.key === key && this.tableSort.dir === 'ascending' ? 'descending' : 'ascending';
235309
+ this.tableSort = { key, dir };
235310
+ },
235311
+
235312
+ /**
235313
+ * The rows of a read with `flattenPath` set: each entry of the list at
235314
+ * that path on a record becomes a row, with the record at `@parent`.
235315
+ * A record without the list adds no row. Without `flattenPath` the
235316
+ * records are the rows.
235317
+ *
235318
+ * @param {Array<object>} records The records read.
235319
+ * @return {Array<object>} The rows.
235320
+ * @spec openspec/changes/record-list-table-shape/specs/record-list-table-shape/spec.md#requirement-a-record-list-table-takes-its-shape-from-the-rows
235321
+ */
235322
+ flattenRows(records) {
235323
+ const path = this.content?.flattenPath;
235324
+ if (typeof path !== 'string' || path === '') {
235325
+ return records
235326
+ }
235327
+ return records.flatMap((record) => {
235328
+ const list = readPath$8(record, path);
235329
+ return Array.isArray(list)
235330
+ ? list.filter((entry) => entry && typeof entry === 'object').map((entry) => ({ ...entry, '@parent': record }))
235331
+ : []
235332
+ })
235333
+ },
235334
+
235335
+ /**
235336
+ * The row actions shown on one row: those whose `visibleWhen` (a
235337
+ * condition over the row) holds. An `href` action is a template over
235338
+ * the row and shows only when it fills to a web address or an
235339
+ * instance path; a web address opens in a new tab.
235340
+ *
235341
+ * @param {object} row The row.
235342
+ * @return {Array<{action: object, index: number, href: string, external: boolean}>} The visible actions, with their place in `rowActions`.
235343
+ * @spec openspec/changes/record-list-row-rules/specs/record-list-row-rules/spec.md#requirement-a-row-action-can-depend-on-the-row
235344
+ */
235345
+ rowActionsOf(row) {
235346
+ const shown = [];
235347
+ this.rowActions.forEach((action, index) => {
235348
+ if (action.visibleWhen && !evaluateVisibleWhenLocal(action.visibleWhen, row || {})) {
235349
+ return
235350
+ }
235351
+ if (typeof action.href !== 'string') {
235352
+ shown.push({ action, index, href: '', external: false });
235353
+ return
235354
+ }
235355
+ const href = this.fill(action.href, row).trim();
235356
+ const external = /^https?:\/\//i.test(href);
235357
+ if (external || (href.startsWith('/') && !href.startsWith('//'))) {
235358
+ shown.push({ action, index, href, external });
235359
+ }
235360
+ });
235361
+ return shown
235362
+ },
235363
+
235191
235364
  /**
235192
235365
  * A row's `links` line: the ids at `links.field`, each labelled from
235193
235366
  * `links.labelSource` (`{ register, schema, template }`) once read, else
@@ -235515,7 +235688,7 @@ var script$3I = {
235515
235688
  * @spec openspec/changes/endpoint-source-card-grid-record-list/specs/dashboard-page/spec.md#requirement-a-record-list-and-a-card-grid-can-read-an-endpoint
235516
235689
  */
235517
235690
  takeEndpointRows() {
235518
- this.rows = Array.isArray(this.epData) ? this.epData : [];
235691
+ this.rows = this.flattenRows(Array.isArray(this.epData) ? this.epData : []);
235519
235692
  this.total = this.rows.length;
235520
235693
  this.loading = this.epLoading === true;
235521
235694
  this.error = Boolean(this.epError);
@@ -235592,14 +235765,14 @@ var script$3I = {
235592
235765
  if (run !== this.fetchRun) {
235593
235766
  return
235594
235767
  }
235595
- this.rows = ranked.rows;
235596
- this.total = ranked.total;
235768
+ this.rows = this.flattenRows(ranked.rows);
235769
+ this.total = this.content?.flattenPath ? this.rows.length : ranked.total;
235597
235770
  return
235598
235771
  }
235599
235772
  const response = await axios.get(url, { params });
235600
235773
  const data = response && response.data ? response.data : {};
235601
- this.rows = Array.isArray(data.results) ? data.results : [];
235602
- this.total = typeof data.total === 'number' ? data.total : this.rows.length;
235774
+ this.rows = this.flattenRows(Array.isArray(data.results) ? data.results : []);
235775
+ this.total = typeof data.total === 'number' && !this.content?.flattenPath ? data.total : this.rows.length;
235603
235776
  this.lenses = readLensReports(data);
235604
235777
  } catch (e) {
235605
235778
  // eslint-disable-next-line no-console
@@ -235646,146 +235819,153 @@ const _hoisted_7$20 = {
235646
235819
  class: "cn-record-list__table",
235647
235820
  "data-testid": "cn-record-list-table"
235648
235821
  };
235649
- const _hoisted_8$1S = ["id"];
235650
- const _hoisted_9$1I = ["aria-labelledby", "data-testid"];
235822
+ const _hoisted_8$1S = ["aria-sort"];
235823
+ const _hoisted_9$1I = ["data-testid", "onClick"];
235651
235824
  const _hoisted_10$1v = {
235825
+ class: "cn-record-list__sort-mark",
235826
+ "aria-hidden": "true"
235827
+ };
235828
+ const _hoisted_11$1j = ["id"];
235829
+ const _hoisted_12$19 = ["aria-labelledby", "data-testid"];
235830
+ const _hoisted_13$$ = {
235652
235831
  key: 0,
235653
235832
  class: "cn-record-list__row cn-record-list__row--action"
235654
235833
  };
235655
- const _hoisted_11$1j = {
235834
+ const _hoisted_14$Z = {
235656
235835
  key: 0,
235657
235836
  class: "cn-record-list__avatar",
235658
235837
  "aria-hidden": "true",
235659
235838
  "data-testid": "cn-record-list-avatar"
235660
235839
  };
235661
- const _hoisted_12$19 = { class: "cn-record-list__main" };
235662
- const _hoisted_13$$ = {
235840
+ const _hoisted_15$T = { class: "cn-record-list__main" };
235841
+ const _hoisted_16$P = {
235663
235842
  key: 1,
235664
235843
  class: "cn-record-list__meta"
235665
235844
  };
235666
- const _hoisted_14$Z = {
235845
+ const _hoisted_17$L = {
235667
235846
  key: 2,
235668
235847
  class: "cn-record-list__flag",
235669
235848
  "data-testid": "cn-record-list-flag"
235670
235849
  };
235671
- const _hoisted_15$T = {
235850
+ const _hoisted_18$F = {
235672
235851
  key: 3,
235673
235852
  class: "cn-record-list__pills"
235674
235853
  };
235675
- const _hoisted_16$P = {
235854
+ const _hoisted_19$C = {
235676
235855
  key: 5,
235677
235856
  class: "cn-record-list__trailing"
235678
235857
  };
235679
- const _hoisted_17$L = {
235858
+ const _hoisted_20$w = {
235680
235859
  key: 0,
235681
235860
  class: "cn-record-list__avatar",
235682
235861
  "aria-hidden": "true",
235683
235862
  "data-testid": "cn-record-list-avatar"
235684
235863
  };
235685
- const _hoisted_18$F = { class: "cn-record-list__main" };
235686
- const _hoisted_19$C = {
235864
+ const _hoisted_21$w = { class: "cn-record-list__main" };
235865
+ const _hoisted_22$v = {
235687
235866
  key: 0,
235688
235867
  class: "cn-record-list__title"
235689
235868
  };
235690
- const _hoisted_20$v = {
235869
+ const _hoisted_23$s = {
235691
235870
  key: 1,
235692
235871
  class: "cn-record-list__meta"
235693
235872
  };
235694
- const _hoisted_21$v = {
235873
+ const _hoisted_24$p = {
235695
235874
  key: 2,
235696
235875
  class: "cn-record-list__meta",
235697
235876
  "data-testid": "cn-record-list-links"
235698
235877
  };
235699
- const _hoisted_22$u = { key: 1 };
235700
- const _hoisted_23$r = { key: 2 };
235701
- const _hoisted_24$p = {
235878
+ const _hoisted_25$m = { key: 1 };
235879
+ const _hoisted_26$k = { key: 2 };
235880
+ const _hoisted_27$f = {
235702
235881
  key: 2,
235703
235882
  class: "cn-record-list__aside"
235704
235883
  };
235705
- const _hoisted_25$m = {
235884
+ const _hoisted_28$e = {
235706
235885
  key: 0,
235707
235886
  class: "cn-record-list__flag",
235708
235887
  "data-testid": "cn-record-list-flag"
235709
235888
  };
235710
- const _hoisted_26$k = {
235889
+ const _hoisted_29$c = {
235711
235890
  key: 3,
235712
235891
  class: "cn-record-list__trailing"
235713
235892
  };
235714
- const _hoisted_27$f = { class: "cn-record-list__card-head" };
235715
- const _hoisted_28$e = { class: "cn-record-list__card-title" };
235716
- const _hoisted_29$c = {
235893
+ const _hoisted_30$c = { class: "cn-record-list__card-head" };
235894
+ const _hoisted_31$b = { class: "cn-record-list__card-title" };
235895
+ const _hoisted_32$b = {
235717
235896
  key: 1,
235718
235897
  class: "cn-record-list__title"
235719
235898
  };
235720
- const _hoisted_30$c = {
235899
+ const _hoisted_33$a = {
235721
235900
  key: 0,
235722
235901
  class: "cn-record-list__card-pills"
235723
235902
  };
235724
- const _hoisted_31$b = {
235903
+ const _hoisted_34$a = {
235725
235904
  key: 0,
235726
235905
  class: "cn-record-list__meta"
235727
235906
  };
235728
- const _hoisted_32$b = {
235907
+ const _hoisted_35$a = {
235729
235908
  key: 1,
235730
235909
  class: "cn-record-list__card-value",
235731
235910
  "data-testid": "cn-record-list-card-value"
235732
235911
  };
235733
- const _hoisted_33$a = {
235912
+ const _hoisted_36$a = {
235734
235913
  key: 3,
235735
235914
  class: "cn-record-list__feed-row"
235736
235915
  };
235737
- const _hoisted_34$a = {
235916
+ const _hoisted_37$a = {
235738
235917
  class: "cn-record-list__feed-icon",
235739
235918
  "aria-hidden": "true"
235740
235919
  };
235741
- const _hoisted_35$a = {
235920
+ const _hoisted_38$a = {
235742
235921
  key: 0,
235743
235922
  class: "cn-record-list__meta"
235744
235923
  };
235745
- const _hoisted_36$a = {
235924
+ const _hoisted_39$8 = {
235746
235925
  key: 1,
235747
235926
  class: "cn-record-list__text"
235748
235927
  };
235749
- const _hoisted_37$a = {
235928
+ const _hoisted_40$7 = {
235750
235929
  key: 4,
235751
235930
  class: "cn-record-list__inline-row"
235752
235931
  };
235753
- const _hoisted_38$a = {
235932
+ const _hoisted_41$5 = {
235754
235933
  key: 0,
235755
235934
  class: "cn-record-list__label"
235756
235935
  };
235757
- const _hoisted_39$8 = ["aria-label", "aria-valuenow", "aria-valuemax"];
235758
- const _hoisted_40$7 = {
235936
+ const _hoisted_42$5 = ["aria-label", "aria-valuenow", "aria-valuemax"];
235937
+ const _hoisted_43$4 = {
235759
235938
  key: 9,
235760
235939
  class: "cn-record-list__error",
235761
235940
  role: "alert",
235762
235941
  "data-testid": "cn-record-list-action-error"
235763
235942
  };
235764
- const _hoisted_41$5 = {
235943
+ const _hoisted_44$4 = {
235765
235944
  key: 10,
235766
235945
  class: "cn-record-list__footnote",
235767
235946
  "data-testid": "cn-record-list-footnote"
235768
235947
  };
235769
- const _hoisted_42$5 = {
235948
+ const _hoisted_45$2 = {
235770
235949
  key: 11,
235771
235950
  class: "cn-record-list__footer",
235772
235951
  "data-testid": "cn-record-list-footer"
235773
235952
  };
235774
- const _hoisted_43$4 = ["id"];
235953
+ const _hoisted_46$2 = ["id"];
235775
235954
 
235776
235955
  function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235777
235956
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
235778
235957
  const _component_CnIcon = vue$1.resolveComponent("CnIcon");
235779
- const _component_CnRecordNoteRows = vue$1.resolveComponent("CnRecordNoteRows");
235780
235958
  const _component_CnStatusBadge = vue$1.resolveComponent("CnStatusBadge");
235781
235959
  const _component_router_link = vue$1.resolveComponent("router-link");
235960
+ const _component_CnRecordNoteRows = vue$1.resolveComponent("CnRecordNoteRows");
235782
235961
  const _component_ChevronRight = vue$1.resolveComponent("ChevronRight");
235962
+ const _component_NcActionLink = vue$1.resolveComponent("NcActionLink");
235783
235963
  const _component_NcActionButton = vue$1.resolveComponent("NcActionButton");
235784
235964
  const _component_NcActions = vue$1.resolveComponent("NcActions");
235785
235965
  const _component_NcButton = vue$1.resolveComponent("NcButton");
235786
235966
 
235787
235967
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
235788
- class: vue$1.normalizeClass(["cn-record-list", `cn-record-list--${$options.presentation}`]),
235968
+ class: vue$1.normalizeClass(["cn-record-list", [`cn-record-list--${$options.presentation}`, { 'cn-record-list--compact': $props.content.density === 'compact' }]]),
235789
235969
  "data-testid": "cn-record-list"
235790
235970
  }, [
235791
235971
  ($options.intro && !$options.absent)
@@ -235827,8 +236007,24 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235827
236007
  return (vue$1.openBlock(), vue$1.createElementBlock("th", {
235828
236008
  key: col.key,
235829
236009
  scope: "col",
236010
+ "aria-sort": col.sortable ? $options.sortStateOf(col.key) : undefined,
235830
236011
  class: vue$1.normalizeClass({ 'cn-record-list__cell--end': col.align === 'end' })
235831
- }, vue$1.toDisplayString(col.label), 3 /* TEXT, CLASS */))
236012
+ }, [
236013
+ (col.sortable)
236014
+ ? (vue$1.openBlock(), vue$1.createElementBlock("button", {
236015
+ key: 0,
236016
+ type: "button",
236017
+ class: "cn-record-list__sort",
236018
+ "data-testid": `cn-record-list-sort-${col.key}`,
236019
+ onClick: $event => ($options.toggleTableSort(col.key))
236020
+ }, [
236021
+ vue$1.createTextVNode(vue$1.toDisplayString(col.label) + " ", 1 /* TEXT */),
236022
+ vue$1.createElementVNode("span", _hoisted_10$1v, vue$1.toDisplayString($options.sortMarkOf(col.key)), 1 /* TEXT */)
236023
+ ], 8 /* PROPS */, _hoisted_9$1I))
236024
+ : (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 1 }, [
236025
+ vue$1.createTextVNode(vue$1.toDisplayString(col.label), 1 /* TEXT */)
236026
+ ], 64 /* STABLE_FRAGMENT */))
236027
+ ], 10 /* CLASS, PROPS */, _hoisted_8$1S))
235832
236028
  }), 128 /* KEYED_FRAGMENT */))
235833
236029
  ])
235834
236030
  ]),
@@ -235838,11 +236034,33 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235838
236034
  key: item.key,
235839
236035
  "data-testid": "cn-record-list-item"
235840
236036
  }, [
235841
- (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(item.cells, (cell) => {
236037
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(item.cells, (cell, cellIndex) => {
235842
236038
  return (vue$1.openBlock(), vue$1.createElementBlock("td", {
235843
236039
  key: cell.key,
236040
+ style: vue$1.normalizeStyle(cellIndex === 0 && item.depth > 0 ? `padding-inline-start: calc(${item.depth} * 16px)` : undefined),
235844
236041
  class: vue$1.normalizeClass({ 'cn-record-list__cell--end': cell.align === 'end', 'cn-record-list__cell--alert': cell.alert })
235845
- }, vue$1.toDisplayString(cell.text), 3 /* TEXT, CLASS */))
236042
+ }, [
236043
+ (cell.tone)
236044
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
236045
+ key: 0,
236046
+ label: cell.text,
236047
+ variant: cell.tone,
236048
+ size: "small"
236049
+ }, null, 8 /* PROPS */, ["label", "variant"]))
236050
+ : (cellIndex === 0 && item.to)
236051
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_router_link, {
236052
+ key: 1,
236053
+ to: item.to
236054
+ }, {
236055
+ default: vue$1.withCtx(() => [
236056
+ vue$1.createTextVNode(vue$1.toDisplayString(cell.text), 1 /* TEXT */)
236057
+ ]),
236058
+ _: 2 /* DYNAMIC */
236059
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["to"]))
236060
+ : (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 2 }, [
236061
+ vue$1.createTextVNode(vue$1.toDisplayString(cell.text), 1 /* TEXT */)
236062
+ ], 64 /* STABLE_FRAGMENT */))
236063
+ ], 6 /* CLASS, STYLE */))
235846
236064
  }), 128 /* KEYED_FRAGMENT */))
235847
236065
  ]))
235848
236066
  }), 128 /* KEYED_FRAGMENT */))
@@ -235866,7 +236084,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235866
236084
  id: group.headingId,
235867
236085
  class: "cn-record-list__group-heading",
235868
236086
  "data-testid": "cn-record-list-group-heading"
235869
- }, vue$1.toDisplayString(group.label), 9 /* TEXT, PROPS */, _hoisted_8$1S))
236087
+ }, vue$1.toDisplayString(group.label), 9 /* TEXT, PROPS */, _hoisted_11$1j))
235870
236088
  : vue$1.createCommentVNode("v-if", true),
235871
236089
  vue$1.createElementVNode("ul", {
235872
236090
  class: "cn-record-list__list",
@@ -235880,9 +236098,9 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235880
236098
  "data-testid": "cn-record-list-item"
235881
236099
  }, [
235882
236100
  ($options.presentation === 'rows' && item.action)
235883
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_10$1v, [
236101
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_13$$, [
235884
236102
  (item.initials)
235885
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_11$1j, vue$1.toDisplayString(item.initials), 1 /* TEXT */))
236103
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_14$Z, vue$1.toDisplayString(item.initials), 1 /* TEXT */))
235886
236104
  : vue$1.createCommentVNode("v-if", true),
235887
236105
  (item.dot)
235888
236106
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
@@ -235893,7 +236111,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235893
236111
  "data-testid": "cn-record-list-dot"
235894
236112
  }, null, 4 /* STYLE */))
235895
236113
  : vue$1.createCommentVNode("v-if", true),
235896
- vue$1.createElementVNode("span", _hoisted_12$19, [
236114
+ vue$1.createElementVNode("span", _hoisted_15$T, [
235897
236115
  (item.title)
235898
236116
  ? (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent(item.tag), vue$1.mergeProps({
235899
236117
  key: 0,
@@ -235906,14 +236124,14 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235906
236124
  }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["class"]))
235907
236125
  : vue$1.createCommentVNode("v-if", true),
235908
236126
  (item.meta)
235909
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_13$$, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236127
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_16$P, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
235910
236128
  : vue$1.createCommentVNode("v-if", true)
235911
236129
  ]),
235912
236130
  (item.flag)
235913
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_14$Z, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
236131
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_17$L, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
235914
236132
  : vue$1.createCommentVNode("v-if", true),
235915
236133
  (item.pill || item.badges.length > 0)
235916
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_15$T, [
236134
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$F, [
235917
236135
  (item.pill)
235918
236136
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
235919
236137
  key: 0,
@@ -235941,7 +236159,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235941
236159
  }, vue$1.toDisplayString(item.due.text), 3 /* TEXT, CLASS */))
235942
236160
  : vue$1.createCommentVNode("v-if", true),
235943
236161
  (item.trailing)
235944
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_16$P, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
236162
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$C, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
235945
236163
  : vue$1.createCommentVNode("v-if", true),
235946
236164
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent(item.action.tag), vue$1.mergeProps({ class: "cn-record-list__action" }, { ref_for: true }, item.action.attrs, { "data-testid": "cn-record-list-action" }, vue$1.toHandlers(item.action.tag === 'button' ? { click: () => $options.runRowAction(item.row) } : {})), {
235947
236165
  default: vue$1.withCtx(() => [
@@ -235957,7 +236175,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235957
236175
  }, { ref_for: true }, item.attrs), {
235958
236176
  default: vue$1.withCtx(() => [
235959
236177
  (item.initials)
235960
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_17$L, vue$1.toDisplayString(item.initials), 1 /* TEXT */))
236178
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$w, vue$1.toDisplayString(item.initials), 1 /* TEXT */))
235961
236179
  : vue$1.createCommentVNode("v-if", true),
235962
236180
  (item.dot)
235963
236181
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", {
@@ -235968,15 +236186,15 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235968
236186
  "data-testid": "cn-record-list-dot"
235969
236187
  }, null, 4 /* STYLE */))
235970
236188
  : vue$1.createCommentVNode("v-if", true),
235971
- vue$1.createElementVNode("span", _hoisted_18$F, [
236189
+ vue$1.createElementVNode("span", _hoisted_21$w, [
235972
236190
  (item.title)
235973
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$C, vue$1.toDisplayString(item.title), 1 /* TEXT */))
236191
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$v, vue$1.toDisplayString(item.title), 1 /* TEXT */))
235974
236192
  : vue$1.createCommentVNode("v-if", true),
235975
236193
  (item.meta)
235976
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$v, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236194
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$s, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
235977
236195
  : vue$1.createCommentVNode("v-if", true),
235978
236196
  (item.links.length > 0)
235979
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$v, [
236197
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_24$p, [
235980
236198
  vue$1.createTextVNode(vue$1.toDisplayString($options.linksLabel) + " ", 1 /* TEXT */),
235981
236199
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(item.links, (link, linkIndex) => {
235982
236200
  return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, {
@@ -235992,9 +236210,9 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
235992
236210
  ]),
235993
236211
  _: 2 /* DYNAMIC */
235994
236212
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["to"]))
235995
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_22$u, vue$1.toDisplayString(link.label), 1 /* TEXT */)),
236213
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_25$m, vue$1.toDisplayString(link.label), 1 /* TEXT */)),
235996
236214
  (linkIndex < item.links.length - 1)
235997
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_23$r, ", "))
236215
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_26$k, ", "))
235998
236216
  : vue$1.createCommentVNode("v-if", true)
235999
236217
  ], 64 /* STABLE_FRAGMENT */))
236000
236218
  }), 128 /* KEYED_FRAGMENT */))
@@ -236002,9 +236220,9 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236002
236220
  : vue$1.createCommentVNode("v-if", true)
236003
236221
  ]),
236004
236222
  (item.pill || item.badges.length > 0 || item.due || item.trailing || item.flag)
236005
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_24$p, [
236223
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_27$f, [
236006
236224
  (item.flag)
236007
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_25$m, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
236225
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_28$e, vue$1.toDisplayString(item.flag), 1 /* TEXT */))
236008
236226
  : vue$1.createCommentVNode("v-if", true),
236009
236227
  (item.pill)
236010
236228
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
@@ -236031,7 +236249,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236031
236249
  }, vue$1.toDisplayString(item.due.text), 3 /* TEXT, CLASS */))
236032
236250
  : vue$1.createCommentVNode("v-if", true),
236033
236251
  (item.trailing)
236034
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_26$k, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
236252
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$c, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
236035
236253
  : vue$1.createCommentVNode("v-if", true)
236036
236254
  ]))
236037
236255
  : vue$1.createCommentVNode("v-if", true),
@@ -236043,25 +236261,41 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236043
236261
  "aria-hidden": "true"
236044
236262
  }))
236045
236263
  : vue$1.createCommentVNode("v-if", true),
236046
- (item.tag === 'div' && $options.rowActions.length > 0)
236264
+ (item.tag === 'div' && item.rowActions.length > 0)
236047
236265
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcActions, {
236048
236266
  key: 4,
236049
236267
  "aria-label": $options.rowActionsLabel,
236050
236268
  "data-testid": "cn-record-list-row-actions"
236051
236269
  }, {
236052
236270
  default: vue$1.withCtx(() => [
236053
- (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.rowActions, (action, actionIndex) => {
236054
- return (vue$1.openBlock(), vue$1.createBlock(_component_NcActionButton, {
236055
- key: `row-action-${actionIndex}`,
236056
- closeAfterClick: true,
236057
- "data-testid": `cn-record-list-row-action-${actionIndex}`,
236058
- onClick: $event => ($options.runRowActionEntry(action, item.row))
236059
- }, {
236060
- default: vue$1.withCtx(() => [
236061
- vue$1.createTextVNode(vue$1.toDisplayString(action.label), 1 /* TEXT */)
236062
- ]),
236063
- _: 2 /* DYNAMIC */
236064
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["data-testid", "onClick"]))
236271
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(item.rowActions, (entry) => {
236272
+ return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, {
236273
+ key: `row-action-${entry.index}`
236274
+ }, [
236275
+ (entry.href)
236276
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_NcActionLink, {
236277
+ key: 0,
236278
+ href: entry.href,
236279
+ target: entry.external ? '_blank' : undefined,
236280
+ "data-testid": `cn-record-list-row-action-${entry.index}`
236281
+ }, {
236282
+ default: vue$1.withCtx(() => [
236283
+ vue$1.createTextVNode(vue$1.toDisplayString(entry.action.label), 1 /* TEXT */)
236284
+ ]),
236285
+ _: 2 /* DYNAMIC */
236286
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["href", "target", "data-testid"]))
236287
+ : (vue$1.openBlock(), vue$1.createBlock(_component_NcActionButton, {
236288
+ key: 1,
236289
+ closeAfterClick: true,
236290
+ "data-testid": `cn-record-list-row-action-${entry.index}`,
236291
+ onClick: $event => ($options.runRowActionEntry(entry.action, item.row))
236292
+ }, {
236293
+ default: vue$1.withCtx(() => [
236294
+ vue$1.createTextVNode(vue$1.toDisplayString(entry.action.label), 1 /* TEXT */)
236295
+ ]),
236296
+ _: 2 /* DYNAMIC */
236297
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["data-testid", "onClick"]))
236298
+ ], 64 /* STABLE_FRAGMENT */))
236065
236299
  }), 128 /* KEYED_FRAGMENT */))
236066
236300
  ]),
236067
236301
  _: 2 /* DYNAMIC */
@@ -236076,8 +236310,8 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236076
236310
  class: ["cn-record-list__card", { 'cn-record-list__card--link': item.tag !== 'div' }]
236077
236311
  }, { ref_for: true }, item.attrs, { "data-testid": "cn-record-list-card" }), {
236078
236312
  default: vue$1.withCtx(() => [
236079
- vue$1.createElementVNode("span", _hoisted_27$f, [
236080
- vue$1.createElementVNode("span", _hoisted_28$e, [
236313
+ vue$1.createElementVNode("span", _hoisted_30$c, [
236314
+ vue$1.createElementVNode("span", _hoisted_31$b, [
236081
236315
  ($options.cardIcons)
236082
236316
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnIcon, {
236083
236317
  key: 0,
@@ -236087,11 +236321,11 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236087
236321
  }, null, 8 /* PROPS */, ["name"]))
236088
236322
  : vue$1.createCommentVNode("v-if", true),
236089
236323
  (item.title)
236090
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$c, vue$1.toDisplayString(item.title), 1 /* TEXT */))
236324
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_32$b, vue$1.toDisplayString(item.title), 1 /* TEXT */))
236091
236325
  : vue$1.createCommentVNode("v-if", true)
236092
236326
  ]),
236093
236327
  (item.pill || item.badges.length > 0)
236094
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$c, [
236328
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_33$a, [
236095
236329
  (item.pill)
236096
236330
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
236097
236331
  key: 0,
@@ -236113,17 +236347,17 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236113
236347
  : vue$1.createCommentVNode("v-if", true)
236114
236348
  ]),
236115
236349
  (item.meta)
236116
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_31$b, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236350
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_34$a, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236117
236351
  : vue$1.createCommentVNode("v-if", true),
236118
236352
  (item.trailing)
236119
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_32$b, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
236353
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_35$a, vue$1.toDisplayString(item.trailing), 1 /* TEXT */))
236120
236354
  : vue$1.createCommentVNode("v-if", true)
236121
236355
  ]),
236122
236356
  _: 2 /* DYNAMIC */
236123
236357
  }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["class"]))
236124
236358
  : ($options.presentation === 'feed')
236125
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_33$a, [
236126
- vue$1.createElementVNode("span", _hoisted_34$a, [
236359
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_36$a, [
236360
+ vue$1.createElementVNode("span", _hoisted_37$a, [
236127
236361
  vue$1.createVNode(_component_CnIcon, {
236128
236362
  name: item.icon,
236129
236363
  size: 18
@@ -236132,18 +236366,18 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236132
236366
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent(item.tag), vue$1.mergeProps({ class: "cn-record-list__main" }, { ref_for: true }, item.attrs), {
236133
236367
  default: vue$1.withCtx(() => [
236134
236368
  (item.meta)
236135
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_35$a, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236369
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_38$a, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
236136
236370
  : vue$1.createCommentVNode("v-if", true),
236137
236371
  (item.text)
236138
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_36$a, vue$1.toDisplayString(item.text), 1 /* TEXT */))
236372
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_39$8, vue$1.toDisplayString(item.text), 1 /* TEXT */))
236139
236373
  : vue$1.createCommentVNode("v-if", true)
236140
236374
  ]),
236141
236375
  _: 2 /* DYNAMIC */
236142
236376
  }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */))
236143
236377
  ]))
236144
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_37$a, [
236378
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_40$7, [
236145
236379
  (item.label)
236146
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_38$a, vue$1.toDisplayString(item.label), 1 /* TEXT */))
236380
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_41$5, vue$1.toDisplayString(item.label), 1 /* TEXT */))
236147
236381
  : vue$1.createCommentVNode("v-if", true),
236148
236382
  (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent(item.tag), vue$1.mergeProps({ class: "cn-record-list__inline-title" }, { ref_for: true }, item.attrs), {
236149
236383
  default: vue$1.withCtx(() => [
@@ -236167,21 +236401,21 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236167
236401
  class: "cn-record-list__bar-fill",
236168
236402
  style: vue$1.normalizeStyle({ width: `${item.bar.share}%` })
236169
236403
  }, null, 4 /* STYLE */)
236170
- ], 10 /* CLASS, PROPS */, _hoisted_39$8))
236404
+ ], 10 /* CLASS, PROPS */, _hoisted_42$5))
236171
236405
  : vue$1.createCommentVNode("v-if", true)
236172
236406
  ]))
236173
236407
  }), 128 /* KEYED_FRAGMENT */))
236174
- ], 8 /* PROPS */, _hoisted_9$1I)
236408
+ ], 8 /* PROPS */, _hoisted_12$19)
236175
236409
  ], 64 /* STABLE_FRAGMENT */))
236176
236410
  }), 128 /* KEYED_FRAGMENT */)),
236177
236411
  ($data.actionError)
236178
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_40$7, vue$1.toDisplayString($data.actionError), 1 /* TEXT */))
236412
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_43$4, vue$1.toDisplayString($data.actionError), 1 /* TEXT */))
236179
236413
  : vue$1.createCommentVNode("v-if", true),
236180
236414
  ($options.footnote && !$data.error && !$options.absent && $data.rows.length > 0)
236181
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_41$5, vue$1.toDisplayString($options.footnote), 1 /* TEXT */))
236415
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_44$4, vue$1.toDisplayString($options.footnote), 1 /* TEXT */))
236182
236416
  : vue$1.createCommentVNode("v-if", true),
236183
236417
  ($options.footerAction && !$data.error)
236184
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_42$5, [
236418
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_45$2, [
236185
236419
  vue$1.createVNode(_component_NcButton, {
236186
236420
  variant: "secondary",
236187
236421
  disabled: $data.footerDisabled,
@@ -236213,7 +236447,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236213
236447
  id: $data.footerReasonId,
236214
236448
  class: "cn-record-list__footer-reason",
236215
236449
  "data-testid": "cn-record-list-footer-reason"
236216
- }, vue$1.toDisplayString($options.footerAction.reason), 9 /* TEXT, PROPS */, _hoisted_43$4))
236450
+ }, vue$1.toDisplayString($options.footerAction.reason), 9 /* TEXT, PROPS */, _hoisted_46$2))
236217
236451
  : vue$1.createCommentVNode("v-if", true)
236218
236452
  ]))
236219
236453
  : vue$1.createCommentVNode("v-if", true)
@@ -236221,7 +236455,7 @@ function render$3H(_ctx, _cache, $props, $setup, $data, $options) {
236221
236455
  }
236222
236456
 
236223
236457
  script$3I.render = render$3H;
236224
- script$3I.__scopeId = "data-v-1484103e";
236458
+ script$3I.__scopeId = "data-v-0cb81a45";
236225
236459
  const __sfc_main$3I = script$3I;
236226
236460
 
236227
236461
  /**
@@ -240119,8 +240353,8 @@ const _hoisted_18$E = {
240119
240353
  "data-testid": "cn-attention-flag-history"
240120
240354
  };
240121
240355
  const _hoisted_19$B = ["data-act"];
240122
- const _hoisted_20$u = { class: "cn-attention-flag__lead" };
240123
- const _hoisted_21$u = { class: "cn-attention-flag__muted" };
240356
+ const _hoisted_20$v = { class: "cn-attention-flag__lead" };
240357
+ const _hoisted_21$v = { class: "cn-attention-flag__muted" };
240124
240358
 
240125
240359
  function render$3w(_ctx, _cache, $props, $setup, $data, $options) {
240126
240360
  const _component_FlagOutline = vue$1.resolveComponent("FlagOutline");
@@ -240210,8 +240444,8 @@ function render$3w(_ctx, _cache, $props, $setup, $data, $options) {
240210
240444
  key: `${row.moment}-${index}`,
240211
240445
  "data-act": row.act
240212
240446
  }, [
240213
- vue$1.createElementVNode("span", _hoisted_20$u, vue$1.toDisplayString(row.act === 'cleared' ? $options.label('cleared') : $options.label('raised')), 1 /* TEXT */),
240214
- vue$1.createElementVNode("span", _hoisted_21$u, vue$1.toDisplayString(row.reason), 1 /* TEXT */)
240447
+ vue$1.createElementVNode("span", _hoisted_20$v, vue$1.toDisplayString(row.act === 'cleared' ? $options.label('cleared') : $options.label('raised')), 1 /* TEXT */),
240448
+ vue$1.createElementVNode("span", _hoisted_21$v, vue$1.toDisplayString(row.reason), 1 /* TEXT */)
240215
240449
  ], 8 /* PROPS */, _hoisted_19$B))
240216
240450
  }), 128 /* KEYED_FRAGMENT */))
240217
240451
  ]))
@@ -252404,6 +252638,13 @@ var translations$s = {
252404
252638
  "This could not be read: {reason}": "This could not be read: {reason}",
252405
252639
  "Still open": "Still open",
252406
252640
  "The checklist could not be read.": "The checklist could not be read.",
252641
+ "Flag it with a reason, so it stands out to everyone who works on it.": "Flag it with a reason, so it stands out to everyone who works on it.",
252642
+ "Clear the flag with a reason once it no longer needs attention.": "Clear the flag with a reason once it no longer needs attention.",
252643
+ "Compose mail": "Compose mail",
252644
+ "Link mail": "Link mail",
252645
+ "Enter a quarter as YYYY-Qn, for example 2026-Q3.": "Enter a quarter as YYYY-Qn, for example 2026-Q3.",
252646
+ "Enter a year as four digits, for example 2026.": "Enter a year as four digits, for example 2026.",
252647
+ "This value has the wrong form.": "This value has the wrong form.",
252407
252648
  "The value for {key} must be above {min}.": "The value for {key} must be above {min}.",
252408
252649
  "Add a row": "Add a row",
252409
252650
  Key: "Key",
@@ -252413,14 +252654,7 @@ var translations$s = {
252413
252654
  "How this app compares": "How this app compares",
252414
252655
  "This field is required": "This field is required",
252415
252656
  "Creating…": "Creating…",
252416
- "This could not be created. Try again.": "This could not be created. Try again.",
252417
- "Flag it with a reason, so it stands out to everyone who works on it.": "Flag it with a reason, so it stands out to everyone who works on it.",
252418
- "Clear the flag with a reason once it no longer needs attention.": "Clear the flag with a reason once it no longer needs attention.",
252419
- "Compose mail": "Compose mail",
252420
- "Link mail": "Link mail",
252421
- "Enter a quarter as YYYY-Qn, for example 2026-Q3.": "Enter a quarter as YYYY-Qn, for example 2026-Q3.",
252422
- "Enter a year as four digits, for example 2026.": "Enter a year as four digits, for example 2026.",
252423
- "This value has the wrong form.": "This value has the wrong form."
252657
+ "This could not be created. Try again.": "This could not be created. Try again."
252424
252658
  };
252425
252659
  var plurals$1 = {
252426
252660
  "{count} member": [
@@ -255220,6 +255454,13 @@ var translations$c = {
255220
255454
  "This could not be read: {reason}": "Dit kon niet worden gelezen: {reason}",
255221
255455
  "Still open": "Nog open",
255222
255456
  "The checklist could not be read.": "De lijst kon niet worden gelezen.",
255457
+ "Flag it with a reason, so it stands out to everyone who works on it.": "Markeer het met een reden, zodat het opvalt bij iedereen die eraan werkt.",
255458
+ "Clear the flag with a reason once it no longer needs attention.": "Haal de markering weg met een reden zodra het geen aandacht meer nodig heeft.",
255459
+ "Compose mail": "Mail opstellen",
255460
+ "Link mail": "Mail koppelen",
255461
+ "Enter a quarter as YYYY-Qn, for example 2026-Q3.": "Vul een kwartaal in als JJJJ-Qn, bijvoorbeeld 2026-Q3.",
255462
+ "Enter a year as four digits, for example 2026.": "Vul een jaar in met vier cijfers, bijvoorbeeld 2026.",
255463
+ "This value has the wrong form.": "Deze waarde heeft niet de goede vorm.",
255223
255464
  "The value for {key} must be above {min}.": "De waarde voor {key} moet hoger zijn dan {min}.",
255224
255465
  "Add a row": "Een rij toevoegen",
255225
255466
  Key: "Sleutel",
@@ -255229,14 +255470,7 @@ var translations$c = {
255229
255470
  "How this app compares": "Hoe deze app zich verhoudt",
255230
255471
  "This field is required": "Dit veld is verplicht",
255231
255472
  "Creating…": "Aanmaken…",
255232
- "This could not be created. Try again.": "Dit kon niet worden aangemaakt. Probeer het opnieuw.",
255233
- "Flag it with a reason, so it stands out to everyone who works on it.": "Markeer het met een reden, zodat het opvalt bij iedereen die eraan werkt.",
255234
- "Clear the flag with a reason once it no longer needs attention.": "Haal de markering weg met een reden zodra het geen aandacht meer nodig heeft.",
255235
- "Compose mail": "Mail opstellen",
255236
- "Link mail": "Mail koppelen",
255237
- "Enter a quarter as YYYY-Qn, for example 2026-Q3.": "Vul een kwartaal in als JJJJ-Qn, bijvoorbeeld 2026-Q3.",
255238
- "Enter a year as four digits, for example 2026.": "Vul een jaar in met vier cijfers, bijvoorbeeld 2026.",
255239
- "This value has the wrong form.": "Deze waarde heeft niet de goede vorm."
255473
+ "This could not be created. Try again.": "Dit kon niet worden aangemaakt. Probeer het opnieuw."
255240
255474
  };
255241
255475
  var plurals = {
255242
255476
  "{count} member": [
@@ -261260,13 +261494,13 @@ const _hoisted_16$I = {
261260
261494
  const _hoisted_17$E = { class: "cn-schema-form__cond-accordion-body" };
261261
261495
  const _hoisted_18$B = { class: "cn-schema-form__cond-action-header" };
261262
261496
  const _hoisted_19$z = { class: "cn-schema-form__cond-action-name" };
261263
- const _hoisted_20$t = {
261497
+ const _hoisted_20$u = {
261264
261498
  key: 0,
261265
261499
  class: "cn-schema-form__cond-empty"
261266
261500
  };
261267
- const _hoisted_21$t = { class: "cn-schema-form__cond-rule-header" };
261268
- const _hoisted_22$t = { class: "cn-schema-form__group-badge" };
261269
- const _hoisted_23$q = { class: "cn-schema-form__cond-rule-group-select" };
261501
+ const _hoisted_21$u = { class: "cn-schema-form__cond-rule-header" };
261502
+ const _hoisted_22$u = { class: "cn-schema-form__group-badge" };
261503
+ const _hoisted_23$r = { class: "cn-schema-form__cond-rule-group-select" };
261270
261504
  const _hoisted_24$o = { class: "cn-schema-form__cond-match-list" };
261271
261505
  const _hoisted_25$l = {
261272
261506
  key: 0,
@@ -261556,7 +261790,7 @@ function render$36(_ctx, _cache, $props, $setup, $data, $options) {
261556
261790
  }, 8 /* PROPS */, ["onClick"])
261557
261791
  ]),
261558
261792
  ($options.getConditionalRules(action).length === 0)
261559
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$t, vue$1.toDisplayString($options.t('nextcloud-vue', 'No conditional rules for {action}', { action })), 1 /* TEXT */))
261793
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$u, vue$1.toDisplayString($options.t('nextcloud-vue', 'No conditional rules for {action}', { action })), 1 /* TEXT */))
261560
261794
  : vue$1.createCommentVNode("v-if", true),
261561
261795
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.getConditionalRules(action), ({ rule, originalIndex }, ruleIdx) => {
261562
261796
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
@@ -261567,9 +261801,9 @@ function render$36(_ctx, _cache, $props, $setup, $data, $options) {
261567
261801
  'cn-schema-form__cond-rule-card--admin': rule.group === 'admin',
261568
261802
  }])
261569
261803
  }, [
261570
- vue$1.createElementVNode("div", _hoisted_21$t, [
261571
- vue$1.createElementVNode("span", _hoisted_22$t, vue$1.toDisplayString(rule.group), 1 /* TEXT */),
261572
- vue$1.createElementVNode("div", _hoisted_23$q, [
261804
+ vue$1.createElementVNode("div", _hoisted_21$u, [
261805
+ vue$1.createElementVNode("span", _hoisted_22$u, vue$1.toDisplayString(rule.group), 1 /* TEXT */),
261806
+ vue$1.createElementVNode("div", _hoisted_23$r, [
261573
261807
  vue$1.createVNode(_component_NcSelect, {
261574
261808
  modelValue: $options.getGroupOption(rule.group),
261575
261809
  options: $options.allGroupOptions,
@@ -262479,9 +262713,9 @@ const _hoisted_16$H = { class: "cn-schema-form__detail-value" };
262479
262713
  const _hoisted_17$D = { class: "cn-schema-form__detail-item" };
262480
262714
  const _hoisted_18$A = { class: "cn-schema-form__detail-label" };
262481
262715
  const _hoisted_19$y = { class: "cn-schema-form__detail-value" };
262482
- const _hoisted_20$s = { class: "cn-schema-form__detail-item" };
262483
- const _hoisted_21$s = { class: "cn-schema-form__detail-label" };
262484
- const _hoisted_22$s = { class: "cn-schema-form__detail-value" };
262716
+ const _hoisted_20$t = { class: "cn-schema-form__detail-item" };
262717
+ const _hoisted_21$t = { class: "cn-schema-form__detail-label" };
262718
+ const _hoisted_22$t = { class: "cn-schema-form__detail-value" };
262485
262719
 
262486
262720
  function render$35(_ctx, _cache, $props, $setup, $data, $options) {
262487
262721
  const _component_Check = vue$1.resolveComponent("Check");
@@ -262585,9 +262819,9 @@ function render$35(_ctx, _cache, $props, $setup, $data, $options) {
262585
262819
  vue$1.createElementVNode("span", _hoisted_18$A, vue$1.toDisplayString($options.t('nextcloud-vue', 'Version:')), 1 /* TEXT */),
262586
262820
  vue$1.createElementVNode("span", _hoisted_19$y, vue$1.toDisplayString($data.schemaItem.version || $options.t('nextcloud-vue', 'Not set')), 1 /* TEXT */)
262587
262821
  ]),
262588
- vue$1.createElementVNode("div", _hoisted_20$s, [
262589
- vue$1.createElementVNode("span", _hoisted_21$s, vue$1.toDisplayString($options.t('nextcloud-vue', 'Owner:')), 1 /* TEXT */),
262590
- vue$1.createElementVNode("span", _hoisted_22$s, vue$1.toDisplayString($data.schemaItem.owner || $options.t('nextcloud-vue', 'Not set')), 1 /* TEXT */)
262822
+ vue$1.createElementVNode("div", _hoisted_20$t, [
262823
+ vue$1.createElementVNode("span", _hoisted_21$t, vue$1.toDisplayString($options.t('nextcloud-vue', 'Owner:')), 1 /* TEXT */),
262824
+ vue$1.createElementVNode("span", _hoisted_22$t, vue$1.toDisplayString($data.schemaItem.owner || $options.t('nextcloud-vue', 'Not set')), 1 /* TEXT */)
262591
262825
  ])
262592
262826
  ])
262593
262827
  ]),
@@ -263398,9 +263632,9 @@ const _hoisted_19$x = {
263398
263632
  key: 1,
263399
263633
  class: "cn-edit-data__list"
263400
263634
  };
263401
- const _hoisted_20$r = { class: "cn-edit-data__schema-name" };
263402
- const _hoisted_21$r = { class: "cn-edit-data__schema-meta" };
263403
- const _hoisted_22$r = { class: "cn-edit-data__row-actions" };
263635
+ const _hoisted_20$s = { class: "cn-edit-data__schema-name" };
263636
+ const _hoisted_21$s = { class: "cn-edit-data__schema-meta" };
263637
+ const _hoisted_22$s = { class: "cn-edit-data__row-actions" };
263404
263638
 
263405
263639
  function render$34(_ctx, _cache, $props, $setup, $data, $options) {
263406
263640
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -263635,11 +263869,11 @@ function render$34(_ctx, _cache, $props, $setup, $data, $options) {
263635
263869
  key: schema.id,
263636
263870
  class: "cn-edit-data__row"
263637
263871
  }, [
263638
- vue$1.createElementVNode("span", _hoisted_20$r, [
263872
+ vue$1.createElementVNode("span", _hoisted_20$s, [
263639
263873
  vue$1.createElementVNode("strong", null, vue$1.toDisplayString(schema.title || schema.slug), 1 /* TEXT */),
263640
- vue$1.createElementVNode("span", _hoisted_21$r, vue$1.toDisplayString($options.propertyCount(schema)), 1 /* TEXT */)
263874
+ vue$1.createElementVNode("span", _hoisted_21$s, vue$1.toDisplayString($options.propertyCount(schema)), 1 /* TEXT */)
263641
263875
  ]),
263642
- vue$1.createElementVNode("div", _hoisted_22$r, [
263876
+ vue$1.createElementVNode("div", _hoisted_22$s, [
263643
263877
  vue$1.createVNode(_component_NcButton, {
263644
263878
  variant: "tertiary",
263645
263879
  disabled: $data.busy,
@@ -298108,17 +298342,17 @@ const _hoisted_19$w = {
298108
298342
  class: "cn-run-sidebar__error",
298109
298343
  "data-testid": "flow-object-unaccounted"
298110
298344
  };
298111
- const _hoisted_20$q = {
298345
+ const _hoisted_20$r = {
298112
298346
  key: 0,
298113
298347
  class: "cn-run-sidebar__hint",
298114
298348
  "data-testid": "flow-run-tasks-empty"
298115
298349
  };
298116
- const _hoisted_21$q = {
298350
+ const _hoisted_21$r = {
298117
298351
  key: 1,
298118
298352
  class: "cn-run-sidebar__list"
298119
298353
  };
298120
- const _hoisted_22$q = ["href"];
298121
- const _hoisted_23$p = {
298354
+ const _hoisted_22$r = ["href"];
298355
+ const _hoisted_23$q = {
298122
298356
  key: 1,
298123
298357
  class: "cn-run-sidebar__hint"
298124
298358
  };
@@ -298257,8 +298491,8 @@ function render$2G(_ctx, _cache, $props, $setup, $data, $options) {
298257
298491
  }, vue$1.createSlots({
298258
298492
  default: vue$1.withCtx(() => [
298259
298493
  (!$setup.store.runTasks.length)
298260
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$q, vue$1.toDisplayString($options.t('nextcloud-vue', 'This run raised no tasks.')), 1 /* TEXT */))
298261
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$q, [
298494
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$r, vue$1.toDisplayString($options.t('nextcloud-vue', 'This run raised no tasks.')), 1 /* TEXT */))
298495
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_21$r, [
298262
298496
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($setup.store.runTasks, (task) => {
298263
298497
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
298264
298498
  key: task.uuid
@@ -298272,7 +298506,7 @@ function render$2G(_ctx, _cache, $props, $setup, $data, $options) {
298272
298506
  class: vue$1.normalizeClass(`cn-run-sidebar__status cn-run-sidebar__status--${task.state}`)
298273
298507
  }, vue$1.toDisplayString(task.state), 3 /* TEXT, CLASS */),
298274
298508
  vue$1.createElementVNode("span", null, vue$1.toDisplayString(task.title || task.uuid), 1 /* TEXT */)
298275
- ], 8 /* PROPS */, _hoisted_22$q)
298509
+ ], 8 /* PROPS */, _hoisted_22$r)
298276
298510
  ]))
298277
298511
  }), 128 /* KEYED_FRAGMENT */))
298278
298512
  ]))
@@ -298316,7 +298550,7 @@ function render$2G(_ctx, _cache, $props, $setup, $data, $options) {
298316
298550
  }))
298317
298551
  : vue$1.createCommentVNode("v-if", true),
298318
298552
  (!$setup.store.steps.length)
298319
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$p, vue$1.toDisplayString($options.t('nextcloud-vue', 'This run recorded no steps.')), 1 /* TEXT */))
298553
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$q, vue$1.toDisplayString($options.t('nextcloud-vue', 'This run recorded no steps.')), 1 /* TEXT */))
298320
298554
  : (vue$1.openBlock(), vue$1.createElementBlock("ol", _hoisted_24$n, [
298321
298555
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($setup.store.steps, (step, i) => {
298322
298556
  return (vue$1.openBlock(), vue$1.createElementBlock("li", { key: i }, [
@@ -300488,16 +300722,16 @@ const _hoisted_19$v = {
300488
300722
  key: 0,
300489
300723
  class: "cn-credentials__item-toggle"
300490
300724
  };
300491
- const _hoisted_20$p = {
300725
+ const _hoisted_20$q = {
300492
300726
  key: 0,
300493
300727
  class: "cn-credentials__also muted"
300494
300728
  };
300495
- const _hoisted_21$p = { class: "cn-credentials__section" };
300496
- const _hoisted_22$p = {
300729
+ const _hoisted_21$q = { class: "cn-credentials__section" };
300730
+ const _hoisted_22$q = {
300497
300731
  key: 1,
300498
300732
  class: "cn-credentials__wizard"
300499
300733
  };
300500
- const _hoisted_23$o = { class: "cn-credentials__section-title" };
300734
+ const _hoisted_23$p = { class: "cn-credentials__section-title" };
300501
300735
  const _hoisted_24$m = { class: "cn-credentials__grid" };
300502
300736
  const _hoisted_25$j = ["onClick"];
300503
300737
  const _hoisted_26$h = { class: "cn-credentials__grid-title" };
@@ -300649,7 +300883,7 @@ function render$2C(_ctx, _cache, $props, $setup, $data, $options) {
300649
300883
  _: 1 /* STABLE */
300650
300884
  }, 8 /* PROPS */, ["modelValue", "disabled", "onUpdate:modelValue"]),
300651
300885
  ($options.otherApps(cred).length)
300652
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$p, vue$1.toDisplayString($options.t('nextcloud-vue', 'Also allowed for: {apps}', { apps: $options.otherApps(cred).join(', ') })), 1 /* TEXT */))
300886
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_20$q, vue$1.toDisplayString($options.t('nextcloud-vue', 'Also allowed for: {apps}', { apps: $options.otherApps(cred).join(', ') })), 1 /* TEXT */))
300653
300887
  : vue$1.createCommentVNode("v-if", true)
300654
300888
  ]))
300655
300889
  : (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
@@ -300669,7 +300903,7 @@ function render$2C(_ctx, _cache, $props, $setup, $data, $options) {
300669
300903
  }), 128 /* KEYED_FRAGMENT */))
300670
300904
  ]))
300671
300905
  ]),
300672
- vue$1.createElementVNode("section", _hoisted_21$p, [
300906
+ vue$1.createElementVNode("section", _hoisted_21$q, [
300673
300907
  (!$data.adding)
300674
300908
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
300675
300909
  key: 0,
@@ -300684,10 +300918,10 @@ function render$2C(_ctx, _cache, $props, $setup, $data, $options) {
300684
300918
  ]),
300685
300919
  _: 1 /* STABLE */
300686
300920
  }, 8 /* PROPS */, ["onClick"]))
300687
- : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$p, [
300921
+ : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_22$q, [
300688
300922
  ($data.wizardStep === 'provider')
300689
300923
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 0 }, [
300690
- vue$1.createElementVNode("h4", _hoisted_23$o, vue$1.toDisplayString($options.t('nextcloud-vue', 'Which credential do you want to add?')), 1 /* TEXT */),
300924
+ vue$1.createElementVNode("h4", _hoisted_23$p, vue$1.toDisplayString($options.t('nextcloud-vue', 'Which credential do you want to add?')), 1 /* TEXT */),
300691
300925
  vue$1.createElementVNode("div", _hoisted_24$m, [
300692
300926
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.providerGrid, (p) => {
300693
300927
  return (vue$1.openBlock(), vue$1.createElementBlock("button", {
@@ -305308,10 +305542,10 @@ const _hoisted_16$D = {
305308
305542
  const _hoisted_17$z = { class: "cn-version-info__label" };
305309
305543
  const _hoisted_18$w = { class: "cn-version-info__value" };
305310
305544
  const _hoisted_19$u = ["href"];
305311
- const _hoisted_20$o = ["href"];
305312
- const _hoisted_21$o = { class: "cn-admin-settings-shell__support-line" };
305313
- const _hoisted_22$o = ["href"];
305314
- const _hoisted_23$n = {
305545
+ const _hoisted_20$p = ["href"];
305546
+ const _hoisted_21$p = { class: "cn-admin-settings-shell__support-line" };
305547
+ const _hoisted_22$p = ["href"];
305548
+ const _hoisted_23$o = {
305315
305549
  key: 0,
305316
305550
  class: "cn-admin-settings-shell__support-line"
305317
305551
  };
@@ -305556,7 +305790,7 @@ function render$2w(_ctx, _cache, $props, $setup, $data, $options) {
305556
305790
  vue$1.createTextVNode(", " + vue$1.toDisplayString($options.slaInline) + " ", 1 /* TEXT */),
305557
305791
  vue$1.createElementVNode("a", {
305558
305792
  href: `mailto:${$props.slaEmail}`
305559
- }, vue$1.toDisplayString($props.slaEmail), 9 /* TEXT, PROPS */, _hoisted_20$o)
305793
+ }, vue$1.toDisplayString($props.slaEmail), 9 /* TEXT, PROPS */, _hoisted_20$p)
305560
305794
  ], 64 /* STABLE_FRAGMENT */))
305561
305795
  : vue$1.createCommentVNode("v-if", true)
305562
305796
  ])
@@ -305589,14 +305823,14 @@ function render$2w(_ctx, _cache, $props, $setup, $data, $options) {
305589
305823
  "data-testid": "cn-admin-settings-support"
305590
305824
  }, {
305591
305825
  default: vue$1.withCtx(() => [
305592
- vue$1.createElementVNode("p", _hoisted_21$o, [
305826
+ vue$1.createElementVNode("p", _hoisted_21$p, [
305593
305827
  vue$1.createTextVNode(vue$1.toDisplayString($options.supportLine) + " ", 1 /* TEXT */),
305594
305828
  vue$1.createElementVNode("a", {
305595
305829
  href: `mailto:${$props.supportEmail}`
305596
- }, vue$1.toDisplayString($props.supportEmail), 9 /* TEXT, PROPS */, _hoisted_22$o)
305830
+ }, vue$1.toDisplayString($props.supportEmail), 9 /* TEXT, PROPS */, _hoisted_22$p)
305597
305831
  ]),
305598
305832
  ($props.slaEmail)
305599
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$n, [
305833
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$o, [
305600
305834
  vue$1.createTextVNode(vue$1.toDisplayString($options.slaLine) + " ", 1 /* TEXT */),
305601
305835
  vue$1.createElementVNode("a", {
305602
305836
  href: `mailto:${$props.slaEmail}`
@@ -307321,10 +307555,10 @@ const _hoisted_16$C = ["data-card-id", "draggable", "onDragstart", "onKeydown"];
307321
307555
  const _hoisted_17$y = { class: "cn-board-view__card-head" };
307322
307556
  const _hoisted_18$v = ["data-card-id", "checked", "aria-label", "onChange"];
307323
307557
  const _hoisted_19$t = ["data-card-id", "aria-label", "onClick", "onAuxclick"];
307324
- const _hoisted_20$n = { class: "cn-board-view__menu-wrap" };
307325
- const _hoisted_21$n = ["data-card-id", "aria-expanded", "aria-label", "onClick"];
307326
- const _hoisted_22$n = ["aria-label", "onKeydown"];
307327
- const _hoisted_23$m = ["aria-label"];
307558
+ const _hoisted_20$o = { class: "cn-board-view__menu-wrap" };
307559
+ const _hoisted_21$o = ["data-card-id", "aria-expanded", "aria-label", "onClick"];
307560
+ const _hoisted_22$o = ["aria-label", "onKeydown"];
307561
+ const _hoisted_23$n = ["aria-label"];
307328
307562
  const _hoisted_24$k = {
307329
307563
  class: "cn-board-view__menu-heading",
307330
307564
  "aria-hidden": "true"
@@ -307532,7 +307766,7 @@ function render$2v(_ctx, _cache, $props, $setup, $data, $options) {
307532
307766
  onAction: $options.onCardAction
307533
307767
  }, null, 8 /* PROPS */, ["actions", "row", "rowLabel", "onAction"]))
307534
307768
  : vue$1.createCommentVNode("v-if", true),
307535
- vue$1.createElementVNode("span", _hoisted_20$n, [
307769
+ vue$1.createElementVNode("span", _hoisted_20$o, [
307536
307770
  vue$1.createElementVNode("button", {
307537
307771
  type: "button",
307538
307772
  class: "cn-board-view__menu-button",
@@ -307547,7 +307781,7 @@ function render$2v(_ctx, _cache, $props, $setup, $data, $options) {
307547
307781
  class: "cn-board-view__menu-dots",
307548
307782
  "aria-hidden": "true"
307549
307783
  }, "⋯", -1 /* CACHED */)
307550
- ]))], 8 /* PROPS */, _hoisted_21$n),
307784
+ ]))], 8 /* PROPS */, _hoisted_21$o),
307551
307785
  ($options.isMenuOpen(card))
307552
307786
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", {
307553
307787
  key: 0,
@@ -307584,7 +307818,7 @@ function render$2v(_ctx, _cache, $props, $setup, $data, $options) {
307584
307818
  : vue$1.createCommentVNode("v-if", true)
307585
307819
  ], 10 /* CLASS, PROPS */, _hoisted_25$i))
307586
307820
  }), 128 /* KEYED_FRAGMENT */))
307587
- ], 8 /* PROPS */, _hoisted_23$m))
307821
+ ], 8 /* PROPS */, _hoisted_23$n))
307588
307822
  : vue$1.createCommentVNode("v-if", true),
307589
307823
  vue$1.createElementVNode("button", {
307590
307824
  type: "button",
@@ -307593,7 +307827,7 @@ function render$2v(_ctx, _cache, $props, $setup, $data, $options) {
307593
307827
  "data-testid": "cn-board-menu-new-tab",
307594
307828
  onClick: $event => ($options.onMenuOpenNewTab(card))
307595
307829
  }, vue$1.toDisplayString($options.openInNewTabLabel), 9 /* TEXT, PROPS */, _hoisted_28$b)
307596
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_22$n))
307830
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_22$o))
307597
307831
  : vue$1.createCommentVNode("v-if", true)
307598
307832
  ])
307599
307833
  ]),
@@ -309607,17 +309841,17 @@ const _hoisted_18$u = {
309607
309841
  "aria-hidden": "true"
309608
309842
  };
309609
309843
  const _hoisted_19$s = { class: "cn-ordered-list-field__text" };
309610
- const _hoisted_20$m = { class: "cn-ordered-list-field__name" };
309611
- const _hoisted_21$m = {
309844
+ const _hoisted_20$n = { class: "cn-ordered-list-field__name" };
309845
+ const _hoisted_21$n = {
309612
309846
  key: 0,
309613
309847
  class: "cn-ordered-list-field__description"
309614
309848
  };
309615
- const _hoisted_22$m = {
309849
+ const _hoisted_22$n = {
309616
309850
  key: 0,
309617
309851
  class: "cn-ordered-list-field__hint",
309618
309852
  "data-testid": "cn-ordered-list-hint"
309619
309853
  };
309620
- const _hoisted_23$l = {
309854
+ const _hoisted_23$m = {
309621
309855
  class: "hidden-visually",
309622
309856
  "aria-live": "polite",
309623
309857
  "data-testid": "cn-ordered-list-live"
@@ -309767,9 +310001,9 @@ function render$2q(_ctx, _cache, $props, $setup, $data, $options) {
309767
310001
  ]))
309768
310002
  : vue$1.createCommentVNode("v-if", true),
309769
310003
  vue$1.createElementVNode("span", _hoisted_19$s, [
309770
- vue$1.createElementVNode("span", _hoisted_20$m, vue$1.toDisplayString(option.label), 1 /* TEXT */),
310004
+ vue$1.createElementVNode("span", _hoisted_20$n, vue$1.toDisplayString(option.label), 1 /* TEXT */),
309771
310005
  (option.description)
309772
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$m, vue$1.toDisplayString(option.description), 1 /* TEXT */))
310006
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$n, vue$1.toDisplayString(option.description), 1 /* TEXT */))
309773
310007
  : vue$1.createCommentVNode("v-if", true)
309774
310008
  ])
309775
310009
  ])
@@ -309777,11 +310011,11 @@ function render$2q(_ctx, _cache, $props, $setup, $data, $options) {
309777
310011
  _: 1 /* STABLE */
309778
310012
  }, 8 /* PROPS */, ["options", "inputLabel", "placeholder", "loading", "filterable", "onSearch", "onUpdate:modelValue"]),
309779
310013
  ($props.addHint)
309780
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$m, vue$1.toDisplayString($props.addHint), 1 /* TEXT */))
310014
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$n, vue$1.toDisplayString($props.addHint), 1 /* TEXT */))
309781
310015
  : vue$1.createCommentVNode("v-if", true)
309782
310016
  ]))
309783
310017
  : vue$1.createCommentVNode("v-if", true),
309784
- vue$1.createElementVNode("p", _hoisted_23$l, vue$1.toDisplayString($data.announcement), 1 /* TEXT */)
310018
+ vue$1.createElementVNode("p", _hoisted_23$m, vue$1.toDisplayString($data.announcement), 1 /* TEXT */)
309785
310019
  ]))
309786
310020
  }
309787
310021
 
@@ -313089,10 +313323,10 @@ const _hoisted_19$r = {
313089
313323
  key: 3,
313090
313324
  class: "cn-federation-status__list"
313091
313325
  };
313092
- const _hoisted_20$l = ["data-status", "onClick"];
313093
- const _hoisted_21$l = { class: "cn-federation-status__node-body" };
313094
- const _hoisted_22$l = { class: "cn-federation-status__node-name" };
313095
- const _hoisted_23$k = {
313326
+ const _hoisted_20$m = ["data-status", "onClick"];
313327
+ const _hoisted_21$m = { class: "cn-federation-status__node-body" };
313328
+ const _hoisted_22$m = { class: "cn-federation-status__node-name" };
313329
+ const _hoisted_23$l = {
313096
313330
  key: 0,
313097
313331
  class: "cn-federation-status__node-url"
313098
313332
  };
@@ -313157,10 +313391,10 @@ function render$2j(_ctx, _cache, $props, $setup, $data, $options) {
313157
313391
  vue$1.createElementVNode("span", {
313158
313392
  class: vue$1.normalizeClass(["cn-federation-status__node-dot cn-federation-status__dot", 'cn-federation-status__dot--' + $options.normaliseStatus(node.status)])
313159
313393
  }, null, 2 /* CLASS */),
313160
- vue$1.createElementVNode("div", _hoisted_21$l, [
313161
- vue$1.createElementVNode("span", _hoisted_22$l, vue$1.toDisplayString(node.name || node.id), 1 /* TEXT */),
313394
+ vue$1.createElementVNode("div", _hoisted_21$m, [
313395
+ vue$1.createElementVNode("span", _hoisted_22$m, vue$1.toDisplayString(node.name || node.id), 1 /* TEXT */),
313162
313396
  (node.url)
313163
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_23$k, vue$1.toDisplayString(node.url), 1 /* TEXT */))
313397
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_23$l, vue$1.toDisplayString(node.url), 1 /* TEXT */))
313164
313398
  : vue$1.createCommentVNode("v-if", true),
313165
313399
  (node.message)
313166
313400
  ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_24$j, vue$1.toDisplayString(node.message), 1 /* TEXT */))
@@ -313170,7 +313404,7 @@ function render$2j(_ctx, _cache, $props, $setup, $data, $options) {
313170
313404
  : vue$1.createCommentVNode("v-if", true)
313171
313405
  ]),
313172
313406
  vue$1.createElementVNode("span", _hoisted_26$f, vue$1.toDisplayString($options.statusLabel(node.status)), 1 /* TEXT */)
313173
- ], 10 /* CLASS, PROPS */, _hoisted_20$l))
313407
+ ], 10 /* CLASS, PROPS */, _hoisted_20$m))
313174
313408
  }), 128 /* KEYED_FRAGMENT */))
313175
313409
  ]))
313176
313410
  ]))
@@ -324102,16 +324336,16 @@ const _hoisted_19$q = {
324102
324336
  key: 0,
324103
324337
  class: "cn-actions-bar__search"
324104
324338
  };
324105
- const _hoisted_20$k = ["placeholder", "value", "aria-label"];
324106
- const _hoisted_21$k = {
324339
+ const _hoisted_20$l = ["placeholder", "value", "aria-label"];
324340
+ const _hoisted_21$l = {
324107
324341
  key: 1,
324108
324342
  class: "cn-actions-bar__count"
324109
324343
  };
324110
- const _hoisted_22$k = {
324344
+ const _hoisted_22$l = {
324111
324345
  class: "cn-actions-bar__active-label",
324112
324346
  "data-testid": "cn-actions-bar-active-label"
324113
324347
  };
324114
- const _hoisted_23$j = { class: "cn-actions-bar__filter-chip-label" };
324348
+ const _hoisted_23$k = { class: "cn-actions-bar__filter-chip-label" };
324115
324349
  const _hoisted_24$i = ["aria-label", "onClick"];
324116
324350
  const _hoisted_25$g = {
324117
324351
  class: "cn-actions-bar__sr-status",
@@ -324612,22 +324846,22 @@ function render$2e(_ctx, _cache, $props, $setup, $data, $options) {
324612
324846
  value: $props.searchValue,
324613
324847
  "aria-label": $props.searchPlaceholder || $options.t('nextcloud-vue', 'Search in this list'),
324614
324848
  onInput: _cache[9] || (_cache[9] = (...args) => ($options.onSearchInput && $options.onSearchInput(...args)))
324615
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$k)
324849
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$l)
324616
324850
  ]))
324617
324851
  : ($props.showCount && $options.hasTotal && !$options.searchInToolbar)
324618
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$k, vue$1.toDisplayString($options.countText), 1 /* TEXT */))
324852
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$l, vue$1.toDisplayString($options.countText), 1 /* TEXT */))
324619
324853
  : vue$1.createCommentVNode("v-if", true),
324620
324854
  vue$1.renderSlot(_ctx.$slots, "after-search"),
324621
324855
  ($props.activeFilterChips.length > 0)
324622
324856
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 2 }, [
324623
- vue$1.createElementVNode("span", _hoisted_22$k, vue$1.toDisplayString($options.t('nextcloud-vue', 'Active:')), 1 /* TEXT */),
324857
+ vue$1.createElementVNode("span", _hoisted_22$l, vue$1.toDisplayString($options.t('nextcloud-vue', 'Active:')), 1 /* TEXT */),
324624
324858
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.activeFilterChips, (chip) => {
324625
324859
  return (vue$1.openBlock(), vue$1.createElementBlock("span", {
324626
324860
  key: chip.key,
324627
324861
  class: "cn-actions-bar__filter-chip",
324628
324862
  "data-testid": "cn-actions-bar-filter-chip"
324629
324863
  }, [
324630
- vue$1.createElementVNode("span", _hoisted_23$j, vue$1.toDisplayString(chip.label), 1 /* TEXT */),
324864
+ vue$1.createElementVNode("span", _hoisted_23$k, vue$1.toDisplayString(chip.label), 1 /* TEXT */),
324631
324865
  vue$1.createElementVNode("button", {
324632
324866
  type: "button",
324633
324867
  class: "cn-actions-bar__filter-chip-remove",
@@ -328093,16 +328327,16 @@ const _hoisted_16$y = {
328093
328327
  const _hoisted_17$u = { class: "cn-sidebar-columns__order-list" };
328094
328328
  const _hoisted_18$r = ["onDragstart", "onDrop"];
328095
328329
  const _hoisted_19$p = { class: "cn-sidebar-columns__order-label" };
328096
- const _hoisted_20$j = {
328330
+ const _hoisted_20$k = {
328097
328331
  key: 0,
328098
328332
  class: "cn-sidebar-columns__group cn-sidebar-columns__group--collapsible"
328099
328333
  };
328100
- const _hoisted_21$j = {
328334
+ const _hoisted_21$k = {
328101
328335
  key: 0,
328102
328336
  class: "cn-sidebar-columns__group-content"
328103
328337
  };
328104
- const _hoisted_22$j = ["onClick"];
328105
- const _hoisted_23$i = ["lang"];
328338
+ const _hoisted_22$k = ["onClick"];
328339
+ const _hoisted_23$j = ["lang"];
328106
328340
  const _hoisted_24$h = {
328107
328341
  key: 0,
328108
328342
  class: "cn-sidebar-columns__group-content"
@@ -328406,7 +328640,7 @@ function render$29(_ctx, _cache, $props, $setup, $data, $options) {
328406
328640
  ($options.allColumns.length > 0 || $options.allGroups.length > 0)
328407
328641
  ? (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 1 }, [
328408
328642
  ($options.allColumns.length > 0)
328409
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$j, [
328643
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$k, [
328410
328644
  vue$1.createElementVNode("div", {
328411
328645
  class: "cn-sidebar-columns__group-header",
328412
328646
  onClick: _cache[5] || (_cache[5] = $event => ($data.propertiesExpanded = !$data.propertiesExpanded))
@@ -328434,7 +328668,7 @@ function render$29(_ctx, _cache, $props, $setup, $data, $options) {
328434
328668
  }, 8 /* PROPS */, ["modelValue"])
328435
328669
  ]),
328436
328670
  ($data.propertiesExpanded)
328437
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$j, [
328671
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$k, [
328438
328672
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.allColumns, (col) => {
328439
328673
  return (vue$1.openBlock(), vue$1.createBlock(_component_NcCheckboxRadioSwitch, {
328440
328674
  key: col.key,
@@ -328471,7 +328705,7 @@ function render$29(_ctx, _cache, $props, $setup, $data, $options) {
328471
328705
  })),
328472
328706
  vue$1.createElementVNode("h4", {
328473
328707
  lang: $options.langOf(group.label)
328474
- }, vue$1.toDisplayString($options.shown(group.label)), 9 /* TEXT, PROPS */, _hoisted_23$i),
328708
+ }, vue$1.toDisplayString($options.shown(group.label)), 9 /* TEXT, PROPS */, _hoisted_23$j),
328475
328709
  vue$1.createVNode(_component_NcCheckboxRadioSwitch, {
328476
328710
  modelValue: $options.isGroupAllVisible(group.columns),
328477
328711
  class: "cn-sidebar-columns__select-all",
@@ -328483,7 +328717,7 @@ function render$29(_ctx, _cache, $props, $setup, $data, $options) {
328483
328717
  ]))]),
328484
328718
  _: 1 /* STABLE */
328485
328719
  }, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue"])
328486
- ], 8 /* PROPS */, _hoisted_22$j),
328720
+ ], 8 /* PROPS */, _hoisted_22$k),
328487
328721
  ($data.expandedGroups[group.id])
328488
328722
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_24$h, [
328489
328723
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(group.columns, (col) => {
@@ -331145,6 +331379,18 @@ var script$22 = {
331145
331379
  // The chips and the button are two roots under the board look.
331146
331380
  inheritAttrs: false,
331147
331381
 
331382
+ props: {
331383
+ /**
331384
+ * Whether the board look draws the saved views as chips. `false`
331385
+ * leaves only Save view, for a page whose views live in the side
331386
+ * panel (DqZaken).
331387
+ */
331388
+ chips: {
331389
+ type: Boolean,
331390
+ default: true,
331391
+ },
331392
+ },
331393
+
331148
331394
  emits: ['apply', 'save-request'],
331149
331395
 
331150
331396
  computed: {
@@ -331189,7 +331435,7 @@ function render$21(_ctx, _cache, $props, $setup, $data, $options) {
331189
331435
  const _component_NcButton = vue$1.resolveComponent("NcButton");
331190
331436
 
331191
331437
  return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, null, [
331192
- ($options.isBoardLook && $options.chipRows.length > 0)
331438
+ ($options.isBoardLook && $props.chips && $options.chipRows.length > 0)
331193
331439
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", {
331194
331440
  key: 0,
331195
331441
  class: "cn-saved-views__chips",
@@ -334495,6 +334741,19 @@ var script$1_ = {
334495
334741
  default: null,
334496
334742
  },
334497
334743
 
334744
+ /**
334745
+ * Whether the board look draws the saved views as chips in the toolbar
334746
+ * (manifest `config.savedViewChips`). `false` keeps only Save view,
334747
+ * for a page whose views live in the side panel's Weergaven tab
334748
+ * (DqZaken, DqZakenSorteren, DqZakenKaart, DqWerkbord, DqFilterBeheren).
334749
+ *
334750
+ * @spec openspec/changes/saved-view-chips-switch/specs/saved-views/spec.md#requirement-an-index-page-can-leave-the-saved-view-chips-out-of-the-toolbar
334751
+ */
334752
+ savedViewChips: {
334753
+ type: Boolean,
334754
+ default: true,
334755
+ },
334756
+
334498
334757
  /**
334499
334758
  * Where the quick-filter chips sit (manifest `config.quickFilterPlacement`).
334500
334759
  * `''` (the default) as before. `'toolbar'` keeps them on one row with
@@ -344997,18 +345256,18 @@ const _hoisted_19$n = {
344997
345256
  key: 0,
344998
345257
  class: "cn-index-page__filter-strip-count"
344999
345258
  };
345000
- const _hoisted_20$i = { class: "cn-index-page__shortcuts" };
345001
- const _hoisted_21$i = {
345259
+ const _hoisted_20$j = { class: "cn-index-page__shortcuts" };
345260
+ const _hoisted_21$j = {
345002
345261
  key: 0,
345003
345262
  class: "cn-index-page__folder-pane"
345004
345263
  };
345005
- const _hoisted_22$i = {
345264
+ const _hoisted_22$j = {
345006
345265
  key: 0,
345007
345266
  class: "cn-index-page__sort-source-note",
345008
345267
  role: "status",
345009
345268
  "data-testid": "cn-index-sort-source-note"
345010
345269
  };
345011
- const _hoisted_23$h = {
345270
+ const _hoisted_23$i = {
345012
345271
  key: 1,
345013
345272
  class: "cn-index-page__scope-heading",
345014
345273
  "data-testid": "cn-index-page-scope-heading"
@@ -345624,9 +345883,10 @@ function render$1Z(_ctx, _cache, $props, $setup, $data, $options) {
345624
345883
  currentUserId: $options.currentSavedViewsUserId,
345625
345884
  counts: $data.savedViewCounts,
345626
345885
  selectedViewId: $data.appliedSavedViewId,
345886
+ chips: $props.savedViewChips,
345627
345887
  onApply: $options.onApplySavedView,
345628
345888
  onSaveRequest: _cache[2] || (_cache[2] = $event => ($data.showSaveViewDialog = true))
345629
- }, null, 8 /* PROPS */, ["views", "loading", "currentUserId", "counts", "selectedViewId", "onApply"]))
345889
+ }, null, 8 /* PROPS */, ["views", "loading", "currentUserId", "counts", "selectedViewId", "chips", "onApply"]))
345630
345890
  : vue$1.createCommentVNode("v-if", true),
345631
345891
  ($options.barShowsExportMenu)
345632
345892
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcActions, {
@@ -345813,7 +346073,7 @@ function render$1Z(_ctx, _cache, $props, $setup, $data, $options) {
345813
346073
  onCancel: _cache[15] || (_cache[15] = $event => ($data.showShortcutHelp = false))
345814
346074
  }, {
345815
346075
  default: vue$1.withCtx(() => [
345816
- vue$1.createElementVNode("dl", _hoisted_20$i, [
346076
+ vue$1.createElementVNode("dl", _hoisted_20$j, [
345817
346077
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.shortcutHelpEntries, (entry) => {
345818
346078
  return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, {
345819
346079
  key: entry.id
@@ -346027,7 +346287,7 @@ function render$1Z(_ctx, _cache, $props, $setup, $data, $options) {
346027
346287
  class: vue$1.normalizeClass(["cn-index-page__body", { 'cn-index-page__body--with-folders': $options.showsFolderPane }])
346028
346288
  }, [
346029
346289
  ($options.showsFolderPane)
346030
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$i, [
346290
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$j, [
346031
346291
  vue$1.createVNode(_component_CnFolderSidebar, {
346032
346292
  source: $options.folderSidebarSource,
346033
346293
  folders: $options.folderSidebarFolders,
@@ -346058,10 +346318,10 @@ function render$1Z(_ctx, _cache, $props, $setup, $data, $options) {
346058
346318
  }, [
346059
346319
  vue$1.renderSlot(_ctx.$slots, "before-collection"),
346060
346320
  ($options.sortSourceFellBack && $options.sortSourceFailedNote)
346061
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$i, vue$1.toDisplayString($options.sortSourceFailedNote), 1 /* TEXT */))
346321
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$j, vue$1.toDisplayString($options.sortSourceFailedNote), 1 /* TEXT */))
346062
346322
  : vue$1.createCommentVNode("v-if", true),
346063
346323
  ($options.scopeHeading)
346064
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$h, [
346324
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_23$i, [
346065
346325
  vue$1.createElementVNode("h2", _hoisted_24$g, vue$1.toDisplayString($options.scopeHeading.name), 1 /* TEXT */),
346066
346326
  ($options.scopeHeading.subtitle)
346067
346327
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_25$e, vue$1.toDisplayString($options.scopeHeading.subtitle), 1 /* TEXT */))
@@ -347304,13 +347564,13 @@ const _hoisted_16$v = { class: "cn-form-builder__field-meta" };
347304
347564
  const _hoisted_17$r = { class: "cn-form-builder__field-key" };
347305
347565
  const _hoisted_18$o = { class: "cn-form-builder__field-type" };
347306
347566
  const _hoisted_19$m = ["disabled", "title", "onClick"];
347307
- const _hoisted_20$h = ["disabled", "title", "onClick"];
347308
- const _hoisted_21$h = ["title", "onClick"];
347309
- const _hoisted_22$h = {
347567
+ const _hoisted_20$i = ["disabled", "title", "onClick"];
347568
+ const _hoisted_21$i = ["title", "onClick"];
347569
+ const _hoisted_22$i = {
347310
347570
  class: "cn-form-builder__editor",
347311
347571
  "data-testid": "cn-form-builder-editor"
347312
347572
  };
347313
- const _hoisted_23$g = { class: "cn-form-builder__editor-title" };
347573
+ const _hoisted_23$h = { class: "cn-form-builder__editor-title" };
347314
347574
  const _hoisted_24$f = {
347315
347575
  key: 0,
347316
347576
  class: "cn-form-builder__empty"
@@ -347402,20 +347662,20 @@ function render$1X(_ctx, _cache, $props, $setup, $data, $options) {
347402
347662
  disabled: idx === $data.model.length - 1,
347403
347663
  title: $props.moveDownLabel,
347404
347664
  onClick: $event => ($options.moveField(idx, 1))
347405
- }, " ↓ ", 8 /* PROPS */, _hoisted_20$h),
347665
+ }, " ↓ ", 8 /* PROPS */, _hoisted_20$i),
347406
347666
  vue$1.createElementVNode("button", {
347407
347667
  type: "button",
347408
347668
  class: "cn-form-builder__action cn-form-builder__action--delete",
347409
347669
  title: $props.deleteLabel,
347410
347670
  onClick: $event => ($options.removeField(idx))
347411
- }, " × ", 8 /* PROPS */, _hoisted_21$h)
347671
+ }, " × ", 8 /* PROPS */, _hoisted_21$i)
347412
347672
  ])
347413
347673
  ], 10 /* CLASS, PROPS */, _hoisted_15$x))
347414
347674
  }), 128 /* KEYED_FRAGMENT */))
347415
347675
  ]))
347416
347676
  ]),
347417
- vue$1.createElementVNode("section", _hoisted_22$h, [
347418
- vue$1.createElementVNode("h4", _hoisted_23$g, vue$1.toDisplayString($props.editorTitle), 1 /* TEXT */),
347677
+ vue$1.createElementVNode("section", _hoisted_22$i, [
347678
+ vue$1.createElementVNode("h4", _hoisted_23$h, vue$1.toDisplayString($props.editorTitle), 1 /* TEXT */),
347419
347679
  ($options.selectedField === null)
347420
347680
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_24$f, vue$1.toDisplayString($props.noSelectionLabel), 1 /* TEXT */))
347421
347681
  : (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_25$d, [
@@ -349687,16 +349947,16 @@ const _hoisted_19$k = {
349687
349947
  key: 0,
349688
349948
  class: "cn-rich-submit__required"
349689
349949
  };
349690
- const _hoisted_20$g = {
349950
+ const _hoisted_20$h = {
349691
349951
  key: 1,
349692
349952
  class: "cn-form-field__optional"
349693
349953
  };
349694
- const _hoisted_21$g = ["id", "accept", "multiple", "aria-required"];
349695
- const _hoisted_22$g = {
349954
+ const _hoisted_21$h = ["id", "accept", "multiple", "aria-required"];
349955
+ const _hoisted_22$h = {
349696
349956
  key: 0,
349697
349957
  class: "cn-rich-submit__hint"
349698
349958
  };
349699
- const _hoisted_23$f = {
349959
+ const _hoisted_23$g = {
349700
349960
  key: 1,
349701
349961
  class: "cn-rich-submit__file-list"
349702
349962
  };
@@ -349856,7 +350116,7 @@ function render$1U(_ctx, _cache, $props, $setup, $data, $options) {
349856
350116
  ($props.filesRequired && !_ctx.isBoardLook)
349857
350117
  ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$k, "*"))
349858
350118
  : (_ctx.isBoardLook && !$props.filesRequired)
349859
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$g, " (" + vue$1.toDisplayString($props.optionalLabel) + ")", 1 /* TEXT */))
350119
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_20$h, " (" + vue$1.toDisplayString($props.optionalLabel) + ")", 1 /* TEXT */))
349860
350120
  : vue$1.createCommentVNode("v-if", true)
349861
350121
  ], 8 /* PROPS */, _hoisted_18$m),
349862
350122
  vue$1.createElementVNode("input", {
@@ -349867,12 +350127,12 @@ function render$1U(_ctx, _cache, $props, $setup, $data, $options) {
349867
350127
  class: "cn-rich-submit__file",
349868
350128
  "aria-required": _ctx.isBoardLook && $props.filesRequired ? 'true' : undefined,
349869
350129
  onChange: _cache[1] || (_cache[1] = (...args) => ($options.onFilesChange && $options.onFilesChange(...args)))
349870
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$g),
350130
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_21$h),
349871
350131
  ($props.filesHint)
349872
- ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_22$g, vue$1.toDisplayString($props.filesHint), 1 /* TEXT */))
350132
+ ? (vue$1.openBlock(), vue$1.createElementBlock("small", _hoisted_22$h, vue$1.toDisplayString($props.filesHint), 1 /* TEXT */))
349873
350133
  : vue$1.createCommentVNode("v-if", true),
349874
350134
  ($data.formData.files.length > 0)
349875
- ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_23$f, [
350135
+ ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_23$g, [
349876
350136
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.formData.files, (f, idx) => {
349877
350137
  return (vue$1.openBlock(), vue$1.createElementBlock("li", { key: idx }, [
349878
350138
  vue$1.createTextVNode(vue$1.toDisplayString(f.name) + " ", 1 /* TEXT */),
@@ -351233,19 +351493,19 @@ const _hoisted_16$s = {
351233
351493
  const _hoisted_17$o = ["onClick"];
351234
351494
  const _hoisted_18$l = { class: "cn-register-mapping__board-group-name" };
351235
351495
  const _hoisted_19$j = { class: "cn-register-mapping__board-group-count" };
351236
- const _hoisted_20$f = {
351496
+ const _hoisted_20$g = {
351237
351497
  key: 1,
351238
351498
  class: "cn-register-mapping__board-save"
351239
351499
  };
351240
- const _hoisted_21$f = {
351500
+ const _hoisted_21$g = {
351241
351501
  key: 1,
351242
351502
  class: "cn-register-mapping"
351243
351503
  };
351244
- const _hoisted_22$f = {
351504
+ const _hoisted_22$g = {
351245
351505
  key: 0,
351246
351506
  class: "cn-register-mapping__group-heading"
351247
351507
  };
351248
- const _hoisted_23$e = ["aria-expanded", "aria-controls", "onClick"];
351508
+ const _hoisted_23$f = ["aria-expanded", "aria-controls", "onClick"];
351249
351509
  const _hoisted_24$e = {
351250
351510
  class: "cn-register-mapping__group-chevron",
351251
351511
  "aria-hidden": "true"
@@ -351452,7 +351712,7 @@ function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
351452
351712
  ]))
351453
351713
  : vue$1.createCommentVNode("v-if", true),
351454
351714
  ($props.showSaveButton)
351455
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$f, [
351715
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$g, [
351456
351716
  vue$1.createVNode(_component_NcButton, {
351457
351717
  variant: "primary",
351458
351718
  disabled: $props.saving || !$options.hasChanges,
@@ -351478,7 +351738,7 @@ function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
351478
351738
  : vue$1.createCommentVNode("v-if", true)
351479
351739
  ]))
351480
351740
  : (!$data.registersLoading && !$data.registersError)
351481
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$f, [
351741
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_21$g, [
351482
351742
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($props.groups, (group, groupIdx) => {
351483
351743
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
351484
351744
  key: groupIdx,
@@ -351486,7 +351746,7 @@ function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
351486
351746
  "data-testid": "cn-register-mapping-group"
351487
351747
  }, [
351488
351748
  ($options.groupsCollapsible)
351489
- ? (vue$1.openBlock(), vue$1.createElementBlock("h4", _hoisted_22$f, [
351749
+ ? (vue$1.openBlock(), vue$1.createElementBlock("h4", _hoisted_22$g, [
351490
351750
  vue$1.createElementVNode("button", {
351491
351751
  type: "button",
351492
351752
  class: "cn-register-mapping__group-toggle",
@@ -351516,7 +351776,7 @@ function render$1S(_ctx, _cache, $props, $setup, $data, $options) {
351516
351776
  vue$1.createElementVNode("span", _hoisted_27$7, vue$1.toDisplayString($options.configuredCount(groupIdx)) + "/" + vue$1.toDisplayString(group.types.length) + " " + vue$1.toDisplayString($props.labels.partiallyConfigured), 1 /* TEXT */)
351517
351777
  ])
351518
351778
  ])
351519
- ], 8 /* PROPS */, _hoisted_23$e)
351779
+ ], 8 /* PROPS */, _hoisted_23$f)
351520
351780
  ]))
351521
351781
  : vue$1.renderSlot(_ctx.$slots, "group-header", {
351522
351782
  group: group,
@@ -354299,10 +354559,10 @@ const _hoisted_19$i = {
354299
354559
  key: 5,
354300
354560
  class: "cn-sm-field cn-sm-field--check"
354301
354561
  };
354302
- const _hoisted_20$e = ["id", "checked", "disabled", "onChange"];
354303
- const _hoisted_21$e = ["for"];
354304
- const _hoisted_22$e = ["for"];
354305
- const _hoisted_23$d = ["id", "disabled", "onChange"];
354562
+ const _hoisted_20$f = ["id", "checked", "disabled", "onChange"];
354563
+ const _hoisted_21$f = ["for"];
354564
+ const _hoisted_22$f = ["for"];
354565
+ const _hoisted_23$e = ["id", "disabled", "onChange"];
354306
354566
  const _hoisted_24$d = ["value", "selected"];
354307
354567
  const _hoisted_25$b = ["for"];
354308
354568
  const _hoisted_26$9 = ["id", "rows", "value", "placeholder", "aria-describedby", "disabled", "onInput"];
@@ -354573,10 +354833,10 @@ function render$1N(_ctx, _cache, $props, $setup, $data, $options) {
354573
354833
  checked: !!$props.target[field.key],
354574
354834
  disabled: $options.isDisabled(field),
354575
354835
  onChange: $event => ($options.panel.set($props.target, field.key, $event.target.checked))
354576
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$e),
354836
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_20$f),
354577
354837
  vue$1.createElementVNode("label", {
354578
354838
  for: $options.idFor(field)
354579
- }, vue$1.toDisplayString($options.panel.tr(field.label)), 9 /* TEXT, PROPS */, _hoisted_21$e)
354839
+ }, vue$1.toDisplayString($options.panel.tr(field.label)), 9 /* TEXT, PROPS */, _hoisted_21$f)
354580
354840
  ]))
354581
354841
  : (field.type === 'select')
354582
354842
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", {
@@ -354586,7 +354846,7 @@ function render$1N(_ctx, _cache, $props, $setup, $data, $options) {
354586
354846
  vue$1.createElementVNode("label", {
354587
354847
  for: $options.idFor(field),
354588
354848
  class: vue$1.normalizeClass(["cn-sm-field__label", { 'cn-sm-visually-hidden': field.hideLabel }])
354589
- }, vue$1.toDisplayString($options.panel.tr(field.label)), 11 /* TEXT, CLASS, PROPS */, _hoisted_22$e),
354849
+ }, vue$1.toDisplayString($options.panel.tr(field.label)), 11 /* TEXT, CLASS, PROPS */, _hoisted_22$f),
354590
354850
  vue$1.createElementVNode("select", {
354591
354851
  id: $options.idFor(field),
354592
354852
  class: "cn-sm-field__input",
@@ -354600,7 +354860,7 @@ function render$1N(_ctx, _cache, $props, $setup, $data, $options) {
354600
354860
  selected: $options.sameValue(option.value, $props.target[field.key])
354601
354861
  }, vue$1.toDisplayString(option.label), 9 /* TEXT, PROPS */, _hoisted_24$d))
354602
354862
  }), 128 /* KEYED_FRAGMENT */))
354603
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$d)
354863
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_23$e)
354604
354864
  ], 2 /* CLASS */))
354605
354865
  : (vue$1.openBlock(), vue$1.createElementBlock("div", {
354606
354866
  key: 7,
@@ -356323,6 +356583,9 @@ script$1L.render = render$1K;
356323
356583
  script$1L.__scopeId = "data-v-030b53d4";
356324
356584
  const __sfc_main$1L = script$1L;
356325
356585
 
356586
+ /** How long typing rests before a search field searches, in ms. */
356587
+ const SEARCH_DELAY$2 = 250;
356588
+
356326
356589
  /** The page refresh channel the built-in widgets listen on. */
356327
356590
  const PAGE_REFRESH$2 = 'cn:page:refresh';
356328
356591
 
@@ -356351,10 +356614,17 @@ let reasonSeq = 0;
356351
356614
  * the action runs only while `allowedPath` reads true; `reasonPath` says
356352
356615
  * why not. With `listPath` the paths read the entry of that list whose
356353
356616
  * fields equal `match` (`{ act: "archive" }`).
356354
- * - `fields`: `[{ field, type?: "text"|"date"|"datetime"|"select", label?,
356355
- * required?, options?: [{ value, label, fills? }] }]`: inputs sent beside
356356
- * the reason, required by default; a select option's `fills` sets other
356357
- * fields that are still empty.
356617
+ * - `fields`: `[{ field, type?: "text"|"date"|"datetime"|"select"|"checkbox", label?,
356618
+ * required?, options?: [{ value, label, fills? }], hint?, default? }]`: inputs
356619
+ * sent beside the reason, required by default; a select option's `fills`
356620
+ * sets other fields that are still empty. A `checkbox` is sent as a boolean,
356621
+ * starts at `default` (false), fills its `label` and `hint` from the record,
356622
+ * and is optional unless `required: true` (then it must be ticked). A
356623
+ * `search` field finds records of `source: { register, schema }` as the
356624
+ * reader types, shows each as `optionLabel` with `optionSecondary` under
356625
+ * it (templates on the found record), leaves the record in hand out with
356626
+ * `excludeSelf`, and sends the chosen record's id. Every field's `label`,
356627
+ * `hint` and `placeholder` are templates filled from the record.
356358
356628
  * - `reason`: `{ label?, hint?, required?, field?, rows? }`: a text area; required by
356359
356629
  * default; sent as `field` (default `reason`). `rows` is its height in lines
356360
356630
  * (default 2; board DqBesluit draws 4).
@@ -356368,7 +356638,7 @@ let reasonSeq = 0;
356368
356638
  var script$1K = {
356369
356639
  name: 'CnActionDialog',
356370
356640
 
356371
- components: { CheckCircle, CircleOutline, CnDialog: __sfc_main$7L, CnIcon: __sfc_main$8c, HelpCircleOutline, NcButton: vue.NcButton, NcNoteCard: vue.NcNoteCard, NcSelect: vue.NcSelect, NcTextArea: vue.NcTextArea, NcTextField: vue.NcTextField },
356641
+ components: { CheckCircle, CircleOutline, CnDialog: __sfc_main$7L, CnIcon: __sfc_main$8c, CnSearchSelect: __sfc_main$7C, HelpCircleOutline, NcButton: vue.NcButton, NcCheckboxRadioSwitch: vue.NcCheckboxRadioSwitch, NcNoteCard: vue.NcNoteCard, NcSelect: vue.NcSelect, NcTextArea: vue.NcTextArea, NcTextField: vue.NcTextField },
356372
356642
 
356373
356643
  inject: {
356374
356644
  /** The host app's translate (CnAppRoot `cnTranslate`). */
@@ -356415,6 +356685,10 @@ var script$1K = {
356415
356685
  allowed: true,
356416
356686
  reason: '',
356417
356687
  values: {},
356688
+ /** A search field's found options, by field name. */
356689
+ searchOptions: {},
356690
+ /** The search field whose search runs, or ''. */
356691
+ searching: '',
356418
356692
  busy: false,
356419
356693
  refusal: '',
356420
356694
  done: false,
@@ -356533,6 +356807,20 @@ var script$1K = {
356533
356807
  return this.record ? this.fill(this.config.eyebrow) || this.text(this.config.eyebrow) : this.text(this.config.eyebrow)
356534
356808
  },
356535
356809
 
356810
+ /**
356811
+ * The value of every field as sent: a checkbox as a boolean, the
356812
+ * others as entered ('' when empty).
356813
+ *
356814
+ * @return {object} Values by field name.
356815
+ */
356816
+ fieldValues() {
356817
+ const out = { ...this.values };
356818
+ for (const field of this.fields) {
356819
+ out[field.field] = field.type === 'checkbox' ? this.checkboxValue(field) : (this.values[field.field] ?? '');
356820
+ }
356821
+ return out
356822
+ },
356823
+
356536
356824
  /** @return {Array<object>} The fields with a name. */
356537
356825
  fields() {
356538
356826
  return (Array.isArray(this.config.fields) ? this.config.fields : []).filter((f) => f && f.field)
@@ -356545,7 +356833,12 @@ var script$1K = {
356545
356833
  * @return {boolean}
356546
356834
  */
356547
356835
  fieldsFilled() {
356548
- return this.fields.every((f) => f.required === false || this.secretStored(f) || String(this.values[f.field] ?? '').trim() !== '')
356836
+ return this.fields.every((f) => {
356837
+ if (f.type === 'checkbox') {
356838
+ return f.required !== true || this.checkboxValue(f)
356839
+ }
356840
+ return f.required === false || this.secretStored(f) || String(this.values[f.field] ?? '').trim() !== ''
356841
+ })
356549
356842
  },
356550
356843
  },
356551
356844
 
@@ -356563,6 +356856,10 @@ var script$1K = {
356563
356856
  await Promise.all([this.loadRecord(), this.loadChecklist(), this.loadPermission()]);
356564
356857
  },
356565
356858
 
356859
+ beforeUnmount() {
356860
+ clearTimeout(this.searchTimer);
356861
+ },
356862
+
356566
356863
  methods: {
356567
356864
  t: l10n.translate,
356568
356865
 
@@ -356572,6 +356869,76 @@ var script$1K = {
356572
356869
  * @param {unknown} value The text.
356573
356870
  * @return {string}
356574
356871
  */
356872
+ /**
356873
+ * Search a search field's records once typing rests.
356874
+ *
356875
+ * @param {object} field The field.
356876
+ * @param {string} typed What the reader typed.
356877
+ * @return {void}
356878
+ * @spec openspec/changes/action-dialog-search-field/specs/action-dialog-search-field/spec.md#requirement-an-action-dialog-field-can-search-records
356879
+ */
356880
+ onSearch(field, typed) {
356881
+ clearTimeout(this.searchTimer);
356882
+ this.searchTimer = setTimeout(() => this.searchRecords(field, String(typed || '').trim()), SEARCH_DELAY$2);
356883
+ },
356884
+
356885
+ /**
356886
+ * Read the records of a search field's `source` that match the term.
356887
+ *
356888
+ * @param {object} field The field.
356889
+ * @param {string} term The term.
356890
+ * @return {Promise<void>}
356891
+ */
356892
+ async searchRecords(field, term) {
356893
+ const source = field.source || {};
356894
+ if (!term || !source.register || !source.schema) {
356895
+ this.searchOptions = { ...this.searchOptions, [field.field]: [] };
356896
+ return
356897
+ }
356898
+ this.searching = field.field;
356899
+ try {
356900
+ const url = router.generateUrl(`/apps/openregister/api/objects/${encodeURIComponent(source.register)}/${encodeURIComponent(source.schema)}`);
356901
+ const { data } = await axios$1.get(url, { params: { _search: term, _limit: 10 } });
356902
+ const rows = Array.isArray(data) ? data : (data && Array.isArray(data.results) ? data.results : []);
356903
+ const self = String(this.recordId || '');
356904
+ const options = rows
356905
+ .map((row) => ({ row, id: String(row.id || (row['@self'] && row['@self'].id) || '') }))
356906
+ .filter(({ id }) => id !== '' && !(field.excludeSelf && id === self))
356907
+ .map(({ row, id }) => {
356908
+ const option = { id, label: this.fill(field.optionLabel || '{title}', row) || id };
356909
+ const secondary = this.fill(field.optionSecondary, row);
356910
+ return secondary ? { ...option, secondary } : option
356911
+ });
356912
+ this.searchOptions = { ...this.searchOptions, [field.field]: options };
356913
+ } catch {
356914
+ this.searchOptions = { ...this.searchOptions, [field.field]: [] };
356915
+ } finally {
356916
+ this.searching = '';
356917
+ }
356918
+ },
356919
+
356920
+ /**
356921
+ * A checkbox field's state: what was ticked, else its `default`.
356922
+ *
356923
+ * @param {object} field The field.
356924
+ * @return {boolean}
356925
+ * @spec openspec/changes/action-dialog-checkbox-field/specs/action-dialog-checkbox-field/spec.md#requirement-an-action-dialog-field-can-be-a-checkbox
356926
+ */
356927
+ checkboxValue(field) {
356928
+ return field.field in this.values ? this.values[field.field] === true : field.default === true
356929
+ },
356930
+
356931
+ /**
356932
+ * Tick or untick a checkbox field.
356933
+ *
356934
+ * @param {string} name The field.
356935
+ * @param {boolean} on Ticked.
356936
+ * @return {void}
356937
+ */
356938
+ setChecked(name, on) {
356939
+ this.values = { ...this.values, [name]: on === true };
356940
+ },
356941
+
356575
356942
  text(value) {
356576
356943
  return typeof value === 'string' && value !== '' ? this.cnTranslate(value) : ''
356577
356944
  },
@@ -356728,21 +357095,22 @@ var script$1K = {
356728
357095
  if (this.config.reason) {
356729
357096
  body[this.config.reason.field || 'reason'] = reason;
356730
357097
  }
357098
+ const values = { ...this.fieldValues };
356731
357099
  for (const field of this.fields) {
356732
357100
  if (field.type === 'secret' && String(this.values[field.field] ?? '') === '') {
356733
- continue
357101
+ delete values[field.field];
356734
357102
  }
356735
- body[field.field] = this.values[field.field] ?? '';
356736
357103
  }
357104
+ Object.assign(body, values);
356737
357105
  const method = String(request.method || 'POST').toLowerCase();
356738
357106
  await axios$1[['post', 'put', 'patch', 'delete'].includes(method) ? method : 'post'](/^https?:\/\//i.test(url) ? url : router.generateUrl(url), body);
356739
357107
  } else if (this.confirmConfig.action && typeof this.cnDispatchAction === 'function') {
356740
- await this.cnDispatchAction({ ...this.confirmConfig.action, args: [...(this.confirmConfig.action.args || []), { ...this.values, reason }] });
357108
+ await this.cnDispatchAction({ ...this.confirmConfig.action, args: [...(this.confirmConfig.action.args || []), { ...this.fieldValues, reason }] });
356741
357109
  }
356742
357110
  this.done = true;
356743
357111
  eventBus.emit(PAGE_REFRESH$2, {});
356744
357112
  /** @event done The action ran. Payload: the field values and `reason`. */
356745
- this.$emit('done', { ...this.values, reason });
357113
+ this.$emit('done', { ...this.fieldValues, reason });
356746
357114
  } catch (failure) {
356747
357115
  const data = failure && failure.response && failure.response.data;
356748
357116
  this.refusal = String((data && (data.message || data.error)) || l10n.translate('nextcloud-vue', 'The action could not be completed.'));
@@ -356840,21 +357208,31 @@ const _hoisted_14$u = {
356840
357208
  class: "cn-action-dialog__muted"
356841
357209
  };
356842
357210
  const _hoisted_15$s = ["data-testid"];
356843
- const _hoisted_16$q = {
357211
+ const _hoisted_16$q = { class: "cn-action-dialog__checkbox-text" };
357212
+ const _hoisted_17$m = { class: "cn-action-dialog__checkbox-label" };
357213
+ const _hoisted_18$j = {
357214
+ key: 0,
357215
+ class: "cn-action-dialog__muted"
357216
+ };
357217
+ const _hoisted_19$h = {
357218
+ key: 5,
357219
+ class: "cn-action-dialog__muted"
357220
+ };
357221
+ const _hoisted_20$e = {
356844
357222
  key: 2,
356845
357223
  class: "cn-action-dialog__field"
356846
357224
  };
356847
- const _hoisted_17$m = {
357225
+ const _hoisted_21$e = {
356848
357226
  key: 0,
356849
357227
  class: "cn-action-dialog__muted"
356850
357228
  };
356851
- const _hoisted_18$j = {
357229
+ const _hoisted_22$e = {
356852
357230
  key: 4,
356853
357231
  class: "cn-action-dialog__error",
356854
357232
  role: "alert",
356855
357233
  "data-testid": "cn-action-dialog-refusal"
356856
357234
  };
356857
- const _hoisted_19$h = {
357235
+ const _hoisted_23$d = {
356858
357236
  key: 1,
356859
357237
  role: "status",
356860
357238
  "data-testid": "cn-action-dialog-done"
@@ -356865,6 +357243,8 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
356865
357243
  const _component_CheckCircle = vue$1.resolveComponent("CheckCircle");
356866
357244
  const _component_HelpCircleOutline = vue$1.resolveComponent("HelpCircleOutline");
356867
357245
  const _component_CircleOutline = vue$1.resolveComponent("CircleOutline");
357246
+ const _component_NcCheckboxRadioSwitch = vue$1.resolveComponent("NcCheckboxRadioSwitch");
357247
+ const _component_CnSearchSelect = vue$1.resolveComponent("CnSearchSelect");
356868
357248
  const _component_NcSelect = vue$1.resolveComponent("NcSelect");
356869
357249
  const _component_NcTextField = vue$1.resolveComponent("NcTextField");
356870
357250
  const _component_NcTextArea = vue$1.resolveComponent("NcTextArea");
@@ -357011,36 +357391,70 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
357011
357391
  class: "cn-action-dialog__field",
357012
357392
  "data-testid": `cn-action-dialog-field-${field.field}`
357013
357393
  }, [
357014
- (field.type === 'select')
357015
- ? (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
357394
+ (field.type === 'checkbox')
357395
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_NcCheckboxRadioSwitch, {
357016
357396
  key: 0,
357017
- modelValue: $options.selectedOption(field),
357018
- options: $options.optionsOf(field),
357019
- inputLabel: $options.text(field.label) || field.field,
357020
- clearable: field.required === false,
357021
- "onUpdate:modelValue": (option) => $options.pick(field, option)
357022
- }, null, 8 /* PROPS */, ["modelValue", "options", "inputLabel", "clearable", "onUpdate:modelValue"]))
357023
- : (field.type === 'secret')
357024
- ? (vue$1.openBlock(), vue$1.createBlock(_component_NcTextField, {
357397
+ class: "cn-action-dialog__checkbox",
357398
+ modelValue: $options.checkboxValue(field),
357399
+ type: "checkbox",
357400
+ "onUpdate:modelValue": (on) => $options.setChecked(field.field, on)
357401
+ }, {
357402
+ default: vue$1.withCtx(() => [
357403
+ vue$1.createElementVNode("span", _hoisted_16$q, [
357404
+ vue$1.createElementVNode("strong", _hoisted_17$m, vue$1.toDisplayString($options.fill(field.label) || field.field), 1 /* TEXT */),
357405
+ (field.hint)
357406
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_18$j, vue$1.toDisplayString($options.fill(field.hint)), 1 /* TEXT */))
357407
+ : vue$1.createCommentVNode("v-if", true)
357408
+ ])
357409
+ ]),
357410
+ _: 2 /* DYNAMIC */
357411
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue"]))
357412
+ : (field.type === 'search')
357413
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_CnSearchSelect, {
357025
357414
  key: 1,
357026
- modelValue: $data.values[field.field] || '',
357027
- type: "password",
357028
- autocomplete: "new-password",
357029
- label: $options.text(field.label) || field.field,
357030
- placeholder: $options.secretStored(field) ? $options.t('nextcloud-vue', 'Stored. Type a new value to replace it.') : '',
357031
- "onUpdate:modelValue": (value) => $options.setValue(field.field, value)
357032
- }, null, 8 /* PROPS */, ["modelValue", "label", "placeholder", "onUpdate:modelValue"]))
357033
- : (vue$1.openBlock(), vue$1.createBlock(_component_NcTextField, {
357034
- key: 2,
357035
- modelValue: $data.values[field.field] || '',
357036
- type: field.type === 'datetime' ? 'datetime-local' : (field.type === 'date' ? 'date' : 'text'),
357037
- label: $options.text(field.label) || field.field,
357038
- "onUpdate:modelValue": (value) => $options.setValue(field.field, value)
357039
- }, null, 8 /* PROPS */, ["modelValue", "type", "label", "onUpdate:modelValue"]))
357415
+ modelValue: $data.values[field.field] || null,
357416
+ options: $data.searchOptions[field.field] || [],
357417
+ inputLabel: $options.fill(field.label) || field.field,
357418
+ labelOutside: true,
357419
+ loading: $data.searching === field.field,
357420
+ filterable: false,
357421
+ placeholder: $options.fill(field.placeholder),
357422
+ onSearch: (typed) => $options.onSearch(field, typed),
357423
+ "onUpdate:modelValue": (value) => $options.setValue(field.field, value && typeof value === 'object' ? value.id : value)
357424
+ }, null, 8 /* PROPS */, ["modelValue", "options", "inputLabel", "loading", "placeholder", "onSearch", "onUpdate:modelValue"]))
357425
+ : (field.type === 'select')
357426
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
357427
+ key: 2,
357428
+ modelValue: $options.selectedOption(field),
357429
+ options: $options.optionsOf(field),
357430
+ inputLabel: $options.fill(field.label) || field.field,
357431
+ clearable: field.required === false,
357432
+ "onUpdate:modelValue": (option) => $options.pick(field, option)
357433
+ }, null, 8 /* PROPS */, ["modelValue", "options", "inputLabel", "clearable", "onUpdate:modelValue"]))
357434
+ : (field.type === 'secret')
357435
+ ? (vue$1.openBlock(), vue$1.createBlock(_component_NcTextField, {
357436
+ key: 3,
357437
+ modelValue: $data.values[field.field] || '',
357438
+ type: "password",
357439
+ autocomplete: "new-password",
357440
+ label: $options.text(field.label) || field.field,
357441
+ placeholder: $options.secretStored(field) ? $options.t('nextcloud-vue', 'Stored. Type a new value to replace it.') : '',
357442
+ "onUpdate:modelValue": (value) => $options.setValue(field.field, value)
357443
+ }, null, 8 /* PROPS */, ["modelValue", "label", "placeholder", "onUpdate:modelValue"]))
357444
+ : (vue$1.openBlock(), vue$1.createBlock(_component_NcTextField, {
357445
+ key: 4,
357446
+ modelValue: $data.values[field.field] || '',
357447
+ type: field.type === 'datetime' ? 'datetime-local' : (field.type === 'date' ? 'date' : 'text'),
357448
+ label: $options.fill(field.label) || field.field,
357449
+ "onUpdate:modelValue": (value) => $options.setValue(field.field, value)
357450
+ }, null, 8 /* PROPS */, ["modelValue", "type", "label", "onUpdate:modelValue"])),
357451
+ (field.hint && field.type !== 'checkbox')
357452
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_19$h, vue$1.toDisplayString($options.fill(field.hint)), 1 /* TEXT */))
357453
+ : vue$1.createCommentVNode("v-if", true)
357040
357454
  ], 8 /* PROPS */, _hoisted_15$s))
357041
357455
  }), 128 /* KEYED_FRAGMENT */)),
357042
357456
  ($props.config.reason)
357043
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_16$q, [
357457
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_20$e, [
357044
357458
  vue$1.createVNode(_component_NcTextArea, {
357045
357459
  id: $data.reasonId,
357046
357460
  modelValue: $data.reason,
@@ -357052,7 +357466,7 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
357052
357466
  "data-testid": "cn-action-dialog-reason"
357053
357467
  }, null, 8 /* PROPS */, ["id", "modelValue", "label", "rows"]),
357054
357468
  ($props.config.reason.hint)
357055
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_17$m, vue$1.toDisplayString($options.text($props.config.reason.hint)), 1 /* TEXT */))
357469
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_21$e, vue$1.toDisplayString($options.text($props.config.reason.hint)), 1 /* TEXT */))
357056
357470
  : vue$1.createCommentVNode("v-if", true)
357057
357471
  ]))
357058
357472
  : vue$1.createCommentVNode("v-if", true),
@@ -357070,17 +357484,17 @@ function render$1J(_ctx, _cache, $props, $setup, $data, $options) {
357070
357484
  }, 8 /* PROPS */, ["type", "heading"]))
357071
357485
  : vue$1.createCommentVNode("v-if", true),
357072
357486
  ($data.refusal)
357073
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_18$j, vue$1.toDisplayString($data.refusal), 1 /* TEXT */))
357487
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_22$e, vue$1.toDisplayString($data.refusal), 1 /* TEXT */))
357074
357488
  : vue$1.createCommentVNode("v-if", true)
357075
357489
  ]))
357076
- : (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 */))
357490
+ : (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_23$d, vue$1.toDisplayString($options.text($props.config.doneText) || $options.t('nextcloud-vue', 'Done')), 1 /* TEXT */))
357077
357491
  ]),
357078
357492
  _: 1 /* STABLE */
357079
357493
  }, 8 /* PROPS */, ["name", "eyebrow", "subtitle", "noClose", "onClosing"]))
357080
357494
  }
357081
357495
 
357082
357496
  script$1K.render = render$1J;
357083
- script$1K.__scopeId = "data-v-ececfa8c";
357497
+ script$1K.__scopeId = "data-v-feabd086";
357084
357498
  const __sfc_main$1K = script$1K;
357085
357499
 
357086
357500
  var CnActionDialog = /*#__PURE__*/Object.freeze({
@@ -357137,7 +357551,8 @@ function withTypedAssignee(found, typed, label) {
357137
357551
  * sent as `field` (default `note`); `false` drops it. `rows` is the text
357138
357552
  * area's height in lines (default 3, as board DqOverdragen draws it).
357139
357553
  * - `toggles`: `[{ field, label, note? }]`: switches that start off and are
357140
- * sent as booleans.
357554
+ * sent as booleans; `label` and `note` are templates filled from the record
357555
+ * ("{initiatorDisplayName} then gets a message").
357141
357556
  * - `confirm`: `{ label?, icon?, request?: { method?, url, body? }, action? }`.
357142
357557
  * `request` sends the choice itself (`body` templates filled from the
357143
357558
  * record); `action` dispatches a manifest action with the choice as its
@@ -357605,12 +358020,12 @@ function render$1I(_ctx, _cache, $props, $setup, $data, $options) {
357605
358020
  "onUpdate:modelValue": $event => ($data.flags[toggle.field] = $event)
357606
358021
  }, {
357607
358022
  default: vue$1.withCtx(() => [
357608
- vue$1.createElementVNode("span", _hoisted_7$Y, vue$1.toDisplayString($options.text(toggle.label)), 1 /* TEXT */)
358023
+ vue$1.createElementVNode("span", _hoisted_7$Y, vue$1.toDisplayString($options.fill(toggle.label)), 1 /* TEXT */)
357609
358024
  ]),
357610
358025
  _: 2 /* DYNAMIC */
357611
358026
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue"]),
357612
358027
  (toggle.note)
357613
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_8$R, vue$1.toDisplayString($options.text(toggle.note)), 1 /* TEXT */))
358028
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_8$R, vue$1.toDisplayString($options.fill(toggle.note)), 1 /* TEXT */))
357614
358029
  : vue$1.createCommentVNode("v-if", true)
357615
358030
  ], 10 /* CLASS, PROPS */, _hoisted_6$13))
357616
358031
  }), 128 /* KEYED_FRAGMENT */)),
@@ -357625,7 +358040,7 @@ function render$1I(_ctx, _cache, $props, $setup, $data, $options) {
357625
358040
  }
357626
358041
 
357627
358042
  script$1J.render = render$1I;
357628
- script$1J.__scopeId = "data-v-45153be8";
358043
+ script$1J.__scopeId = "data-v-d3dfbd20";
357629
358044
  const __sfc_main$1J = script$1J;
357630
358045
 
357631
358046
  var CnAssignDialog = /*#__PURE__*/Object.freeze({
@@ -410493,37 +410908,28 @@ const REGISTRATION_KEY = Symbol.for('NcAppSettingsDialog:registration');
410493
410908
  /** The key NcAppSettingsSection injects for the legacy design flag. */
410494
410909
  const LEGACY_DESIGN_KEY = Symbol.for('NcAppSettingsDialog:legacy');
410495
410910
 
410496
- /** Renders a section's icon vnodes as they were registered. */
410497
- const CnVNodes = {
410498
- name: 'CnVNodes',
410499
- props: { vnodes: { type: [Array, Object], default: null } },
410500
- render() {
410501
- // A section's icon is drawn twice (navigation and heading), so each draw gets its own copy.
410502
- const list = Array.isArray(this.vnodes) ? this.vnodes : [this.vnodes];
410503
- return list.map((vnode) => (vnode && typeof vnode === 'object' ? vue$1.cloneVNode(vnode) : vnode))
410504
- },
410505
- };
410506
-
410507
410911
  /**
410508
- * CnUserSettingsDialog - the user settings dialog in the board look (board
410509
- * PqPersoonlijk): eyebrow, title and subtitle, a left navigation listing the
410510
- * sections with their icons, the current section (the others stay mounted
410511
- * but hidden), and a footer with a note that changes save straight away and
410512
- * a Close button.
410912
+ * CnUserSettingsDialog - the user settings dialog in the board look, as the
410913
+ * DqPersoonlijkeInstellingen board draws Nextcloud's own settings dialog:
410914
+ * 900px wide, the title at the top of a tinted navigation column, every
410915
+ * section stacked on a white pane that the navigation scrolls, a close icon
410916
+ * in the corner, and no header or footer. Under the sections a line says
410917
+ * that changes save straight away.
410513
410918
  *
410514
410919
  * The sections stay the app's: any `NcAppSettingsSection` in the default slot
410515
410920
  * registers itself with this dialog exactly as it does with
410516
- * `NcAppSettingsDialog`, with its name, order and `#icon` slot. CnAppRoot
410517
- * renders this dialog instead of `NcAppSettingsDialog` under the board look.
410921
+ * `NcAppSettingsDialog`, with its name and order. CnAppRoot renders this
410922
+ * dialog instead of `NcAppSettingsDialog` under the board look.
410518
410923
  *
410519
410924
  * @spec openspec/changes/user-settings-board-dialog/specs/user-settings-board-dialog/spec.md#requirement-the-user-settings-dialog-takes-the-board-look
410925
+ * @spec openspec/changes/user-settings-dialog-dq-board/specs/user-settings-dialog-dq-board/spec.md#requirement-the-user-settings-dialog-follows-the-dq-board
410520
410926
  *
410521
410927
  * @event update:open Emitted with `false` when the dialog closes.
410522
410928
  */
410523
410929
  var script$o = {
410524
410930
  name: 'CnUserSettingsDialog',
410525
410931
 
410526
- components: { CnDialog: __sfc_main$7L, CnIcon: __sfc_main$8c, CnVNodes, NcButton: vue.NcButton },
410932
+ components: { Close, CnDialog: __sfc_main$7L, NcButton: vue.NcButton },
410527
410933
 
410528
410934
  provide() {
410529
410935
  return {
@@ -410542,9 +410948,19 @@ var script$o = {
410542
410948
  open: { type: Boolean, default: false },
410543
410949
  /** Dialog title; also its accessible name. */
410544
410950
  title: { type: String, required: true },
410545
- /** Context line above the title. */
410951
+ /**
410952
+ * Deprecated and ignored: the board draws no line above the title.
410953
+ * Kept so a host that passes it stays valid.
410954
+ *
410955
+ * @deprecated
410956
+ */
410546
410957
  eyebrow: { type: String, default: () => l10n.translate('nextcloud-vue', 'Your account') },
410547
- /** Sentence under the title. */
410958
+ /**
410959
+ * Deprecated and ignored: the board draws no line under the title.
410960
+ * Kept so a host that passes it stays valid.
410961
+ *
410962
+ * @deprecated
410963
+ */
410548
410964
  subtitle: { type: String, default: () => l10n.translate('nextcloud-vue', 'Only for you. Colleagues keep their own settings.') },
410549
410965
  /** The app's name, after the footer note and as the navigation entry holding its sections. */
410550
410966
  appName: { type: String, default: '' },
@@ -410563,8 +410979,6 @@ var script$o = {
410563
410979
  return {
410564
410980
  sections: [],
410565
410981
  selected: '',
410566
- /** Ids of the sections whose heading is in the page, for the heading icons. */
410567
- headingTargets: [],
410568
410982
  picked: false,
410569
410983
  }
410570
410984
  },
@@ -410587,9 +411001,9 @@ var script$o = {
410587
411001
  }))
410588
411002
  },
410589
411003
 
410590
- /** @return {object} The board's eyebrow: muted, in sentence case. */
410591
- eyebrowStyle() {
410592
- return { '--cn-dialog-eyebrow-transform': 'none', '--cn-dialog-eyebrow-color': 'var(--color-text-maxcontrast)' }
411004
+ /** @return {object} The board's 900px width, over CnDialog's width roles. */
411005
+ frameStyle() {
411006
+ return { '--cn-dialog-width': '900px' }
410593
411007
  },
410594
411008
 
410595
411009
  /** @return {string} The navigation's accessible name. */
@@ -410609,21 +411023,6 @@ var script$o = {
410609
411023
  },
410610
411024
  },
410611
411025
 
410612
- watch: {
410613
- sections() {
410614
- this.$nextTick(() => {
410615
- this.headingTargets = typeof document === 'undefined'
410616
- ? []
410617
- : this.sections.filter((section) => section.icon && document.getElementById(`settings-section_${section.id}--label`)).map((section) => section.id);
410618
- this.showSelected();
410619
- });
410620
- },
410621
-
410622
- selected() {
410623
- this.$nextTick(() => this.showSelected());
410624
- },
410625
- },
410626
-
410627
411026
  methods: {
410628
411027
  /**
410629
411028
  * Add a section to the navigation, kept in `order`; a section
@@ -410632,13 +411031,14 @@ var script$o = {
410632
411031
  *
410633
411032
  * @param {string} id The section id.
410634
411033
  * @param {string} name The section name.
410635
- * @param {number} [order] The section's place.
410636
- * @param {Array} [icon] The section's icon vnodes.
411034
+ * @param {number} [order] The section's place. A section's icon, the
411035
+ * fourth argument NcAppSettingsSection passes, is not drawn: the
411036
+ * board lists the sections by name alone.
410637
411037
  */
410638
- registerSection(id, name, order, icon) {
411038
+ registerSection(id, name, order) {
410639
411039
  const rest = this.sections.filter((section) => section.id !== id);
410640
411040
  const place = typeof order === 'number' ? order : Math.max(0, ...rest.map((section) => section.order)) + 1;
410641
- this.sections = [...rest, { id, name, order: place, icon: icon ? vue$1.markRaw(icon) : null }].sort((a, b) => a.order - b.order);
411041
+ this.sections = [...rest, { id, name, order: place }].sort((a, b) => a.order - b.order);
410642
411042
  if (!this.picked) {
410643
411043
  this.selected = this.sections[0].id;
410644
411044
  }
@@ -410657,7 +411057,8 @@ var script$o = {
410657
411057
  },
410658
411058
 
410659
411059
  /**
410660
- * Mark a section current and scroll it into view.
411060
+ * Mark a section current, scroll it to the top of the pane and focus
411061
+ * its heading. Every section stays in the pane.
410661
411062
  *
410662
411063
  * @param {string} id The section id.
410663
411064
  */
@@ -410665,33 +411066,18 @@ var script$o = {
410665
411066
  this.picked = true;
410666
411067
  this.selected = id;
410667
411068
  this.$nextTick(() => {
410668
- this.showSelected();
411069
+ const el = typeof document !== 'undefined' ? document.getElementById(`settings-section_${id}`) : null;
411070
+ if (el && typeof el.scrollIntoView === 'function') {
411071
+ el.scrollIntoView({ block: 'start', behavior: 'smooth' });
411072
+ }
410669
411073
  const heading = typeof document !== 'undefined' ? document.getElementById(`settings-section_${id}--label`) : null;
410670
411074
  if (heading) {
410671
411075
  heading.setAttribute('tabindex', '-1');
410672
- heading.focus();
411076
+ heading.focus({ preventScroll: true });
410673
411077
  }
410674
411078
  });
410675
411079
  },
410676
411080
 
410677
- /**
410678
- * Show the current section and hide the others. They stay mounted,
410679
- * so what a reader typed in one survives a switch.
410680
- *
410681
- * @spec openspec/changes/user-settings-one-section/specs/user-settings-board-dialog/spec.md#requirement-the-board-user-settings-dialog-shows-one-section-at-a-time
410682
- */
410683
- showSelected() {
410684
- if (typeof document === 'undefined') {
410685
- return
410686
- }
410687
- for (const section of this.sections) {
410688
- const el = document.getElementById(`settings-section_${section.id}`);
410689
- if (el) {
410690
- el.hidden = section.id !== this.selected;
410691
- }
410692
- }
410693
- },
410694
-
410695
411081
  /**
410696
411082
  * Follow NcDialog's own open state.
410697
411083
  *
@@ -410716,37 +411102,31 @@ var script$o = {
410716
411102
  const _hoisted_1$z = { class: "cn-user-settings-dialog__body" };
410717
411103
  const _hoisted_2$y = ["aria-label"];
410718
411104
  const _hoisted_3$v = {
411105
+ class: "cn-user-settings-dialog__title",
411106
+ "data-testid": "cn-user-settings-title"
411107
+ };
411108
+ const _hoisted_4$v = {
410719
411109
  key: 0,
410720
411110
  class: "cn-user-settings-dialog__nc-links",
410721
411111
  "data-testid": "cn-user-settings-nc-links"
410722
411112
  };
410723
- const _hoisted_4$v = ["href"];
410724
- const _hoisted_5$k = {
410725
- key: 0,
410726
- class: "cn-user-settings-dialog__nav-icon",
410727
- "aria-hidden": "true"
410728
- };
410729
- const _hoisted_6$k = {
411113
+ const _hoisted_5$k = ["href"];
411114
+ const _hoisted_6$k = { class: "cn-user-settings-dialog__nav-label" };
411115
+ const _hoisted_7$h = {
410730
411116
  key: 1,
410731
411117
  class: "cn-user-settings-dialog__group",
410732
411118
  "data-testid": "cn-user-settings-app-group"
410733
411119
  };
410734
- const _hoisted_7$h = ["href", "aria-current", "data-testid", "onClick"];
410735
- const _hoisted_8$e = {
410736
- key: 0,
410737
- class: "cn-user-settings-dialog__nav-icon",
410738
- "aria-hidden": "true"
410739
- };
410740
- const _hoisted_9$c = { class: "cn-user-settings-dialog__sections" };
410741
- const _hoisted_10$a = ["data-testid"];
411120
+ const _hoisted_8$e = ["href", "aria-current", "data-testid", "onClick"];
411121
+ const _hoisted_9$c = { class: "cn-user-settings-dialog__nav-label" };
411122
+ const _hoisted_10$a = { class: "cn-user-settings-dialog__sections" };
410742
411123
  const _hoisted_11$8 = {
410743
411124
  class: "cn-user-settings-dialog__note",
410744
411125
  "data-testid": "cn-user-settings-note"
410745
411126
  };
410746
411127
 
410747
411128
  function render$o(_ctx, _cache, $props, $setup, $data, $options) {
410748
- const _component_CnIcon = vue$1.resolveComponent("CnIcon");
410749
- const _component_CnVNodes = vue$1.resolveComponent("CnVNodes");
411129
+ const _component_Close = vue$1.resolveComponent("Close");
410750
411130
  const _component_NcButton = vue$1.resolveComponent("NcButton");
410751
411131
  const _component_CnDialog = vue$1.resolveComponent("CnDialog");
410752
411132
 
@@ -410754,125 +411134,85 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
410754
411134
  class: "cn-user-settings-dialog",
410755
411135
  name: $props.title,
410756
411136
  look: "board",
410757
- width: "wizard",
410758
- eyebrow: $props.eyebrow,
410759
- subtitle: $props.subtitle,
411137
+ headless: "",
410760
411138
  open: $props.open,
410761
- style: vue$1.normalizeStyle($options.eyebrowStyle),
411139
+ style: vue$1.normalizeStyle($options.frameStyle),
410762
411140
  "data-testid": "cn-user-settings-dialog",
410763
411141
  "onUpdate:open": $options.onUpdateOpen,
410764
411142
  onClosing: $options.close
410765
411143
  }, {
410766
- actions: vue$1.withCtx(() => [
410767
- vue$1.createElementVNode("p", _hoisted_11$8, vue$1.toDisplayString($options.footerNote), 1 /* TEXT */),
410768
- vue$1.createVNode(_component_NcButton, {
410769
- variant: "secondary",
410770
- "data-testid": "cn-user-settings-close",
410771
- onClick: $options.close
410772
- }, {
410773
- default: vue$1.withCtx(() => [
410774
- vue$1.createTextVNode(vue$1.toDisplayString($options.closeLabel), 1 /* TEXT */)
410775
- ]),
410776
- _: 1 /* STABLE */
410777
- }, 8 /* PROPS */, ["onClick"])
410778
- ]),
410779
411144
  default: vue$1.withCtx(() => [
410780
411145
  vue$1.createElementVNode("div", _hoisted_1$z, [
410781
- ($data.sections.length > 0)
410782
- ? (vue$1.openBlock(), vue$1.createElementBlock("nav", {
410783
- key: 0,
410784
- class: "cn-user-settings-dialog__nav",
410785
- "aria-label": $options.navLabel,
410786
- "data-testid": "cn-user-settings-nav"
410787
- }, [
410788
- ($options.ncLinks.length > 0)
410789
- ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_3$v, [
410790
- (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.ncLinks, (link) => {
410791
- return (vue$1.openBlock(), vue$1.createElementBlock("li", {
410792
- key: link.key
410793
- }, [
410794
- vue$1.createElementVNode("a", {
410795
- href: link.href,
410796
- class: "cn-user-settings-dialog__nav-link"
410797
- }, [
410798
- (link.icon)
410799
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_5$k, [
410800
- vue$1.createVNode(_component_CnIcon, {
410801
- name: link.icon,
410802
- size: 18
410803
- }, null, 8 /* PROPS */, ["name"])
410804
- ]))
410805
- : vue$1.createCommentVNode("v-if", true),
410806
- vue$1.createElementVNode("span", null, vue$1.toDisplayString(link.label), 1 /* TEXT */)
410807
- ], 8 /* PROPS */, _hoisted_4$v)
410808
- ]))
410809
- }), 128 /* KEYED_FRAGMENT */))
410810
- ]))
410811
- : vue$1.createCommentVNode("v-if", true),
410812
- ($options.ncLinks.length > 0 && $props.appName)
410813
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_6$k, vue$1.toDisplayString($props.appName), 1 /* TEXT */))
410814
- : vue$1.createCommentVNode("v-if", true),
410815
- vue$1.createElementVNode("ul", {
410816
- class: vue$1.normalizeClass({ 'cn-user-settings-dialog__group-sections': $options.ncLinks.length > 0 })
410817
- }, [
410818
- (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.sections, (section) => {
411146
+ vue$1.createElementVNode("nav", {
411147
+ class: "cn-user-settings-dialog__nav",
411148
+ "aria-label": $options.navLabel,
411149
+ "data-testid": "cn-user-settings-nav"
411150
+ }, [
411151
+ vue$1.createElementVNode("h2", _hoisted_3$v, vue$1.toDisplayString($props.title), 1 /* TEXT */),
411152
+ ($options.ncLinks.length > 0)
411153
+ ? (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_4$v, [
411154
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.ncLinks, (link) => {
410819
411155
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
410820
- key: section.id
411156
+ key: link.key
410821
411157
  }, [
410822
411158
  vue$1.createElementVNode("a", {
410823
- href: `#settings-section_${section.id}`,
410824
- class: vue$1.normalizeClass(["cn-user-settings-dialog__nav-link", { 'cn-user-settings-dialog__nav-link--active': section.id === $data.selected }]),
410825
- "aria-current": section.id === $data.selected ? 'true' : undefined,
410826
- "data-testid": `cn-user-settings-nav-${section.id}`,
410827
- onClick: vue$1.withModifiers($event => ($options.selectSection(section.id)), ["prevent"])
411159
+ href: link.href,
411160
+ class: "cn-user-settings-dialog__nav-link"
410828
411161
  }, [
410829
- (section.icon)
410830
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_8$e, [
410831
- vue$1.createVNode(_component_CnVNodes, {
410832
- vnodes: section.icon
410833
- }, null, 8 /* PROPS */, ["vnodes"])
410834
- ]))
410835
- : vue$1.createCommentVNode("v-if", true),
410836
- vue$1.createElementVNode("span", null, vue$1.toDisplayString(section.name), 1 /* TEXT */)
410837
- ], 10 /* CLASS, PROPS */, _hoisted_7$h)
411162
+ vue$1.createElementVNode("span", _hoisted_6$k, vue$1.toDisplayString(link.label), 1 /* TEXT */)
411163
+ ], 8 /* PROPS */, _hoisted_5$k)
410838
411164
  ]))
410839
411165
  }), 128 /* KEYED_FRAGMENT */))
410840
- ], 2 /* CLASS */)
410841
- ], 8 /* PROPS */, _hoisted_2$y))
410842
- : vue$1.createCommentVNode("v-if", true),
410843
- vue$1.createElementVNode("div", _hoisted_9$c, [
411166
+ ]))
411167
+ : vue$1.createCommentVNode("v-if", true),
411168
+ ($options.ncLinks.length > 0 && $props.appName)
411169
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_7$h, vue$1.toDisplayString($props.appName), 1 /* TEXT */))
411170
+ : vue$1.createCommentVNode("v-if", true),
411171
+ vue$1.createElementVNode("ul", {
411172
+ class: vue$1.normalizeClass({ 'cn-user-settings-dialog__group-sections': $options.ncLinks.length > 0 })
411173
+ }, [
411174
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.sections, (section) => {
411175
+ return (vue$1.openBlock(), vue$1.createElementBlock("li", {
411176
+ key: section.id
411177
+ }, [
411178
+ vue$1.createElementVNode("a", {
411179
+ href: `#settings-section_${section.id}`,
411180
+ class: vue$1.normalizeClass(["cn-user-settings-dialog__nav-link", { 'cn-user-settings-dialog__nav-link--active': section.id === $data.selected }]),
411181
+ "aria-current": section.id === $data.selected ? 'true' : undefined,
411182
+ "data-testid": `cn-user-settings-nav-${section.id}`,
411183
+ onClick: vue$1.withModifiers($event => ($options.selectSection(section.id)), ["prevent"])
411184
+ }, [
411185
+ vue$1.createElementVNode("span", _hoisted_9$c, vue$1.toDisplayString(section.name), 1 /* TEXT */)
411186
+ ], 10 /* CLASS, PROPS */, _hoisted_8$e)
411187
+ ]))
411188
+ }), 128 /* KEYED_FRAGMENT */))
411189
+ ], 2 /* CLASS */)
411190
+ ], 8 /* PROPS */, _hoisted_2$y),
411191
+ vue$1.createElementVNode("div", _hoisted_10$a, [
410844
411192
  vue$1.renderSlot(_ctx.$slots, "default"),
410845
- (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.sections, (section) => {
410846
- return (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, {
410847
- key: `heading-icon-${section.id}-${section.name}`
410848
- }, [
410849
- (section.icon && $data.headingTargets.includes(section.id))
410850
- ? (vue$1.openBlock(), vue$1.createBlock(vue$1.Teleport, {
410851
- key: 0,
410852
- to: `#settings-section_${section.id}--label`
410853
- }, [
410854
- vue$1.createElementVNode("span", {
410855
- class: "cn-user-settings-dialog__heading-icon",
410856
- "aria-hidden": "true",
410857
- "data-testid": `cn-user-settings-heading-icon-${section.id}`
410858
- }, [
410859
- vue$1.createVNode(_component_CnVNodes, {
410860
- vnodes: section.icon
410861
- }, null, 8 /* PROPS */, ["vnodes"])
410862
- ], 8 /* PROPS */, _hoisted_10$a)
410863
- ], 8 /* PROPS */, ["to"]))
410864
- : vue$1.createCommentVNode("v-if", true)
410865
- ], 64 /* STABLE_FRAGMENT */))
410866
- }), 128 /* KEYED_FRAGMENT */))
410867
- ])
411193
+ vue$1.createElementVNode("p", _hoisted_11$8, vue$1.toDisplayString($options.footerNote), 1 /* TEXT */)
411194
+ ]),
411195
+ vue$1.createVNode(_component_NcButton, {
411196
+ class: "cn-user-settings-dialog__close",
411197
+ variant: "tertiary",
411198
+ "aria-label": $options.closeLabel,
411199
+ title: $options.closeLabel,
411200
+ "data-testid": "cn-user-settings-close",
411201
+ onClick: $options.close
411202
+ }, {
411203
+ icon: vue$1.withCtx(() => [
411204
+ vue$1.createVNode(_component_Close, { size: 20 })
411205
+ ]),
411206
+ _: 1 /* STABLE */
411207
+ }, 8 /* PROPS */, ["aria-label", "title", "onClick"])
410868
411208
  ])
410869
411209
  ]),
410870
411210
  _: 3 /* FORWARDED */
410871
- }, 8 /* PROPS */, ["name", "eyebrow", "subtitle", "open", "style", "onUpdate:open", "onClosing"]))
411211
+ }, 8 /* PROPS */, ["name", "open", "style", "onUpdate:open", "onClosing"]))
410872
411212
  }
410873
411213
 
410874
411214
  script$o.render = render$o;
410875
- script$o.__scopeId = "data-v-6d3e749e";
411215
+ script$o.__scopeId = "data-v-7d896e3e";
410876
411216
  const __sfc_main$o = script$o;
410877
411217
 
410878
411218
  /**
@@ -412608,9 +412948,10 @@ var script$n = {
412608
412948
  },
412609
412949
 
412610
412950
  /**
412611
- * Board look: the line above the user-settings title. Empty uses
412612
- * the library's "Your account".
412951
+ * Deprecated and ignored: the board user-settings dialog draws no
412952
+ * line above its title (DqPersoonlijkeInstellingen).
412613
412953
  *
412954
+ * @deprecated
412614
412955
  * @type {string}
412615
412956
  */
412616
412957
  userSettingsEyebrow: {
@@ -412619,10 +412960,10 @@ var script$n = {
412619
412960
  },
412620
412961
 
412621
412962
  /**
412622
- * Board look: the sentence under the user-settings title. Empty
412623
- * uses the library's "Only for you. Colleagues keep their own
412624
- * settings."
412963
+ * Deprecated and ignored: the board user-settings dialog draws no
412964
+ * sentence under its title (DqPersoonlijkeInstellingen).
412625
412965
  *
412966
+ * @deprecated
412626
412967
  * @type {string}
412627
412968
  */
412628
412969
  userSettingsSubtitle: {
@@ -414123,8 +414464,8 @@ var script$n = {
414123
414464
 
414124
414465
  /**
414125
414466
  * The props of the user-settings dialog: `NcAppSettingsDialog`'s, or
414126
- * under the board look CnUserSettingsDialog's (eyebrow, subtitle and
414127
- * the app's name for the footer note).
414467
+ * under the board look CnUserSettingsDialog's (title, the app's name
414468
+ * for the note under the sections, and the Nextcloud links).
414128
414469
  *
414129
414470
  * @spec openspec/changes/user-settings-board-dialog/specs/user-settings-board-dialog/spec.md#requirement-the-user-settings-dialog-takes-the-board-look
414130
414471
  * @return {object}