@conduction/nextcloud-vue 2.76.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 (119) 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/CnCellRenderer/CnCellRenderer.vue2.js +42 -1
  6. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  7. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +228 -203
  8. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  9. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue.js +9 -0
  10. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue.js.map +1 -0
  11. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue2.js +50 -0
  12. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue2.js.map +1 -0
  13. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue3.js +13 -0
  14. package/dist/esm/components/CnCellRenderer/CnGroupNameCell.vue3.js.map +1 -0
  15. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +41 -4
  16. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  17. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +90 -51
  18. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  19. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +16 -28
  20. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  21. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +12 -24
  22. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  23. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue2.js +7 -2
  24. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue2.js.map +1 -1
  25. package/dist/esm/components/CnFavouriteToggle/CnFavouriteToggle.vue3.js.map +1 -1
  26. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +114 -1
  27. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
  28. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +115 -62
  29. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
  30. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js +89 -7
  31. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js.map +1 -1
  32. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js +62 -30
  33. package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js.map +1 -1
  34. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +98 -13
  35. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  36. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +13 -9
  37. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  38. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +199 -7
  39. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
  40. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js +155 -119
  41. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
  42. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +6 -0
  43. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
  44. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +4 -1
  45. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
  46. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +13 -0
  47. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  48. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  49. package/dist/esm/composables/useListView.js +4 -0
  50. package/dist/esm/composables/useListView.js.map +1 -1
  51. package/dist/esm/index.js +2 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/l10n/en.json.js +25 -1
  54. package/dist/esm/l10n/en.json.js.map +1 -1
  55. package/dist/esm/l10n/nl.json.js +25 -1
  56. package/dist/esm/l10n/nl.json.js.map +1 -1
  57. package/dist/esm/nextcloud-vue.css +288 -74
  58. package/dist/esm/store/plugins/interactions.js +20 -10
  59. package/dist/esm/store/plugins/interactions.js.map +1 -1
  60. package/dist/esm/store/useObjectStore.js +17 -0
  61. package/dist/esm/store/useObjectStore.js.map +1 -1
  62. package/dist/esm/utils/builtInFormatters.js +15 -7
  63. package/dist/esm/utils/builtInFormatters.js.map +1 -1
  64. package/dist/esm/utils/groupAutocomplete.js +63 -1
  65. package/dist/esm/utils/groupAutocomplete.js.map +1 -1
  66. package/dist/esm/utils/lensAvailability.js +90 -0
  67. package/dist/esm/utils/lensAvailability.js.map +1 -0
  68. package/dist/esm/utils/personalLenses.js +13 -6
  69. package/dist/esm/utils/personalLenses.js.map +1 -1
  70. package/dist/esm/utils/recordInteractions.js +31 -13
  71. package/dist/esm/utils/recordInteractions.js.map +1 -1
  72. package/dist/esm/utils/resolveFilterTokens.js +46 -3
  73. package/dist/esm/utils/resolveFilterTokens.js.map +1 -1
  74. package/dist/esm/utils/schema.js +1 -1
  75. package/dist/esm/utils/schema.js.map +1 -1
  76. package/dist/esm/utils/sentinelTokens.js +4 -4
  77. package/dist/esm/utils/sentinelTokens.js.map +1 -1
  78. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  79. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  80. package/dist/esm/utils/widgetVisibility.js +46 -1
  81. package/dist/esm/utils/widgetVisibility.js.map +1 -1
  82. package/dist/nextcloud-vue.cjs.js +3873 -2674
  83. package/dist/nextcloud-vue.cjs.js.map +2 -2
  84. package/dist/nextcloud-vue.css +288 -74
  85. package/l10n/en.json +25 -1
  86. package/l10n/nl.json +25 -1
  87. package/package.json +1 -1
  88. package/src/components/CnAppNav/CnAppNav.vue +44 -5
  89. package/src/components/CnCellRenderer/CnCellRenderer.vue +56 -1
  90. package/src/components/CnCellRenderer/CnGroupNameCell.vue +61 -0
  91. package/src/components/CnDataTable/CnDataTable.md +9 -0
  92. package/src/components/CnDataTable/CnDataTable.vue +80 -20
  93. package/src/components/CnDetailPage/CnDetailPage.vue +10 -27
  94. package/src/components/CnFavouriteToggle/CnFavouriteToggle.vue +7 -2
  95. package/src/components/CnFilesBrowser/CnFilesBrowser.vue +204 -5
  96. package/src/components/CnFollowToggle/CnFollowToggle.vue +118 -13
  97. package/src/components/CnIndexPage/CnIndexPage.md +36 -0
  98. package/src/components/CnIndexPage/CnIndexPage.vue +106 -19
  99. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +226 -2
  100. package/src/components/CnObjectSidebar/CnFilesTab.vue +9 -0
  101. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +13 -0
  102. package/src/composables/useListView.js +4 -0
  103. package/src/css/look-board-detail.css +40 -2
  104. package/src/css/table.css +82 -17
  105. package/src/index.js +2 -1
  106. package/src/schemas/app-manifest-v2.schema.json +11 -7
  107. package/src/store/plugins/interactions.js +20 -10
  108. package/src/store/useObjectStore.js +17 -0
  109. package/src/utils/builtInFormatters.js +15 -7
  110. package/src/utils/groupAutocomplete.js +75 -0
  111. package/src/utils/index.js +1 -1
  112. package/src/utils/lensAvailability.js +86 -0
  113. package/src/utils/personalLenses.js +13 -6
  114. package/src/utils/recordInteractions.js +31 -13
  115. package/src/utils/resolveFilterTokens.js +45 -2
  116. package/src/utils/schema.js +1 -1
  117. package/src/utils/sentinelTokens.js +4 -4
  118. package/src/utils/validateManifestV2.compiled.js +2 -2
  119. package/src/utils/widgetVisibility.js +45 -0
@@ -1,68 +1,87 @@
1
- import { resolveComponent, openBlock, createElementBlock, normalizeClass, withModifiers, createElementVNode, createVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, createCommentVNode, resolveDynamicComponent } from 'vue';
1
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, withModifiers, createElementVNode, createVNode, toDisplayString, createCommentVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, resolveDynamicComponent } from 'vue';
2
2
 
3
- const _hoisted_1 = { class: "cn-files-browser__bar" };
4
- const _hoisted_2 = ["aria-label"];
5
- const _hoisted_3 = {
3
+ const _hoisted_1 = {
6
4
  key: 0,
5
+ class: "cn-files-browser__drop-overlay",
6
+ "aria-hidden": "true",
7
+ "data-testid": "cn-files-browser-drop-overlay"
8
+ };
9
+ const _hoisted_2 = { class: "cn-files-browser__drop-icon" };
10
+ const _hoisted_3 = { class: "cn-files-browser__drop-label" };
11
+ const _hoisted_4 = {
12
+ key: 1,
13
+ class: "hidden-visually",
14
+ "aria-live": "polite",
15
+ "data-testid": "cn-files-browser-drop-status"
16
+ };
17
+ const _hoisted_5 = { class: "cn-files-browser__bar" };
18
+ const _hoisted_6 = ["aria-label"];
19
+ const _hoisted_7 = {
20
+ key: 2,
7
21
  class: "cn-files-browser__uploads",
8
22
  "data-testid": "cn-files-browser-uploads"
9
23
  };
10
- const _hoisted_4 = { class: "cn-files-browser__upload-name" };
11
- const _hoisted_5 = {
24
+ const _hoisted_8 = { class: "cn-files-browser__upload-name" };
25
+ const _hoisted_9 = {
12
26
  key: 0,
13
27
  class: "cn-files-browser__upload-error",
14
28
  role: "alert"
15
29
  };
16
- const _hoisted_6 = {
17
- key: 4,
30
+ const _hoisted_10 = {
31
+ key: 6,
18
32
  class: "cn-files-browser__table",
19
33
  "data-testid": "cn-files-browser-table"
20
34
  };
21
- const _hoisted_7 = {
35
+ const _hoisted_11 = {
22
36
  class: "cn-files-browser__col-icon",
23
37
  scope: "col"
24
38
  };
25
- const _hoisted_8 = { class: "hidden-visually" };
26
- const _hoisted_9 = ["aria-sort", "data-testid"];
27
- const _hoisted_10 = ["onClick"];
28
- const _hoisted_11 = {
39
+ const _hoisted_12 = { class: "hidden-visually" };
40
+ const _hoisted_13 = ["aria-sort", "data-testid"];
41
+ const _hoisted_14 = ["onClick"];
42
+ const _hoisted_15 = {
29
43
  class: "cn-files-browser__col-actions",
30
44
  scope: "col"
31
45
  };
32
- const _hoisted_12 = { class: "hidden-visually" };
33
- const _hoisted_13 = ["data-name", "onClick", "onAuxclick"];
34
- const _hoisted_14 = { class: "cn-files-browser__col-icon" };
35
- const _hoisted_15 = ["src", "onError"];
36
- const _hoisted_16 = ["src"];
37
- const _hoisted_17 = ["data-testid"];
38
- const _hoisted_18 = {
46
+ const _hoisted_16 = { class: "hidden-visually" };
47
+ const _hoisted_17 = ["data-name", "onClick", "onAuxclick"];
48
+ const _hoisted_18 = { class: "cn-files-browser__col-icon" };
49
+ const _hoisted_19 = ["src", "onError"];
50
+ const _hoisted_20 = ["src"];
51
+ const _hoisted_21 = ["data-testid"];
52
+ const _hoisted_22 = {
39
53
  key: 0,
40
54
  class: "cn-files-browser__name"
41
55
  };
42
- const _hoisted_19 = ["data-name", "onClick", "onAuxclick"];
43
- const _hoisted_20 = { class: "cn-files-browser__col-icon" };
44
- const _hoisted_21 = ["src"];
45
- const _hoisted_22 = { class: "cn-files-browser__name" };
46
- const _hoisted_23 = {
56
+ const _hoisted_23 = ["data-name", "onClick", "onAuxclick"];
57
+ const _hoisted_24 = { class: "cn-files-browser__col-icon" };
58
+ const _hoisted_25 = ["src"];
59
+ const _hoisted_26 = { class: "cn-files-browser__name" };
60
+ const _hoisted_27 = {
47
61
  key: 0,
48
62
  class: "cn-files-browser__note"
49
63
  };
50
- const _hoisted_24 = ["href"];
64
+ const _hoisted_28 = ["href"];
65
+ const _hoisted_29 = {
66
+ key: 7,
67
+ class: "cn-files-browser__drop-hint",
68
+ "data-testid": "cn-files-browser-drop-hint"
69
+ };
51
70
 
52
71
  function render(_ctx, _cache, $props, $setup, $data, $options) {
72
+ const _component_Upload = resolveComponent("Upload");
53
73
  const _component_NcBreadcrumb = resolveComponent("NcBreadcrumb");
54
74
  const _component_NcBreadcrumbs = resolveComponent("NcBreadcrumbs");
55
75
  const _component_NcActionCheckbox = resolveComponent("NcActionCheckbox");
56
76
  const _component_NcActions = resolveComponent("NcActions");
57
77
  const _component_Plus = resolveComponent("Plus");
58
- const _component_Upload = resolveComponent("Upload");
59
78
  const _component_NcActionButton = resolveComponent("NcActionButton");
60
79
  const _component_NcIconSvgWrapper = resolveComponent("NcIconSvgWrapper");
61
80
  const _component_CnIcon = resolveComponent("CnIcon");
81
+ const _component_NcButton = resolveComponent("NcButton");
62
82
  const _component_NcProgressBar = resolveComponent("NcProgressBar");
63
83
  const _component_NcLoadingIcon = resolveComponent("NcLoadingIcon");
64
84
  const _component_AlertCircleOutline = resolveComponent("AlertCircleOutline");
65
- const _component_NcButton = resolveComponent("NcButton");
66
85
  const _component_CnEmptyContent = resolveComponent("CnEmptyContent");
67
86
  const _component_FolderOutline = resolveComponent("FolderOutline");
68
87
  const _component_FileOutline = resolveComponent("FileOutline");
@@ -79,12 +98,23 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
79
98
  return (openBlock(), createElementBlock("div", {
80
99
  class: normalizeClass(["cn-files-browser", { 'cn-files-browser--dragging': $data.dragging }]),
81
100
  "data-testid": "cn-files-browser",
82
- onDragenter: _cache[16] || (_cache[16] = withModifiers($event => ($data.dragging = true), ["prevent"])),
83
- onDragover: _cache[17] || (_cache[17] = withModifiers($event => ($data.dragging = true), ["prevent"])),
84
- onDragleave: _cache[18] || (_cache[18] = withModifiers($event => ($data.dragging = false), ["prevent"])),
101
+ onDragenter: _cache[16] || (_cache[16] = withModifiers((...args) => ($options.onDragEnter && $options.onDragEnter(...args)), ["prevent"])),
102
+ onDragover: _cache[17] || (_cache[17] = withModifiers((...args) => ($options.onDragOver && $options.onDragOver(...args)), ["prevent"])),
103
+ onDragleave: _cache[18] || (_cache[18] = withModifiers((...args) => ($options.onDragLeave && $options.onDragLeave(...args)), ["prevent"])),
85
104
  onDrop: _cache[19] || (_cache[19] = withModifiers((...args) => ($options.onDrop && $options.onDrop(...args)), ["prevent"]))
86
105
  }, [
87
- createElementVNode("div", _hoisted_1, [
106
+ ($props.dropOverlay && $data.dragging)
107
+ ? (openBlock(), createElementBlock("div", _hoisted_1, [
108
+ createElementVNode("span", _hoisted_2, [
109
+ createVNode(_component_Upload, { size: 28 })
110
+ ]),
111
+ createElementVNode("strong", _hoisted_3, toDisplayString($props.dropLabel), 1 /* TEXT */)
112
+ ]))
113
+ : createCommentVNode("v-if", true),
114
+ ($props.dropOverlay)
115
+ ? (openBlock(), createElementBlock("p", _hoisted_4, toDisplayString($data.dropStatus), 1 /* TEXT */))
116
+ : createCommentVNode("v-if", true),
117
+ createElementVNode("div", _hoisted_5, [
88
118
  createVNode(_component_NcBreadcrumbs, { class: "cn-files-browser__crumbs" }, {
89
119
  default: withCtx(() => [
90
120
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.crumbs, (crumb, index) => {
@@ -132,7 +162,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
132
162
  menuName: $props.newLabel,
133
163
  forceMenu: true,
134
164
  forceName: true,
135
- variant: "primary",
165
+ variant: $props.uploadButton ? 'secondary' : 'primary',
136
166
  disabled: $data.folder === null,
137
167
  "data-testid": "cn-files-browser-new"
138
168
  }, {
@@ -203,7 +233,24 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
203
233
  }), 128 /* KEYED_FRAGMENT */))
204
234
  ]),
205
235
  _: 1 /* STABLE */
206
- }, 8 /* PROPS */, ["menuName", "disabled"])
236
+ }, 8 /* PROPS */, ["menuName", "variant", "disabled"]),
237
+ ($props.uploadButton)
238
+ ? (openBlock(), createBlock(_component_NcButton, {
239
+ key: 1,
240
+ variant: "primary",
241
+ disabled: $data.folder === null,
242
+ "data-testid": "cn-files-browser-upload-button",
243
+ onClick: $options.pickFiles
244
+ }, {
245
+ icon: withCtx(() => [
246
+ createVNode(_component_Upload, { size: 20 })
247
+ ]),
248
+ default: withCtx(() => [
249
+ createTextVNode(" " + toDisplayString($props.uploadButtonLabel), 1 /* TEXT */)
250
+ ]),
251
+ _: 1 /* STABLE */
252
+ }, 8 /* PROPS */, ["disabled", "onClick"]))
253
+ : createCommentVNode("v-if", true)
207
254
  ]),
208
255
  createElementVNode("input", {
209
256
  ref: $options.fileInputRef,
@@ -212,21 +259,21 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
212
259
  class: "cn-files-browser__file-input",
213
260
  "aria-label": $props.uploadLabel,
214
261
  onChange: _cache[0] || (_cache[0] = (...args) => ($options.onFilesPicked && $options.onFilesPicked(...args)))
215
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_2),
262
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_6),
216
263
  ($data.uploads.length > 0)
217
- ? (openBlock(), createElementBlock("ul", _hoisted_3, [
264
+ ? (openBlock(), createElementBlock("ul", _hoisted_7, [
218
265
  (openBlock(true), createElementBlock(Fragment, null, renderList($data.uploads, (upload) => {
219
266
  return (openBlock(), createElementBlock("li", {
220
267
  key: upload.key,
221
268
  class: "cn-files-browser__upload"
222
269
  }, [
223
- createElementVNode("span", _hoisted_4, toDisplayString(upload.name), 1 /* TEXT */),
270
+ createElementVNode("span", _hoisted_8, toDisplayString(upload.name), 1 /* TEXT */),
224
271
  createVNode(_component_NcProgressBar, {
225
272
  value: upload.progress,
226
273
  error: upload.error !== ''
227
274
  }, null, 8 /* PROPS */, ["value", "error"]),
228
275
  (upload.error)
229
- ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(upload.error), 1 /* TEXT */))
276
+ ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(upload.error), 1 /* TEXT */))
230
277
  : createCommentVNode("v-if", true)
231
278
  ]))
232
279
  }), 128 /* KEYED_FRAGMENT */))
@@ -234,13 +281,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
234
281
  : createCommentVNode("v-if", true),
235
282
  ($data.loading)
236
283
  ? (openBlock(), createBlock(_component_NcLoadingIcon, {
237
- key: 1,
284
+ key: 3,
238
285
  size: 32,
239
286
  class: "cn-files-browser__loading"
240
287
  }))
241
288
  : ($data.error !== '')
242
289
  ? (openBlock(), createBlock(_component_CnEmptyContent, {
243
- key: 2,
290
+ key: 4,
244
291
  error: "",
245
292
  name: $data.error,
246
293
  class: "cn-files-browser__state"
@@ -260,7 +307,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
260
307
  }, 8 /* PROPS */, ["name"]))
261
308
  : ($options.sorted.length === 0 && $props.linkedItems.length === 0)
262
309
  ? (openBlock(), createBlock(_component_CnEmptyContent, {
263
- key: 3,
310
+ key: 5,
264
311
  name: $props.emptyLabel,
265
312
  description: $props.emptyHint,
266
313
  class: "cn-files-browser__state"
@@ -270,11 +317,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
270
317
  ]),
271
318
  _: 1 /* STABLE */
272
319
  }, 8 /* PROPS */, ["name", "description"]))
273
- : (openBlock(), createElementBlock("table", _hoisted_6, [
320
+ : (openBlock(), createElementBlock("table", _hoisted_10, [
274
321
  createElementVNode("thead", null, [
275
322
  createElementVNode("tr", null, [
276
- createElementVNode("th", _hoisted_7, [
277
- createElementVNode("span", _hoisted_8, toDisplayString($options.t('nextcloud-vue', 'Type')), 1 /* TEXT */)
323
+ createElementVNode("th", _hoisted_11, [
324
+ createElementVNode("span", _hoisted_12, toDisplayString($options.t('nextcloud-vue', 'Type')), 1 /* TEXT */)
278
325
  ]),
279
326
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.renderedColumns, (column) => {
280
327
  return (openBlock(), createElementBlock("th", {
@@ -298,14 +345,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
298
345
  size: 16
299
346
  }))
300
347
  : createCommentVNode("v-if", true)
301
- ], 8 /* PROPS */, _hoisted_10))
348
+ ], 8 /* PROPS */, _hoisted_14))
302
349
  : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
303
350
  createTextVNode(toDisplayString($options.columnLabel(column)), 1 /* TEXT */)
304
351
  ], 64 /* STABLE_FRAGMENT */))
305
- ], 10 /* CLASS, PROPS */, _hoisted_9))
352
+ ], 10 /* CLASS, PROPS */, _hoisted_13))
306
353
  }), 128 /* KEYED_FRAGMENT */)),
307
- createElementVNode("th", _hoisted_11, [
308
- createElementVNode("span", _hoisted_12, toDisplayString($options.t('nextcloud-vue', 'Actions')), 1 /* TEXT */)
354
+ createElementVNode("th", _hoisted_15, [
355
+ createElementVNode("span", _hoisted_16, toDisplayString($options.t('nextcloud-vue', 'Actions')), 1 /* TEXT */)
309
356
  ])
310
357
  ])
311
358
  ]),
@@ -320,7 +367,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
320
367
  onMousedown: _cache[3] || (_cache[3] = (...args) => ($options.preventMiddleClickAutoscroll && $options.preventMiddleClickAutoscroll(...args))),
321
368
  onAuxclick: $event => ($options.onRowAuxClick(node, $event))
322
369
  }, [
323
- createElementVNode("td", _hoisted_14, [
370
+ createElementVNode("td", _hoisted_18, [
324
371
  ($options.previewUrlFor(node))
325
372
  ? (openBlock(), createElementBlock("img", {
326
373
  key: 0,
@@ -329,14 +376,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
329
376
  alt: "",
330
377
  loading: "lazy",
331
378
  onError: $event => ($options.onPreviewError(node))
332
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_15))
379
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_19))
333
380
  : ($options.mimeIconFor(node))
334
381
  ? (openBlock(), createElementBlock("img", {
335
382
  key: 1,
336
383
  class: "cn-files-browser__mime",
337
384
  src: $options.mimeIconFor(node),
338
385
  alt: ""
339
- }, null, 8 /* PROPS */, _hoisted_16))
386
+ }, null, 8 /* PROPS */, _hoisted_20))
340
387
  : ($options.isFolder(node))
341
388
  ? (openBlock(), createBlock(_component_FolderOutline, {
342
389
  key: 2,
@@ -354,7 +401,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
354
401
  "data-testid": `cn-files-browser-cell-${column.key}`
355
402
  }, [
356
403
  (column.key === 'name')
357
- ? (openBlock(), createElementBlock("span", _hoisted_18, toDisplayString(node.basename), 1 /* TEXT */))
404
+ ? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(node.basename), 1 /* TEXT */))
358
405
  : (column.key === 'size')
359
406
  ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
360
407
  createTextVNode(toDisplayString($options.isFolder(node) ? '' : $options.formatSize(node.size)), 1 /* TEXT */)
@@ -373,7 +420,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
373
420
  widget: column.widget || null,
374
421
  row: node
375
422
  }, null, 8 /* PROPS */, ["value", "formatter", "formatterOptions", "widget", "row"]))
376
- ], 10 /* CLASS, PROPS */, _hoisted_17))
423
+ ], 10 /* CLASS, PROPS */, _hoisted_21))
377
424
  }), 128 /* KEYED_FRAGMENT */)),
378
425
  createElementVNode("td", {
379
426
  class: "cn-files-browser__col-actions",
@@ -460,7 +507,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
460
507
  _: 2 /* DYNAMIC */
461
508
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["ariaLabel"])
462
509
  ], 32 /* NEED_HYDRATION */)
463
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_13))
510
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_17))
464
511
  }), 128 /* KEYED_FRAGMENT */)),
465
512
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.linkedItems, (item) => {
466
513
  return (openBlock(), createElementBlock("tr", {
@@ -472,14 +519,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
472
519
  onMousedown: _cache[7] || (_cache[7] = (...args) => ($options.preventMiddleClickAutoscroll && $options.preventMiddleClickAutoscroll(...args))),
473
520
  onAuxclick: $event => ($options.onLinkedAuxClick(item, $event))
474
521
  }, [
475
- createElementVNode("td", _hoisted_20, [
522
+ createElementVNode("td", _hoisted_24, [
476
523
  ($options.mimeIconFor({ mime: item.mime }))
477
524
  ? (openBlock(), createElementBlock("img", {
478
525
  key: 0,
479
526
  class: "cn-files-browser__mime",
480
527
  src: $options.mimeIconFor({ mime: item.mime }),
481
528
  alt: ""
482
- }, null, 8 /* PROPS */, _hoisted_21))
529
+ }, null, 8 /* PROPS */, _hoisted_25))
483
530
  : (openBlock(), createBlock(_component_FileOutline, {
484
531
  key: 1,
485
532
  size: 32
@@ -492,16 +539,16 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
492
539
  }, [
493
540
  (column.key === 'name')
494
541
  ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
495
- createElementVNode("span", _hoisted_22, toDisplayString(item.name), 1 /* TEXT */),
542
+ createElementVNode("span", _hoisted_26, toDisplayString(item.name), 1 /* TEXT */),
496
543
  (item.note)
497
- ? (openBlock(), createElementBlock("span", _hoisted_23, [
544
+ ? (openBlock(), createElementBlock("span", _hoisted_27, [
498
545
  (item.noteHref)
499
546
  ? (openBlock(), createElementBlock("a", {
500
547
  key: 0,
501
548
  href: item.noteHref,
502
549
  class: "cn-files-browser__note-link",
503
550
  onClick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
504
- }, toDisplayString(item.note), 9 /* TEXT, PROPS */, _hoisted_24))
551
+ }, toDisplayString(item.note), 9 /* TEXT, PROPS */, _hoisted_28))
505
552
  : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
506
553
  createTextVNode(toDisplayString(item.note), 1 /* TEXT */)
507
554
  ], 64 /* STABLE_FRAGMENT */))
@@ -569,13 +616,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
569
616
  _: 2 /* DYNAMIC */
570
617
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["ariaLabel"])
571
618
  ], 32 /* NEED_HYDRATION */)
572
- ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_19))
619
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_23))
573
620
  }), 128 /* KEYED_FRAGMENT */))
574
621
  ])
575
622
  ])),
623
+ ($props.dropHint && !$data.loading && $data.error === '')
624
+ ? (openBlock(), createElementBlock("p", _hoisted_29, [
625
+ createVNode(_component_Upload, { size: 16 }),
626
+ createTextVNode(" " + toDisplayString($props.dropHintLabel), 1 /* TEXT */)
627
+ ]))
628
+ : createCommentVNode("v-if", true),
576
629
  ($data.renaming !== null)
577
630
  ? (openBlock(), createBlock(_component_NcDialog, {
578
- key: 5,
631
+ key: 8,
579
632
  name: $props.renameLabel,
580
633
  size: "small",
581
634
  "data-testid": "cn-files-browser-rename",
@@ -622,7 +675,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
622
675
  : createCommentVNode("v-if", true),
623
676
  ($data.newFolderOpen)
624
677
  ? (openBlock(), createBlock(_component_NcDialog, {
625
- key: 6,
678
+ key: 9,
626
679
  name: $props.newFolderLabel,
627
680
  size: "small",
628
681
  "data-testid": "cn-files-browser-new-folder",