@conduction/nextcloud-vue 2.75.0 → 2.77.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 (158) hide show
  1. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +18 -3
  2. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +49 -3
  4. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  5. package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js +6 -0
  6. package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js.map +1 -1
  7. package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js +3 -2
  8. package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js.map +1 -1
  9. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +42 -1
  10. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  11. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +228 -203
  12. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  13. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue.js +9 -0
  14. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue.js.map +1 -0
  15. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue2.js +50 -0
  16. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue2.js.map +1 -0
  17. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue3.js +13 -0
  18. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue3.js.map +1 -0
  19. package/dist/esm/components/CnCredentials/CnCredentials.vue2.js +11 -10
  20. package/dist/esm/components/CnCredentials/CnCredentials.vue2.js.map +1 -1
  21. package/dist/esm/components/CnCredentials/CnCredentials.vue3.js.map +1 -1
  22. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +41 -4
  23. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  24. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +90 -51
  25. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  26. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +24 -33
  27. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  28. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +12 -24
  29. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  30. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue2.js +7 -2
  31. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue2.js.map +1 -1
  32. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue3.js.map +1 -1
  33. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +114 -1
  34. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
  35. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +115 -62
  36. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
  37. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js +89 -7
  38. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js.map +1 -1
  39. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js +62 -30
  40. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js.map +1 -1
  41. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +242 -19
  42. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  43. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +25 -20
  44. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  45. package/dist/esm/components/CnIndexPage/selfModeActions.js +90 -14
  46. package/dist/esm/components/CnIndexPage/selfModeActions.js.map +1 -1
  47. package/dist/esm/components/CnIndexPage/useSelfFetchList.js +15 -3
  48. package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
  49. package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js +26 -0
  50. package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js.map +1 -1
  51. package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js +26 -9
  52. package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js.map +1 -1
  53. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +199 -7
  54. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
  55. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js +155 -119
  56. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
  57. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +19 -3
  58. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  59. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  60. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +6 -0
  61. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
  62. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +4 -1
  63. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
  64. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js +153 -38
  65. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js.map +1 -1
  66. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js +74 -56
  67. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js.map +1 -1
  68. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +13 -0
  69. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  70. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  71. package/dist/esm/composables/useListView.js +4 -0
  72. package/dist/esm/composables/useListView.js.map +1 -1
  73. package/dist/esm/composables/useObjectLock.js +41 -10
  74. package/dist/esm/composables/useObjectLock.js.map +1 -1
  75. package/dist/esm/index.js +3 -1
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/l10n/en.json.js +31 -1
  78. package/dist/esm/l10n/en.json.js.map +1 -1
  79. package/dist/esm/l10n/nl.json.js +32 -2
  80. package/dist/esm/l10n/nl.json.js.map +1 -1
  81. package/dist/esm/nextcloud-vue.css +376 -75
  82. package/dist/esm/store/plugins/interactions.js +20 -10
  83. package/dist/esm/store/plugins/interactions.js.map +1 -1
  84. package/dist/esm/store/useObjectStore.js +54 -9
  85. package/dist/esm/store/useObjectStore.js.map +1 -1
  86. package/dist/esm/utils/builtInFormatters.js +15 -7
  87. package/dist/esm/utils/builtInFormatters.js.map +1 -1
  88. package/dist/esm/utils/groupAutocomplete.js +63 -1
  89. package/dist/esm/utils/groupAutocomplete.js.map +1 -1
  90. package/dist/esm/utils/lensAvailability.js +90 -0
  91. package/dist/esm/utils/lensAvailability.js.map +1 -0
  92. package/dist/esm/utils/objectSignals.js +44 -0
  93. package/dist/esm/utils/objectSignals.js.map +1 -0
  94. package/dist/esm/utils/personalLenses.js +13 -6
  95. package/dist/esm/utils/personalLenses.js.map +1 -1
  96. package/dist/esm/utils/recordInteractions.js +31 -13
  97. package/dist/esm/utils/recordInteractions.js.map +1 -1
  98. package/dist/esm/utils/resolveFilterTokens.js +46 -3
  99. package/dist/esm/utils/resolveFilterTokens.js.map +1 -1
  100. package/dist/esm/utils/schema.js +1 -1
  101. package/dist/esm/utils/schema.js.map +1 -1
  102. package/dist/esm/utils/sentinelTokens.js +4 -4
  103. package/dist/esm/utils/sentinelTokens.js.map +1 -1
  104. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  105. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  106. package/dist/esm/utils/widgetVisibility.js +46 -1
  107. package/dist/esm/utils/widgetVisibility.js.map +1 -1
  108. package/dist/nextcloud-vue.cjs.js +4732 -2990
  109. package/dist/nextcloud-vue.cjs.js.map +2 -2
  110. package/dist/nextcloud-vue.css +376 -75
  111. package/l10n/en.json +31 -1
  112. package/l10n/nl.json +32 -2
  113. package/package.json +1 -1
  114. package/src/components/CnAppNav/CnAppNav.vue +44 -5
  115. package/src/components/CnCardGrid/CnCardGrid.md +1 -0
  116. package/src/components/CnCardGrid/CnCardGrid.vue +7 -0
  117. package/src/components/CnCellRenderer/CnCellRenderer.vue +56 -1
  118. package/src/components/CnCellRenderer/CnGroupNameCell.vue +61 -0
  119. package/src/components/CnCredentials/CnCredentials.vue +17 -16
  120. package/src/components/CnDataTable/CnDataTable.md +9 -0
  121. package/src/components/CnDataTable/CnDataTable.vue +80 -20
  122. package/src/components/CnDetailPage/CnDetailPage.vue +18 -32
  123. package/src/components/CnFavouriteToggle/CnFavouriteToggle.vue +7 -2
  124. package/src/components/CnFilesBrowser/CnFilesBrowser.vue +204 -5
  125. package/src/components/CnFollowToggle/CnFollowToggle.vue +118 -13
  126. package/src/components/CnIndexPage/CnIndexPage.md +51 -0
  127. package/src/components/CnIndexPage/CnIndexPage.vue +261 -35
  128. package/src/components/CnIndexPage/selfModeActions.js +89 -13
  129. package/src/components/CnIndexPage/useSelfFetchList.js +15 -3
  130. package/src/components/CnObjectCard/CnObjectCard.md +1 -0
  131. package/src/components/CnObjectCard/CnObjectCard.vue +89 -1
  132. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +226 -2
  133. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +19 -3
  134. package/src/components/CnObjectSidebar/CnFilesTab.vue +9 -0
  135. package/src/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue +181 -38
  136. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +13 -0
  137. package/src/composables/__tests__/useObjectLock.endpoints.spec.js +83 -0
  138. package/src/composables/useListView.js +4 -0
  139. package/src/composables/useObjectLock.js +41 -10
  140. package/src/css/look-board-detail.css +40 -2
  141. package/src/css/look-board-index.css +35 -1
  142. package/src/css/table.css +82 -17
  143. package/src/index.js +3 -1
  144. package/src/schemas/app-manifest-v2.schema.json +11 -7
  145. package/src/store/plugins/interactions.js +20 -10
  146. package/src/store/useObjectStore.js +54 -9
  147. package/src/utils/builtInFormatters.js +15 -7
  148. package/src/utils/groupAutocomplete.js +75 -0
  149. package/src/utils/index.js +2 -1
  150. package/src/utils/lensAvailability.js +86 -0
  151. package/src/utils/objectSignals.js +41 -0
  152. package/src/utils/personalLenses.js +13 -6
  153. package/src/utils/recordInteractions.js +31 -13
  154. package/src/utils/resolveFilterTokens.js +45 -2
  155. package/src/utils/schema.js +1 -1
  156. package/src/utils/sentinelTokens.js +4 -4
  157. package/src/utils/validateManifestV2.compiled.js +2 -2
  158. package/src/utils/widgetVisibility.js +45 -0
@@ -1,4 +1,4 @@
1
- import { resolveComponent, openBlock, createBlock, createSlots, withCtx, createTextVNode, toDisplayString, createCommentVNode, renderSlot, createVNode, createElementBlock, createElementVNode, normalizeStyle, Fragment, renderList, withKeys, normalizeClass, resolveDynamicComponent } from 'vue';
1
+ import { resolveComponent, openBlock, createBlock, createSlots, withCtx, createTextVNode, toDisplayString, createCommentVNode, renderSlot, createVNode, createElementBlock, createElementVNode, normalizeStyle, Fragment, renderList, withKeys, resolveDynamicComponent, normalizeClass } from 'vue';
2
2
 
3
3
  const _hoisted_1 = {
4
4
  key: 0,
@@ -19,23 +19,28 @@ const _hoisted_6 = {
19
19
  class: "cn-object-data-widget__editor-actions"
20
20
  };
21
21
  const _hoisted_7 = ["tabindex", "role", "aria-label", "onClick", "onKeydown"];
22
- const _hoisted_8 = ["src", "alt"];
23
- const _hoisted_9 = ["aria-label"];
24
- const _hoisted_10 = {
25
- key: 2,
26
- class: "cn-object-data-widget__mini-table-wrap"
22
+ const _hoisted_8 = {
23
+ key: 0,
24
+ class: "cn-object-data-widget__groups"
27
25
  };
28
- const _hoisted_11 = { class: "cn-object-data-widget__mini-table" };
26
+ const _hoisted_9 = { key: 0 };
27
+ const _hoisted_10 = ["src", "alt"];
28
+ const _hoisted_11 = ["aria-label"];
29
29
  const _hoisted_12 = {
30
+ key: 3,
31
+ class: "cn-object-data-widget__mini-table-wrap"
32
+ };
33
+ const _hoisted_13 = { class: "cn-object-data-widget__mini-table" };
34
+ const _hoisted_14 = {
30
35
  key: 0,
31
36
  class: "cn-object-data-widget__more"
32
37
  };
33
- const _hoisted_13 = {
34
- key: 3,
38
+ const _hoisted_15 = {
39
+ key: 4,
35
40
  class: "cn-object-data-widget__chips"
36
41
  };
37
- const _hoisted_14 = {
38
- key: 4,
42
+ const _hoisted_16 = {
43
+ key: 5,
39
44
  class: "cn-object-data-widget__deflist"
40
45
  };
41
46
 
@@ -52,6 +57,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
52
57
  const _component_NcCheckboxRadioSwitch = resolveComponent("NcCheckboxRadioSwitch");
53
58
  const _component_Check = resolveComponent("Check");
54
59
  const _component_Close = resolveComponent("Close");
60
+ const _component_CnGroupNameCell = resolveComponent("CnGroupNameCell");
55
61
  const _component_CnObjectMetadataModal = resolveComponent("CnObjectMetadataModal");
56
62
  const _component_CnFormDialog = resolveComponent("CnFormDialog");
57
63
  const _component_CnWidgetWrapper = resolveComponent("CnWidgetWrapper");
@@ -213,91 +219,110 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
213
219
  "onUpdate:modelValue": $event => ($options.onRelationChange(field, $event)),
214
220
  onClose: $options.commitEdit
215
221
  }, null, 8 /* PROPS */, ["options", "modelValue", "loading", "clearable", "onUpdate:modelValue", "onClose"]))
216
- : (field.widget === 'select')
217
- ? (openBlock(), createBlock(_component_NcSelect, {
222
+ : ($options.isPersonPicker(field))
223
+ ? (openBlock(), createBlock(resolveDynamicComponent($options.isUserPicker(field) ? 'NcSelectUsers' : 'NcSelect'), {
218
224
  key: 4,
219
225
  ref_for: true,
220
226
  ref: "activeEditor",
221
- options: $options.getSelectOptions(field),
222
- modelValue: $options.getSelectedOption(field),
227
+ inputLabel: field.label,
228
+ labelOutside: true,
229
+ options: $data.personOptions[field.key] || [],
230
+ modelValue: $options.personSelected(field),
231
+ multiple: $options.isPersonMultiple(field),
232
+ keepOpen: $options.isPersonMultiple(field),
233
+ loading: $data.personLoading === field.key,
234
+ filterable: false,
223
235
  clearable: !field.required,
224
- "onUpdate:modelValue": $event => ($options.onSelectChange(field, $event)),
225
- onClose: $options.commitEdit
226
- }, null, 8 /* PROPS */, ["options", "modelValue", "clearable", "onUpdate:modelValue", "onClose"]))
227
- : (field.widget === 'multiselect')
236
+ label: "label",
237
+ onSearch: (q) => $options.searchPeople(field, q),
238
+ "onUpdate:modelValue": $event => ($options.onPersonChange(field, $event)),
239
+ onClose: $event => ($options.isPersonMultiple(field) ? undefined : $options.commitEdit())
240
+ }, null, 40 /* PROPS, NEED_HYDRATION */, ["inputLabel", "options", "modelValue", "multiple", "keepOpen", "loading", "clearable", "onSearch", "onUpdate:modelValue", "onClose"]))
241
+ : (field.widget === 'select')
228
242
  ? (openBlock(), createBlock(_component_NcSelect, {
229
243
  key: 5,
230
244
  ref_for: true,
231
245
  ref: "activeEditor",
232
- options: $options.getMultiselectOptions(field),
233
- modelValue: $options.getSelectedMultiselectOptions(field),
234
- multiple: true,
235
- keepOpen: true,
236
- clearable: true,
237
- "onUpdate:modelValue": $event => ($options.onMultiselectChange(field, $event))
238
- }, null, 8 /* PROPS */, ["options", "modelValue", "onUpdate:modelValue"]))
239
- : (field.widget === 'tags')
246
+ options: $options.getSelectOptions(field),
247
+ modelValue: $options.getSelectedOption(field),
248
+ clearable: !field.required,
249
+ "onUpdate:modelValue": $event => ($options.onSelectChange(field, $event)),
250
+ onClose: $options.commitEdit
251
+ }, null, 8 /* PROPS */, ["options", "modelValue", "clearable", "onUpdate:modelValue", "onClose"]))
252
+ : (field.widget === 'multiselect')
240
253
  ? (openBlock(), createBlock(_component_NcSelect, {
241
254
  key: 6,
242
255
  ref_for: true,
243
256
  ref: "activeEditor",
244
- modelValue: $data.editData[field.key] || [],
257
+ options: $options.getMultiselectOptions(field),
258
+ modelValue: $options.getSelectedMultiselectOptions(field),
245
259
  multiple: true,
246
260
  keepOpen: true,
247
- taggable: true,
248
261
  clearable: true,
249
- "onUpdate:modelValue": val => $options.updateField(field.key, val)
250
- }, null, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue"]))
251
- : (field.widget === 'checkbox')
252
- ? (openBlock(), createBlock(_component_NcCheckboxRadioSwitch, {
262
+ "onUpdate:modelValue": $event => ($options.onMultiselectChange(field, $event))
263
+ }, null, 8 /* PROPS */, ["options", "modelValue", "onUpdate:modelValue"]))
264
+ : (field.widget === 'tags')
265
+ ? (openBlock(), createBlock(_component_NcSelect, {
253
266
  key: 7,
254
- modelValue: !!$data.editData[field.key],
255
- type: "switch",
256
- "onUpdate:modelValue": val => { $options.updateField(field.key, val); $options.commitEdit(); }
257
- }, {
258
- default: withCtx(() => [
259
- createTextVNode(toDisplayString($data.editData[field.key] ? 'Yes' : 'No'), 1 /* TEXT */)
260
- ]),
261
- _: 2 /* DYNAMIC */
262
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue"]))
263
- : (field.widget === 'date')
264
- ? (openBlock(), createBlock(_component_NcTextField, {
267
+ ref_for: true,
268
+ ref: "activeEditor",
269
+ modelValue: $data.editData[field.key] || [],
270
+ multiple: true,
271
+ keepOpen: true,
272
+ taggable: true,
273
+ clearable: true,
274
+ "onUpdate:modelValue": val => $options.updateField(field.key, val)
275
+ }, null, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue"]))
276
+ : (field.widget === 'checkbox')
277
+ ? (openBlock(), createBlock(_component_NcCheckboxRadioSwitch, {
265
278
  key: 8,
266
- ref_for: true,
267
- ref: "activeEditor",
268
- modelValue: $data.editData[field.key] || '',
269
- type: "date",
270
- "onUpdate:modelValue": val => $options.updateField(field.key, val),
271
- onKeydown: [
272
- withKeys($options.commitEdit, ["enter"]),
273
- withKeys($options.cancelEdit, ["escape"])
274
- ]
275
- }, null, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue", "onKeydown"]))
276
- : (field.widget === 'datetime')
279
+ modelValue: !!$data.editData[field.key],
280
+ type: "switch",
281
+ "onUpdate:modelValue": val => { $options.updateField(field.key, val); $options.commitEdit(); }
282
+ }, {
283
+ default: withCtx(() => [
284
+ createTextVNode(toDisplayString($data.editData[field.key] ? 'Yes' : 'No'), 1 /* TEXT */)
285
+ ]),
286
+ _: 2 /* DYNAMIC */
287
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue"]))
288
+ : (field.widget === 'date')
277
289
  ? (openBlock(), createBlock(_component_NcTextField, {
278
290
  key: 9,
279
291
  ref_for: true,
280
292
  ref: "activeEditor",
281
293
  modelValue: $data.editData[field.key] || '',
282
- type: "datetime-local",
294
+ type: "date",
283
295
  "onUpdate:modelValue": val => $options.updateField(field.key, val),
284
296
  onKeydown: [
285
297
  withKeys($options.commitEdit, ["enter"]),
286
298
  withKeys($options.cancelEdit, ["escape"])
287
299
  ]
288
300
  }, null, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue", "onKeydown"]))
289
- : (openBlock(), createBlock(_component_NcTextField, {
290
- key: 10,
291
- ref_for: true,
292
- ref: "activeEditor",
293
- modelValue: $data.editData[field.key] != null ? String($data.editData[field.key]) : '',
294
- placeholder: field.description,
295
- "onUpdate:modelValue": val => $options.updateField(field.key, val),
296
- onKeydown: [
297
- withKeys($options.commitEdit, ["enter"]),
298
- withKeys($options.cancelEdit, ["escape"])
299
- ]
300
- }, null, 8 /* PROPS */, ["modelValue", "placeholder", "onUpdate:modelValue", "onKeydown"]))
301
+ : (field.widget === 'datetime')
302
+ ? (openBlock(), createBlock(_component_NcTextField, {
303
+ key: 10,
304
+ ref_for: true,
305
+ ref: "activeEditor",
306
+ modelValue: $data.editData[field.key] || '',
307
+ type: "datetime-local",
308
+ "onUpdate:modelValue": val => $options.updateField(field.key, val),
309
+ onKeydown: [
310
+ withKeys($options.commitEdit, ["enter"]),
311
+ withKeys($options.cancelEdit, ["escape"])
312
+ ]
313
+ }, null, 8 /* PROPS */, ["modelValue", "onUpdate:modelValue", "onKeydown"]))
314
+ : (openBlock(), createBlock(_component_NcTextField, {
315
+ key: 11,
316
+ ref_for: true,
317
+ ref: "activeEditor",
318
+ modelValue: $data.editData[field.key] != null ? String($data.editData[field.key]) : '',
319
+ placeholder: field.description,
320
+ "onUpdate:modelValue": val => $options.updateField(field.key, val),
321
+ onKeydown: [
322
+ withKeys($options.commitEdit, ["enter"]),
323
+ withKeys($options.cancelEdit, ["escape"])
324
+ ]
325
+ }, null, 8 /* PROPS */, ["modelValue", "placeholder", "onUpdate:modelValue", "onKeydown"]))
301
326
  ], 64 /* STABLE_FRAGMENT */)),
302
327
  (field.widget !== 'checkbox')
303
328
  ? (openBlock(), createElementBlock("div", _hoisted_6, [
@@ -341,64 +366,75 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
341
366
  raw: ($props.objectData || {})[field.key]
342
367
  }, undefined, undefined, 0)
343
368
  : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
344
- ($options.isImageField(field) && $options.rawOf(field))
345
- ? (openBlock(), createElementBlock("img", {
346
- key: 0,
347
- src: $options.rawOf(field),
348
- alt: field.label,
349
- class: "cn-object-data-widget__image"
350
- }, null, 8 /* PROPS */, _hoisted_8))
351
- : ($options.isRelationPending(field))
352
- ? (openBlock(), createElementBlock("span", {
369
+ ($options.isGroupPicker(field) && $options.groupIdsOf(field).length)
370
+ ? (openBlock(), createElementBlock("span", _hoisted_8, [
371
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.groupIdsOf(field), (gid, gi) => {
372
+ return (openBlock(), createElementBlock(Fragment, { key: gid }, [
373
+ (gi > 0)
374
+ ? (openBlock(), createElementBlock("span", _hoisted_9, ", "))
375
+ : createCommentVNode("v-if", true),
376
+ createVNode(_component_CnGroupNameCell, { gid: gid }, null, 8 /* PROPS */, ["gid"])
377
+ ], 64 /* STABLE_FRAGMENT */))
378
+ }), 128 /* KEYED_FRAGMENT */))
379
+ ]))
380
+ : ($options.isImageField(field) && $options.rawOf(field))
381
+ ? (openBlock(), createElementBlock("img", {
353
382
  key: 1,
354
- class: "cn-object-data-widget__skeleton",
355
- "aria-label": $options.t('nextcloud-vue', 'Loading')
356
- }, null, 8 /* PROPS */, _hoisted_9))
357
- : ($options.fieldValueKind(field) === 'object-array')
358
- ? (openBlock(), createElementBlock("div", _hoisted_10, [
359
- createElementVNode("table", _hoisted_11, [
360
- createElementVNode("thead", null, [
361
- createElementVNode("tr", null, [
362
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayColumns($options.rawOf(field)), (col) => {
363
- return (openBlock(), createElementBlock("th", { key: col }, toDisplayString(col), 1 /* TEXT */))
383
+ src: $options.rawOf(field),
384
+ alt: field.label,
385
+ class: "cn-object-data-widget__image"
386
+ }, null, 8 /* PROPS */, _hoisted_10))
387
+ : ($options.isRelationPending(field))
388
+ ? (openBlock(), createElementBlock("span", {
389
+ key: 2,
390
+ class: "cn-object-data-widget__skeleton",
391
+ "aria-label": $options.t('nextcloud-vue', 'Loading')
392
+ }, null, 8 /* PROPS */, _hoisted_11))
393
+ : ($options.fieldValueKind(field) === 'object-array')
394
+ ? (openBlock(), createElementBlock("div", _hoisted_12, [
395
+ createElementVNode("table", _hoisted_13, [
396
+ createElementVNode("thead", null, [
397
+ createElementVNode("tr", null, [
398
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayColumns($options.rawOf(field)), (col) => {
399
+ return (openBlock(), createElementBlock("th", { key: col }, toDisplayString(col), 1 /* TEXT */))
400
+ }), 128 /* KEYED_FRAGMENT */))
401
+ ])
402
+ ]),
403
+ createElementVNode("tbody", null, [
404
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayRows($options.rawOf(field)), (row, ri) => {
405
+ return (openBlock(), createElementBlock("tr", { key: ri }, [
406
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayColumns($options.rawOf(field)), (col) => {
407
+ return (openBlock(), createElementBlock("td", { key: col }, toDisplayString($options.stringifyCell(row && row[col])), 1 /* TEXT */))
408
+ }), 128 /* KEYED_FRAGMENT */))
409
+ ]))
364
410
  }), 128 /* KEYED_FRAGMENT */))
365
411
  ])
366
412
  ]),
367
- createElementVNode("tbody", null, [
368
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayRows($options.rawOf(field)), (row, ri) => {
369
- return (openBlock(), createElementBlock("tr", { key: ri }, [
370
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectArrayColumns($options.rawOf(field)), (col) => {
371
- return (openBlock(), createElementBlock("td", { key: col }, toDisplayString($options.stringifyCell(row && row[col])), 1 /* TEXT */))
372
- }), 128 /* KEYED_FRAGMENT */))
373
- ]))
374
- }), 128 /* KEYED_FRAGMENT */))
375
- ])
376
- ]),
377
- ($options.rawOf(field).length > 5)
378
- ? (openBlock(), createElementBlock("div", _hoisted_12, toDisplayString($options.t('nextcloud-vue', '{count} more', { count: $options.rawOf(field).length - 5 })), 1 /* TEXT */))
379
- : createCommentVNode("v-if", true)
380
- ]))
381
- : ($options.fieldValueKind(field) === 'scalar-array')
382
- ? (openBlock(), createElementBlock("div", _hoisted_13, [
383
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.rawOf(field), (v, ci) => {
384
- return (openBlock(), createElementBlock("span", {
385
- key: ci,
386
- class: "cn-object-data-widget__chip"
387
- }, toDisplayString($options.stringifyCell(v)), 1 /* TEXT */))
388
- }), 128 /* KEYED_FRAGMENT */))
413
+ ($options.rawOf(field).length > 5)
414
+ ? (openBlock(), createElementBlock("div", _hoisted_14, toDisplayString($options.t('nextcloud-vue', '{count} more', { count: $options.rawOf(field).length - 5 })), 1 /* TEXT */))
415
+ : createCommentVNode("v-if", true)
389
416
  ]))
390
- : ($options.fieldValueKind(field) === 'object')
391
- ? (openBlock(), createElementBlock("dl", _hoisted_14, [
392
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectEntries($options.rawOf(field)), (pair, pi) => {
393
- return (openBlock(), createElementBlock(Fragment, { key: pi }, [
394
- createElementVNode("dt", null, toDisplayString(pair[0]), 1 /* TEXT */),
395
- createElementVNode("dd", null, toDisplayString($options.stringifyCell(pair[1])), 1 /* TEXT */)
396
- ], 64 /* STABLE_FRAGMENT */))
417
+ : ($options.fieldValueKind(field) === 'scalar-array')
418
+ ? (openBlock(), createElementBlock("div", _hoisted_15, [
419
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.rawOf(field), (v, ci) => {
420
+ return (openBlock(), createElementBlock("span", {
421
+ key: ci,
422
+ class: "cn-object-data-widget__chip"
423
+ }, toDisplayString($options.stringifyCell(v)), 1 /* TEXT */))
397
424
  }), 128 /* KEYED_FRAGMENT */))
398
425
  ]))
399
- : (openBlock(), createElementBlock(Fragment, { key: 5 }, [
400
- createTextVNode(toDisplayString($options.displayValues[field.key]), 1 /* TEXT */)
401
- ], 64 /* STABLE_FRAGMENT */))
426
+ : ($options.fieldValueKind(field) === 'object')
427
+ ? (openBlock(), createElementBlock("dl", _hoisted_16, [
428
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.objectEntries($options.rawOf(field)), (pair, pi) => {
429
+ return (openBlock(), createElementBlock(Fragment, { key: pi }, [
430
+ createElementVNode("dt", null, toDisplayString(pair[0]), 1 /* TEXT */),
431
+ createElementVNode("dd", null, toDisplayString($options.stringifyCell(pair[1])), 1 /* TEXT */)
432
+ ], 64 /* STABLE_FRAGMENT */))
433
+ }), 128 /* KEYED_FRAGMENT */))
434
+ ]))
435
+ : (openBlock(), createElementBlock(Fragment, { key: 6 }, [
436
+ createTextVNode(toDisplayString($options.displayValues[field.key]), 1 /* TEXT */)
437
+ ], 64 /* STABLE_FRAGMENT */))
402
438
  ], 64 /* STABLE_FRAGMENT */)),
403
439
  ($options.isEditable(field))
404
440
  ? (openBlock(), createBlock(_component_Pencil, {