@conduction/nextcloud-vue 2.91.0 → 2.93.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 (149) hide show
  1. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +57 -4
  2. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +44 -17
  4. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  5. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
  6. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +44 -2
  7. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  8. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +140 -59
  9. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +20 -6
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  13. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +3 -2
  14. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  15. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +10 -39
  16. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  17. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  18. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +5 -3
  19. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  20. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  21. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  22. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +6 -4
  23. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  24. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  25. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js +46 -0
  26. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js.map +1 -1
  27. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js +6 -2
  28. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js.map +1 -1
  29. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
  30. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +82 -9
  31. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  32. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js +104 -90
  33. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  34. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +9 -0
  35. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js.map +1 -0
  36. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +355 -0
  37. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -0
  38. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +462 -0
  39. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -0
  40. package/dist/esm/components/CnFormDialog/CnFormDialog.vue.js +1 -1
  41. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +39 -10
  42. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  43. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +418 -399
  44. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  45. package/dist/esm/components/CnIcon/semanticIcons.js +2 -2
  46. package/dist/esm/components/CnIcon/semanticIcons.js.map +1 -1
  47. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue.js +1 -1
  48. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js +156 -3
  49. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js.map +1 -1
  50. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js +168 -52
  51. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js.map +1 -1
  52. package/dist/esm/components/CnModuleCard/CnModuleCard.vue.js +9 -0
  53. package/dist/esm/components/CnModuleCard/CnModuleCard.vue.js.map +1 -0
  54. package/dist/esm/components/CnModuleCard/CnModuleCard.vue2.js +83 -0
  55. package/dist/esm/components/CnModuleCard/CnModuleCard.vue2.js.map +1 -0
  56. package/dist/esm/components/CnModuleCard/CnModuleCard.vue3.js +119 -0
  57. package/dist/esm/components/CnModuleCard/CnModuleCard.vue3.js.map +1 -0
  58. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
  59. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +22 -1
  60. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
  61. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +20 -14
  62. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
  63. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue.js +1 -1
  64. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js +2 -0
  65. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js.map +1 -1
  66. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js +15 -5
  67. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js.map +1 -1
  68. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue.js +1 -1
  69. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js +8 -30
  70. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js.map +1 -1
  71. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue3.js.map +1 -1
  72. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  73. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +33 -2
  74. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  75. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  76. package/dist/esm/components/CnTextWidget/CnTextWidget.vue.js +1 -1
  77. package/dist/esm/components/CnTextWidget/CnTextWidget.vue2.js +63 -4
  78. package/dist/esm/components/CnTextWidget/CnTextWidget.vue2.js.map +1 -1
  79. package/dist/esm/components/CnTextWidget/CnTextWidget.vue3.js +19 -2
  80. package/dist/esm/components/CnTextWidget/CnTextWidget.vue3.js.map +1 -1
  81. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +9 -0
  82. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js.map +1 -0
  83. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +164 -0
  84. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -0
  85. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +93 -0
  86. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -0
  87. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  88. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +12 -0
  89. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  90. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  91. package/dist/esm/l10n/en.json.js +45 -1
  92. package/dist/esm/l10n/en.json.js.map +1 -1
  93. package/dist/esm/l10n/nl.json.js +44 -1
  94. package/dist/esm/l10n/nl.json.js.map +1 -1
  95. package/dist/esm/library-style.js +1 -1
  96. package/dist/esm/nextcloud-vue.css +1182 -328
  97. package/dist/esm/utils/boardDate.js +35 -1
  98. package/dist/esm/utils/boardDate.js.map +1 -1
  99. package/dist/esm/utils/featureCatalog.js +135 -0
  100. package/dist/esm/utils/featureCatalog.js.map +1 -0
  101. package/dist/esm/utils/fillTemplate.js +84 -4
  102. package/dist/esm/utils/fillTemplate.js.map +1 -1
  103. package/dist/esm/utils/headerMeta.js +62 -12
  104. package/dist/esm/utils/headerMeta.js.map +1 -1
  105. package/dist/esm/utils/roadmapIssues.js +86 -0
  106. package/dist/esm/utils/roadmapIssues.js.map +1 -0
  107. package/dist/esm/utils/userDisplayName.js +47 -0
  108. package/dist/esm/utils/userDisplayName.js.map +1 -0
  109. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  110. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  111. package/dist/nextcloud-vue.cjs.js +15618 -13097
  112. package/dist/nextcloud-vue.cjs.js.map +2 -2
  113. package/dist/nextcloud-vue.css +1182 -328
  114. package/l10n/en.json +45 -1
  115. package/l10n/nl.json +44 -1
  116. package/package.json +1 -1
  117. package/src/components/CnAppRoot/CnAppRoot.md +2 -0
  118. package/src/components/CnAppRoot/CnAppRoot.vue +66 -5
  119. package/src/components/CnChoiceCards/CnChoiceCards.md +27 -0
  120. package/src/components/CnChoiceCards/CnChoiceCards.vue +168 -3
  121. package/src/components/CnDashboardPage/CnDashboardPage.vue +45 -6
  122. package/src/components/CnDataTable/CnDataTable.vue +10 -39
  123. package/src/components/CnDetailPage/CnDetailPage.vue +5 -3
  124. package/src/components/CnFactsWidget/CnFactsWidget.vue +6 -4
  125. package/src/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue +51 -1
  126. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +98 -13
  127. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +1053 -0
  128. package/src/components/CnFormDialog/CnFormDialog.md +1 -0
  129. package/src/components/CnFormDialog/CnFormDialog.vue +619 -562
  130. package/src/components/CnLinkCardsPage/CnLinkCardsPage.vue +338 -5
  131. package/src/components/CnModuleCard/CnModuleCard.vue +258 -0
  132. package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +23 -2
  133. package/src/components/CnNotificationPreferences/CnNotificationPreferences.vue +5 -0
  134. package/src/components/CnRoadmapTab/CnRoadmapTab.vue +6 -28
  135. package/src/components/CnTabsWidget/CnTabsWidget.vue +33 -2
  136. package/src/components/CnTextWidget/CnTextWidget.vue +89 -4
  137. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +305 -0
  138. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +12 -0
  139. package/src/css/dialog.css +47 -0
  140. package/src/css/look-board-detail.css +8 -0
  141. package/src/css/look-board.css +33 -0
  142. package/src/schemas/app-manifest-v2.schema.json +67 -4
  143. package/src/utils/boardDate.js +34 -0
  144. package/src/utils/featureCatalog.js +132 -0
  145. package/src/utils/fillTemplate.js +83 -3
  146. package/src/utils/headerMeta.js +62 -12
  147. package/src/utils/roadmapIssues.js +82 -0
  148. package/src/utils/userDisplayName.js +54 -0
  149. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -15,109 +15,114 @@ const _hoisted_2 = {
15
15
  };
16
16
  const _hoisted_3 = ["max", "value"];
17
17
  const _hoisted_4 = { class: "cn-form-dialog__draft-actions" };
18
- const _hoisted_5 = ["data-cn-field"];
19
- const _hoisted_6 = ["title"];
20
- const _hoisted_7 = {
18
+ const _hoisted_5 = {
19
+ key: 0,
20
+ class: "cn-form-dialog__section",
21
+ "data-testid": "cn-form-dialog-section"
22
+ };
23
+ const _hoisted_6 = ["data-cn-field"];
24
+ const _hoisted_7 = ["title"];
25
+ const _hoisted_8 = {
21
26
  key: 4,
22
27
  class: "cn-form-dialog__coded-fallback"
23
28
  };
24
- const _hoisted_8 = {
29
+ const _hoisted_9 = {
25
30
  key: 2,
26
31
  class: "cn-form-dialog__textarea-wrapper"
27
32
  };
28
- const _hoisted_9 = ["for"];
29
- const _hoisted_10 = ["id", "value", "disabled", "placeholder", "onInput"];
30
- const _hoisted_11 = {
33
+ const _hoisted_10 = ["for"];
34
+ const _hoisted_11 = ["id", "value", "disabled", "placeholder", "onInput"];
35
+ const _hoisted_12 = {
31
36
  key: 3,
32
37
  class: "cn-form-dialog__select-wrapper"
33
38
  };
34
- const _hoisted_12 = {
39
+ const _hoisted_13 = {
35
40
  key: 4,
36
41
  class: "cn-form-dialog__switch-wrapper"
37
42
  };
38
- const _hoisted_13 = {
43
+ const _hoisted_14 = {
39
44
  key: 5,
40
45
  class: "cn-form-dialog__select-wrapper"
41
46
  };
42
- const _hoisted_14 = { class: "cn-form-dialog__option" };
43
- const _hoisted_15 = {
47
+ const _hoisted_15 = { class: "cn-form-dialog__option" };
48
+ const _hoisted_16 = {
44
49
  key: 6,
45
50
  class: "cn-form-dialog__select-wrapper"
46
51
  };
47
- const _hoisted_16 = { class: "cn-form-dialog__option" };
48
52
  const _hoisted_17 = { class: "cn-form-dialog__option" };
49
- const _hoisted_18 = {
53
+ const _hoisted_18 = { class: "cn-form-dialog__option" };
54
+ const _hoisted_19 = {
50
55
  key: 7,
51
56
  class: "cn-form-dialog__select-wrapper"
52
57
  };
53
- const _hoisted_19 = { class: "cn-form-dialog__option" };
54
58
  const _hoisted_20 = { class: "cn-form-dialog__option" };
55
- const _hoisted_21 = {
59
+ const _hoisted_21 = { class: "cn-form-dialog__option" };
60
+ const _hoisted_22 = {
56
61
  key: 8,
57
62
  class: "cn-form-dialog__switch-wrapper"
58
63
  };
59
- const _hoisted_22 = {
64
+ const _hoisted_23 = {
60
65
  key: 9,
61
66
  class: "cn-form-dialog__select-wrapper"
62
67
  };
63
- const _hoisted_23 = ["for"];
64
- const _hoisted_24 = {
68
+ const _hoisted_24 = ["for"];
69
+ const _hoisted_25 = {
65
70
  key: 10,
66
71
  class: "cn-form-dialog__json-wrapper"
67
72
  };
68
- const _hoisted_25 = ["for"];
69
- const _hoisted_26 = {
73
+ const _hoisted_26 = ["for"];
74
+ const _hoisted_27 = {
70
75
  key: 11,
71
76
  class: "cn-form-dialog__json-wrapper"
72
77
  };
73
- const _hoisted_27 = ["for"];
74
- const _hoisted_28 = {
78
+ const _hoisted_28 = ["for"];
79
+ const _hoisted_29 = {
75
80
  key: 12,
76
81
  class: "cn-form-dialog__file-wrapper"
77
82
  };
78
- const _hoisted_29 = {
83
+ const _hoisted_30 = {
79
84
  key: 13,
80
85
  class: "cn-form-dialog__duration-wrapper"
81
86
  };
82
- const _hoisted_30 = {
87
+ const _hoisted_31 = {
83
88
  key: 14,
84
89
  class: "cn-form-dialog__child-records-wrapper"
85
90
  };
86
- const _hoisted_31 = {
91
+ const _hoisted_32 = {
87
92
  key: 15,
88
93
  class: "cn-form-dialog__sub-objects-wrapper"
89
94
  };
90
- const _hoisted_32 = {
95
+ const _hoisted_33 = {
91
96
  key: 16,
92
97
  class: "cn-form-dialog__property-source-wrapper"
93
98
  };
94
- const _hoisted_33 = {
99
+ const _hoisted_34 = {
95
100
  key: 17,
96
101
  class: "cn-form-dialog__icon-wrapper"
97
102
  };
98
- const _hoisted_34 = ["for"];
99
- const _hoisted_35 = {
103
+ const _hoisted_35 = ["for"];
104
+ const _hoisted_36 = {
100
105
  key: 19,
101
106
  class: "cn-form-dialog__assigned",
102
107
  "aria-live": "polite",
103
108
  "data-testid": "cn-form-dialog-assigned"
104
109
  };
105
- const _hoisted_36 = {
110
+ const _hoisted_37 = {
106
111
  key: 0,
107
112
  class: "cn-form-dialog__dynamic-loading",
108
113
  "data-testid": "cn-form-dialog-dynamic-loading"
109
114
  };
110
- const _hoisted_37 = {
115
+ const _hoisted_38 = {
111
116
  key: 0,
112
117
  class: "cn-dialog__tertiary",
113
118
  "data-testid": "cn-dialog-tertiary"
114
119
  };
115
- const _hoisted_38 = {
120
+ const _hoisted_39 = {
116
121
  class: "cn-form-dialog__draft-state",
117
122
  "aria-live": "polite",
118
123
  "data-testid": "cn-form-dialog-draft-state"
119
124
  };
120
- const _hoisted_39 = {
125
+ const _hoisted_40 = {
121
126
  key: 1,
122
127
  class: "cn-form-dialog__draft-state",
123
128
  "aria-live": "polite",
@@ -144,6 +149,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
144
149
  const _component_NcLoadingIcon = resolveComponent("NcLoadingIcon");
145
150
  const _component_CnFormDialog = resolveComponent("CnFormDialog", true);
146
151
  const _component_CnReplaceValuesDialog = resolveComponent("CnReplaceValuesDialog");
152
+ const _component_CnIcon = resolveComponent("CnIcon");
147
153
  const _component_Plus = resolveComponent("Plus");
148
154
  const _component_ContentSaveOutline = resolveComponent("ContentSaveOutline");
149
155
  const _component_CnDialog = resolveComponent("CnDialog");
@@ -162,7 +168,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
162
168
  }, {
163
169
  actions: withCtx(() => [
164
170
  (_ctx.isBoardLook)
165
- ? (openBlock(), createElementBlock("span", _hoisted_37, [
171
+ ? (openBlock(), createElementBlock("span", _hoisted_38, [
166
172
  ($data.result === null && $options.canSaveDraft)
167
173
  ? (openBlock(), createBlock(_component_NcButton, {
168
174
  key: 0,
@@ -177,9 +183,9 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
177
183
  _: 1 /* STABLE */
178
184
  }, 8 /* PROPS */, ["disabled", "onClick"]))
179
185
  : createCommentVNode("v-if", true),
180
- createElementVNode("span", _hoisted_38, toDisplayString($options.draftIndicatorLabel), 1 /* TEXT */)
186
+ createElementVNode("span", _hoisted_39, toDisplayString($options.draftIndicatorLabel), 1 /* TEXT */)
181
187
  ]))
182
- : (openBlock(), createElementBlock("span", _hoisted_39, toDisplayString($options.draftIndicatorLabel), 1 /* TEXT */)),
188
+ : (openBlock(), createElementBlock("span", _hoisted_40, toDisplayString($options.draftIndicatorLabel), 1 /* TEXT */)),
183
189
  createVNode(_component_NcButton, {
184
190
  onClick: _cache[2] || (_cache[2] = $event => (_ctx.$emit('close')))
185
191
  }, {
@@ -214,15 +220,22 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
214
220
  key: 0,
215
221
  size: 20
216
222
  }))
217
- : ($options.isCreateMode)
218
- ? (openBlock(), createBlock(_component_Plus, {
223
+ : ($props.confirmIcon)
224
+ ? (openBlock(), createBlock(_component_CnIcon, {
219
225
  key: 1,
220
- size: 20
221
- }))
222
- : (openBlock(), createBlock(_component_ContentSaveOutline, {
223
- key: 2,
224
- size: 20
225
- }))
226
+ name: $props.confirmIcon,
227
+ size: 20,
228
+ "data-testid": "cn-form-dialog-confirm-icon"
229
+ }, null, 8 /* PROPS */, ["name"]))
230
+ : ($options.isCreateMode)
231
+ ? (openBlock(), createBlock(_component_Plus, {
232
+ key: 2,
233
+ size: 20
234
+ }))
235
+ : (openBlock(), createBlock(_component_ContentSaveOutline, {
236
+ key: 3,
237
+ size: 20
238
+ }))
226
239
  ]),
227
240
  default: withCtx(() => [
228
241
  createTextVNode(" " + toDisplayString($options.resolvedConfirmLabel), 1 /* TEXT */)
@@ -343,97 +356,79 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
343
356
  : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
344
357
  renderSlot(_ctx.$slots, "before-fields"),
345
358
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.visibleFields, (field) => {
346
- return (openBlock(), createElementBlock("div", {
347
- key: field.key,
348
- "data-cn-field": field.key,
349
- class: normalizeClass(["cn-form-dialog__field", {
350
- 'cn-form-dialog__field--wide': $options.fieldSpansBothColumns(field),
351
- 'cn-form-field--half': _ctx.isBoardLook && field.width === 'half',
352
- 'cn-form-field--invalid': _ctx.isBoardLook && !!$data.errors[field.key],
353
- }])
359
+ return (openBlock(), createElementBlock(Fragment, {
360
+ key: field.key
354
361
  }, [
355
- ($options.showsOuterLabel(field))
356
- ? (openBlock(), createBlock(_component_CnFormField, {
357
- key: 0,
358
- controlId: 'cn-form-' + field.key,
359
- text: field.label,
360
- optional: !field.required,
361
- optionalLabel: $props.optionalLabel,
362
- error: $data.errors[field.key] || '',
363
- errorId: $options.errorIdFor(field)
364
- }, null, 8 /* PROPS */, ["controlId", "text", "optional", "optionalLabel", "error", "errorId"]))
362
+ ($options.sectionStarts[field.key])
363
+ ? (openBlock(), createElementBlock("h3", _hoisted_5, toDisplayString($options.sectionStarts[field.key]), 1 /* TEXT */))
365
364
  : createCommentVNode("v-if", true),
366
- (_ctx.$slots['field-' + field.key])
367
- ? renderSlot(_ctx.$slots, 'field-' + field.key, {
368
- field: field,
369
- value: $data.formData[field.key],
370
- error: $data.errors[field.key],
371
- updateField: $options.updateField
372
- }, undefined, undefined, 1)
373
- : ($options.resolveReferenceWidget(field))
374
- ? (openBlock(), createBlock(resolveDynamicComponent($options.resolveReferenceWidget(field)), mergeProps({
375
- key: 2,
376
- ref_for: true
377
- }, $options.referenceWidgetProps(field), {
378
- onInput: value => $options.updateField(field.key, value)
379
- }), null, 16 /* FULL_PROPS */, ["onInput"]))
380
- : (field.referenceSemanticType && !$options.isSemanticResolved(field))
381
- ? (openBlock(), createElementBlock("div", {
382
- key: 3,
383
- class: "cn-form-dialog__semantic-unresolved",
384
- title: $options.semanticUnavailableText(field)
385
- }, [
386
- createVNode(_component_NcTextField, mergeProps({
387
- id: $options.fieldControlId(field),
388
- label: $options.fieldLabelText(field),
389
- labelOutside: _ctx.isBoardLook
390
- }, { ref_for: true }, $options.fieldAria(field), {
391
- modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
392
- helperText: $options.isSemanticLoading(field) ? '' : $options.semanticUnavailableText(field),
393
- disabled: true,
394
- loading: $options.isSemanticLoading(field),
395
- placeholder: field.description
396
- }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "helperText", "loading", "placeholder"])
397
- ], 8 /* PROPS */, _hoisted_6))
398
- : (field.codeList && $data.codedFailed[field.key])
399
- ? (openBlock(), createElementBlock("div", _hoisted_7, [
365
+ createElementVNode("div", {
366
+ "data-cn-field": field.key,
367
+ class: normalizeClass(["cn-form-dialog__field", {
368
+ 'cn-form-dialog__field--wide': $options.fieldSpansBothColumns(field),
369
+ 'cn-form-field--half': _ctx.isBoardLook && field.width === 'half',
370
+ 'cn-form-field--invalid': _ctx.isBoardLook && !!$data.errors[field.key],
371
+ }])
372
+ }, [
373
+ ($options.showsOuterLabel(field))
374
+ ? (openBlock(), createBlock(_component_CnFormField, {
375
+ key: 0,
376
+ controlId: 'cn-form-' + field.key,
377
+ text: field.label,
378
+ optional: !field.required,
379
+ optionalLabel: $props.optionalLabel,
380
+ error: $data.errors[field.key] || '',
381
+ errorId: $options.errorIdFor(field)
382
+ }, null, 8 /* PROPS */, ["controlId", "text", "optional", "optionalLabel", "error", "errorId"]))
383
+ : createCommentVNode("v-if", true),
384
+ (_ctx.$slots['field-' + field.key])
385
+ ? renderSlot(_ctx.$slots, 'field-' + field.key, {
386
+ field: field,
387
+ value: $data.formData[field.key],
388
+ error: $data.errors[field.key],
389
+ updateField: $options.updateField
390
+ }, undefined, undefined, 1)
391
+ : ($options.resolveReferenceWidget(field))
392
+ ? (openBlock(), createBlock(resolveDynamicComponent($options.resolveReferenceWidget(field)), mergeProps({
393
+ key: 2,
394
+ ref_for: true
395
+ }, $options.referenceWidgetProps(field), {
396
+ onInput: value => $options.updateField(field.key, value)
397
+ }), null, 16 /* FULL_PROPS */, ["onInput"]))
398
+ : (field.referenceSemanticType && !$options.isSemanticResolved(field))
399
+ ? (openBlock(), createElementBlock("div", {
400
+ key: 3,
401
+ class: "cn-form-dialog__semantic-unresolved",
402
+ title: $options.semanticUnavailableText(field)
403
+ }, [
400
404
  createVNode(_component_NcTextField, mergeProps({
401
405
  id: $options.fieldControlId(field),
402
406
  label: $options.fieldLabelText(field),
403
407
  labelOutside: _ctx.isBoardLook
404
408
  }, { ref_for: true }, $options.fieldAria(field), {
405
- modelValue: $options.codedFallbackText(field),
406
- disabled: field.readOnly,
407
- helperText: _ctx.t('nextcloud-vue', 'The list of choices could not be loaded. Enter the value by hand.'),
408
- "onUpdate:modelValue": $event => ($options.onCodedFallbackInput(field, $event))
409
- }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "disabled", "helperText", "onUpdate:modelValue"])
410
- ]))
411
- : (openBlock(), createElementBlock(Fragment, { key: 5 }, [
412
- (field.widget === 'text' || field.widget === 'email' || field.widget === 'url')
413
- ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
414
- createVNode(_component_NcTextField, mergeProps({
415
- id: $options.fieldControlId(field),
416
- label: $options.fieldLabelText(field),
417
- labelOutside: _ctx.isBoardLook
418
- }, { ref_for: true }, $options.fieldAria(field), {
419
- modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
420
- error: !!$data.errors[field.key],
421
- type: field.widget === 'email' ? 'email' : field.widget === 'url' ? 'url' : 'text',
422
- disabled: field.readOnly,
423
- placeholder: $options.fieldPlaceholder(field),
424
- "onUpdate:modelValue": value => $options.updateField(field.key, value)
425
- }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "type", "disabled", "placeholder", "onUpdate:modelValue"]),
426
- createVNode(_component_CnFieldHelper, {
427
- id: $options.helpId(field),
428
- text: field.description,
429
- more: field.descriptionLong,
430
- help: field.help,
431
- label: field.label,
432
- error: $options.helperError(field)
433
- }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
434
- ], 64 /* STABLE_FRAGMENT */))
435
- : (field.widget === 'number')
436
- ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
409
+ modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
410
+ helperText: $options.isSemanticLoading(field) ? '' : $options.semanticUnavailableText(field),
411
+ disabled: true,
412
+ loading: $options.isSemanticLoading(field),
413
+ placeholder: field.description
414
+ }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "helperText", "loading", "placeholder"])
415
+ ], 8 /* PROPS */, _hoisted_7))
416
+ : (field.codeList && $data.codedFailed[field.key])
417
+ ? (openBlock(), createElementBlock("div", _hoisted_8, [
418
+ createVNode(_component_NcTextField, mergeProps({
419
+ id: $options.fieldControlId(field),
420
+ label: $options.fieldLabelText(field),
421
+ labelOutside: _ctx.isBoardLook
422
+ }, { ref_for: true }, $options.fieldAria(field), {
423
+ modelValue: $options.codedFallbackText(field),
424
+ disabled: field.readOnly,
425
+ helperText: _ctx.t('nextcloud-vue', 'The list of choices could not be loaded. Enter the value by hand.'),
426
+ "onUpdate:modelValue": $event => ($options.onCodedFallbackInput(field, $event))
427
+ }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "disabled", "helperText", "onUpdate:modelValue"])
428
+ ]))
429
+ : (openBlock(), createElementBlock(Fragment, { key: 5 }, [
430
+ (field.widget === 'text' || field.widget === 'email' || field.widget === 'url')
431
+ ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
437
432
  createVNode(_component_NcTextField, mergeProps({
438
433
  id: $options.fieldControlId(field),
439
434
  label: $options.fieldLabelText(field),
@@ -441,11 +436,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
441
436
  }, { ref_for: true }, $options.fieldAria(field), {
442
437
  modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
443
438
  error: !!$data.errors[field.key],
444
- type: "number",
439
+ type: field.widget === 'email' ? 'email' : field.widget === 'url' ? 'url' : 'text',
445
440
  disabled: field.readOnly,
446
441
  placeholder: $options.fieldPlaceholder(field),
447
- "onUpdate:modelValue": value => $options.updateField(field.key, value !== '' ? Number(value) : null)
448
- }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "disabled", "placeholder", "onUpdate:modelValue"]),
442
+ "onUpdate:modelValue": value => $options.updateField(field.key, value)
443
+ }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "type", "disabled", "placeholder", "onUpdate:modelValue"]),
449
444
  createVNode(_component_CnFieldHelper, {
450
445
  id: $options.helpId(field),
451
446
  text: field.description,
@@ -455,25 +450,20 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
455
450
  error: $options.helperError(field)
456
451
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
457
452
  ], 64 /* STABLE_FRAGMENT */))
458
- : (field.widget === 'textarea')
459
- ? (openBlock(), createElementBlock("div", _hoisted_8, [
460
- (!$options.showsOuterLabel(field))
461
- ? (openBlock(), createElementBlock("label", {
462
- key: 0,
463
- for: 'cn-form-' + field.key,
464
- class: "cn-form-dialog__label"
465
- }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_9))
466
- : createCommentVNode("v-if", true),
467
- createElementVNode("textarea", mergeProps({
468
- id: 'cn-form-' + field.key,
469
- class: "cn-form-dialog__textarea"
453
+ : (field.widget === 'number')
454
+ ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
455
+ createVNode(_component_NcTextField, mergeProps({
456
+ id: $options.fieldControlId(field),
457
+ label: $options.fieldLabelText(field),
458
+ labelOutside: _ctx.isBoardLook
470
459
  }, { ref_for: true }, $options.fieldAria(field), {
471
- value: $data.formData[field.key] || '',
460
+ modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
461
+ error: !!$data.errors[field.key],
462
+ type: "number",
472
463
  disabled: field.readOnly,
473
464
  placeholder: $options.fieldPlaceholder(field),
474
- rows: "4",
475
- onInput: $event => ($options.updateField(field.key, $event.target.value))
476
- }), null, 16 /* FULL_PROPS */, _hoisted_10),
465
+ "onUpdate:modelValue": value => $options.updateField(field.key, value !== '' ? Number(value) : null)
466
+ }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "disabled", "placeholder", "onUpdate:modelValue"]),
477
467
  createVNode(_component_CnFieldHelper, {
478
468
  id: $options.helpId(field),
479
469
  text: field.description,
@@ -482,25 +472,26 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
482
472
  label: field.label,
483
473
  error: $options.helperError(field)
484
474
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
485
- ]))
486
- : (($options.isReferenceField(field) || $options.isReferenceArrayField(field)) && field.allowCreate)
487
- ? (openBlock(), createElementBlock("div", _hoisted_11, [
488
- createVNode(_component_CnResourceSelect, {
489
- inputId: 'cn-form-' + field.key,
490
- inputLabel: $options.fieldLabelText(field),
491
- labelOutside: _ctx.isBoardLook,
492
- register: $options.referenceRegister(field),
493
- schema: String(field.reference.schema),
494
- labelField: $options.referenceLabelField(field),
495
- multiple: !!field.reference.multiple,
496
- modelValue: $options.referenceModelValue(field),
497
- clearable: !field.required || !!field.reference.multiple,
475
+ ], 64 /* STABLE_FRAGMENT */))
476
+ : (field.widget === 'textarea')
477
+ ? (openBlock(), createElementBlock("div", _hoisted_9, [
478
+ (!$options.showsOuterLabel(field))
479
+ ? (openBlock(), createElementBlock("label", {
480
+ key: 0,
481
+ for: 'cn-form-' + field.key,
482
+ class: "cn-form-dialog__label"
483
+ }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_10))
484
+ : createCommentVNode("v-if", true),
485
+ createElementVNode("textarea", mergeProps({
486
+ id: 'cn-form-' + field.key,
487
+ class: "cn-form-dialog__textarea"
488
+ }, { ref_for: true }, $options.fieldAria(field), {
489
+ value: $data.formData[field.key] || '',
498
490
  disabled: field.readOnly,
499
- preload: true,
500
- createHandler: term => $options.openNestedCreate(field, term),
501
- "onUpdate:modelValue": value => $options.onReferenceSelected(field, value),
502
- onCreate: obj => $options.onReferenceCreated(field, obj)
503
- }, null, 8 /* PROPS */, ["inputId", "inputLabel", "labelOutside", "register", "schema", "labelField", "multiple", "modelValue", "clearable", "disabled", "createHandler", "onUpdate:modelValue", "onCreate"]),
491
+ placeholder: $options.fieldPlaceholder(field),
492
+ rows: "4",
493
+ onInput: $event => ($options.updateField(field.key, $event.target.value))
494
+ }), null, 16 /* FULL_PROPS */, _hoisted_11),
504
495
  createVNode(_component_CnFieldHelper, {
505
496
  id: $options.helpId(field),
506
497
  text: field.description,
@@ -510,19 +501,24 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
510
501
  error: $options.helperError(field)
511
502
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
512
503
  ]))
513
- : (field.widget === 'switch')
504
+ : (($options.isReferenceField(field) || $options.isReferenceArrayField(field)) && field.allowCreate)
514
505
  ? (openBlock(), createElementBlock("div", _hoisted_12, [
515
- createVNode(_component_NcCheckboxRadioSwitch, {
516
- modelValue: $options.isSwitchOn(field),
506
+ createVNode(_component_CnResourceSelect, {
507
+ inputId: 'cn-form-' + field.key,
508
+ inputLabel: $options.fieldLabelText(field),
509
+ labelOutside: _ctx.isBoardLook,
510
+ register: $options.referenceRegister(field),
511
+ schema: String(field.reference.schema),
512
+ labelField: $options.referenceLabelField(field),
513
+ multiple: !!field.reference.multiple,
514
+ modelValue: $options.referenceModelValue(field),
515
+ clearable: !field.required || !!field.reference.multiple,
517
516
  disabled: field.readOnly,
518
- type: "switch",
519
- "onUpdate:modelValue": value => $options.updateField(field.key, $options.switchValueFor(field, value))
520
- }, {
521
- default: withCtx(() => [
522
- createTextVNode(toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 1 /* TEXT */)
523
- ]),
524
- _: 2 /* DYNAMIC */
525
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "disabled", "onUpdate:modelValue"]),
517
+ preload: true,
518
+ createHandler: term => $options.openNestedCreate(field, term),
519
+ "onUpdate:modelValue": value => $options.onReferenceSelected(field, value),
520
+ onCreate: obj => $options.onReferenceCreated(field, obj)
521
+ }, null, 8 /* PROPS */, ["inputId", "inputLabel", "labelOutside", "register", "schema", "labelField", "multiple", "modelValue", "clearable", "disabled", "createHandler", "onUpdate:modelValue", "onCreate"]),
526
522
  createVNode(_component_CnFieldHelper, {
527
523
  id: $options.helpId(field),
528
524
  text: field.description,
@@ -532,50 +528,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
532
528
  error: $options.helperError(field)
533
529
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
534
530
  ]))
535
- : (field.widget === 'select' || field.widget === 'user' || field.widget === 'group')
531
+ : (field.widget === 'switch')
536
532
  ? (openBlock(), createElementBlock("div", _hoisted_13, [
537
- withDirectives((openBlock(), createBlock(resolveDynamicComponent($options.isUserField(field) ? 'NcSelectUsers' : 'NcSelect'), {
538
- inputId: 'cn-form-' + field.key,
539
- inputLabel: $options.fieldLabelText(field),
540
- labelOutside: _ctx.isBoardLook,
541
- options: $options.getEffectiveOptions(field),
542
- modelValue: $options.getEffectiveSelectedOption(field),
543
- clearable: !field.required,
533
+ createVNode(_component_NcCheckboxRadioSwitch, {
534
+ modelValue: $options.isSwitchOn(field),
544
535
  disabled: field.readOnly,
545
- loading: $options.isFieldLoading(field),
546
- filterable: !$options.isAsyncEnum(field),
547
- "onUpdate:modelValue": $event => ($options.onEffectiveSelectChange(field, $event)),
548
- onSearch: $event => ($options.isAsyncEnum(field) ? $options.onAsyncSearch(field, $event) : undefined)
549
- }, createSlots({ _: 2 /* DYNAMIC */ }, [
550
- (_ctx.$slots['field-' + field.key + '-option'])
551
- ? {
552
- name: "option",
553
- fn: withCtx((optionProps) => [
554
- renderSlot(_ctx.$slots, 'field-' + field.key + '-option', mergeProps({ ref_for: true }, optionProps))
555
- ]),
556
- key: "0"
557
- }
558
- : (!$options.isUserField(field))
559
- ? {
560
- name: "option",
561
- fn: withCtx((optionProps) => [
562
- createElementVNode("span", _hoisted_14, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
563
- ]),
564
- key: "1"
565
- }
566
- : undefined,
567
- (_ctx.$slots['field-' + field.key + '-selected-option'])
568
- ? {
569
- name: "selected-option",
570
- fn: withCtx((optionProps) => [
571
- renderSlot(_ctx.$slots, 'field-' + field.key + '-selected-option', mergeProps({ ref_for: true }, optionProps))
572
- ]),
573
- key: "2"
574
- }
575
- : undefined
576
- ]), 1064 /* PROPS, NEED_HYDRATION, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "options", "modelValue", "clearable", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
577
- [_directive_cn_select_aria, $options.fieldAria(field)]
578
- ]),
536
+ type: "switch",
537
+ "onUpdate:modelValue": value => $options.updateField(field.key, $options.switchValueFor(field, value))
538
+ }, {
539
+ default: withCtx(() => [
540
+ createTextVNode(toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 1 /* TEXT */)
541
+ ]),
542
+ _: 2 /* DYNAMIC */
543
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "disabled", "onUpdate:modelValue"]),
579
544
  createVNode(_component_CnFieldHelper, {
580
545
  id: $options.helpId(field),
581
546
  text: field.description,
@@ -585,22 +550,20 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
585
550
  error: $options.helperError(field)
586
551
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
587
552
  ]))
588
- : (field.widget === 'multiselect' || field.widget === 'user-multiselect' || field.widget === 'group-multiselect')
589
- ? (openBlock(), createElementBlock("div", _hoisted_15, [
590
- withDirectives((openBlock(), createBlock(_component_NcSelect, {
553
+ : (field.widget === 'select' || field.widget === 'user' || field.widget === 'group')
554
+ ? (openBlock(), createElementBlock("div", _hoisted_14, [
555
+ withDirectives((openBlock(), createBlock(resolveDynamicComponent($options.isUserField(field) ? 'NcSelectUsers' : 'NcSelect'), {
591
556
  inputId: 'cn-form-' + field.key,
592
557
  inputLabel: $options.fieldLabelText(field),
593
558
  labelOutside: _ctx.isBoardLook,
594
- options: $options.getEffectiveArrayOptions(field),
595
- modelValue: $options.getEffectiveSelectedArrayOptions(field),
596
- multiple: true,
597
- keepOpen: true,
598
- clearable: true,
559
+ options: $options.getEffectiveOptions(field),
560
+ modelValue: $options.getEffectiveSelectedOption(field),
561
+ clearable: !field.required,
599
562
  disabled: field.readOnly,
600
563
  loading: $options.isFieldLoading(field),
601
- filterable: !$options.isAsyncItemsEnum(field),
602
- "onUpdate:modelValue": $event => ($options.onEffectiveMultiSelectChange(field, $event)),
603
- onSearch: $event => ($options.isAsyncItemsEnum(field) ? $options.onAsyncSearch(field, $event) : undefined)
564
+ filterable: !$options.isAsyncEnum(field),
565
+ "onUpdate:modelValue": $event => ($options.onEffectiveSelectChange(field, $event)),
566
+ onSearch: $event => ($options.isAsyncEnum(field) ? $options.onAsyncSearch(field, $event) : undefined)
604
567
  }, createSlots({ _: 2 /* DYNAMIC */ }, [
605
568
  (_ctx.$slots['field-' + field.key + '-option'])
606
569
  ? {
@@ -610,13 +573,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
610
573
  ]),
611
574
  key: "0"
612
575
  }
613
- : {
614
- name: "option",
615
- fn: withCtx((optionProps) => [
616
- createElementVNode("span", _hoisted_16, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
617
- ]),
618
- key: "1"
619
- },
576
+ : (!$options.isUserField(field))
577
+ ? {
578
+ name: "option",
579
+ fn: withCtx((optionProps) => [
580
+ createElementVNode("span", _hoisted_15, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
581
+ ]),
582
+ key: "1"
583
+ }
584
+ : undefined,
620
585
  (_ctx.$slots['field-' + field.key + '-selected-option'])
621
586
  ? {
622
587
  name: "selected-option",
@@ -625,14 +590,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
625
590
  ]),
626
591
  key: "2"
627
592
  }
628
- : {
629
- name: "selected-option",
630
- fn: withCtx((optionProps) => [
631
- createElementVNode("span", _hoisted_17, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
632
- ]),
633
- key: "3"
634
- }
635
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "options", "modelValue", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
593
+ : undefined
594
+ ]), 1064 /* PROPS, NEED_HYDRATION, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "options", "modelValue", "clearable", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
636
595
  [_directive_cn_select_aria, $options.fieldAria(field)]
637
596
  ]),
638
597
  createVNode(_component_CnFieldHelper, {
@@ -644,23 +603,22 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
644
603
  error: $options.helperError(field)
645
604
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
646
605
  ]))
647
- : (field.widget === 'tags')
648
- ? (openBlock(), createElementBlock("div", _hoisted_18, [
606
+ : (field.widget === 'multiselect' || field.widget === 'user-multiselect' || field.widget === 'group-multiselect')
607
+ ? (openBlock(), createElementBlock("div", _hoisted_16, [
649
608
  withDirectives((openBlock(), createBlock(_component_NcSelect, {
650
609
  inputId: 'cn-form-' + field.key,
651
610
  inputLabel: $options.fieldLabelText(field),
652
611
  labelOutside: _ctx.isBoardLook,
653
- modelValue: $data.formData[field.key] || [],
654
- options: $options.isFieldAsync(field) ? (($data.asyncState[field.key] && $data.asyncState[field.key].options) || []) : [],
612
+ options: $options.getEffectiveArrayOptions(field),
613
+ modelValue: $options.getEffectiveSelectedArrayOptions(field),
655
614
  multiple: true,
656
615
  keepOpen: true,
657
- taggable: true,
658
616
  clearable: true,
659
617
  disabled: field.readOnly,
660
618
  loading: $options.isFieldLoading(field),
661
- filterable: !$options.isFieldAsync(field),
662
- "onUpdate:modelValue": $event => ($options.updateField(field.key, $event)),
663
- onSearch: $event => ($options.isFieldAsync(field) ? $options.onAsyncSearch(field, $event) : undefined)
619
+ filterable: !$options.isAsyncItemsEnum(field),
620
+ "onUpdate:modelValue": $event => ($options.onEffectiveMultiSelectChange(field, $event)),
621
+ onSearch: $event => ($options.isAsyncItemsEnum(field) ? $options.onAsyncSearch(field, $event) : undefined)
664
622
  }, createSlots({ _: 2 /* DYNAMIC */ }, [
665
623
  (_ctx.$slots['field-' + field.key + '-option'])
666
624
  ? {
@@ -673,7 +631,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
673
631
  : {
674
632
  name: "option",
675
633
  fn: withCtx((optionProps) => [
676
- createElementVNode("span", _hoisted_19, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
634
+ createElementVNode("span", _hoisted_17, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
677
635
  ]),
678
636
  key: "1"
679
637
  },
@@ -688,11 +646,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
688
646
  : {
689
647
  name: "selected-option",
690
648
  fn: withCtx((optionProps) => [
691
- createElementVNode("span", _hoisted_20, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
649
+ createElementVNode("span", _hoisted_18, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
692
650
  ]),
693
651
  key: "3"
694
652
  }
695
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "modelValue", "options", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
653
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "options", "modelValue", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
696
654
  [_directive_cn_select_aria, $options.fieldAria(field)]
697
655
  ]),
698
656
  createVNode(_component_CnFieldHelper, {
@@ -704,19 +662,57 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
704
662
  error: $options.helperError(field)
705
663
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
706
664
  ]))
707
- : (field.widget === 'checkbox')
708
- ? (openBlock(), createElementBlock("div", _hoisted_21, [
709
- createVNode(_component_NcCheckboxRadioSwitch, {
710
- modelValue: !!$data.formData[field.key],
665
+ : (field.widget === 'tags')
666
+ ? (openBlock(), createElementBlock("div", _hoisted_19, [
667
+ withDirectives((openBlock(), createBlock(_component_NcSelect, {
668
+ inputId: 'cn-form-' + field.key,
669
+ inputLabel: $options.fieldLabelText(field),
670
+ labelOutside: _ctx.isBoardLook,
671
+ modelValue: $data.formData[field.key] || [],
672
+ options: $options.isFieldAsync(field) ? (($data.asyncState[field.key] && $data.asyncState[field.key].options) || []) : [],
673
+ multiple: true,
674
+ keepOpen: true,
675
+ taggable: true,
676
+ clearable: true,
711
677
  disabled: field.readOnly,
712
- type: "switch",
713
- "onUpdate:modelValue": value => $options.updateField(field.key, value)
714
- }, {
715
- default: withCtx(() => [
716
- createTextVNode(toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 1 /* TEXT */)
717
- ]),
718
- _: 2 /* DYNAMIC */
719
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "disabled", "onUpdate:modelValue"]),
678
+ loading: $options.isFieldLoading(field),
679
+ filterable: !$options.isFieldAsync(field),
680
+ "onUpdate:modelValue": $event => ($options.updateField(field.key, $event)),
681
+ onSearch: $event => ($options.isFieldAsync(field) ? $options.onAsyncSearch(field, $event) : undefined)
682
+ }, createSlots({ _: 2 /* DYNAMIC */ }, [
683
+ (_ctx.$slots['field-' + field.key + '-option'])
684
+ ? {
685
+ name: "option",
686
+ fn: withCtx((optionProps) => [
687
+ renderSlot(_ctx.$slots, 'field-' + field.key + '-option', mergeProps({ ref_for: true }, optionProps))
688
+ ]),
689
+ key: "0"
690
+ }
691
+ : {
692
+ name: "option",
693
+ fn: withCtx((optionProps) => [
694
+ createElementVNode("span", _hoisted_20, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
695
+ ]),
696
+ key: "1"
697
+ },
698
+ (_ctx.$slots['field-' + field.key + '-selected-option'])
699
+ ? {
700
+ name: "selected-option",
701
+ fn: withCtx((optionProps) => [
702
+ renderSlot(_ctx.$slots, 'field-' + field.key + '-selected-option', mergeProps({ ref_for: true }, optionProps))
703
+ ]),
704
+ key: "2"
705
+ }
706
+ : {
707
+ name: "selected-option",
708
+ fn: withCtx((optionProps) => [
709
+ createElementVNode("span", _hoisted_21, toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
710
+ ]),
711
+ key: "3"
712
+ }
713
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["inputId", "inputLabel", "labelOutside", "modelValue", "options", "disabled", "loading", "filterable", "onUpdate:modelValue", "onSearch"])), [
714
+ [_directive_cn_select_aria, $options.fieldAria(field)]
715
+ ]),
720
716
  createVNode(_component_CnFieldHelper, {
721
717
  id: $options.helpId(field),
722
718
  text: field.description,
@@ -726,24 +722,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
726
722
  error: $options.helperError(field)
727
723
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
728
724
  ]))
729
- : (field.widget === 'date' || field.widget === 'datetime')
725
+ : (field.widget === 'checkbox')
730
726
  ? (openBlock(), createElementBlock("div", _hoisted_22, [
731
- (!$options.showsOuterLabel(field))
732
- ? (openBlock(), createElementBlock("label", {
733
- key: 0,
734
- for: 'cn-form-' + field.key,
735
- class: "cn-form-dialog__label"
736
- }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_23))
737
- : createCommentVNode("v-if", true),
738
- createVNode(_component_NcDateTimePickerNative, {
739
- id: 'cn-form-' + field.key,
740
- type: field.widget === 'datetime' ? 'datetime-local' : 'date',
741
- label: field.label,
742
- hideLabel: true,
743
- modelValue: $options.dateValueFor(field),
727
+ createVNode(_component_NcCheckboxRadioSwitch, {
728
+ modelValue: !!$data.formData[field.key],
744
729
  disabled: field.readOnly,
745
- "onUpdate:modelValue": date => $options.onDateFieldInput(field, date)
746
- }, null, 8 /* PROPS */, ["id", "type", "label", "modelValue", "disabled", "onUpdate:modelValue"]),
730
+ type: "switch",
731
+ "onUpdate:modelValue": value => $options.updateField(field.key, value)
732
+ }, {
733
+ default: withCtx(() => [
734
+ createTextVNode(toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 1 /* TEXT */)
735
+ ]),
736
+ _: 2 /* DYNAMIC */
737
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "disabled", "onUpdate:modelValue"]),
747
738
  createVNode(_component_CnFieldHelper, {
748
739
  id: $options.helpId(field),
749
740
  text: field.description,
@@ -753,22 +744,24 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
753
744
  error: $options.helperError(field)
754
745
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
755
746
  ]))
756
- : (field.widget === 'json')
757
- ? (openBlock(), createElementBlock("div", _hoisted_24, [
747
+ : (field.widget === 'date' || field.widget === 'datetime')
748
+ ? (openBlock(), createElementBlock("div", _hoisted_23, [
758
749
  (!$options.showsOuterLabel(field))
759
750
  ? (openBlock(), createElementBlock("label", {
760
751
  key: 0,
761
752
  for: 'cn-form-' + field.key,
762
753
  class: "cn-form-dialog__label"
763
- }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_25))
754
+ }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_24))
764
755
  : createCommentVNode("v-if", true),
765
- createVNode(_component_CnJsonViewer, {
766
- value: $options.jsonStringFor(field),
767
- language: "json",
768
- readOnly: field.readOnly,
769
- errorText: $data.jsonErrors[field.key] || '',
770
- "onUpdate:value": value => $options.onJsonFieldInput(field, value)
771
- }, null, 8 /* PROPS */, ["value", "readOnly", "errorText", "onUpdate:value"]),
756
+ createVNode(_component_NcDateTimePickerNative, {
757
+ id: 'cn-form-' + field.key,
758
+ type: field.widget === 'datetime' ? 'datetime-local' : 'date',
759
+ label: field.label,
760
+ hideLabel: true,
761
+ modelValue: $options.dateValueFor(field),
762
+ disabled: field.readOnly,
763
+ "onUpdate:modelValue": date => $options.onDateFieldInput(field, date)
764
+ }, null, 8 /* PROPS */, ["id", "type", "label", "modelValue", "disabled", "onUpdate:modelValue"]),
772
765
  createVNode(_component_CnFieldHelper, {
773
766
  id: $options.helpId(field),
774
767
  text: field.description,
@@ -778,21 +771,22 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
778
771
  error: $options.helperError(field)
779
772
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
780
773
  ]))
781
- : (field.widget === 'code')
782
- ? (openBlock(), createElementBlock("div", _hoisted_26, [
774
+ : (field.widget === 'json')
775
+ ? (openBlock(), createElementBlock("div", _hoisted_25, [
783
776
  (!$options.showsOuterLabel(field))
784
777
  ? (openBlock(), createElementBlock("label", {
785
778
  key: 0,
786
779
  for: 'cn-form-' + field.key,
787
780
  class: "cn-form-dialog__label"
788
- }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_27))
781
+ }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_26))
789
782
  : createCommentVNode("v-if", true),
790
783
  createVNode(_component_CnJsonViewer, {
791
- value: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
792
- language: field.language || 'auto',
784
+ value: $options.jsonStringFor(field),
785
+ language: "json",
793
786
  readOnly: field.readOnly,
794
- "onUpdate:value": value => $options.updateField(field.key, value)
795
- }, null, 8 /* PROPS */, ["value", "language", "readOnly", "onUpdate:value"]),
787
+ errorText: $data.jsonErrors[field.key] || '',
788
+ "onUpdate:value": value => $options.onJsonFieldInput(field, value)
789
+ }, null, 8 /* PROPS */, ["value", "readOnly", "errorText", "onUpdate:value"]),
796
790
  createVNode(_component_CnFieldHelper, {
797
791
  id: $options.helpId(field),
798
792
  text: field.description,
@@ -802,75 +796,82 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
802
796
  error: $options.helperError(field)
803
797
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
804
798
  ]))
805
- : (field.widget === 'file')
806
- ? (openBlock(), createElementBlock("div", _hoisted_28, [
807
- createVNode(_component_CnFileField, mergeProps({
808
- modelValue: $data.formData[field.key],
809
- label: $options.fieldLabelText(field),
810
- accept: field.file ? field.file.accept : '',
811
- multiple: !!(field.file && field.file.multiple),
812
- capture: field.file ? field.file.capture : ''
813
- }, { ref_for: true }, $options.fileLimits(field), {
814
- disabled: field.readOnly,
815
- helperText: $data.errors[field.key] || '',
816
- "onUpdate:modelValue": value => $options.updateField(field.key, value)
817
- }), null, 16 /* FULL_PROPS */, ["modelValue", "label", "accept", "multiple", "capture", "disabled", "helperText", "onUpdate:modelValue"]),
799
+ : (field.widget === 'code')
800
+ ? (openBlock(), createElementBlock("div", _hoisted_27, [
801
+ (!$options.showsOuterLabel(field))
802
+ ? (openBlock(), createElementBlock("label", {
803
+ key: 0,
804
+ for: 'cn-form-' + field.key,
805
+ class: "cn-form-dialog__label"
806
+ }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_28))
807
+ : createCommentVNode("v-if", true),
808
+ createVNode(_component_CnJsonViewer, {
809
+ value: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
810
+ language: field.language || 'auto',
811
+ readOnly: field.readOnly,
812
+ "onUpdate:value": value => $options.updateField(field.key, value)
813
+ }, null, 8 /* PROPS */, ["value", "language", "readOnly", "onUpdate:value"]),
818
814
  createVNode(_component_CnFieldHelper, {
815
+ id: $options.helpId(field),
819
816
  text: field.description,
820
817
  more: field.descriptionLong,
821
818
  help: field.help,
822
- label: field.label
823
- }, null, 8 /* PROPS */, ["text", "more", "help", "label"])
819
+ label: field.label,
820
+ error: $options.helperError(field)
821
+ }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
824
822
  ]))
825
- : (field.widget === 'duration')
823
+ : (field.widget === 'file')
826
824
  ? (openBlock(), createElementBlock("div", _hoisted_29, [
827
- createVNode(_component_CnDurationField, {
828
- modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
829
- inputLabel: $options.fieldLabelText(field),
825
+ createVNode(_component_CnFileField, mergeProps({
826
+ modelValue: $data.formData[field.key],
827
+ label: $options.fieldLabelText(field),
828
+ accept: field.file ? field.file.accept : '',
829
+ multiple: !!(field.file && field.file.multiple),
830
+ capture: field.file ? field.file.capture : ''
831
+ }, { ref_for: true }, $options.fileLimits(field), {
830
832
  disabled: field.readOnly,
831
- error: !!$data.errors[field.key],
833
+ helperText: $data.errors[field.key] || '',
832
834
  "onUpdate:modelValue": value => $options.updateField(field.key, value)
833
- }, null, 8 /* PROPS */, ["modelValue", "inputLabel", "disabled", "error", "onUpdate:modelValue"]),
835
+ }), null, 16 /* FULL_PROPS */, ["modelValue", "label", "accept", "multiple", "capture", "disabled", "helperText", "onUpdate:modelValue"]),
834
836
  createVNode(_component_CnFieldHelper, {
835
- id: $options.helpId(field),
836
837
  text: field.description,
837
838
  more: field.descriptionLong,
838
839
  help: field.help,
839
- label: field.label,
840
- error: $options.helperError(field)
841
- }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
840
+ label: field.label
841
+ }, null, 8 /* PROPS */, ["text", "more", "help", "label"])
842
842
  ]))
843
- : (field.widget === 'child-records' && field.childRecords)
843
+ : (field.widget === 'duration')
844
844
  ? (openBlock(), createElementBlock("div", _hoisted_30, [
845
- createVNode(_component_CnChildRecordsField, {
846
- modelValue: Array.isArray($data.formData[field.key]) ? $data.formData[field.key] : [],
847
- config: field.childRecords,
848
- register: $props.register,
849
- parentId: $props.item ? ($props.item.id || $props.item.uuid || '') : '',
845
+ createVNode(_component_CnDurationField, {
846
+ modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
850
847
  inputLabel: $options.fieldLabelText(field),
851
848
  disabled: field.readOnly,
852
- error: $data.errors[field.key] || '',
853
- "onUpdate:modelValue": value => $options.updateField(field.key, value),
854
- onLoaded: rows => { $data.childOriginals[field.key] = rows; },
855
- onValidity: problems => { $data.childProblems[field.key] = problems; }
856
- }, null, 8 /* PROPS */, ["modelValue", "config", "register", "parentId", "inputLabel", "disabled", "error", "onUpdate:modelValue", "onLoaded", "onValidity"]),
849
+ error: !!$data.errors[field.key],
850
+ "onUpdate:modelValue": value => $options.updateField(field.key, value)
851
+ }, null, 8 /* PROPS */, ["modelValue", "inputLabel", "disabled", "error", "onUpdate:modelValue"]),
857
852
  createVNode(_component_CnFieldHelper, {
853
+ id: $options.helpId(field),
858
854
  text: field.description,
859
855
  more: field.descriptionLong,
860
856
  help: field.help,
861
- label: field.label
862
- }, null, 8 /* PROPS */, ["text", "more", "help", "label"])
857
+ label: field.label,
858
+ error: $options.helperError(field)
859
+ }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
863
860
  ]))
864
- : (field.widget === 'sub-objects' && field.items)
861
+ : (field.widget === 'child-records' && field.childRecords)
865
862
  ? (openBlock(), createElementBlock("div", _hoisted_31, [
866
- createVNode(_component_CnSubObjectsField, {
863
+ createVNode(_component_CnChildRecordsField, {
867
864
  modelValue: Array.isArray($data.formData[field.key]) ? $data.formData[field.key] : [],
868
- items: field.items,
865
+ config: field.childRecords,
866
+ register: $props.register,
867
+ parentId: $props.item ? ($props.item.id || $props.item.uuid || '') : '',
869
868
  inputLabel: $options.fieldLabelText(field),
870
869
  disabled: field.readOnly,
871
870
  error: $data.errors[field.key] || '',
872
- "onUpdate:modelValue": value => $options.updateField(field.key, value)
873
- }, null, 8 /* PROPS */, ["modelValue", "items", "inputLabel", "disabled", "error", "onUpdate:modelValue"]),
871
+ "onUpdate:modelValue": value => $options.updateField(field.key, value),
872
+ onLoaded: rows => { $data.childOriginals[field.key] = rows; },
873
+ onValidity: problems => { $data.childProblems[field.key] = problems; }
874
+ }, null, 8 /* PROPS */, ["modelValue", "config", "register", "parentId", "inputLabel", "disabled", "error", "onUpdate:modelValue", "onLoaded", "onValidity"]),
874
875
  createVNode(_component_CnFieldHelper, {
875
876
  text: field.description,
876
877
  more: field.descriptionLong,
@@ -878,66 +879,36 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
878
879
  label: field.label
879
880
  }, null, 8 /* PROPS */, ["text", "more", "help", "label"])
880
881
  ]))
881
- : (field.widget === 'property-source' && field.propertySource)
882
+ : (field.widget === 'sub-objects' && field.items)
882
883
  ? (openBlock(), createElementBlock("div", _hoisted_32, [
883
- createVNode(_component_CnPropertySourceField, {
884
- provider: field.propertySource.provider,
885
- mode: field.propertySource.mode,
886
- inputId: 'cn-form-' + field.key,
884
+ createVNode(_component_CnSubObjectsField, {
885
+ modelValue: Array.isArray($data.formData[field.key]) ? $data.formData[field.key] : [],
886
+ items: field.items,
887
887
  inputLabel: $options.fieldLabelText(field),
888
- modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
889
888
  disabled: field.readOnly,
890
- error: !!$data.errors[field.key],
891
- "onUpdate:modelValue": value => $options.updateField(field.key, value),
892
- onResolved: payload => $options.onPropertySourceResolved(field, payload)
893
- }, null, 8 /* PROPS */, ["provider", "mode", "inputId", "inputLabel", "modelValue", "disabled", "error", "onUpdate:modelValue", "onResolved"]),
889
+ error: $data.errors[field.key] || '',
890
+ "onUpdate:modelValue": value => $options.updateField(field.key, value)
891
+ }, null, 8 /* PROPS */, ["modelValue", "items", "inputLabel", "disabled", "error", "onUpdate:modelValue"]),
894
892
  createVNode(_component_CnFieldHelper, {
895
- id: $options.helpId(field),
896
893
  text: field.description,
897
894
  more: field.descriptionLong,
898
895
  help: field.help,
899
- label: field.label,
900
- error: $options.helperError(field)
901
- }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
896
+ label: field.label
897
+ }, null, 8 /* PROPS */, ["text", "more", "help", "label"])
902
898
  ]))
903
- : (field.widget === 'icon')
899
+ : (field.widget === 'property-source' && field.propertySource)
904
900
  ? (openBlock(), createElementBlock("div", _hoisted_33, [
905
- (!$options.showsOuterLabel(field))
906
- ? (openBlock(), createElementBlock("label", {
907
- key: 0,
908
- for: 'cn-form-' + field.key,
909
- class: "cn-form-dialog__label"
910
- }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_34))
911
- : createCommentVNode("v-if", true),
912
- createVNode(_component_CnIconBrowser, {
913
- value: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
914
- sources: field.iconSources || ['mdi'],
915
- catalogues: field.catalogues || {},
916
- allowCustomSvg: !!field.allowCustomSvg,
917
- clearable: !field.required,
918
- onInput: value => $options.updateField(field.key, value)
919
- }, null, 8 /* PROPS */, ["value", "sources", "catalogues", "allowCustomSvg", "clearable", "onInput"]),
920
- createVNode(_component_CnFieldHelper, {
921
- id: $options.helpId(field),
922
- text: field.description,
923
- more: field.descriptionLong,
924
- help: field.help,
925
- label: field.label,
926
- error: $options.helperError(field)
927
- }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
928
- ]))
929
- : (openBlock(), createElementBlock(Fragment, { key: 18 }, [
930
- createVNode(_component_NcTextField, mergeProps({
931
- id: $options.fieldControlId(field),
932
- label: $options.fieldLabelText(field),
933
- labelOutside: _ctx.isBoardLook
934
- }, { ref_for: true }, $options.fieldAria(field), {
901
+ createVNode(_component_CnPropertySourceField, {
902
+ provider: field.propertySource.provider,
903
+ mode: field.propertySource.mode,
904
+ inputId: 'cn-form-' + field.key,
905
+ inputLabel: $options.fieldLabelText(field),
935
906
  modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
936
- error: !!$data.errors[field.key],
937
907
  disabled: field.readOnly,
938
- placeholder: $options.fieldPlaceholder(field),
939
- "onUpdate:modelValue": value => $options.updateField(field.key, value)
940
- }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "disabled", "placeholder", "onUpdate:modelValue"]),
908
+ error: !!$data.errors[field.key],
909
+ "onUpdate:modelValue": value => $options.updateField(field.key, value),
910
+ onResolved: payload => $options.onPropertySourceResolved(field, payload)
911
+ }, null, 8 /* PROPS */, ["provider", "mode", "inputId", "inputLabel", "modelValue", "disabled", "error", "onUpdate:modelValue", "onResolved"]),
941
912
  createVNode(_component_CnFieldHelper, {
942
913
  id: $options.helpId(field),
943
914
  text: field.description,
@@ -946,15 +917,63 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
946
917
  label: field.label,
947
918
  error: $options.helperError(field)
948
919
  }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
949
- ], 64 /* STABLE_FRAGMENT */)),
950
- ($data.assignedFrom[field.key])
951
- ? (openBlock(), createElementBlock("small", _hoisted_35, toDisplayString(_ctx.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
952
- : createCommentVNode("v-if", true)
953
- ], 64 /* STABLE_FRAGMENT */))
954
- ], 10 /* CLASS, PROPS */, _hoisted_5))
920
+ ]))
921
+ : (field.widget === 'icon')
922
+ ? (openBlock(), createElementBlock("div", _hoisted_34, [
923
+ (!$options.showsOuterLabel(field))
924
+ ? (openBlock(), createElementBlock("label", {
925
+ key: 0,
926
+ for: 'cn-form-' + field.key,
927
+ class: "cn-form-dialog__label"
928
+ }, toDisplayString(field.label) + toDisplayString($options.requiredSuffix(field)), 9 /* TEXT, PROPS */, _hoisted_35))
929
+ : createCommentVNode("v-if", true),
930
+ createVNode(_component_CnIconBrowser, {
931
+ value: $data.formData[field.key] != null ? String($data.formData[field.key]) : null,
932
+ sources: field.iconSources || ['mdi'],
933
+ catalogues: field.catalogues || {},
934
+ allowCustomSvg: !!field.allowCustomSvg,
935
+ clearable: !field.required,
936
+ onInput: value => $options.updateField(field.key, value)
937
+ }, null, 8 /* PROPS */, ["value", "sources", "catalogues", "allowCustomSvg", "clearable", "onInput"]),
938
+ createVNode(_component_CnFieldHelper, {
939
+ id: $options.helpId(field),
940
+ text: field.description,
941
+ more: field.descriptionLong,
942
+ help: field.help,
943
+ label: field.label,
944
+ error: $options.helperError(field)
945
+ }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
946
+ ]))
947
+ : (openBlock(), createElementBlock(Fragment, { key: 18 }, [
948
+ createVNode(_component_NcTextField, mergeProps({
949
+ id: $options.fieldControlId(field),
950
+ label: $options.fieldLabelText(field),
951
+ labelOutside: _ctx.isBoardLook
952
+ }, { ref_for: true }, $options.fieldAria(field), {
953
+ modelValue: $data.formData[field.key] != null ? String($data.formData[field.key]) : '',
954
+ error: !!$data.errors[field.key],
955
+ disabled: field.readOnly,
956
+ placeholder: $options.fieldPlaceholder(field),
957
+ "onUpdate:modelValue": value => $options.updateField(field.key, value)
958
+ }), null, 16 /* FULL_PROPS */, ["id", "label", "labelOutside", "modelValue", "error", "disabled", "placeholder", "onUpdate:modelValue"]),
959
+ createVNode(_component_CnFieldHelper, {
960
+ id: $options.helpId(field),
961
+ text: field.description,
962
+ more: field.descriptionLong,
963
+ help: field.help,
964
+ label: field.label,
965
+ error: $options.helperError(field)
966
+ }, null, 8 /* PROPS */, ["id", "text", "more", "help", "label", "error"])
967
+ ], 64 /* STABLE_FRAGMENT */)),
968
+ ($data.assignedFrom[field.key])
969
+ ? (openBlock(), createElementBlock("small", _hoisted_36, toDisplayString(_ctx.t('nextcloud-vue', 'Filled in from {field}', { field: $data.assignedFrom[field.key] })), 1 /* TEXT */))
970
+ : createCommentVNode("v-if", true)
971
+ ], 64 /* STABLE_FRAGMENT */))
972
+ ], 10 /* CLASS, PROPS */, _hoisted_6)
973
+ ], 64 /* STABLE_FRAGMENT */))
955
974
  }), 128 /* KEYED_FRAGMENT */)),
956
975
  ($data.dynamicLoading)
957
- ? (openBlock(), createElementBlock("div", _hoisted_36, [
976
+ ? (openBlock(), createElementBlock("div", _hoisted_37, [
958
977
  createVNode(_component_NcLoadingIcon, { size: 20 }),
959
978
  createElementVNode("span", null, toDisplayString($props.dynamicLoadingLabel), 1 /* TEXT */)
960
979
  ]))