@nextcloud/vue 8.3.0 → 8.4.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 (250) hide show
  1. package/CHANGELOG.md +44 -3
  2. package/dist/Components/NcActionButton.cjs +1 -1
  3. package/dist/Components/NcActionButton.mjs +1 -1
  4. package/dist/Components/NcActionButtonGroup.cjs +13 -9
  5. package/dist/Components/NcActionButtonGroup.cjs.map +1 -1
  6. package/dist/Components/NcActionButtonGroup.mjs +16 -11
  7. package/dist/Components/NcActionButtonGroup.mjs.map +1 -1
  8. package/dist/Components/NcActionInput.cjs +9 -8
  9. package/dist/Components/NcActionInput.cjs.map +1 -1
  10. package/dist/Components/NcActionInput.mjs +11 -10
  11. package/dist/Components/NcActionInput.mjs.map +1 -1
  12. package/dist/Components/NcActionLink.cjs +1 -1
  13. package/dist/Components/NcActionLink.mjs +1 -1
  14. package/dist/Components/NcActionRouter.cjs +1 -1
  15. package/dist/Components/NcActionRouter.mjs +1 -1
  16. package/dist/Components/NcActionText.cjs +1 -1
  17. package/dist/Components/NcActionText.mjs +1 -1
  18. package/dist/Components/NcActionTextEditable.cjs +1 -1
  19. package/dist/Components/NcActionTextEditable.mjs +1 -1
  20. package/dist/Components/NcActions.cjs +37 -37
  21. package/dist/Components/NcActions.cjs.map +1 -1
  22. package/dist/Components/NcActions.mjs +19 -19
  23. package/dist/Components/NcActions.mjs.map +1 -1
  24. package/dist/Components/NcAppContent.cjs +15 -14
  25. package/dist/Components/NcAppContent.cjs.map +1 -1
  26. package/dist/Components/NcAppContent.mjs +35 -34
  27. package/dist/Components/NcAppContent.mjs.map +1 -1
  28. package/dist/Components/NcAppNavigation.cjs +1 -1
  29. package/dist/Components/NcAppNavigation.mjs +1 -1
  30. package/dist/Components/NcAppNavigationCaption.cjs +2 -2
  31. package/dist/Components/NcAppNavigationCaption.cjs.map +1 -1
  32. package/dist/Components/NcAppNavigationCaption.mjs +2 -2
  33. package/dist/Components/NcAppNavigationCaption.mjs.map +1 -1
  34. package/dist/Components/NcAppNavigationItem.cjs +28 -24
  35. package/dist/Components/NcAppNavigationItem.cjs.map +1 -1
  36. package/dist/Components/NcAppNavigationItem.mjs +66 -63
  37. package/dist/Components/NcAppNavigationItem.mjs.map +1 -1
  38. package/dist/Components/NcAppNavigationNewItem.cjs +2 -2
  39. package/dist/Components/NcAppNavigationNewItem.mjs +2 -2
  40. package/dist/Components/NcAppNavigationSettings.cjs +7 -8
  41. package/dist/Components/NcAppNavigationSettings.cjs.map +1 -1
  42. package/dist/Components/NcAppNavigationSettings.mjs +27 -29
  43. package/dist/Components/NcAppNavigationSettings.mjs.map +1 -1
  44. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  45. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  46. package/dist/Components/NcAppSettingsDialog.cjs +19 -18
  47. package/dist/Components/NcAppSettingsDialog.cjs.map +1 -1
  48. package/dist/Components/NcAppSettingsDialog.mjs +22 -21
  49. package/dist/Components/NcAppSettingsDialog.mjs.map +1 -1
  50. package/dist/Components/NcAppSidebar.cjs +88 -45
  51. package/dist/Components/NcAppSidebar.cjs.map +1 -1
  52. package/dist/Components/NcAppSidebar.mjs +158 -112
  53. package/dist/Components/NcAppSidebar.mjs.map +1 -1
  54. package/dist/Components/NcAvatar.cjs +1 -1
  55. package/dist/Components/NcAvatar.mjs +1 -1
  56. package/dist/Components/NcBreadcrumb.cjs +4 -3
  57. package/dist/Components/NcBreadcrumb.cjs.map +1 -1
  58. package/dist/Components/NcBreadcrumb.mjs +6 -5
  59. package/dist/Components/NcBreadcrumb.mjs.map +1 -1
  60. package/dist/Components/NcBreadcrumbs.cjs +26 -19
  61. package/dist/Components/NcBreadcrumbs.cjs.map +1 -1
  62. package/dist/Components/NcBreadcrumbs.mjs +48 -41
  63. package/dist/Components/NcBreadcrumbs.mjs.map +1 -1
  64. package/dist/Components/NcCheckboxRadioSwitch.cjs +44 -34
  65. package/dist/Components/NcCheckboxRadioSwitch.cjs.map +1 -1
  66. package/dist/Components/NcCheckboxRadioSwitch.mjs +72 -62
  67. package/dist/Components/NcCheckboxRadioSwitch.mjs.map +1 -1
  68. package/dist/Components/NcColorPicker.cjs +34 -11
  69. package/dist/Components/NcColorPicker.cjs.map +1 -1
  70. package/dist/Components/NcColorPicker.mjs +48 -25
  71. package/dist/Components/NcColorPicker.mjs.map +1 -1
  72. package/dist/Components/NcDashboardWidget.cjs +7 -6
  73. package/dist/Components/NcDashboardWidget.cjs.map +1 -1
  74. package/dist/Components/NcDashboardWidget.mjs +17 -16
  75. package/dist/Components/NcDashboardWidget.mjs.map +1 -1
  76. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  77. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  78. package/dist/Components/NcDateTime.cjs +15 -13
  79. package/dist/Components/NcDateTime.cjs.map +1 -1
  80. package/dist/Components/NcDateTime.mjs +12 -11
  81. package/dist/Components/NcDateTime.mjs.map +1 -1
  82. package/dist/Components/NcDateTimePicker.cjs +24 -23
  83. package/dist/Components/NcDateTimePicker.cjs.map +1 -1
  84. package/dist/Components/NcDateTimePicker.mjs +36 -36
  85. package/dist/Components/NcDateTimePicker.mjs.map +1 -1
  86. package/dist/Components/NcDateTimePickerNative.cjs +3 -3
  87. package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
  88. package/dist/Components/NcDateTimePickerNative.mjs +3 -3
  89. package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
  90. package/dist/Components/NcDialog.cjs +18 -17
  91. package/dist/Components/NcDialog.cjs.map +1 -1
  92. package/dist/Components/NcDialog.mjs +26 -24
  93. package/dist/Components/NcDialog.mjs.map +1 -1
  94. package/dist/Components/NcEmojiPicker.cjs +2 -1
  95. package/dist/Components/NcEmojiPicker.cjs.map +1 -1
  96. package/dist/Components/NcEmojiPicker.mjs +18 -17
  97. package/dist/Components/NcEmojiPicker.mjs.map +1 -1
  98. package/dist/Components/NcHeaderMenu.cjs +8 -8
  99. package/dist/Components/NcHeaderMenu.cjs.map +1 -1
  100. package/dist/Components/NcHeaderMenu.mjs +6 -6
  101. package/dist/Components/NcHeaderMenu.mjs.map +1 -1
  102. package/dist/Components/NcListItem.cjs +15 -10
  103. package/dist/Components/NcListItem.cjs.map +1 -1
  104. package/dist/Components/NcListItem.mjs +22 -17
  105. package/dist/Components/NcListItem.mjs.map +1 -1
  106. package/dist/Components/NcListItemIcon.cjs +1 -1
  107. package/dist/Components/NcListItemIcon.mjs +1 -1
  108. package/dist/Components/NcModal.cjs +50 -46
  109. package/dist/Components/NcModal.cjs.map +1 -1
  110. package/dist/Components/NcModal.mjs +66 -63
  111. package/dist/Components/NcModal.mjs.map +1 -1
  112. package/dist/Components/NcPasswordField.cjs +14 -12
  113. package/dist/Components/NcPasswordField.cjs.map +1 -1
  114. package/dist/Components/NcPasswordField.mjs +25 -23
  115. package/dist/Components/NcPasswordField.mjs.map +1 -1
  116. package/dist/Components/NcRelatedResourcesPanel.cjs +6 -4
  117. package/dist/Components/NcRelatedResourcesPanel.cjs.map +1 -1
  118. package/dist/Components/NcRelatedResourcesPanel.mjs +24 -22
  119. package/dist/Components/NcRelatedResourcesPanel.mjs.map +1 -1
  120. package/dist/Components/NcRichContenteditable.cjs +113 -82
  121. package/dist/Components/NcRichContenteditable.cjs.map +1 -1
  122. package/dist/Components/NcRichContenteditable.mjs +89 -55
  123. package/dist/Components/NcRichContenteditable.mjs.map +1 -1
  124. package/dist/Components/NcRichText.cjs +1 -1
  125. package/dist/Components/NcRichText.mjs +3 -3
  126. package/dist/Components/NcSelect.cjs +22 -21
  127. package/dist/Components/NcSelect.cjs.map +1 -1
  128. package/dist/Components/NcSelect.mjs +28 -28
  129. package/dist/Components/NcSelect.mjs.map +1 -1
  130. package/dist/Components/NcSelectTags.cjs +4 -2
  131. package/dist/Components/NcSelectTags.cjs.map +1 -1
  132. package/dist/Components/NcSelectTags.mjs +46 -44
  133. package/dist/Components/NcSelectTags.mjs.map +1 -1
  134. package/dist/Components/NcSettingsInputText.cjs +5 -4
  135. package/dist/Components/NcSettingsInputText.cjs.map +1 -1
  136. package/dist/Components/NcSettingsInputText.mjs +15 -14
  137. package/dist/Components/NcSettingsInputText.mjs.map +1 -1
  138. package/dist/Components/NcSettingsSection.cjs +8 -6
  139. package/dist/Components/NcSettingsSection.cjs.map +1 -1
  140. package/dist/Components/NcSettingsSection.mjs +18 -17
  141. package/dist/Components/NcSettingsSection.mjs.map +1 -1
  142. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  143. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  144. package/dist/Components/NcTextArea.cjs +5 -5
  145. package/dist/Components/NcTextArea.cjs.map +1 -1
  146. package/dist/Components/NcTextArea.mjs +4 -4
  147. package/dist/Components/NcTextArea.mjs.map +1 -1
  148. package/dist/Components/NcTextField.cjs +4 -2
  149. package/dist/Components/NcTextField.cjs.map +1 -1
  150. package/dist/Components/NcTextField.mjs +19 -17
  151. package/dist/Components/NcTextField.mjs.map +1 -1
  152. package/dist/Components/NcTimezonePicker.cjs +10 -8
  153. package/dist/Components/NcTimezonePicker.cjs.map +1 -1
  154. package/dist/Components/NcTimezonePicker.mjs +35 -33
  155. package/dist/Components/NcTimezonePicker.mjs.map +1 -1
  156. package/dist/Components/NcUserBubble.cjs +1 -1
  157. package/dist/Components/NcUserBubble.mjs +1 -1
  158. package/dist/Composables/useIsMobile.cjs +13 -8
  159. package/dist/Composables/useIsMobile.cjs.map +1 -1
  160. package/dist/Composables/useIsMobile.mjs +15 -10
  161. package/dist/Composables/useIsMobile.mjs.map +1 -1
  162. package/dist/Functions/usernameToColor.cjs +1 -1
  163. package/dist/Functions/usernameToColor.cjs.map +1 -1
  164. package/dist/Functions/usernameToColor.mjs +1 -1
  165. package/dist/Functions/usernameToColor.mjs.map +1 -1
  166. package/dist/assets/{NcAppNavigationToggle-2bc73ee8.css → NcAppNavigationToggle-48c375e8.css} +4 -2
  167. package/dist/assets/{NcSettingsSelectGroup-6ddb63a6.css → NcSettingsSelectGroup-a29e2156.css} +2 -2
  168. package/dist/assets/{index-7157aefa.css → index-13720a46.css} +24 -24
  169. package/dist/assets/{index-93bc89ef.css → index-1a317434.css} +9 -12
  170. package/dist/assets/{index-3d1ccc15.css → index-2d5cf6b2.css} +45 -45
  171. package/dist/assets/index-3b654875.css +144 -0
  172. package/dist/assets/{index-e6a91529.css → index-7f77b8ae.css} +36 -36
  173. package/dist/assets/{index-9941f384.css → index-86454928.css} +13 -13
  174. package/dist/assets/{index-2d4de2fc.css → index-8b327013.css} +11 -3
  175. package/dist/assets/{index-30ca9574.css → index-97305c1f.css} +27 -40
  176. package/dist/assets/{index-73ded07b.css → index-a3c23731.css} +63 -63
  177. package/dist/assets/{index-50dc154e.css → index-a7fc7815.css} +16 -16
  178. package/dist/assets/{index-810b8984.css → index-a9999048.css} +11 -11
  179. package/dist/assets/{index-3764a447.css → index-aacb7cf8.css} +16 -16
  180. package/dist/assets/{index-b0a8a48c.css → index-b0bba2fc.css} +11 -11
  181. package/dist/assets/{index-b991895f.css → index-c20f9f7e.css} +15 -15
  182. package/dist/assets/{index-5e4bf286.css → index-d8bc189c.css} +38 -41
  183. package/dist/assets/{index-ffa6d11c.css → index-dab51681.css} +64 -31
  184. package/dist/assets/{index-4e03d941.css → index-f24e102f.css} +49 -48
  185. package/dist/assets/{index-4611417f.css → index-f5162bbd.css} +7 -7
  186. package/dist/assets/{index-34dfc54e.css → index-f78bd735.css} +13 -13
  187. package/dist/assets/{index-f72cef5d.css → index-fe84a063.css} +5 -5
  188. package/dist/chunks/GenColors-5c054042.mjs +137 -0
  189. package/dist/chunks/GenColors-5c054042.mjs.map +1 -0
  190. package/dist/chunks/GenColors-7495e6f6.cjs +136 -0
  191. package/dist/chunks/GenColors-7495e6f6.cjs.map +1 -0
  192. package/dist/chunks/{NcAppNavigationToggle-f5591773.mjs → NcAppNavigationToggle-0bc638a8.mjs} +27 -26
  193. package/dist/chunks/{NcAppNavigationToggle-6a975868.cjs.map → NcAppNavigationToggle-0bc638a8.mjs.map} +1 -1
  194. package/dist/chunks/{NcAppNavigationToggle-6a975868.cjs → NcAppNavigationToggle-6d192bea.cjs} +17 -15
  195. package/dist/chunks/{NcAppNavigationToggle-f5591773.mjs.map → NcAppNavigationToggle-6d192bea.cjs.map} +1 -1
  196. package/dist/chunks/{NcInputConfirmCancel-7837eb4d.mjs → NcInputConfirmCancel-a08c5cb4.mjs} +14 -13
  197. package/dist/chunks/{NcInputConfirmCancel-7837eb4d.mjs.map → NcInputConfirmCancel-a08c5cb4.mjs.map} +1 -1
  198. package/dist/chunks/{NcInputConfirmCancel-790f5902.cjs → NcInputConfirmCancel-b99898db.cjs} +8 -7
  199. package/dist/chunks/{NcInputConfirmCancel-790f5902.cjs.map → NcInputConfirmCancel-b99898db.cjs.map} +1 -1
  200. package/dist/chunks/{NcRichText-0db09c78.mjs → NcRichText-e4bf7767.mjs} +1 -1
  201. package/dist/chunks/{NcRichText-0db09c78.mjs.map → NcRichText-e4bf7767.mjs.map} +1 -1
  202. package/dist/chunks/{NcRichText-0dd96aac.cjs → NcRichText-f729896c.cjs} +1 -1
  203. package/dist/chunks/{NcRichText-0dd96aac.cjs.map → NcRichText-f729896c.cjs.map} +1 -1
  204. package/dist/chunks/{NcSettingsSelectGroup-532ba813.cjs → NcSettingsSelectGroup-b065ffc8.cjs} +18 -17
  205. package/dist/chunks/NcSettingsSelectGroup-b065ffc8.cjs.map +1 -0
  206. package/dist/chunks/{NcSettingsSelectGroup-cdd84895.mjs → NcSettingsSelectGroup-ecc8bc5a.mjs} +19 -19
  207. package/dist/chunks/NcSettingsSelectGroup-ecc8bc5a.mjs.map +1 -0
  208. package/dist/chunks/{ScopeComponent-92144d97.cjs → ScopeComponent-06c558d3.cjs} +1 -1
  209. package/dist/chunks/{ScopeComponent-92144d97.cjs.map → ScopeComponent-06c558d3.cjs.map} +1 -1
  210. package/dist/chunks/{ScopeComponent-ac5265f5.mjs → ScopeComponent-b039a43c.mjs} +1 -1
  211. package/dist/chunks/{ScopeComponent-ac5265f5.mjs.map → ScopeComponent-b039a43c.mjs.map} +1 -1
  212. package/dist/chunks/_l10n-72c5e29e.cjs +62 -0
  213. package/dist/chunks/_l10n-72c5e29e.cjs.map +1 -0
  214. package/dist/chunks/_l10n-f5af5269.mjs +64 -0
  215. package/dist/chunks/_l10n-f5af5269.mjs.map +1 -0
  216. package/dist/chunks/{actionText-60ff01d1.mjs → actionText-123f26b0.mjs} +3 -3
  217. package/dist/chunks/{actionText-60ff01d1.mjs.map → actionText-123f26b0.mjs.map} +1 -1
  218. package/dist/chunks/{actionText-9582810f.cjs → actionText-e450809c.cjs} +5 -5
  219. package/dist/chunks/{actionText-9582810f.cjs.map → actionText-e450809c.cjs.map} +1 -1
  220. package/dist/chunks/{index-efb07851.mjs → index-309426ff.mjs} +123 -77
  221. package/dist/chunks/index-309426ff.mjs.map +1 -0
  222. package/dist/chunks/{index-32c8b581.cjs → index-693e993c.cjs} +109 -64
  223. package/dist/chunks/index-693e993c.cjs.map +1 -0
  224. package/dist/chunks/{referencePickerModal-ded8273d.mjs → referencePickerModal-12935fb3.mjs} +175 -169
  225. package/dist/chunks/{referencePickerModal-ded8273d.mjs.map → referencePickerModal-12935fb3.mjs.map} +1 -1
  226. package/dist/chunks/{referencePickerModal-90dac0d0.cjs → referencePickerModal-12fa2ad0.cjs} +36 -30
  227. package/dist/chunks/{referencePickerModal-90dac0d0.cjs.map → referencePickerModal-12fa2ad0.cjs.map} +1 -1
  228. package/dist/index.cjs +93 -93
  229. package/dist/index.cjs.map +1 -1
  230. package/dist/index.mjs +96 -95
  231. package/dist/index.mjs.map +1 -1
  232. package/dist/utils/UserStatus.d.ts +26 -0
  233. package/package.json +10 -4
  234. package/dist/assets/index-2e5e3b55.css +0 -151
  235. package/dist/chunks/GenColors-12ec1caa.mjs +0 -56
  236. package/dist/chunks/GenColors-12ec1caa.mjs.map +0 -1
  237. package/dist/chunks/GenColors-a8d54566.cjs +0 -55
  238. package/dist/chunks/GenColors-a8d54566.cjs.map +0 -1
  239. package/dist/chunks/NcSettingsSelectGroup-532ba813.cjs.map +0 -1
  240. package/dist/chunks/NcSettingsSelectGroup-cdd84895.mjs.map +0 -1
  241. package/dist/chunks/index-32c8b581.cjs.map +0 -1
  242. package/dist/chunks/index-efb07851.mjs.map +0 -1
  243. package/dist/chunks/l10n-070da9ad.cjs +0 -29
  244. package/dist/chunks/l10n-070da9ad.cjs.map +0 -1
  245. package/dist/chunks/l10n-1b905a9a.mjs +0 -31
  246. package/dist/chunks/l10n-1b905a9a.mjs.map +0 -1
  247. package/dist/chunks/l10n-38626490.cjs +0 -8
  248. package/dist/chunks/l10n-38626490.cjs.map +0 -1
  249. package/dist/chunks/l10n-6cfc1200.mjs +0 -10
  250. package/dist/chunks/l10n-6cfc1200.mjs.map +0 -1
@@ -1,5 +1,6 @@
1
1
  var I = require("../assets/index-ab715d82.css");
2
- const o = require("@nextcloud/axios"), l = require("@nextcloud/router"), a = require("./NcButton.cjs"), s = require("../chunks/l10n-070da9ad.cjs"), n = require("../chunks/_plugin-vue2_normalizer-7f9efb60.cjs"), u = (t) => t && t.__esModule ? t : { default: t }, c = /* @__PURE__ */ u(o);
2
+ const o = require("@nextcloud/axios"), l = require("@nextcloud/router"), a = require("./NcButton.cjs"), s = require("../chunks/_l10n-72c5e29e.cjs"), n = require("../chunks/_plugin-vue2_normalizer-7f9efb60.cjs"), u = (t) => t && t.__esModule ? t : { default: t }, c = /* @__PURE__ */ u(o);
3
+ s.register(s.t30);
3
4
  const d = {
4
5
  name: "NcResource",
5
6
  components: {
@@ -44,6 +45,7 @@ var _ = function() {
44
45
  null
45
46
  );
46
47
  const h = f.exports;
48
+ s.register(s.t8);
47
49
  const m = {
48
50
  name: "NcRelatedResourcesPanel",
49
51
  components: {
@@ -187,7 +189,7 @@ var y = function() {
187
189
  return e.appEnabled && e.isVisible ? r("div", { staticClass: "related-resources" }, [r("div", { staticClass: "related-resources__header" }, [r("h5", [e._v(e._s(e.header))]), r("p", [e._v(e._s(e.subline))])]), e._l(e.resources, function(i) {
188
190
  return r("NcResource", { key: i.itemId, staticClass: "related-resources__entry", attrs: { icon: i.icon, name: i.title, url: i.url } });
189
191
  })], 2) : e._e();
190
- }, v = [], R = /* @__PURE__ */ n.normalizeComponent(
192
+ }, v = [], g = /* @__PURE__ */ n.normalizeComponent(
191
193
  m,
192
194
  y,
193
195
  v,
@@ -197,5 +199,5 @@ var y = function() {
197
199
  null,
198
200
  null
199
201
  );
200
- const g = R.exports;
201
- module.exports = g;
202
+ const R = g.exports;
203
+ module.exports = R;
@@ -1 +1 @@
1
- {"version":3,"file":"NcRelatedResourcesPanel.cjs","sources":["../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:href=\"url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t<div class=\"related-resources__header\">\n\t\t\t<h5>{{ header }}</h5>\n\t\t\t<p>{{ subline }}</p>\n\t\t</div>\n\n\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t:key=\"resource.itemId\"\n\t\t\tclass=\"related-resources__entry\"\n\t\t\t:icon=\"resource.icon\"\n\t\t\t:name=\"resource.title\"\n\t\t\t:url=\"resource.url\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\t\tmargin: 0 0 10px 46px;\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","Components_NcButton","l10n","_sfc_main","NcResource","_a","providerId","itemId","router","error","resources","response","axios__default"],"mappings":"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"}
1
+ {"version":3,"file":"NcRelatedResourcesPanel.cjs","sources":["../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:href=\"url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t<div class=\"related-resources__header\">\n\t\t\t<h5>{{ header }}</h5>\n\t\t\t<p>{{ subline }}</p>\n\t\t</div>\n\n\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t:key=\"resource.itemId\"\n\t\t\tclass=\"related-resources__entry\"\n\t\t\t:icon=\"resource.icon\"\n\t\t\t:name=\"resource.title\"\n\t\t\t:url=\"resource.url\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\t\tmargin: 0 0 10px 46px;\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","Components_NcButton","_l10n","_sfc_main","NcResource","_a","providerId","itemId","router","error","resources","response","axios__default"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import "../assets/index-ab715d82.css";
2
- import o from "@nextcloud/axios";
2
+ import a from "@nextcloud/axios";
3
3
  import { generateOcsUrl as l } from "@nextcloud/router";
4
- import a from "./NcButton.mjs";
5
- import { t as s } from "../chunks/l10n-1b905a9a.mjs";
6
- import { n } from "../chunks/_plugin-vue2_normalizer-71e2aa87.mjs";
7
- const u = {
4
+ import u from "./NcButton.mjs";
5
+ import { r as n, A as c, a as s, B as d } from "../chunks/_l10n-f5af5269.mjs";
6
+ import { n as o } from "../chunks/_plugin-vue2_normalizer-71e2aa87.mjs";
7
+ n(c);
8
+ const p = {
8
9
  name: "NcResource",
9
10
  components: {
10
- NcButton: a
11
+ NcButton: u
11
12
  },
12
13
  props: {
13
14
  icon: {
@@ -32,26 +33,27 @@ const u = {
32
33
  t: s
33
34
  }
34
35
  };
35
- var c = function() {
36
+ var f = function() {
36
37
  var e = this, t = e._self._c;
37
38
  return t("li", { staticClass: "resource" }, [t("NcButton", { staticClass: "resource__button", attrs: { "aria-label": e.labelTranslated, type: "tertiary", href: e.url }, scopedSlots: e._u([{ key: "icon", fn: function() {
38
39
  return [t("div", { staticClass: "resource__icon" }, [t("img", { attrs: { src: e.icon } })])];
39
40
  }, proxy: !0 }]) }, [e._v(" " + e._s(e.name) + " ")])], 1);
40
- }, d = [], p = /* @__PURE__ */ n(
41
- u,
42
- c,
43
- d,
41
+ }, _ = [], h = /* @__PURE__ */ o(
42
+ p,
43
+ f,
44
+ _,
44
45
  !1,
45
46
  null,
46
47
  "1a960bef",
47
48
  null,
48
49
  null
49
50
  );
50
- const f = p.exports;
51
- const _ = {
51
+ const m = h.exports;
52
+ n(d);
53
+ const y = {
52
54
  name: "NcRelatedResourcesPanel",
53
55
  components: {
54
- NcResource: f
56
+ NcResource: m
55
57
  },
56
58
  props: {
57
59
  /**
@@ -175,7 +177,7 @@ const _ = {
175
177
  if (!(!this.appEnabled || !this.hasResourceInfo)) {
176
178
  this.loading = !0, this.error = null, this.resources = [];
177
179
  try {
178
- const e = await o.get(this.url);
180
+ const e = await a.get(this.url);
179
181
  this.resources = (r = e.data.ocs) == null ? void 0 : r.data;
180
182
  } catch (e) {
181
183
  this.error = e, console.error(e);
@@ -186,22 +188,22 @@ const _ = {
186
188
  }
187
189
  }
188
190
  };
189
- var h = function() {
191
+ var v = function() {
190
192
  var e = this, t = e._self._c;
191
193
  return e.appEnabled && e.isVisible ? t("div", { staticClass: "related-resources" }, [t("div", { staticClass: "related-resources__header" }, [t("h5", [e._v(e._s(e.header))]), t("p", [e._v(e._s(e.subline))])]), e._l(e.resources, function(i) {
192
194
  return t("NcResource", { key: i.itemId, staticClass: "related-resources__entry", attrs: { icon: i.icon, name: i.title, url: i.url } });
193
195
  })], 2) : e._e();
194
- }, m = [], y = /* @__PURE__ */ n(
195
- _,
196
- h,
197
- m,
196
+ }, R = [], g = /* @__PURE__ */ o(
197
+ y,
198
+ v,
199
+ R,
198
200
  !1,
199
201
  null,
200
202
  "19300848",
201
203
  null,
202
204
  null
203
205
  );
204
- const S = y.exports;
206
+ const T = g.exports;
205
207
  export {
206
- S as default
208
+ T as default
207
209
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NcRelatedResourcesPanel.mjs","sources":["../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:href=\"url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t<div class=\"related-resources__header\">\n\t\t\t<h5>{{ header }}</h5>\n\t\t\t<p>{{ subline }}</p>\n\t\t</div>\n\n\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t:key=\"resource.itemId\"\n\t\t\tclass=\"related-resources__entry\"\n\t\t\t:icon=\"resource.icon\"\n\t\t\t:name=\"resource.title\"\n\t\t\t:url=\"resource.url\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\t\tmargin: 0 0 10px 46px;\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","NcButton","t","_sfc_main","NcResource","_a","providerId","itemId","generateOcsUrl","error","resources","response","axios"],"mappings":"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"}
1
+ {"version":3,"file":"NcRelatedResourcesPanel.mjs","sources":["../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:href=\"url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t<div class=\"related-resources__header\">\n\t\t\t<h5>{{ header }}</h5>\n\t\t\t<p>{{ subline }}</p>\n\t\t</div>\n\n\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t:key=\"resource.itemId\"\n\t\t\tclass=\"related-resources__entry\"\n\t\t\t:icon=\"resource.icon\"\n\t\t\t:name=\"resource.title\"\n\t\t\t:url=\"resource.url\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\t\tmargin: 0 0 10px 46px;\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","NcButton","t","_sfc_main","NcResource","_a","providerId","itemId","generateOcsUrl","error","resources","response","axios"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- var O = require("../assets/index-ffa6d11c.css");
1
+ var O = require("../assets/index-dab51681.css");
2
2
  Object.defineProperties(exports, { __esModule: { value: !0 }, [Symbol.toStringTag]: { value: "Module" } });
3
- const p = require("../chunks/index-4398f925.cjs"), f = require("@nextcloud/router"), m = require("../chunks/_plugin-vue2_normalizer-7f9efb60.cjs"), l = require("../chunks/l10n-070da9ad.cjs");
3
+ const h = require("../chunks/index-4398f925.cjs"), g = require("@nextcloud/router"), b = require("./NcIconSvgWrapper.cjs"), c = require("../chunks/index-693e993c.cjs"), f = require("../chunks/_plugin-vue2_normalizer-7f9efb60.cjs"), s = require("../chunks/_l10n-72c5e29e.cjs");
4
4
  require("../Directives/Tooltip.cjs");
5
- const c = require("../Functions/emoji.cjs"), d = require("../chunks/referencePickerModal-90dac0d0.cjs");
5
+ const d = require("../Functions/emoji.cjs"), p = require("../chunks/referencePickerModal-12fa2ad0.cjs");
6
6
  require("@nextcloud/axios");
7
7
  require("unist-util-visit");
8
8
  require("unist-builder");
@@ -19,9 +19,12 @@ require("./NcTextField.cjs");
19
19
  require("./NcButton.cjs");
20
20
  require("./NcModal.cjs");
21
21
  require("@nextcloud/event-bus");
22
- const _ = require("tributejs/dist/tribute.esm.js"), g = require("debounce"), b = require("string-length"), y = require("floating-vue"), u = (t) => t && t.__esModule ? t : { default: t }, a = /* @__PURE__ */ u(_), C = /* @__PURE__ */ u(g), v = /* @__PURE__ */ u(b);
23
- const k = {
22
+ const C = require("tributejs/dist/tribute.esm.js"), y = require("debounce"), v = require("string-length"), m = require("../chunks/GenRandomId-c214d235.cjs"), k = require("floating-vue"), u = (t) => t && t.__esModule ? t : { default: t }, l = /* @__PURE__ */ u(C), S = /* @__PURE__ */ u(y), T = /* @__PURE__ */ u(v);
23
+ const x = {
24
24
  name: "NcAutoCompleteResult",
25
+ components: {
26
+ NcIconSvgWrapper: b
27
+ },
25
28
  props: {
26
29
  title: {
27
30
  type: String,
@@ -56,41 +59,59 @@ const k = {
56
59
  avatarUrl() {
57
60
  return this.iconUrl ? this.iconUrl : this.id && this.source === "users" ? this.getAvatarUrl(this.id, 44) : null;
58
61
  },
59
- haveStatus() {
60
- var t, e, n;
61
- return ((t = this.status) == null ? void 0 : t.icon) || ((e = this.status) == null ? void 0 : e.status) && ((n = this.status) == null ? void 0 : n.status) !== "offline";
62
+ userStatusIcon() {
63
+ return c.getUserStatusIcon(this.status.status);
64
+ },
65
+ userStatusIconName() {
66
+ return c.getUserStatusIconName(this.status.status);
62
67
  }
63
68
  },
64
69
  methods: {
65
70
  getAvatarUrl(t, e) {
66
- return f.generateUrl("/avatar/{user}/{size}", {
71
+ return g.generateUrl("/avatar/{user}/{size}", {
67
72
  user: t,
68
73
  size: e
69
74
  });
70
75
  }
71
76
  }
72
77
  };
73
- var T = function() {
74
- var e = this, n = e._self._c;
75
- return n("div", { staticClass: "autocomplete-result" }, [n("div", { staticClass: "autocomplete-result__icon", class: [e.icon, `autocomplete-result__icon--${e.avatarUrl ? "with-avatar" : ""}`], style: e.avatarUrl ? { backgroundImage: `url(${e.avatarUrl})` } : null }, [e.haveStatus ? n("div", { staticClass: "autocomplete-result__status", class: [`autocomplete-result__status--${e.status && e.status.icon ? "icon" : e.status.status}`] }, [e._v(" " + e._s(e.status && e.status.icon || "") + " ")]) : e._e()]), n("span", { staticClass: "autocomplete-result__content" }, [n("span", { staticClass: "autocomplete-result__title", attrs: { title: e.title } }, [e._v(" " + e._s(e.title) + " ")]), e.subline ? n("span", { staticClass: "autocomplete-result__subline" }, [e._v(" " + e._s(e.subline) + " ")]) : e._e()])]);
76
- }, x = [], S = /* @__PURE__ */ m.normalizeComponent(
77
- k,
78
- T,
78
+ var q = function() {
79
+ var e = this, i = e._self._c;
80
+ return i("div", { staticClass: "autocomplete-result" }, [i("div", { staticClass: "autocomplete-result__icon", class: [e.icon, `autocomplete-result__icon--${e.avatarUrl ? "with-avatar" : ""}`], style: e.avatarUrl ? { backgroundImage: `url(${e.avatarUrl})` } : null }, [e.status.icon ? i("span", { staticClass: "autocomplete-result__status autocomplete-result__status--icon" }, [e._v(" " + e._s(e.status && e.status.icon || "") + " ")]) : e.status.status && e.status.status !== "offline" ? i("NcIconSvgWrapper", { staticClass: "autocomplete-result__status", attrs: { svg: e.userStatusIcon, name: e.userStatusIconName } }) : e._e()], 1), i("span", { staticClass: "autocomplete-result__content" }, [i("span", { staticClass: "autocomplete-result__title", attrs: { title: e.title } }, [e._v(" " + e._s(e.title) + " ")]), e.subline ? i("span", { staticClass: "autocomplete-result__subline" }, [e._v(" " + e._s(e.subline) + " ")]) : e._e()])]);
81
+ }, A = [], E = /* @__PURE__ */ f.normalizeComponent(
79
82
  x,
83
+ q,
84
+ A,
80
85
  !1,
81
86
  null,
82
- "25cf09d8",
87
+ "08521a89",
83
88
  null,
84
89
  null
85
90
  );
86
- const h = S.exports;
87
- const q = {
91
+ const _ = E.exports;
92
+ s.register(s.t26, s.t29);
93
+ const R = {
88
94
  name: "NcRichContenteditable",
89
95
  directives: {
90
- tooltip: y.VTooltip
96
+ tooltip: k.VTooltip
91
97
  },
92
- mixins: [p.richEditor],
98
+ mixins: [h.richEditor],
99
+ inheritAttrs: !1,
93
100
  props: {
101
+ /**
102
+ * The ID attribute of the content editable
103
+ */
104
+ id: {
105
+ type: String,
106
+ default: () => m.GenRandomId(7)
107
+ },
108
+ /**
109
+ * Visual label of the contenteditable
110
+ */
111
+ label: {
112
+ type: String,
113
+ default: ""
114
+ },
94
115
  value: {
95
116
  type: String,
96
117
  default: "",
@@ -98,7 +119,7 @@ const q = {
98
119
  },
99
120
  placeholder: {
100
121
  type: String,
101
- default: l.t("Write a message …")
122
+ default: s.t("Write a message …")
102
123
  },
103
124
  autoComplete: {
104
125
  type: Function,
@@ -163,6 +184,7 @@ const q = {
163
184
  ],
164
185
  data() {
165
186
  return {
187
+ labelId: `rich-label-${m.GenRandomId(5)}`,
166
188
  textSmiles: [],
167
189
  tribute: null,
168
190
  autocompleteOptions: {
@@ -174,7 +196,7 @@ const q = {
174
196
  // Where to inject the menu popup
175
197
  menuContainer: this.menuContainer,
176
198
  // Popup mention autocompletion templates
177
- menuItemTemplate: (t) => this.renderComponentHtml(t.original, h),
199
+ menuItemTemplate: (t) => this.renderComponentHtml(t.original, _),
178
200
  // Hide if no results
179
201
  noMatchTemplate: () => '<span class="hidden"></span>',
180
202
  // Inner display of mentions
@@ -195,13 +217,13 @@ const q = {
195
217
  // Popup mention autocompletion templates
196
218
  menuItemTemplate: (t) => this.textSmiles.includes(t.original) ? t.original : `<span class="tribute-container-emoji__item__emoji">${t.original.native}</span> :${t.original.short_name}`,
197
219
  // Hide if no results
198
- noMatchTemplate: () => l.t("No emoji found"),
220
+ noMatchTemplate: () => s.t("No emoji found"),
199
221
  // Display raw emoji along with its name
200
- selectTemplate: (t) => this.textSmiles.includes(t.original) ? t.original : (c.emojiAddRecent(t.original), t.original.native),
222
+ selectTemplate: (t) => this.textSmiles.includes(t.original) ? t.original : (d.emojiAddRecent(t.original), t.original.native),
201
223
  // Pass the search results as values
202
224
  values: (t, e) => {
203
- const n = c.emojiSearch(t);
204
- this.textSmiles.includes(":" + t) && n.unshift(":" + t), e(n);
225
+ const i = d.emojiSearch(t);
226
+ this.textSmiles.includes(":" + t) && i.unshift(":" + t), e(i);
205
227
  },
206
228
  // Class added to the menu container
207
229
  containerClass: "tribute-container-emoji",
@@ -218,10 +240,10 @@ const q = {
218
240
  // Popup mention autocompletion templates
219
241
  menuItemTemplate: (t) => `<img class="tribute-container-link__item__icon" src="${t.original.icon_url}"> <span class="tribute-container-link__item__title">${t.original.title}</span>`,
220
242
  // Hide if no results
221
- noMatchTemplate: () => l.t("No link provider found"),
243
+ noMatchTemplate: () => s.t("No link provider found"),
222
244
  selectTemplate: this.getLink,
223
245
  // Pass the search results as values
224
- values: (t, e) => e(d.searchProvider(t)),
246
+ values: (t, e) => e(p.searchProvider(t)),
225
247
  // Class added to the menu container
226
248
  containerClass: "tribute-container-link",
227
249
  // Class added to each list item
@@ -242,7 +264,7 @@ const q = {
242
264
  * @return {boolean}
243
265
  */
244
266
  isEmptyValue() {
245
- return !this.localValue || this.localValue && this.localValue.trim() === "";
267
+ return !this.localValue || this.localValue.trim() === "";
246
268
  },
247
269
  /**
248
270
  * Is this Firefox? 🙄
@@ -258,7 +280,7 @@ const q = {
258
280
  * @return {boolean}
259
281
  */
260
282
  isOverMaxlength() {
261
- return this.isEmptyValue || !this.maxlength ? !1 : v.default(this.localValue) > this.maxlength;
283
+ return this.isEmptyValue || !this.maxlength ? !1 : T.default(this.localValue) > this.maxlength;
262
284
  },
263
285
  /**
264
286
  * Tooltip to show if characters count is over limit
@@ -267,7 +289,7 @@ const q = {
267
289
  */
268
290
  tooltipString() {
269
291
  return this.isOverMaxlength ? {
270
- content: l.t("Message limit of {count} characters reached", { count: this.maxlength }),
292
+ content: s.t("Message limit of {count} characters reached", { count: this.maxlength }),
271
293
  shown: !0,
272
294
  trigger: "manual"
273
295
  } : null;
@@ -304,10 +326,10 @@ const q = {
304
326
  const t = ["d", "D", "p", "P", "s", "S", "x", "X", ")", "(", "|", "/"];
305
327
  this.textSmiles = [], t.forEach((e) => {
306
328
  this.textSmiles.push(":" + e), this.textSmiles.push(":-" + e);
307
- }), this.autocompleteTribute = new a.default(this.autocompleteOptions), this.autocompleteTribute.attach(this.$el), this.emojiAutocomplete && (this.emojiTribute = new a.default(this.emojiOptions), this.emojiTribute.attach(this.$el)), this.linkAutocomplete && (this.linkTribute = new a.default(this.linkOptions), this.linkTribute.attach(this.$el)), this.updateContent(this.value), this.$refs.contenteditable.contentEditable = this.canEdit;
329
+ }), this.autocompleteTribute = new l.default(this.autocompleteOptions), this.autocompleteTribute.attach(this.$refs.contenteditable), this.emojiAutocomplete && (this.emojiTribute = new l.default(this.emojiOptions), this.emojiTribute.attach(this.$refs.contenteditable)), this.linkAutocomplete && (this.linkTribute = new l.default(this.linkOptions), this.linkTribute.attach(this.$refs.contenteditable)), this.updateContent(this.value), this.$refs.contenteditable.contentEditable = this.canEdit;
308
330
  },
309
331
  beforeDestroy() {
310
- this.autocompleteTribute && this.autocompleteTribute.detach(this.$el), this.emojiTribute && this.emojiTribute.detach(this.$el), this.linkTribute && this.linkTribute.detach(this.$el);
332
+ this.autocompleteTribute && this.autocompleteTribute.detach(this.$refs.contenteditable), this.emojiTribute && this.emojiTribute.detach(this.$refs.contenteditable), this.linkTribute && this.linkTribute.detach(this.$refs.contenteditable);
311
333
  },
312
334
  methods: {
313
335
  /**
@@ -319,27 +341,35 @@ const q = {
319
341
  this.$refs.contenteditable.focus();
320
342
  },
321
343
  getLink(t) {
322
- return d.getLinkWithPicker(t.original.id).then((e) => {
323
- const n = document.getElementById("tmp-smart-picker-result-node"), i = {
344
+ return p.getLinkWithPicker(t.original.id).then((e) => {
345
+ const i = document.getElementById("tmp-smart-picker-result-node"), n = {
324
346
  result: e,
325
347
  insertText: !0
326
348
  };
327
- if (this.$emit("smart-picker-submit", i), i.insertText) {
349
+ if (this.$emit("smart-picker-submit", n), n.insertText) {
328
350
  const r = document.createTextNode(e);
329
- n.replaceWith(r), this.setCursorAfter(r), this.updateValue(this.$refs.contenteditable.innerHTML);
351
+ i.replaceWith(r), this.setCursorAfter(r), this.updateValue(this.$refs.contenteditable.innerHTML);
330
352
  } else
331
- n.remove();
353
+ i.remove();
332
354
  }).catch((e) => {
333
355
  console.debug("Smart picker promise rejected:", e);
334
- const n = document.getElementById("tmp-smart-picker-result-node");
335
- this.setCursorAfter(n), n.remove();
356
+ const i = document.getElementById("tmp-smart-picker-result-node");
357
+ this.setCursorAfter(i), i.remove();
336
358
  }), '<span id="tmp-smart-picker-result-node"></span>';
337
359
  },
338
360
  setCursorAfter(t) {
339
361
  const e = document.createRange();
340
362
  e.setEndAfter(t), e.collapse();
341
- const n = window.getSelection();
342
- n.removeAllRanges(), n.addRange(e);
363
+ const i = window.getSelection();
364
+ i.removeAllRanges(), i.addRange(e);
365
+ },
366
+ moveCursorToEnd() {
367
+ if (!document.createRange)
368
+ return;
369
+ const t = document.createRange();
370
+ t.selectNodeContents(this.$refs.contenteditable), t.collapse(!1);
371
+ const e = window.getSelection();
372
+ e.removeAllRanges(), e.addRange(t);
343
373
  },
344
374
  /**
345
375
  * Re-emit the input event to the parent
@@ -363,15 +393,15 @@ const q = {
363
393
  const e = t.clipboardData;
364
394
  if (this.$emit("paste", t), e.files.length !== 0 || !Object.values(e.items).find((o) => o == null ? void 0 : o.type.startsWith("text")))
365
395
  return;
366
- const n = e.getData("text"), i = window.getSelection();
367
- if (!i.rangeCount) {
368
- this.updateValue(n);
396
+ const i = e.getData("text"), n = window.getSelection();
397
+ if (!n.rangeCount) {
398
+ this.updateValue(i);
369
399
  return;
370
400
  }
371
- const r = i.getRangeAt(0);
372
- i.deleteFromDocument(), r.insertNode(document.createTextNode(n));
373
- const s = document.createRange();
374
- s.setStart(t.target, r.endOffset), s.collapse(!0), i.removeAllRanges(), i.addRange(s), this.updateValue(this.$refs.contenteditable.innerHTML);
401
+ const r = n.getRangeAt(0);
402
+ n.deleteFromDocument(), r.insertNode(document.createTextNode(i));
403
+ const a = document.createRange();
404
+ a.setStart(t.target, r.endOffset), a.collapse(!0), n.removeAllRanges(), n.addRange(a), this.updateValue(this.$refs.contenteditable.innerHTML);
375
405
  },
376
406
  /**
377
407
  * Update the value text from the provided html
@@ -402,22 +432,22 @@ const q = {
402
432
  onDelete(t) {
403
433
  if (!this.isFF || !window.getSelection || !this.canEdit)
404
434
  return;
405
- const e = window.getSelection(), n = t.target;
435
+ const e = window.getSelection(), i = t.target;
406
436
  if (!e.isCollapsed || !e.rangeCount)
407
437
  return;
408
- const i = e.getRangeAt(e.rangeCount - 1);
409
- if (i.commonAncestorContainer.nodeType === 3 && i.startOffset > 0)
438
+ const n = e.getRangeAt(e.rangeCount - 1);
439
+ if (n.commonAncestorContainer.nodeType === 3 && n.startOffset > 0)
410
440
  return;
411
441
  const r = document.createRange();
412
- if (e.anchorNode !== n)
413
- r.selectNodeContents(n), r.setEndBefore(e.anchorNode);
442
+ if (e.anchorNode !== i)
443
+ r.selectNodeContents(i), r.setEndBefore(e.anchorNode);
414
444
  else if (e.anchorOffset > 0)
415
- r.setEnd(n, e.anchorOffset);
445
+ r.setEnd(i, e.anchorOffset);
416
446
  else
417
447
  return;
418
- r.setStart(n, r.endOffset - 1);
419
- const s = r.cloneContents().lastChild;
420
- s && s.contentEditable === "false" && (r.deleteContents(), t.preventDefault());
448
+ r.setStart(i, r.endOffset - 1);
449
+ const a = r.cloneContents().lastChild;
450
+ a && a.contentEditable === "false" && (r.deleteContents(), t.preventDefault());
421
451
  },
422
452
  /**
423
453
  * Enter key pressed. Submits if not multiline
@@ -438,7 +468,7 @@ const q = {
438
468
  /**
439
469
  * Debounce the autocomplete function
440
470
  */
441
- debouncedAutoComplete: C.default(async function(t, e) {
471
+ debouncedAutoComplete: S.default(async function(t, e) {
442
472
  this.autoComplete(t, e);
443
473
  }, 100),
444
474
  onKeyUp(t) {
@@ -446,37 +476,38 @@ const q = {
446
476
  }
447
477
  }
448
478
  };
449
- var A = function() {
450
- var e = this, n = e._self._c;
451
- return n("div", e._g({ directives: [{ name: "tooltip", rawName: "v-tooltip", value: e.tooltipString, expression: "tooltipString" }], ref: "contenteditable", staticClass: "rich-contenteditable__input", class: {
479
+ var N = function() {
480
+ var e = this, i = e._self._c;
481
+ return i("div", { staticClass: "rich-contenteditable" }, [i("div", e._g(e._b({ directives: [{ name: "tooltip", rawName: "v-tooltip", value: e.tooltipString, expression: "tooltipString" }], ref: "contenteditable", staticClass: "rich-contenteditable__input", class: {
452
482
  "rich-contenteditable__input--empty": e.isEmptyValue,
453
483
  "rich-contenteditable__input--multiline": e.multiline,
484
+ "rich-contenteditable__input--has-label": e.label,
454
485
  "rich-contenteditable__input--overflow": e.isOverMaxlength,
455
486
  "rich-contenteditable__input--disabled": e.disabled
456
- }, attrs: { contenteditable: e.canEdit, "aria-placeholder": e.placeholder, "aria-multiline": "true", role: "textbox" }, on: { input: e.onInput, compositionstart: function(i) {
487
+ }, attrs: { id: e.id, contenteditable: e.canEdit, "aria-labelledby": e.label ? e.labelId : void 0, "aria-placeholder": e.placeholder, "aria-multiline": "true", role: "textbox" }, on: { focus: e.moveCursorToEnd, input: e.onInput, compositionstart: function(n) {
457
488
  e.isComposing = !0;
458
- }, compositionend: function(i) {
489
+ }, compositionend: function(n) {
459
490
  e.isComposing = !1;
460
- }, keydown: [function(i) {
461
- return !i.type.indexOf("key") && e._k(i.keyCode, "delete", [8, 46], i.key, ["Backspace", "Delete", "Del"]) ? null : e.onDelete.apply(null, arguments);
462
- }, function(i) {
463
- return !i.type.indexOf("key") && e._k(i.keyCode, "enter", 13, i.key, "Enter") || i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : e.onEnter.apply(null, arguments);
464
- }, function(i) {
465
- return !i.type.indexOf("key") && e._k(i.keyCode, "enter", 13, i.key, "Enter") || !i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : (i.stopPropagation(), i.preventDefault(), e.onCtrlEnter.apply(null, arguments));
466
- }], paste: e.onPaste, "!keyup": function(i) {
467
- return i.stopPropagation(), i.preventDefault(), e.onKeyUp.apply(null, arguments);
468
- } } }, e.listeners));
469
- }, E = [], R = /* @__PURE__ */ m.normalizeComponent(
470
- q,
471
- A,
472
- E,
491
+ }, keydown: [function(n) {
492
+ return !n.type.indexOf("key") && e._k(n.keyCode, "delete", [8, 46], n.key, ["Backspace", "Delete", "Del"]) ? null : e.onDelete.apply(null, arguments);
493
+ }, function(n) {
494
+ return !n.type.indexOf("key") && e._k(n.keyCode, "enter", 13, n.key, "Enter") || n.ctrlKey || n.shiftKey || n.altKey || n.metaKey ? null : e.onEnter.apply(null, arguments);
495
+ }, function(n) {
496
+ return !n.type.indexOf("key") && e._k(n.keyCode, "enter", 13, n.key, "Enter") || !n.ctrlKey || n.shiftKey || n.altKey || n.metaKey ? null : (n.stopPropagation(), n.preventDefault(), e.onCtrlEnter.apply(null, arguments));
497
+ }], paste: e.onPaste, "!keyup": function(n) {
498
+ return n.stopPropagation(), n.preventDefault(), e.onKeyUp.apply(null, arguments);
499
+ } } }, "div", e.$attrs, !1), e.listeners)), e.label ? i("div", { staticClass: "rich-contenteditable__label", attrs: { id: e.labelId } }, [e._v(" " + e._s(e.label) + " ")]) : e._e()]);
500
+ }, I = [], j = /* @__PURE__ */ f.normalizeComponent(
501
+ R,
502
+ N,
503
+ I,
473
504
  !1,
474
505
  null,
475
- "9e395f41",
506
+ "0abd2492",
476
507
  null,
477
508
  null
478
509
  );
479
- const j = R.exports;
480
- exports.NcMentionBubble = p.NcMentionBubble;
481
- exports.NcAutoCompleteResult = h;
482
- exports.default = j;
510
+ const w = j.exports;
511
+ exports.NcMentionBubble = h.NcMentionBubble;
512
+ exports.NcAutoCompleteResult = _;
513
+ exports.default = w;