@nextcloud/vue 8.31.0 → 8.32.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 (589) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/Components/NcActionButton.cjs +1 -1
  3. package/dist/Components/NcActionButton.mjs +1 -1
  4. package/dist/Components/NcActionButtonGroup.cjs +1 -1
  5. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  6. package/dist/Components/NcActionCheckbox.cjs +1 -1
  7. package/dist/Components/NcActionCheckbox.mjs +1 -1
  8. package/dist/Components/NcActionInput.cjs +1 -1
  9. package/dist/Components/NcActionInput.mjs +1 -1
  10. package/dist/Components/NcActionLink.cjs +3 -3
  11. package/dist/Components/NcActionLink.cjs.map +1 -1
  12. package/dist/Components/NcActionLink.mjs +3 -3
  13. package/dist/Components/NcActionLink.mjs.map +1 -1
  14. package/dist/Components/NcActionRadio.cjs +1 -1
  15. package/dist/Components/NcActionRadio.mjs +1 -1
  16. package/dist/Components/NcActionRouter.cjs +2 -2
  17. package/dist/Components/NcActionRouter.mjs +2 -2
  18. package/dist/Components/NcActionText.cjs +2 -2
  19. package/dist/Components/NcActionText.mjs +2 -2
  20. package/dist/Components/NcActionTextEditable.cjs +1 -1
  21. package/dist/Components/NcActionTextEditable.mjs +1 -1
  22. package/dist/Components/NcActions.cjs +1 -1
  23. package/dist/Components/NcActions.mjs +1 -1
  24. package/dist/Components/NcAppContent.cjs +1 -1
  25. package/dist/Components/NcAppContent.mjs +1 -1
  26. package/dist/Components/NcAppNavigation.cjs +1 -1
  27. package/dist/Components/NcAppNavigation.mjs +1 -1
  28. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  29. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  30. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  31. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  32. package/dist/Components/NcAppNavigationNew.cjs +1 -1
  33. package/dist/Components/NcAppNavigationNew.mjs +1 -1
  34. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  35. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  36. package/dist/Components/NcAppNavigationSearch.cjs +1 -1
  37. package/dist/Components/NcAppNavigationSearch.mjs +1 -1
  38. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  39. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  40. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  41. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  42. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  43. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  44. package/dist/Components/NcAppSettingsSection.cjs +2 -63
  45. package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
  46. package/dist/Components/NcAppSettingsSection.mjs +2 -63
  47. package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
  48. package/dist/Components/NcAppSidebar.cjs +1 -1
  49. package/dist/Components/NcAppSidebar.mjs +1 -1
  50. package/dist/Components/NcAppSidebarTab.cjs +3 -2
  51. package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
  52. package/dist/Components/NcAppSidebarTab.mjs +3 -2
  53. package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
  54. package/dist/Components/NcAssistantButton.cjs +1 -1
  55. package/dist/Components/NcAssistantButton.mjs +1 -1
  56. package/dist/Components/NcAssistantIcon.cjs +1 -1
  57. package/dist/Components/NcAssistantIcon.mjs +1 -1
  58. package/dist/Components/NcAvatar.cjs +1 -1
  59. package/dist/Components/NcAvatar.mjs +1 -1
  60. package/dist/Components/NcBreadcrumb.cjs +1 -1
  61. package/dist/Components/NcBreadcrumb.mjs +1 -1
  62. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  63. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  64. package/dist/Components/NcButton.cjs +1 -1
  65. package/dist/Components/NcButton.mjs +1 -1
  66. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  67. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  68. package/dist/Components/NcChip.cjs +14 -8
  69. package/dist/Components/NcChip.cjs.map +1 -1
  70. package/dist/Components/NcChip.mjs +14 -8
  71. package/dist/Components/NcChip.mjs.map +1 -1
  72. package/dist/Components/NcCollectionList.cjs +1 -1
  73. package/dist/Components/NcCollectionList.mjs +1 -1
  74. package/dist/Components/NcColorPicker.cjs +1 -1
  75. package/dist/Components/NcColorPicker.mjs +1 -1
  76. package/dist/Components/NcContent.cjs +1 -1
  77. package/dist/Components/NcContent.mjs +1 -1
  78. package/dist/Components/NcCounterBubble.cjs +1 -1
  79. package/dist/Components/NcCounterBubble.mjs +1 -1
  80. package/dist/Components/NcDashboardWidget.cjs +1 -1
  81. package/dist/Components/NcDashboardWidget.mjs +1 -1
  82. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  83. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  84. package/dist/Components/NcDateTimePicker.cjs +32 -19
  85. package/dist/Components/NcDateTimePicker.cjs.map +1 -1
  86. package/dist/Components/NcDateTimePicker.mjs +32 -19
  87. package/dist/Components/NcDateTimePicker.mjs.map +1 -1
  88. package/dist/Components/NcDateTimePickerNative.cjs +32 -14
  89. package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
  90. package/dist/Components/NcDateTimePickerNative.mjs +32 -14
  91. package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
  92. package/dist/Components/NcDialog.cjs +1 -1
  93. package/dist/Components/NcDialog.mjs +1 -1
  94. package/dist/Components/NcDialogButton.cjs +1 -1
  95. package/dist/Components/NcDialogButton.mjs +1 -1
  96. package/dist/Components/NcEllipsisedOption.cjs +1 -1
  97. package/dist/Components/NcEllipsisedOption.mjs +1 -1
  98. package/dist/Components/NcEmojiPicker.cjs +1 -1
  99. package/dist/Components/NcEmojiPicker.mjs +1 -1
  100. package/dist/Components/NcEmptyContent.cjs +2 -1
  101. package/dist/Components/NcEmptyContent.cjs.map +1 -1
  102. package/dist/Components/NcEmptyContent.mjs +2 -1
  103. package/dist/Components/NcEmptyContent.mjs.map +1 -1
  104. package/dist/Components/NcHeaderButton.cjs +1 -1
  105. package/dist/Components/NcHeaderButton.mjs +1 -1
  106. package/dist/Components/NcHeaderMenu.cjs +1 -1
  107. package/dist/Components/NcHeaderMenu.mjs +1 -1
  108. package/dist/Components/NcHighlight.cjs +1 -1
  109. package/dist/Components/NcHighlight.mjs +1 -1
  110. package/dist/Components/NcIconSvgWrapper.cjs +1 -1
  111. package/dist/Components/NcIconSvgWrapper.mjs +1 -1
  112. package/dist/Components/NcInputField.cjs +1 -1
  113. package/dist/Components/NcInputField.mjs +1 -1
  114. package/dist/Components/NcKbd.cjs +1 -1
  115. package/dist/Components/NcKbd.mjs +1 -1
  116. package/dist/Components/NcListItem.cjs +1 -1
  117. package/dist/Components/NcListItem.mjs +1 -1
  118. package/dist/Components/NcListItemIcon.cjs +1 -1
  119. package/dist/Components/NcListItemIcon.mjs +1 -1
  120. package/dist/Components/NcModal.cjs +33 -18
  121. package/dist/Components/NcModal.cjs.map +1 -1
  122. package/dist/Components/NcModal.mjs +33 -18
  123. package/dist/Components/NcModal.mjs.map +1 -1
  124. package/dist/Components/NcNoteCard.cjs +2 -2
  125. package/dist/Components/NcNoteCard.mjs +2 -2
  126. package/dist/Components/NcPasswordField.cjs +1 -1
  127. package/dist/Components/NcPasswordField.mjs +1 -1
  128. package/dist/Components/NcPopover.cjs +1 -1
  129. package/dist/Components/NcPopover.mjs +1 -1
  130. package/dist/Components/NcProgressBar.cjs +1 -1
  131. package/dist/Components/NcProgressBar.mjs +1 -1
  132. package/dist/Components/NcRadioGroup.cjs +1 -1
  133. package/dist/Components/NcRadioGroup.mjs +1 -1
  134. package/dist/Components/NcRadioGroupButton.cjs +1 -1
  135. package/dist/Components/NcRadioGroupButton.mjs +1 -1
  136. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  137. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  138. package/dist/Components/NcRichContenteditable.cjs +2 -2
  139. package/dist/Components/NcRichContenteditable.mjs +2 -2
  140. package/dist/Components/NcRichText.cjs +3 -3
  141. package/dist/Components/NcRichText.mjs +4 -4
  142. package/dist/Components/NcSelect.cjs +1 -1
  143. package/dist/Components/NcSelect.mjs +1 -1
  144. package/dist/Components/NcSelectTags.cjs +1 -1
  145. package/dist/Components/NcSelectTags.mjs +1 -1
  146. package/dist/Components/NcSelectUsers.cjs +1 -1
  147. package/dist/Components/NcSelectUsers.mjs +1 -1
  148. package/dist/Components/NcSettingsInputText.cjs +1 -1
  149. package/dist/Components/NcSettingsInputText.mjs +1 -1
  150. package/dist/Components/NcSettingsSection.cjs +1 -1
  151. package/dist/Components/NcSettingsSection.mjs +1 -1
  152. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  153. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  154. package/dist/Components/NcTextArea.cjs +1 -1
  155. package/dist/Components/NcTextArea.mjs +1 -1
  156. package/dist/Components/NcTextField.cjs +1 -1
  157. package/dist/Components/NcTextField.mjs +1 -1
  158. package/dist/Components/NcThemeProvider.cjs +1 -1
  159. package/dist/Components/NcThemeProvider.mjs +1 -1
  160. package/dist/Components/NcTimezonePicker.cjs +1 -1
  161. package/dist/Components/NcTimezonePicker.mjs +1 -1
  162. package/dist/Components/NcUserBubble.cjs +1 -1
  163. package/dist/Components/NcUserBubble.mjs +1 -1
  164. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  165. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  166. package/dist/Components/NcVNodes.cjs +2 -1
  167. package/dist/Components/NcVNodes.cjs.map +1 -1
  168. package/dist/Components/NcVNodes.mjs +2 -1
  169. package/dist/Components/NcVNodes.mjs.map +1 -1
  170. package/dist/Composables/useFormatDateTime.cjs +27 -12
  171. package/dist/Composables/useFormatDateTime.cjs.map +1 -1
  172. package/dist/Composables/useFormatDateTime.mjs +27 -12
  173. package/dist/Composables/useFormatDateTime.mjs.map +1 -1
  174. package/dist/Composables/useHotKey.cjs +2 -1
  175. package/dist/Composables/useHotKey.cjs.map +1 -1
  176. package/dist/Composables/useHotKey.mjs +2 -1
  177. package/dist/Composables/useHotKey.mjs.map +1 -1
  178. package/dist/Composables/useIsDarkTheme.cjs +5 -2
  179. package/dist/Composables/useIsDarkTheme.cjs.map +1 -1
  180. package/dist/Composables/useIsDarkTheme.mjs +5 -2
  181. package/dist/Composables/useIsDarkTheme.mjs.map +1 -1
  182. package/dist/Composables/useIsMobile.cjs.map +1 -1
  183. package/dist/Composables/useIsMobile.mjs.map +1 -1
  184. package/dist/Directives/Linkify.cjs +2 -1
  185. package/dist/Directives/Linkify.cjs.map +1 -1
  186. package/dist/Directives/Linkify.mjs +2 -1
  187. package/dist/Directives/Linkify.mjs.map +1 -1
  188. package/dist/Functions/contactsMenu.cjs +3 -2
  189. package/dist/Functions/contactsMenu.cjs.map +1 -1
  190. package/dist/Functions/contactsMenu.mjs +3 -2
  191. package/dist/Functions/contactsMenu.mjs.map +1 -1
  192. package/dist/Functions/dialog.cjs +20 -5
  193. package/dist/Functions/dialog.cjs.map +1 -1
  194. package/dist/Functions/dialog.mjs +20 -5
  195. package/dist/Functions/dialog.mjs.map +1 -1
  196. package/dist/Functions/emoji.cjs +1 -1
  197. package/dist/Functions/emoji.mjs +1 -1
  198. package/dist/Functions/reference.cjs +2 -2
  199. package/dist/Functions/reference.mjs +2 -2
  200. package/dist/Functions/registerReference.cjs +1 -1
  201. package/dist/Functions/registerReference.mjs +1 -1
  202. package/dist/Functions/usernameToColor.cjs +2 -2
  203. package/dist/Functions/usernameToColor.cjs.map +1 -1
  204. package/dist/Functions/usernameToColor.mjs +2 -2
  205. package/dist/Functions/usernameToColor.mjs.map +1 -1
  206. package/dist/Mixins/isMobile.cjs.map +1 -1
  207. package/dist/Mixins/isMobile.mjs.map +1 -1
  208. package/dist/Mixins/richEditor.cjs +1 -1
  209. package/dist/Mixins/richEditor.mjs +1 -1
  210. package/dist/assets/{NcActionInput-DXZaAilC.css → NcActionInput-DsGwr3wt.css} +65 -65
  211. package/dist/assets/{NcAppContent-DerHKU6P.css → NcAppContent-BpjG38I8.css} +23 -23
  212. package/dist/assets/{NcAppNavigation-R4E_wTZ-.css → NcAppNavigation-Bg4Oe7WC.css} +12 -12
  213. package/dist/assets/{NcAppNavigationItem-Kua1hP7u.css → NcAppNavigationItem-UaB3qdsS.css} +36 -36
  214. package/dist/assets/{NcAppSettingsDialog-DiJpVNeb.css → NcAppSettingsDialog-DH3DIIwL.css} +10 -10
  215. package/dist/assets/{NcAppSettingsSection-IzrCzLDw.css → NcAppSettingsSection-Dq0eTGEp.css} +3 -3
  216. package/dist/assets/{NcAppSidebar-CJYtNcF0.css → NcAppSidebar-Bd2cj1W-.css} +44 -44
  217. package/dist/assets/{NcAvatar-BdAXbXdR.css → NcAvatar-Cm4kVIfS.css} +24 -24
  218. package/dist/assets/{NcButton-D8AOCliw.css → NcButton-uQUvp7DS.css} +46 -46
  219. package/dist/assets/{NcCollectionList-DInDhsAS.css → NcCollectionList-hRgvNUMR.css} +15 -15
  220. package/dist/assets/{NcColorPicker-CGI9ElwB.css → NcColorPicker-CCqpXoam.css} +43 -35
  221. package/dist/assets/{NcContent-BedDNXST.css → NcContent-IIXgAj_u.css} +10 -10
  222. package/dist/assets/{NcDateTimePicker-4Zw7r2r4.css → NcDateTimePicker-C6sMtYzL.css} +13 -13
  223. package/dist/assets/{NcEmojiPicker-CrjOSMLF.css → NcEmojiPicker-B-iLLj37.css} +122 -122
  224. package/dist/assets/{NcModal-BzkYPomo.css → NcModal-4ZPVUmG2.css} +62 -62
  225. package/dist/assets/{NcRadioGroupButton-B1hPj4B8.css → NcRadioGroupButton-6mf16D0h.css} +16 -15
  226. package/dist/assets/{NcRelatedResourcesPanel-d2OxhjiL.css → NcRelatedResourcesPanel-BgMc8bue.css} +17 -17
  227. package/dist/assets/{NcRichContenteditable-BoM95AVW.css → NcRichContenteditable-Ds_cptgr.css} +11 -11
  228. package/dist/assets/{NcRichText-BDx2fupZ.css → NcRichText-CVy4zTPr.css} +2 -2
  229. package/dist/assets/{referencePickerModal-CTpc6_U6.css → referencePickerModal-CGtNx7ew.css} +6 -6
  230. package/dist/chunks/{NcActionButton-CVW8aRkE.mjs → NcActionButton-CZsSFAT4.mjs} +5 -5
  231. package/dist/chunks/{NcActionButton-CVW8aRkE.mjs.map → NcActionButton-CZsSFAT4.mjs.map} +1 -1
  232. package/dist/chunks/{NcActionButton-CFXzNoFT.cjs → NcActionButton-lJ0IA3IS.cjs} +5 -5
  233. package/dist/chunks/{NcActionButton-CFXzNoFT.cjs.map → NcActionButton-lJ0IA3IS.cjs.map} +1 -1
  234. package/dist/chunks/{NcActionButtonGroup-BOr5Of3k.mjs → NcActionButtonGroup-CIvAeDpU.mjs} +3 -3
  235. package/dist/chunks/{NcActionButtonGroup-BOr5Of3k.mjs.map → NcActionButtonGroup-CIvAeDpU.mjs.map} +1 -1
  236. package/dist/chunks/{NcActionButtonGroup-Bwuy2WZQ.cjs → NcActionButtonGroup-CQZL14Nz.cjs} +3 -3
  237. package/dist/chunks/{NcActionButtonGroup-Bwuy2WZQ.cjs.map → NcActionButtonGroup-CQZL14Nz.cjs.map} +1 -1
  238. package/dist/chunks/{NcActionCheckbox-C05ls65i.mjs → NcActionCheckbox-BAuN4ZMC.mjs} +2 -2
  239. package/dist/chunks/{NcActionCheckbox-C05ls65i.mjs.map → NcActionCheckbox-BAuN4ZMC.mjs.map} +1 -1
  240. package/dist/chunks/{NcActionCheckbox-Dg_1Ovt0.cjs → NcActionCheckbox-BvMmq0jL.cjs} +2 -2
  241. package/dist/chunks/{NcActionCheckbox-Dg_1Ovt0.cjs.map → NcActionCheckbox-BvMmq0jL.cjs.map} +1 -1
  242. package/dist/chunks/{NcActionInput-CoG-fZq9.mjs → NcActionInput-CfznemNH.mjs} +9 -9
  243. package/dist/chunks/{NcActionInput-CoG-fZq9.mjs.map → NcActionInput-CfznemNH.mjs.map} +1 -1
  244. package/dist/chunks/{NcActionInput-iIJpNS_Q.cjs → NcActionInput-DfjLV0Gg.cjs} +9 -9
  245. package/dist/chunks/{NcActionInput-iIJpNS_Q.cjs.map → NcActionInput-DfjLV0Gg.cjs.map} +1 -1
  246. package/dist/chunks/{NcActionRadio-Bpbs2dPm.mjs → NcActionRadio-Bg5VuF7I.mjs} +2 -2
  247. package/dist/chunks/{NcActionRadio-Bpbs2dPm.mjs.map → NcActionRadio-Bg5VuF7I.mjs.map} +1 -1
  248. package/dist/chunks/{NcActionRadio-Dtrwffyh.cjs → NcActionRadio-CBh6AlC4.cjs} +2 -2
  249. package/dist/chunks/{NcActionRadio-Dtrwffyh.cjs.map → NcActionRadio-CBh6AlC4.cjs.map} +1 -1
  250. package/dist/chunks/{NcActionTextEditable-BpahzGpr.cjs → NcActionTextEditable-BhucWrOO.cjs} +6 -6
  251. package/dist/chunks/{NcActionTextEditable-BpahzGpr.cjs.map → NcActionTextEditable-BhucWrOO.cjs.map} +1 -1
  252. package/dist/chunks/{NcActionTextEditable-DRwDJjPd.mjs → NcActionTextEditable-CSP4OjpU.mjs} +6 -6
  253. package/dist/chunks/{NcActionTextEditable-DRwDJjPd.mjs.map → NcActionTextEditable-CSP4OjpU.mjs.map} +1 -1
  254. package/dist/chunks/{NcActions-C832pWHO.mjs → NcActions-A918mfXE.mjs} +82 -64
  255. package/dist/chunks/{NcActions-C832pWHO.mjs.map → NcActions-A918mfXE.mjs.map} +1 -1
  256. package/dist/chunks/{NcActions-B7oXbiVt.cjs → NcActions-D3N_As6c.cjs} +82 -64
  257. package/dist/chunks/{NcActions-B7oXbiVt.cjs.map → NcActions-D3N_As6c.cjs.map} +1 -1
  258. package/dist/chunks/{NcAppContent-Djy38ou2.cjs → NcAppContent-CCyPMvUa.cjs} +27 -31
  259. package/dist/chunks/NcAppContent-CCyPMvUa.cjs.map +1 -0
  260. package/dist/chunks/{NcAppContent-C9NGJE6n.mjs → NcAppContent-DFlcxER-.mjs} +27 -31
  261. package/dist/chunks/NcAppContent-DFlcxER-.mjs.map +1 -0
  262. package/dist/chunks/{NcAppNavigation-C0Oc0gQ6.cjs → NcAppNavigation-CCHYn0D6.cjs} +7 -6
  263. package/dist/chunks/{NcAppNavigation-C0Oc0gQ6.cjs.map → NcAppNavigation-CCHYn0D6.cjs.map} +1 -1
  264. package/dist/chunks/{NcAppNavigation-DjtmN3dS.mjs → NcAppNavigation-CLF6-i2t.mjs} +7 -6
  265. package/dist/chunks/{NcAppNavigation-DjtmN3dS.mjs.map → NcAppNavigation-CLF6-i2t.mjs.map} +1 -1
  266. package/dist/chunks/{NcAppNavigationCaption-CsoHaLXg.mjs → NcAppNavigationCaption-CsG8P-1P.mjs} +3 -3
  267. package/dist/chunks/{NcAppNavigationCaption-CsoHaLXg.mjs.map → NcAppNavigationCaption-CsG8P-1P.mjs.map} +1 -1
  268. package/dist/chunks/{NcAppNavigationCaption-D4-hEmCi.cjs → NcAppNavigationCaption-DhW300oH.cjs} +3 -3
  269. package/dist/chunks/{NcAppNavigationCaption-D4-hEmCi.cjs.map → NcAppNavigationCaption-DhW300oH.cjs.map} +1 -1
  270. package/dist/chunks/{NcAppNavigationItem-DvVYHshm.mjs → NcAppNavigationItem-CwuKVEUN.mjs} +9 -9
  271. package/dist/chunks/{NcAppNavigationItem-DvVYHshm.mjs.map → NcAppNavigationItem-CwuKVEUN.mjs.map} +1 -1
  272. package/dist/chunks/{NcAppNavigationItem-ZOXUMmX5.cjs → NcAppNavigationItem-HZVy5JEa.cjs} +9 -9
  273. package/dist/chunks/{NcAppNavigationItem-ZOXUMmX5.cjs.map → NcAppNavigationItem-HZVy5JEa.cjs.map} +1 -1
  274. package/dist/chunks/{NcAppNavigationNew-AiFYSCW1.mjs → NcAppNavigationNew-DbqusDUV.mjs} +2 -2
  275. package/dist/chunks/{NcAppNavigationNew-AiFYSCW1.mjs.map → NcAppNavigationNew-DbqusDUV.mjs.map} +1 -1
  276. package/dist/chunks/{NcAppNavigationNew-BqNIa8N9.cjs → NcAppNavigationNew-T56pahiu.cjs} +2 -2
  277. package/dist/chunks/{NcAppNavigationNew-BqNIa8N9.cjs.map → NcAppNavigationNew-T56pahiu.cjs.map} +1 -1
  278. package/dist/chunks/{NcAppNavigationNewItem-CdlWkGU3.mjs → NcAppNavigationNewItem-BsnZWCLW.mjs} +2 -2
  279. package/dist/chunks/{NcAppNavigationNewItem-CdlWkGU3.mjs.map → NcAppNavigationNewItem-BsnZWCLW.mjs.map} +1 -1
  280. package/dist/chunks/{NcAppNavigationNewItem-BuEkCd2H.cjs → NcAppNavigationNewItem-DMRZwa_y.cjs} +2 -2
  281. package/dist/chunks/{NcAppNavigationNewItem-BuEkCd2H.cjs.map → NcAppNavigationNewItem-DMRZwa_y.cjs.map} +1 -1
  282. package/dist/chunks/{NcAppNavigationSearch-BXjB3FEJ.cjs → NcAppNavigationSearch-BlG1xMok.cjs} +9 -5
  283. package/dist/chunks/{NcAppNavigationSearch-BXjB3FEJ.cjs.map → NcAppNavigationSearch-BlG1xMok.cjs.map} +1 -1
  284. package/dist/chunks/{NcAppNavigationSearch-CsIzwF6F.mjs → NcAppNavigationSearch-DCMN2cWp.mjs} +9 -5
  285. package/dist/chunks/{NcAppNavigationSearch-CsIzwF6F.mjs.map → NcAppNavigationSearch-DCMN2cWp.mjs.map} +1 -1
  286. package/dist/chunks/{NcAppNavigationSettings-CkFZMLtH.cjs → NcAppNavigationSettings-DlIDzhxh.cjs} +5 -5
  287. package/dist/chunks/{NcAppNavigationSettings-CkFZMLtH.cjs.map → NcAppNavigationSettings-DlIDzhxh.cjs.map} +1 -1
  288. package/dist/chunks/{NcAppNavigationSettings-Dq2O3kRz.mjs → NcAppNavigationSettings-n8OaxTbE.mjs} +5 -5
  289. package/dist/chunks/{NcAppNavigationSettings-Dq2O3kRz.mjs.map → NcAppNavigationSettings-n8OaxTbE.mjs.map} +1 -1
  290. package/dist/chunks/{NcAppNavigationToggle-DlWpnYdz.mjs → NcAppNavigationToggle-ClYKr8Zn.mjs} +14 -13
  291. package/dist/chunks/{NcAppNavigationToggle-DlWpnYdz.mjs.map → NcAppNavigationToggle-ClYKr8Zn.mjs.map} +1 -1
  292. package/dist/chunks/{NcAppNavigationToggle-C2vtZ3uV.cjs → NcAppNavigationToggle-Cn1UvxNP.cjs} +14 -13
  293. package/dist/chunks/{NcAppNavigationToggle-C2vtZ3uV.cjs.map → NcAppNavigationToggle-Cn1UvxNP.cjs.map} +1 -1
  294. package/dist/chunks/NcAppSettingsDialog-Cpjr8Tca.mjs +132 -0
  295. package/dist/chunks/NcAppSettingsDialog-Cpjr8Tca.mjs.map +1 -0
  296. package/dist/chunks/NcAppSettingsDialog-R6Y-tl6d.cjs +134 -0
  297. package/dist/chunks/NcAppSettingsDialog-R6Y-tl6d.cjs.map +1 -0
  298. package/dist/chunks/NcAppSettingsSection-BNVlt4g0.mjs +88 -0
  299. package/dist/chunks/NcAppSettingsSection-BNVlt4g0.mjs.map +1 -0
  300. package/dist/chunks/NcAppSettingsSection-CTqViPnP.cjs +87 -0
  301. package/dist/chunks/NcAppSettingsSection-CTqViPnP.cjs.map +1 -0
  302. package/dist/chunks/{NcAppSidebar-Bda_fc-F.mjs → NcAppSidebar-CVcOP4bk.mjs} +20 -17
  303. package/dist/chunks/{NcAppSidebar-Bda_fc-F.mjs.map → NcAppSidebar-CVcOP4bk.mjs.map} +1 -1
  304. package/dist/chunks/{NcAppSidebar-Cx2ZxU4N.cjs → NcAppSidebar-Ddt82bsA.cjs} +20 -17
  305. package/dist/chunks/{NcAppSidebar-Cx2ZxU4N.cjs.map → NcAppSidebar-Ddt82bsA.cjs.map} +1 -1
  306. package/dist/chunks/{NcAssistantButton-zriu0Kiz.cjs → NcAssistantButton-WQvWhoAr.cjs} +5 -5
  307. package/dist/chunks/{NcAssistantButton-zriu0Kiz.cjs.map → NcAssistantButton-WQvWhoAr.cjs.map} +1 -1
  308. package/dist/chunks/{NcAssistantButton-Dk28Wilk.mjs → NcAssistantButton-lDdWOemf.mjs} +5 -5
  309. package/dist/chunks/{NcAssistantButton-Dk28Wilk.mjs.map → NcAssistantButton-lDdWOemf.mjs.map} +1 -1
  310. package/dist/chunks/{NcAssistantIcon-CtEF1hjA.mjs → NcAssistantIcon-BTjYuSQ9.mjs} +5 -5
  311. package/dist/chunks/{NcAssistantIcon-CtEF1hjA.mjs.map → NcAssistantIcon-BTjYuSQ9.mjs.map} +1 -1
  312. package/dist/chunks/{NcAssistantIcon-B-Udgta_.cjs → NcAssistantIcon-RDQ8YhZE.cjs} +5 -5
  313. package/dist/chunks/{NcAssistantIcon-B-Udgta_.cjs.map → NcAssistantIcon-RDQ8YhZE.cjs.map} +1 -1
  314. package/dist/chunks/{NcAvatar-CuYtFEdJ.mjs → NcAvatar-Cupl4prm.mjs} +31 -29
  315. package/dist/chunks/NcAvatar-Cupl4prm.mjs.map +1 -0
  316. package/dist/chunks/{NcAvatar-bd-5zXWN.cjs → NcAvatar-D_0Aw88L.cjs} +31 -29
  317. package/dist/chunks/NcAvatar-D_0Aw88L.cjs.map +1 -0
  318. package/dist/chunks/{NcBreadcrumb-ChxXdE2m.cjs → NcBreadcrumb-FbePEaGS.cjs} +22 -6
  319. package/dist/chunks/{NcBreadcrumb-ChxXdE2m.cjs.map → NcBreadcrumb-FbePEaGS.cjs.map} +1 -1
  320. package/dist/chunks/{NcBreadcrumb-D1106x4x.mjs → NcBreadcrumb-VJGW992x.mjs} +22 -6
  321. package/dist/chunks/{NcBreadcrumb-D1106x4x.mjs.map → NcBreadcrumb-VJGW992x.mjs.map} +1 -1
  322. package/dist/chunks/{NcBreadcrumbs-XAvQ1MIp.cjs → NcBreadcrumbs-CrNBCyUa.cjs} +47 -29
  323. package/dist/chunks/{NcBreadcrumbs-C9Zo0nca.mjs.map → NcBreadcrumbs-CrNBCyUa.cjs.map} +1 -1
  324. package/dist/chunks/{NcBreadcrumbs-C9Zo0nca.mjs → NcBreadcrumbs-DJSAcn8x.mjs} +47 -29
  325. package/dist/chunks/{NcBreadcrumbs-XAvQ1MIp.cjs.map → NcBreadcrumbs-DJSAcn8x.mjs.map} +1 -1
  326. package/dist/chunks/{NcButton-CWPBzbcC.mjs → NcButton-D3CaJu1f.mjs} +38 -22
  327. package/dist/chunks/{NcButton-CWPBzbcC.mjs.map → NcButton-D3CaJu1f.mjs.map} +1 -1
  328. package/dist/chunks/{NcButton-DOsCAjiE.cjs → NcButton-DK7bNZIL.cjs} +38 -22
  329. package/dist/chunks/{NcButton-DOsCAjiE.cjs.map → NcButton-DK7bNZIL.cjs.map} +1 -1
  330. package/dist/chunks/{NcCheckboxRadioSwitch-yVj7slxL.cjs → NcCheckboxRadioSwitch-CDFUoj2J.cjs} +8 -8
  331. package/dist/chunks/{NcCheckboxRadioSwitch-yVj7slxL.cjs.map → NcCheckboxRadioSwitch-CDFUoj2J.cjs.map} +1 -1
  332. package/dist/chunks/{NcCheckboxRadioSwitch-CLnWsBwK.mjs → NcCheckboxRadioSwitch-ezquUuPz.mjs} +8 -8
  333. package/dist/chunks/{NcCheckboxRadioSwitch-CLnWsBwK.mjs.map → NcCheckboxRadioSwitch-ezquUuPz.mjs.map} +1 -1
  334. package/dist/chunks/{NcCollectionList-5_ghrfiE.mjs → NcCollectionList-w-7M5HGN.mjs} +17 -16
  335. package/dist/chunks/{NcCollectionList-5_ghrfiE.mjs.map → NcCollectionList-w-7M5HGN.mjs.map} +1 -1
  336. package/dist/chunks/{NcCollectionList-DZh_7a3g.cjs → NcCollectionList-zAI6Ysc0.cjs} +17 -16
  337. package/dist/chunks/{NcCollectionList-DZh_7a3g.cjs.map → NcCollectionList-zAI6Ysc0.cjs.map} +1 -1
  338. package/dist/chunks/NcColorPicker-DpLU-oKM.mjs +157 -0
  339. package/dist/chunks/NcColorPicker-DpLU-oKM.mjs.map +1 -0
  340. package/dist/chunks/NcColorPicker-F-UP8OaJ.cjs +156 -0
  341. package/dist/chunks/NcColorPicker-F-UP8OaJ.cjs.map +1 -0
  342. package/dist/chunks/{NcContent-CGBJ782F.mjs → NcContent-C0_AA_wt.mjs} +7 -7
  343. package/dist/chunks/{NcContent-CGBJ782F.mjs.map → NcContent-C0_AA_wt.mjs.map} +1 -1
  344. package/dist/chunks/{NcContent-I3cwZc0Z.cjs → NcContent-DITvuNbF.cjs} +7 -7
  345. package/dist/chunks/{NcContent-I3cwZc0Z.cjs.map → NcContent-DITvuNbF.cjs.map} +1 -1
  346. package/dist/chunks/{NcCounterBubble-oxV8oMlX.mjs → NcCounterBubble-BKPpoBiy.mjs} +6 -4
  347. package/dist/chunks/{NcCounterBubble-oxV8oMlX.mjs.map → NcCounterBubble-BKPpoBiy.mjs.map} +1 -1
  348. package/dist/chunks/{NcCounterBubble-hyvazclA.cjs → NcCounterBubble-B_H3NCef.cjs} +6 -4
  349. package/dist/chunks/{NcCounterBubble-hyvazclA.cjs.map → NcCounterBubble-B_H3NCef.cjs.map} +1 -1
  350. package/dist/chunks/{NcDashboardWidget-DKUU16oT.cjs → NcDashboardWidget--n1nzfhg.cjs} +4 -4
  351. package/dist/chunks/{NcDashboardWidget-DKUU16oT.cjs.map → NcDashboardWidget--n1nzfhg.cjs.map} +1 -1
  352. package/dist/chunks/{NcDashboardWidget-_Bi63nDZ.mjs → NcDashboardWidget-CEL-DhKX.mjs} +4 -4
  353. package/dist/chunks/{NcDashboardWidget-_Bi63nDZ.mjs.map → NcDashboardWidget-CEL-DhKX.mjs.map} +1 -1
  354. package/dist/chunks/{NcDashboardWidgetItem-D4q57Lg_.mjs → NcDashboardWidgetItem-DeQtScn8.mjs} +4 -4
  355. package/dist/chunks/{NcDashboardWidgetItem-D4q57Lg_.mjs.map → NcDashboardWidgetItem-DeQtScn8.mjs.map} +1 -1
  356. package/dist/chunks/{NcDashboardWidgetItem-BhGOOhKF.cjs → NcDashboardWidgetItem-loanO02A.cjs} +4 -4
  357. package/dist/chunks/{NcDashboardWidgetItem-BhGOOhKF.cjs.map → NcDashboardWidgetItem-loanO02A.cjs.map} +1 -1
  358. package/dist/chunks/{NcDialog-Du-BeUCp.mjs → NcDialog-BM_wTqUn.mjs} +3 -3
  359. package/dist/chunks/{NcDialog-Du-BeUCp.mjs.map → NcDialog-BM_wTqUn.mjs.map} +1 -1
  360. package/dist/chunks/{NcDialog-B2tW1DtP.cjs → NcDialog-CG2sufkb.cjs} +3 -3
  361. package/dist/chunks/{NcDialog-B2tW1DtP.cjs.map → NcDialog-CG2sufkb.cjs.map} +1 -1
  362. package/dist/chunks/{NcDialogButton-DtGSMhif.mjs → NcDialogButton-Cr0wVMne.mjs} +6 -5
  363. package/dist/chunks/{NcDialogButton-DtGSMhif.mjs.map → NcDialogButton-Cr0wVMne.mjs.map} +1 -1
  364. package/dist/chunks/{NcDialogButton-BB84DliS.cjs → NcDialogButton-DkfxsIhv.cjs} +6 -5
  365. package/dist/chunks/{NcDialogButton-BB84DliS.cjs.map → NcDialogButton-DkfxsIhv.cjs.map} +1 -1
  366. package/dist/chunks/{NcEmojiPicker-B2SLfIBu.mjs → NcEmojiPicker-BV_iVlIv.mjs} +14 -13
  367. package/dist/chunks/NcEmojiPicker-BV_iVlIv.mjs.map +1 -0
  368. package/dist/chunks/{NcEmojiPicker-q_n1Rd8U.cjs → NcEmojiPicker-fgsuVz7X.cjs} +20 -19
  369. package/dist/chunks/NcEmojiPicker-fgsuVz7X.cjs.map +1 -0
  370. package/dist/chunks/{NcHeaderButton-AKzxd51V.cjs → NcHeaderButton-CNQVz4QP.cjs} +2 -2
  371. package/dist/chunks/{NcHeaderButton-AKzxd51V.cjs.map → NcHeaderButton-CNQVz4QP.cjs.map} +1 -1
  372. package/dist/chunks/{NcHeaderButton-BORaK-yT.mjs → NcHeaderButton-TJML067P.mjs} +2 -2
  373. package/dist/chunks/{NcHeaderButton-BORaK-yT.mjs.map → NcHeaderButton-TJML067P.mjs.map} +1 -1
  374. package/dist/chunks/{NcHeaderMenu-CBP4SYca.cjs → NcHeaderMenu-BzyFhg55.cjs} +10 -8
  375. package/dist/chunks/{NcHeaderMenu-CBP4SYca.cjs.map → NcHeaderMenu-BzyFhg55.cjs.map} +1 -1
  376. package/dist/chunks/{NcHeaderMenu-CkD6cjnH.mjs → NcHeaderMenu-D5ddiKnF.mjs} +10 -8
  377. package/dist/chunks/{NcHeaderMenu-CkD6cjnH.mjs.map → NcHeaderMenu-D5ddiKnF.mjs.map} +1 -1
  378. package/dist/chunks/{NcIconSvgWrapper-BreCg8pX.mjs → NcIconSvgWrapper-BCVwmZN2.mjs} +2 -2
  379. package/dist/chunks/{NcIconSvgWrapper-BreCg8pX.mjs.map → NcIconSvgWrapper-BCVwmZN2.mjs.map} +1 -1
  380. package/dist/chunks/{NcIconSvgWrapper-D-aKMbf3.cjs → NcIconSvgWrapper-DoVPfeNg.cjs} +2 -2
  381. package/dist/chunks/{NcIconSvgWrapper-D-aKMbf3.cjs.map → NcIconSvgWrapper-DoVPfeNg.cjs.map} +1 -1
  382. package/dist/chunks/{NcInputConfirmCancel-21vM2JHp.mjs → NcInputConfirmCancel-C8WnMK2V.mjs} +3 -3
  383. package/dist/chunks/{NcInputConfirmCancel-21vM2JHp.mjs.map → NcInputConfirmCancel-C8WnMK2V.mjs.map} +1 -1
  384. package/dist/chunks/{NcInputConfirmCancel-BqZm3WBG.cjs → NcInputConfirmCancel-DVVTaxWi.cjs} +3 -3
  385. package/dist/chunks/{NcInputConfirmCancel-BqZm3WBG.cjs.map → NcInputConfirmCancel-DVVTaxWi.cjs.map} +1 -1
  386. package/dist/chunks/{NcInputField-kKgY_2GV.mjs → NcInputField-1ujONIvp.mjs} +8 -7
  387. package/dist/chunks/{NcInputField-kKgY_2GV.mjs.map → NcInputField-1ujONIvp.mjs.map} +1 -1
  388. package/dist/chunks/{NcInputField-Dry3uU_8.cjs → NcInputField-LBv3nCrt.cjs} +8 -7
  389. package/dist/chunks/{NcInputField-Dry3uU_8.cjs.map → NcInputField-LBv3nCrt.cjs.map} +1 -1
  390. package/dist/chunks/{NcListItem-D_-a7WR9.cjs → NcListItem-DFEvD1TA.cjs} +9 -7
  391. package/dist/chunks/{NcListItem-D_-a7WR9.cjs.map → NcListItem-DFEvD1TA.cjs.map} +1 -1
  392. package/dist/chunks/{NcListItem-B3ETbT9w.mjs → NcListItem-DNMfT12A.mjs} +9 -7
  393. package/dist/chunks/{NcListItem-B3ETbT9w.mjs.map → NcListItem-DNMfT12A.mjs.map} +1 -1
  394. package/dist/chunks/{NcListItemIcon-CYR8eKOU.cjs → NcListItemIcon-OzD38-2R.cjs} +6 -5
  395. package/dist/chunks/{NcListItemIcon-CYR8eKOU.cjs.map → NcListItemIcon-OzD38-2R.cjs.map} +1 -1
  396. package/dist/chunks/{NcListItemIcon-bQZej-L0.mjs → NcListItemIcon-PNp6Wael.mjs} +6 -5
  397. package/dist/chunks/{NcListItemIcon-bQZej-L0.mjs.map → NcListItemIcon-PNp6Wael.mjs.map} +1 -1
  398. package/dist/chunks/{NcPasswordField-9LYKS0t_.mjs → NcPasswordField-D2iDTTpp.mjs} +29 -16
  399. package/dist/chunks/{NcPasswordField-9LYKS0t_.mjs.map → NcPasswordField-D2iDTTpp.mjs.map} +1 -1
  400. package/dist/chunks/{NcPasswordField-DPGGwGEl.cjs → NcPasswordField-lqTDeja4.cjs} +29 -16
  401. package/dist/chunks/{NcPasswordField-DPGGwGEl.cjs.map → NcPasswordField-lqTDeja4.cjs.map} +1 -1
  402. package/dist/chunks/{NcPopover-DkX3Esbr.cjs → NcPopover-DrXnNOgM.cjs} +14 -10
  403. package/dist/chunks/{NcPopover-DMUA5d7U.mjs.map → NcPopover-DrXnNOgM.cjs.map} +1 -1
  404. package/dist/chunks/{NcPopover-DMUA5d7U.mjs → NcPopover-nzbq2IjT.mjs} +14 -10
  405. package/dist/chunks/{NcPopover-DkX3Esbr.cjs.map → NcPopover-nzbq2IjT.mjs.map} +1 -1
  406. package/dist/chunks/{NcProgressBar-D7zYeXBH.mjs → NcProgressBar-BwnuvxiZ.mjs} +2 -2
  407. package/dist/chunks/{NcProgressBar-D7zYeXBH.mjs.map → NcProgressBar-BwnuvxiZ.mjs.map} +1 -1
  408. package/dist/chunks/{NcProgressBar-DvxA9bq5.cjs → NcProgressBar-D10gQgAY.cjs} +2 -2
  409. package/dist/chunks/{NcProgressBar-DvxA9bq5.cjs.map → NcProgressBar-D10gQgAY.cjs.map} +1 -1
  410. package/dist/chunks/{NcRadioGroup-BZ-humrK.cjs → NcRadioGroup-DsnIVQZJ.cjs} +23 -5
  411. package/dist/chunks/{NcRadioGroup-VKZJ0Vnh.mjs.map → NcRadioGroup-DsnIVQZJ.cjs.map} +1 -1
  412. package/dist/chunks/{NcRadioGroup-VKZJ0Vnh.mjs → NcRadioGroup-sZaH_3Y0.mjs} +23 -5
  413. package/dist/chunks/{NcRadioGroup-BZ-humrK.cjs.map → NcRadioGroup-sZaH_3Y0.mjs.map} +1 -1
  414. package/dist/chunks/{NcRadioGroupButton-QLL4wM7A.mjs → NcRadioGroupButton-B6m10k9G.mjs} +9 -9
  415. package/dist/chunks/{NcRadioGroupButton-QLL4wM7A.mjs.map → NcRadioGroupButton-B6m10k9G.mjs.map} +1 -1
  416. package/dist/chunks/{NcRadioGroupButton-7UZaDiJ2.cjs → NcRadioGroupButton-CDf_01-t.cjs} +9 -9
  417. package/dist/chunks/{NcRadioGroupButton-7UZaDiJ2.cjs.map → NcRadioGroupButton-CDf_01-t.cjs.map} +1 -1
  418. package/dist/chunks/{NcRelatedResourcesPanel-jvOEQWWO.mjs → NcRelatedResourcesPanel-Q6jZk-Pm.mjs} +49 -40
  419. package/dist/chunks/NcRelatedResourcesPanel-Q6jZk-Pm.mjs.map +1 -0
  420. package/dist/chunks/{NcRelatedResourcesPanel-jHQ2bRko.cjs → NcRelatedResourcesPanel-bfv-6W_Z.cjs} +50 -41
  421. package/dist/chunks/NcRelatedResourcesPanel-bfv-6W_Z.cjs.map +1 -0
  422. package/dist/chunks/{NcRichContenteditable-iQhj1-AH.mjs → NcRichContenteditable-8_poOeSx.mjs} +54 -31
  423. package/dist/chunks/{NcRichContenteditable-BILbjzSU.cjs.map → NcRichContenteditable-8_poOeSx.mjs.map} +1 -1
  424. package/dist/chunks/{NcRichContenteditable-BILbjzSU.cjs → NcRichContenteditable-CtLNSs0S.cjs} +54 -31
  425. package/dist/chunks/{NcRichContenteditable-iQhj1-AH.mjs.map → NcRichContenteditable-CtLNSs0S.cjs.map} +1 -1
  426. package/dist/chunks/{NcRichText-DYcfsH5s.cjs → NcRichText-CEsiozf5.cjs} +112 -121
  427. package/dist/chunks/NcRichText-CEsiozf5.cjs.map +1 -0
  428. package/dist/chunks/{NcRichText-B7M7rNqC.mjs → NcRichText-Dnx5x9WS.mjs} +114 -121
  429. package/dist/chunks/NcRichText-Dnx5x9WS.mjs.map +1 -0
  430. package/dist/chunks/{NcSelect-PvjbF3jF.mjs → NcSelect-TjZw7TJ_.mjs} +41 -24
  431. package/dist/chunks/{NcSelect-PvjbF3jF.mjs.map → NcSelect-TjZw7TJ_.mjs.map} +1 -1
  432. package/dist/chunks/{NcSelect-s3_u0qvy.cjs → NcSelect-bo6wla87.cjs} +41 -24
  433. package/dist/chunks/{NcSelect-s3_u0qvy.cjs.map → NcSelect-bo6wla87.cjs.map} +1 -1
  434. package/dist/chunks/{NcSelectTags-DYUCDZ_e.mjs → NcSelectTags-CytnLDOw.mjs} +52 -31
  435. package/dist/chunks/NcSelectTags-CytnLDOw.mjs.map +1 -0
  436. package/dist/chunks/{NcSelectTags-e4Gjcx_7.cjs → NcSelectTags-D2OSaAfO.cjs} +52 -31
  437. package/dist/chunks/NcSelectTags-D2OSaAfO.cjs.map +1 -0
  438. package/dist/chunks/{NcSelectUsers-CMF_h9c0.mjs → NcSelectUsers-Bm0877Tm.mjs} +7 -6
  439. package/dist/chunks/{NcSelectUsers-CMF_h9c0.mjs.map → NcSelectUsers-Bm0877Tm.mjs.map} +1 -1
  440. package/dist/chunks/{NcSelectUsers-Bmwhu14K.cjs → NcSelectUsers-wcRyExkC.cjs} +7 -6
  441. package/dist/chunks/{NcSelectUsers-Bmwhu14K.cjs.map → NcSelectUsers-wcRyExkC.cjs.map} +1 -1
  442. package/dist/chunks/{NcSettingsInputText-BQVh24zT.mjs → NcSettingsInputText-DPAtsY2T.mjs} +3 -3
  443. package/dist/chunks/{NcSettingsInputText-BQVh24zT.mjs.map → NcSettingsInputText-DPAtsY2T.mjs.map} +1 -1
  444. package/dist/chunks/{NcSettingsInputText-DWihH7ke.cjs → NcSettingsInputText-DaFMiOS6.cjs} +3 -3
  445. package/dist/chunks/{NcSettingsInputText-DWihH7ke.cjs.map → NcSettingsInputText-DaFMiOS6.cjs.map} +1 -1
  446. package/dist/chunks/{NcSettingsSection-evNvfEg2.mjs → NcSettingsSection-CX5q924g.mjs} +4 -3
  447. package/dist/chunks/{NcSettingsSection-evNvfEg2.mjs.map → NcSettingsSection-CX5q924g.mjs.map} +1 -1
  448. package/dist/chunks/{NcSettingsSection-Dgc7SEuu.cjs → NcSettingsSection-r4NOxKIz.cjs} +4 -3
  449. package/dist/chunks/{NcSettingsSection-Dgc7SEuu.cjs.map → NcSettingsSection-r4NOxKIz.cjs.map} +1 -1
  450. package/dist/chunks/{NcSettingsSelectGroup-C-YAk1f8.mjs → NcSettingsSelectGroup-CR4XLrgs.mjs} +25 -9
  451. package/dist/chunks/{NcSettingsSelectGroup-C-YAk1f8.mjs.map → NcSettingsSelectGroup-CR4XLrgs.mjs.map} +1 -1
  452. package/dist/chunks/{NcSettingsSelectGroup-X1pBwmAZ.cjs → NcSettingsSelectGroup-DYYAPkgp.cjs} +25 -9
  453. package/dist/chunks/{NcSettingsSelectGroup-X1pBwmAZ.cjs.map → NcSettingsSelectGroup-DYYAPkgp.cjs.map} +1 -1
  454. package/dist/chunks/{NcTextArea-DHmD6-6s.mjs → NcTextArea-If_ygOSv.mjs} +5 -5
  455. package/dist/chunks/{NcTextArea-DHmD6-6s.mjs.map → NcTextArea-If_ygOSv.mjs.map} +1 -1
  456. package/dist/chunks/{NcTextArea-DkVtHTpD.cjs → NcTextArea-iDhGI-Ko.cjs} +5 -5
  457. package/dist/chunks/{NcTextArea-DkVtHTpD.cjs.map → NcTextArea-iDhGI-Ko.cjs.map} +1 -1
  458. package/dist/chunks/{NcTextField-D_IMz2MR.mjs → NcTextField-BE9R1pLt.mjs} +31 -17
  459. package/dist/chunks/{NcTextField-D_IMz2MR.mjs.map → NcTextField-BE9R1pLt.mjs.map} +1 -1
  460. package/dist/chunks/{NcTextField-Cp3tulze.cjs → NcTextField-OPiMgNR7.cjs} +31 -17
  461. package/dist/chunks/{NcTextField-Cp3tulze.cjs.map → NcTextField-OPiMgNR7.cjs.map} +1 -1
  462. package/dist/chunks/{NcThemeProvider-BqGPTeWg.cjs → NcThemeProvider-DbNRSwkX.cjs} +2 -2
  463. package/dist/chunks/{NcThemeProvider-BqGPTeWg.cjs.map → NcThemeProvider-DbNRSwkX.cjs.map} +1 -1
  464. package/dist/chunks/{NcThemeProvider-25ResoIv.mjs → NcThemeProvider-E_S5rhIQ.mjs} +2 -2
  465. package/dist/chunks/{NcThemeProvider-25ResoIv.mjs.map → NcThemeProvider-E_S5rhIQ.mjs.map} +1 -1
  466. package/dist/chunks/{NcTimezonePicker-Cu1FrSIX.mjs → NcTimezonePicker-D4y736xC.mjs} +5 -5
  467. package/dist/chunks/{NcTimezonePicker-Cu1FrSIX.mjs.map → NcTimezonePicker-D4y736xC.mjs.map} +1 -1
  468. package/dist/chunks/{NcTimezonePicker-Co7jDP7N.cjs → NcTimezonePicker-DPpWz5fa.cjs} +5 -5
  469. package/dist/chunks/{NcTimezonePicker-Co7jDP7N.cjs.map → NcTimezonePicker-DPpWz5fa.cjs.map} +1 -1
  470. package/dist/chunks/{NcUserBubble-Be2B8iJY.mjs → NcUserBubble-8Mts76ii.mjs} +7 -6
  471. package/dist/chunks/{NcUserBubble-Be2B8iJY.mjs.map → NcUserBubble-8Mts76ii.mjs.map} +1 -1
  472. package/dist/chunks/{NcUserBubble-CdX6H9-M.cjs → NcUserBubble-Bb9WBP1S.cjs} +7 -6
  473. package/dist/chunks/{NcUserBubble-CdX6H9-M.cjs.map → NcUserBubble-Bb9WBP1S.cjs.map} +1 -1
  474. package/dist/chunks/{NcUserStatusIcon-C83nB_8T.mjs → NcUserStatusIcon-BWxo_etm.mjs} +11 -8
  475. package/dist/chunks/{NcUserStatusIcon-C83nB_8T.mjs.map → NcUserStatusIcon-BWxo_etm.mjs.map} +1 -1
  476. package/dist/chunks/{NcUserStatusIcon-DhZabBIY.cjs → NcUserStatusIcon-DV2H-KfR.cjs} +11 -8
  477. package/dist/chunks/{NcUserStatusIcon-DhZabBIY.cjs.map → NcUserStatusIcon-DV2H-KfR.cjs.map} +1 -1
  478. package/dist/chunks/{ScopeComponent-9wtS_FpN.cjs → ScopeComponent-CDX-s-IV.cjs} +2 -2
  479. package/dist/chunks/{ScopeComponent-9wtS_FpN.cjs.map → ScopeComponent-CDX-s-IV.cjs.map} +1 -1
  480. package/dist/chunks/{ScopeComponent-305QOaqN.mjs → ScopeComponent-DsONbC6w.mjs} +2 -2
  481. package/dist/chunks/{ScopeComponent-305QOaqN.mjs.map → ScopeComponent-DsONbC6w.mjs.map} +1 -1
  482. package/dist/chunks/{_l10n-DM-VRK9x.cjs → _l10n-9b4TMo5Q.cjs} +2 -6
  483. package/dist/chunks/{_l10n-DM-VRK9x.cjs.map → _l10n-9b4TMo5Q.cjs.map} +1 -1
  484. package/dist/chunks/{_l10n-BEfeU7gr.mjs → _l10n-DSLCwJSN.mjs} +41 -45
  485. package/dist/chunks/_l10n-DSLCwJSN.mjs.map +1 -0
  486. package/dist/chunks/{actionText-D2-z0ud3.cjs → actionText-D_3-6fCH.cjs} +2 -2
  487. package/dist/chunks/{actionText-D2-z0ud3.cjs.map → actionText-D_3-6fCH.cjs.map} +1 -1
  488. package/dist/chunks/{actionText-BMig9Egt.mjs → actionText-ZM1k96ts.mjs} +2 -2
  489. package/dist/chunks/{actionText-BMig9Egt.mjs.map → actionText-ZM1k96ts.mjs.map} +1 -1
  490. package/dist/chunks/{GenColors-DIH749TS.mjs → colors-BMiIMYXK.mjs} +42 -48
  491. package/dist/chunks/colors-BMiIMYXK.mjs.map +1 -0
  492. package/dist/chunks/{GenColors-BVouTbTJ.cjs → colors-DcbJ13is.cjs} +41 -47
  493. package/dist/chunks/colors-DcbJ13is.cjs.map +1 -0
  494. package/dist/chunks/createElementId-5skgwxOP.mjs +9 -0
  495. package/dist/chunks/{createElementId-DhjFt1I9.mjs.map → createElementId-5skgwxOP.mjs.map} +1 -1
  496. package/dist/chunks/createElementId-DaJhnLzq.cjs +8 -0
  497. package/dist/chunks/{createElementId-lalylSCf.cjs.map → createElementId-DaJhnLzq.cjs.map} +1 -1
  498. package/dist/chunks/{customPickerElements-DLFtgReB.mjs → customPickerElements-BPROmh4T.mjs} +43 -21
  499. package/dist/chunks/{customPickerElements-DLFtgReB.mjs.map → customPickerElements-BPROmh4T.mjs.map} +1 -1
  500. package/dist/chunks/{customPickerElements-GyIIOHiQ.cjs → customPickerElements-DBEOrbce.cjs} +43 -21
  501. package/dist/chunks/{customPickerElements-GyIIOHiQ.cjs.map → customPickerElements-DBEOrbce.cjs.map} +1 -1
  502. package/dist/chunks/{emoji-VgSjNTd5.cjs → emoji-BCCCB3t3.cjs} +4 -3
  503. package/dist/chunks/{emoji-VgSjNTd5.cjs.map → emoji-BCCCB3t3.cjs.map} +1 -1
  504. package/dist/chunks/{emoji-BY_D0V5K.mjs → emoji-V6ytyzoR.mjs} +4 -3
  505. package/dist/chunks/{emoji-BY_D0V5K.mjs.map → emoji-V6ytyzoR.mjs.map} +1 -1
  506. package/dist/chunks/{focusTrap-HJQ4pqHV.mjs → focusTrap-BibOtksr.mjs} +3 -2
  507. package/dist/chunks/{focusTrap-DUTqW_IG.cjs.map → focusTrap-BibOtksr.mjs.map} +1 -1
  508. package/dist/chunks/{focusTrap-DUTqW_IG.cjs → focusTrap-DhhUL4JZ.cjs} +3 -2
  509. package/dist/chunks/{focusTrap-HJQ4pqHV.mjs.map → focusTrap-DhhUL4JZ.cjs.map} +1 -1
  510. package/dist/chunks/getAvatarUrl-C8Q41hfR.mjs +16 -0
  511. package/dist/chunks/{getAvatarUrl-IhLacDEr.mjs.map → getAvatarUrl-C8Q41hfR.mjs.map} +1 -1
  512. package/dist/chunks/getAvatarUrl-DwWyuiUZ.cjs +15 -0
  513. package/dist/chunks/{getAvatarUrl-Du9Y3cPO.cjs.map → getAvatarUrl-DwWyuiUZ.cjs.map} +1 -1
  514. package/dist/chunks/{index-TmAR7I2T.mjs → index-BsEMR4S4.mjs} +9 -9
  515. package/dist/chunks/{index-TmAR7I2T.mjs.map → index-BsEMR4S4.mjs.map} +1 -1
  516. package/dist/chunks/{index-Dr9k4hIP.cjs → index-CmwBGDjr.cjs} +22 -4
  517. package/dist/chunks/{index-CxTT94_h.mjs.map → index-CmwBGDjr.cjs.map} +1 -1
  518. package/dist/chunks/{index-CgkN1xho.cjs → index-D_jGr37E.cjs} +9 -9
  519. package/dist/chunks/{index-CgkN1xho.cjs.map → index-D_jGr37E.cjs.map} +1 -1
  520. package/dist/chunks/{index-CxTT94_h.mjs → index-JArK0Dbx.mjs} +22 -4
  521. package/dist/chunks/{index-Dr9k4hIP.cjs.map → index-JArK0Dbx.mjs.map} +1 -1
  522. package/dist/chunks/legacy-DUgfmdiS.cjs +6 -0
  523. package/dist/chunks/{legacy-MK4GvP26.mjs.map → legacy-DUgfmdiS.cjs.map} +1 -1
  524. package/dist/chunks/legacy-NU_qxPFK.mjs +7 -0
  525. package/dist/chunks/{legacy-KBXhWdRy.cjs.map → legacy-NU_qxPFK.mjs.map} +1 -1
  526. package/dist/chunks/{mdi-DXu6GWVJ.mjs → mdi-CKSXwCsV.mjs} +8 -6
  527. package/dist/chunks/{mdi-DXu6GWVJ.mjs.map → mdi-CKSXwCsV.mjs.map} +1 -1
  528. package/dist/chunks/{mdi-BBwE-MZC.cjs → mdi-Nhb6SBw8.cjs} +3 -1
  529. package/dist/chunks/{mdi-BBwE-MZC.cjs.map → mdi-Nhb6SBw8.cjs.map} +1 -1
  530. package/dist/chunks/{referencePickerModal-BcAnnsxZ.cjs → referencePickerModal-CusxgEsK.cjs} +66 -35
  531. package/dist/chunks/referencePickerModal-CusxgEsK.cjs.map +1 -0
  532. package/dist/chunks/{referencePickerModal-CN4C9eDc.mjs → referencePickerModal-DpJUQ5fq.mjs} +66 -35
  533. package/dist/chunks/referencePickerModal-DpJUQ5fq.mjs.map +1 -0
  534. package/dist/chunks/useAppSettingsDialog-CPqmms-u.cjs +9 -0
  535. package/dist/chunks/useAppSettingsDialog-CPqmms-u.cjs.map +1 -0
  536. package/dist/chunks/useAppSettingsDialog-Dn48dw1k.mjs +10 -0
  537. package/dist/chunks/useAppSettingsDialog-Dn48dw1k.mjs.map +1 -0
  538. package/dist/chunks/{useModelMigration-EhAWvqDD.mjs → useModelMigration-DBUi8saj.mjs} +2 -2
  539. package/dist/chunks/useModelMigration-DBUi8saj.mjs.map +1 -0
  540. package/dist/chunks/{useModelMigration-D5zhrNXr.cjs → useModelMigration-HPf30klj.cjs} +2 -2
  541. package/dist/chunks/useModelMigration-HPf30klj.cjs.map +1 -0
  542. package/dist/chunks/{useTrapStackControl-BnLfCgGU.mjs → useTrapStackControl-2gEo3rvr.mjs} +2 -2
  543. package/dist/chunks/{useTrapStackControl-BnLfCgGU.mjs.map → useTrapStackControl-2gEo3rvr.mjs.map} +1 -1
  544. package/dist/chunks/{useTrapStackControl-XYABY64G.cjs → useTrapStackControl-dthvITlQ.cjs} +2 -2
  545. package/dist/chunks/{useTrapStackControl-XYABY64G.cjs.map → useTrapStackControl-dthvITlQ.cjs.map} +1 -1
  546. package/dist/components/NcAppSettingsDialog/index.d.ts +5 -0
  547. package/dist/components/NcAppSettingsDialog/useAppSettingsDialog.d.ts +24 -0
  548. package/dist/components/NcColorPicker/index.d.ts +5 -0
  549. package/dist/composables/index.d.ts +9 -0
  550. package/dist/composables/useHotKey/index.d.ts +4 -2
  551. package/dist/composables/useIsMobile/index.d.ts +23 -0
  552. package/dist/composables/useModelMigration.d.ts +1 -1
  553. package/dist/index.cjs +67 -67
  554. package/dist/index.mjs +67 -67
  555. package/dist/utils/colors.d.ts +36 -0
  556. package/package.json +10 -10
  557. package/dist/chunks/GenColors-BVouTbTJ.cjs.map +0 -1
  558. package/dist/chunks/GenColors-DIH749TS.mjs.map +0 -1
  559. package/dist/chunks/NcAppContent-C9NGJE6n.mjs.map +0 -1
  560. package/dist/chunks/NcAppContent-Djy38ou2.cjs.map +0 -1
  561. package/dist/chunks/NcAppSettingsDialog-DVFw09eD.mjs +0 -223
  562. package/dist/chunks/NcAppSettingsDialog-DVFw09eD.mjs.map +0 -1
  563. package/dist/chunks/NcAppSettingsDialog-DalEoC9H.cjs +0 -225
  564. package/dist/chunks/NcAppSettingsDialog-DalEoC9H.cjs.map +0 -1
  565. package/dist/chunks/NcAvatar-CuYtFEdJ.mjs.map +0 -1
  566. package/dist/chunks/NcAvatar-bd-5zXWN.cjs.map +0 -1
  567. package/dist/chunks/NcColorPicker-Cae6XNoK.mjs +0 -255
  568. package/dist/chunks/NcColorPicker-Cae6XNoK.mjs.map +0 -1
  569. package/dist/chunks/NcColorPicker-D-E2dT4Q.cjs +0 -254
  570. package/dist/chunks/NcColorPicker-D-E2dT4Q.cjs.map +0 -1
  571. package/dist/chunks/NcEmojiPicker-B2SLfIBu.mjs.map +0 -1
  572. package/dist/chunks/NcEmojiPicker-q_n1Rd8U.cjs.map +0 -1
  573. package/dist/chunks/NcRelatedResourcesPanel-jHQ2bRko.cjs.map +0 -1
  574. package/dist/chunks/NcRelatedResourcesPanel-jvOEQWWO.mjs.map +0 -1
  575. package/dist/chunks/NcRichText-B7M7rNqC.mjs.map +0 -1
  576. package/dist/chunks/NcRichText-DYcfsH5s.cjs.map +0 -1
  577. package/dist/chunks/NcSelectTags-DYUCDZ_e.mjs.map +0 -1
  578. package/dist/chunks/NcSelectTags-e4Gjcx_7.cjs.map +0 -1
  579. package/dist/chunks/_l10n-BEfeU7gr.mjs.map +0 -1
  580. package/dist/chunks/createElementId-DhjFt1I9.mjs +0 -8
  581. package/dist/chunks/createElementId-lalylSCf.cjs +0 -7
  582. package/dist/chunks/getAvatarUrl-Du9Y3cPO.cjs +0 -14
  583. package/dist/chunks/getAvatarUrl-IhLacDEr.mjs +0 -15
  584. package/dist/chunks/legacy-KBXhWdRy.cjs +0 -5
  585. package/dist/chunks/legacy-MK4GvP26.mjs +0 -6
  586. package/dist/chunks/referencePickerModal-BcAnnsxZ.cjs.map +0 -1
  587. package/dist/chunks/referencePickerModal-CN4C9eDc.mjs.map +0 -1
  588. package/dist/chunks/useModelMigration-D5zhrNXr.cjs.map +0 -1
  589. package/dist/chunks/useModelMigration-EhAWvqDD.mjs.map +0 -1
@@ -1,14 +1,14 @@
1
- import '../assets/NcCollectionList-DInDhsAS.css';
1
+ import '../assets/NcCollectionList-hRgvNUMR.css';
2
2
  import debounce from "debounce";
3
3
  import { ref, set } from "vue";
4
- import { r as register, L as t27, a as t, M as t6 } from "./_l10n-BEfeU7gr.mjs";
5
- import { N as NcActionButton } from "./NcActionButton-CVW8aRkE.mjs";
6
- import { N as NcActions } from "./NcActions-C832pWHO.mjs";
7
- import { N as NcAvatar } from "./NcAvatar-CuYtFEdJ.mjs";
4
+ import { r as register, J as t27, a as t, K as t6 } from "./_l10n-DSLCwJSN.mjs";
5
+ import { N as NcActionButton } from "./NcActionButton-CZsSFAT4.mjs";
6
+ import { N as NcActions } from "./NcActions-A918mfXE.mjs";
7
+ import { N as NcAvatar } from "./NcAvatar-Cupl4prm.mjs";
8
8
  import { g as getRoute } from "./autolink-D2pIbi92.mjs";
9
9
  import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
10
10
  import { l as logger } from "./logger-D3RVzcfQ.mjs";
11
- import { N as NcSelect } from "./NcSelect-PvjbF3jF.mjs";
11
+ import { N as NcSelect } from "./NcSelect-TjZw7TJ_.mjs";
12
12
  import axios from "@nextcloud/axios";
13
13
  import { generateOcsUrl } from "@nextcloud/router";
14
14
  register(t27);
@@ -50,7 +50,8 @@ const _sfc_main$1 = {
50
50
  return (resource) => "resource-type-" + resource.type;
51
51
  },
52
52
  resources() {
53
- return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];
53
+ var _a, _b;
54
+ return (_b = (_a = this.collection.resources) == null ? void 0 : _a.filter((resource) => !Array.isArray(resource))) != null ? _b : [];
54
55
  },
55
56
  getComponent() {
56
57
  return (resource) => {
@@ -265,8 +266,8 @@ const _sfc_main = {
265
266
  loading(true);
266
267
  searchService(query).then((collections) => {
267
268
  searchCollections.value = collections;
268
- }).catch((e) => {
269
- logger.error("Failed to search for collections", e);
269
+ }).catch((error) => {
270
+ logger.error("Failed to search for collections", { error });
270
271
  }).finally(() => {
271
272
  loading(false);
272
273
  });
@@ -358,8 +359,8 @@ const _sfc_main = {
358
359
  }).catch((e) => {
359
360
  this.setError(t("Failed to create a project"), e);
360
361
  });
361
- }).catch((e) => {
362
- logger.error("No resource selected", e);
362
+ }).catch((error) => {
363
+ logger.error("No resource selected", { error });
363
364
  });
364
365
  }
365
366
  if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {
@@ -378,15 +379,15 @@ const _sfc_main = {
378
379
  this.$refs.select.$el.focus();
379
380
  },
380
381
  setError(error, e) {
381
- logger.error(error, e);
382
+ logger.error(error, { error: e });
382
383
  this.error = error;
383
384
  setTimeout(() => {
384
385
  this.error = null;
385
386
  }, 5e3);
386
387
  },
387
388
  renameCollectionFromItem({ collectionId, name }) {
388
- this.renameCollection({ collectionId, name }).catch((e) => {
389
- logger.error(t("Failed to rename the project"), e);
389
+ this.renameCollection({ collectionId, name }).catch((error) => {
390
+ logger.error(t("Failed to rename the project"), { error });
390
391
  this.collectionsError[collectionId] = t("Failed to rename the project");
391
392
  setTimeout(() => {
392
393
  this.collectionsError[collectionId] = null;
@@ -421,10 +422,10 @@ var __component__ = /* @__PURE__ */ normalizeComponent(
421
422
  _sfc_staticRenderFns,
422
423
  false,
423
424
  null,
424
- "9d1654c2"
425
+ "73e5825c"
425
426
  );
426
427
  const NcCollectionList = __component__.exports;
427
428
  export {
428
429
  NcCollectionList as N
429
430
  };
430
- //# sourceMappingURL=NcCollectionList-5_ghrfiE.mjs.map
431
+ //# sourceMappingURL=NcCollectionList-w-7M5HGN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcCollectionList-5_ghrfiE.mjs","sources":["../../src/components/NcCollectionList/NcCollectionListItem.vue","../../src/components/NcCollectionList/service.ts","../../src/components/NcCollectionList/useCollections.js","../../src/components/NcCollectionList/NcCollectionList.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li class=\"collection-list-item\">\n\t\t<NcAvatar :display-name=\"collection.name\" allow-placeholder class=\"collection-avatar\" />\n\t\t<span\n\t\t\tv-if=\"newName === null\"\n\t\t\tclass=\"collection-item-name\"\n\t\t\ttitle=\"\"\n\t\t\t@click=\"showDetails\">{{ collection.name }}</span>\n\t\t<form v-else :class=\"{ 'should-shake': error }\" @submit.prevent=\"renameCollection\">\n\t\t\t<input\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocapitalize=\"off\">\n\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t</form>\n\t\t<div v-if=\"!detailsOpen && newName === null\" class=\"linked-icons\">\n\t\t\t<component\n\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\tv-for=\"resource in resources.slice(0, 2)\"\n\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t:title=\"resource.name\"\n\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t:href=\"getComponent(resource).href\"\n\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t</component>\n\t\t</div>\n\n\t\t<span v-if=\"newName === null\" class=\"sharingOptionsGroup\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-info\"\n\t\t\t\t\t@click.prevent=\"toggleDetails\">\n\t\t\t\t\t{{ detailsOpen ? t('Hide details') : t('Show details') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.prevent=\"openRename\">\n\t\t\t\t\t{{ t('Rename project') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</span>\n\n\t\t<transition name=\"fade\">\n\t\t\t<div v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t</transition>\n\t\t<transition name=\"fade\">\n\t\t\t<ul v-if=\"detailsOpen\" class=\"resource-list-details\">\n\t\t\t\t<li\n\t\t\t\t\tv-for=\"resource in resources\"\n\t\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t\t<component\n\t\t\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t\t\t:href=\"getComponent(resource).href\">\n\t\t\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t\t\t\t<span class=\"resource-name\">{{ resource.name || '' }}</span>\n\t\t\t\t\t</component>\n\t\t\t\t\t<span class=\"icon-close\" @click=\"removeResource(collection, resource)\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</transition>\n\t</li>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcActionButton from '../NcActionButton/index.js'\nimport NcActions from '../NcActions/index.js'\nimport NcAvatar from '../NcAvatar/index.js'\nimport { getRoute } from '../NcRichText/autolink.js'\n\nexport default {\n\tname: 'NcCollectionListItem',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The collection\n\t\t */\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Current error if any\n\t\t */\n\t\terror: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\temits: ['remove-resource', 'rename-collection'],\n\n\tdata() {\n\t\treturn {\n\t\t\tdetailsOpen: false,\n\t\t\tnewName: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgetIcon() {\n\t\t\treturn (resource) => [resource.iconClass]\n\t\t},\n\n\t\ttypeClass() {\n\t\t\treturn (resource) => 'resource-type-' + resource.type\n\t\t},\n\n\t\tresources() {\n\t\t\t// invalid resources come from server as empty array ([]) and not an object\n\t\t\treturn this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? []\n\t\t},\n\n\t\tgetComponent() {\n\t\t\treturn (resource) => {\n\t\t\t\tconst route = getRoute(this.$router, resource.link)\n\n\t\t\t\treturn route\n\t\t\t\t\t? { component: 'router-link', to: route, href: undefined }\n\t\t\t\t\t: { component: 'a', to: undefined, href: resource.link }\n\t\t\t}\n\t\t},\n\n\t\ticonUrl() {\n\t\t\treturn (resource) => {\n\t\t\t\tif (resource.mimetype) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl(resource.mimetype)\n\t\t\t\t}\n\t\t\t\tif (resource.iconUrl) {\n\t\t\t\t\treturn resource.iconUrl\n\t\t\t\t}\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\ttoggleDetails() {\n\t\t\tthis.detailsOpen = !this.detailsOpen\n\t\t},\n\n\t\tshowDetails() {\n\t\t\tthis.detailsOpen = true\n\t\t},\n\n\t\tremoveResource(collection, resource) {\n\t\t\tthis.$emit('remove-resource', {\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tresourceType: resource.type,\n\t\t\t\tresourceId: resource.id,\n\t\t\t})\n\t\t},\n\n\t\topenRename() {\n\t\t\tthis.newName = this.collection.name\n\t\t},\n\n\t\trenameCollection() {\n\t\t\tif (this.newName) {\n\t\t\t\tthis.$emit('rename-collection', {\n\t\t\t\t\tcollectionId: this.collection.id,\n\t\t\t\t\tname: this.newName,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.newName = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s ease;\n}\n\n.fade-enter, .fade-leave-to\n\t/* .fade-leave-active below version 2.1.8 */\n{\n\topacity: 0;\n}\n\n.linked-icons {\n\tdisplay: flex;\n\n\timg {\n\t\tpadding: 12px;\n\t\theight: 44px;\n\t\tdisplay: block;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\topacity: 0.7;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.popovermenu {\n\tdisplay: none;\n\n\t&.open {\n\t\tdisplay: block;\n\t}\n}\n\nli.collection-list-item {\n\tflex-wrap: wrap;\n\theight: auto;\n\tcursor: pointer;\n\tmargin-bottom: 0 !important;\n\n\t.collection-avatar {\n\t\tmargin-top: 0;\n\t}\n\n\tform, .collection-item-name {\n\t\tflex-basis: 10%;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t}\n\n\t.collection-item-name {\n\t\tpadding: 12px 9px;\n\t}\n\n\tinput {\n\t\tmargin-top: 4px;\n\t\tborder-color: var(--color-border-maxcontrast);\n\n\t\t&[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t.error {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.resource-list-details {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\n\t\tli {\n\t\t\tdisplay: flex;\n\t\t\tmargin-left: 44px;\n\t\t\tborder-radius: 3px;\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t}\n\n\t\t\ta {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding: 3px;\n\t\t\t\tmax-width: calc(100% - 30px);\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: top;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\tspan.resource-name {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\t\t\tvertical-align: top;\n\t\t\twhite-space: nowrap;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t}\n\n\t\t.icon-close {\n\t\t\topacity: .7;\n\n\t\t\t&:hover, &:focus {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.should-shake {\n\tanimation: shake 0.6s 1 linear;\n}\n\n@keyframes shake {\n\t0% {\n\t\ttransform: translate(15px);\n\t}\n\t20% {\n\t\ttransform: translate(-15px);\n\t}\n\t40% {\n\t\ttransform: translate(7px);\n\t}\n\t60% {\n\t\ttransform: translate(-7px);\n\t}\n\t80% {\n\t\ttransform: translate(3px);\n\t}\n\t100% {\n\t\ttransform: translate(0px);\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { type AxiosResponse } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Extracts the OCS data from a response\n *\n * @param response OCS response\n */\nfunction extractOcsData(response: AxiosResponse<OCSResponse>) {\n\treturn response.data.ocs.data\n}\n\n/**\n * Lists all collections\n *\n * @param collectionId Collection ID\n */\nexport function listCollectionService(collectionId: number) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId })).then(extractOcsData)\n}\n\n/**\n * Renames a collection\n *\n * @param collectionId Collection ID\n * @param collectionName New collection name\n */\nexport function renameCollectionService(collectionId: number, collectionName: string) {\n\treturn axios.put(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { collectionName }).then(extractOcsData)\n}\n\n/**\n * Lists all collections for a resource\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function getCollectionsByResourceService(resourceType: string, resourceId: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId })).then(extractOcsData)\n}\n\n/**\n * Creates a collection\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n * @param name Collection name\n */\nexport function createCollectionService(resourceType: string, resourceId: string, name: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId }), { name }).then(extractOcsData)\n}\n\n/**\n * Adds a resource to a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function addResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { resourceType, resourceId }).then(extractOcsData)\n}\n\n/**\n * Removes a resource from a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function removeResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.delete(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData)\n}\n\n/**\n * Searches for collections\n *\n * @param query Search query\n */\nexport function searchService(query: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/search/{query}', { query })).then(extractOcsData)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ref, set } from 'vue'\nimport {\n\taddResourceService,\n\tcreateCollectionService,\n\tgetCollectionsByResourceService,\n\tremoveResourceService,\n\trenameCollectionService,\n} from './service.ts'\n\n/**\n * Use collections composable\n */\nexport function useCollections() {\n\t// State\n\tconst storedCollections = ref([])\n\n\t// Mutations\n\tconst addCollections = (collections) => {\n\t\tset(storedCollections, 'value', collections)\n\t}\n\n\tconst addCollection = (collection) => {\n\t\tset(storedCollections, 'value', [...storedCollections.value, collection])\n\t}\n\n\tconst removeCollection = (collectionId) => {\n\t\tset(storedCollections, 'value', storedCollections.value.filter((item) => item.id !== collectionId))\n\t}\n\n\tconst updateCollection = (collection) => {\n\t\tconst index = storedCollections.value.findIndex((item) => item.id === collection.id)\n\t\tif (index !== -1) {\n\t\t\tset(storedCollections.value, index, collection)\n\t\t} else {\n\t\t\taddCollection(collection)\n\t\t}\n\t}\n\n\t// Actions\n\tconst fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n\t\tconst collections = await getCollectionsByResourceService(resourceType, resourceId)\n\n\t\taddCollections(collections)\n\t}\n\n\tconst createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n\t\tconst collection = await createCollectionService(baseResourceType, baseResourceId, name)\n\n\t\taddCollection(collection)\n\t\tawait addResourceToCollection({\n\t\t\tcollectionId: collection.id,\n\t\t\tresourceType,\n\t\t\tresourceId,\n\t\t})\n\t}\n\n\tconst renameCollection = async ({ collectionId, name }) => {\n\t\tconst collection = await renameCollectionService(collectionId, name)\n\n\t\tupdateCollection(collection)\n\t}\n\n\t/**\n\t * @param {*} options - Options\n\t */\n\tasync function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n\t\tconst collection = await addResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await removeResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tif (collection.resources.length > 0) {\n\t\t\tupdateCollection(collection)\n\t\t} else {\n\t\t\tremoveCollection(collectionId)\n\t\t}\n\t}\n\n\treturn {\n\t\tstoredCollections,\n\t\tfetchCollectionsByResource,\n\t\tcreateCollection,\n\t\trenameCollection,\n\t\taddResourceToCollection,\n\t\tremoveResourceFromCollection,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nProvides a Vue standalone component for Nextcloud Projects feature introduced in Nextcloud 16. Replaces deprecated `nextcloud-vue-collections` library.\n\nProjects feature is deprecated since Nextcloud 25, and superseded by Related resources. See [NcRelatedResourcesPanel](#/Components/NcRelatedResourcesPanel) documentation for more information.\n\n### Usage\n\nTo enable feature in Nextcloud, run following command:\n```sh\nocc config:system:set --value true 'projects.enabled'\n```\n</docs>\n\n<template>\n\t<ul v-if=\"collections && type && id\" id=\"collection-list\" class=\"collection-list\">\n\t\t<li @click=\"showSelect\">\n\t\t\t<div class=\"avatar\">\n\t\t\t\t<span class=\"icon-projects\" />\n\t\t\t</div>\n\t\t\t<div id=\"collection-select-container\">\n\t\t\t\t<NcSelect\n\t\t\t\t\tref=\"select\"\n\t\t\t\t\tv-model=\"value\"\n\t\t\t\t\t:aria-label-combobox=\"t('Add to a project')\"\n\t\t\t\t\t:options=\"options\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t@close=\"isSelectOpen = false\"\n\t\t\t\t\t@open=\"isSelectOpen = true\"\n\t\t\t\t\t@option:selected=\"select\"\n\t\t\t\t\t@search=\"search\">\n\t\t\t\t\t<template #selected-option=\"option\">\n\t\t\t\t\t\t<span class=\"option__desc\">\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #option=\"option\">\n\t\t\t\t\t\t<span class=\"option__wrapper\">\n\t\t\t\t\t\t\t<span v-if=\"option.class\" :class=\"option.class\" class=\"avatar\" />\n\t\t\t\t\t\t\t<NcAvatar v-else-if=\"option.method !== 2\" allow-placeholder :display-name=\"option.title\" />\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<p class=\"hint\">\n\t\t\t\t\t\t{{ t('Connect items to a project to make them easier to find') }}\n\t\t\t\t\t</p>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t</li>\n\t\t<transition name=\"fade\">\n\t\t\t<li v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</li>\n\t\t</transition>\n\t\t<NcCollectionListItem\n\t\t\tv-for=\"collection in collections\"\n\t\t\t:key=\"collection.id\"\n\t\t\t:collection=\"collection\"\n\t\t\t:error=\"collectionsError[collection.id]\"\n\t\t\t@rename-collection=\"renameCollectionFromItem\"\n\t\t\t@remove-resource=\"removeResourceFromCollection\" />\n\t</ul>\n</template>\n\n<script>\nimport debounce from 'debounce'\nimport { ref } from 'vue'\nimport NcCollectionListItem from './NcCollectionListItem.vue'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport { searchService } from './service.ts'\nimport { useCollections } from './useCollections.js'\n\nconst METHOD_CREATE_COLLECTION = 0\nconst METHOD_ADD_TO_COLLECTION = 1\n\nexport default {\n\tname: 'NcCollectionList',\n\n\tcomponents: {\n\t\tNcCollectionListItem,\n\t\tNcAvatar,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Resource type identifier\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Unique id of the resource\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Name of the resource\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Whether the component is active (to start fetch resources)\n\t\t */\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t} = useCollections()\n\n\t\tconst searchCollections = ref([])\n\t\tconst search = debounce(function(query, loading) {\n\t\t\tif (query !== '') {\n\t\t\t\tloading(true)\n\t\t\t\tsearchService(query).then((collections) => {\n\t\t\t\t\tsearchCollections.value = collections\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tlogger.error('Failed to search for collections', e)\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tloading(false)\n\t\t\t\t})\n\t\t\t}\n\t\t}, 500)\n\n\t\treturn {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t\tsearchCollections,\n\t\t\tsearch,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectIsOpen: false,\n\t\t\tgeneratingCodes: false,\n\t\t\tcodes: undefined,\n\t\t\tvalue: null,\n\t\t\tmodel: {},\n\t\t\tcollectionsError: {},\n\t\t\terror: null,\n\t\t\tisSelectOpen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcollections() {\n\t\t\treturn this.storedCollections.filter((collection) => collection.resources\n\t\t\t\t.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type))\n\t\t},\n\n\t\tplaceholder() {\n\t\t\treturn this.isSelectOpen\n\t\t\t\t? t('Type to search for existing projects')\n\t\t\t\t: t('Add to a project')\n\t\t},\n\n\t\toptions() {\n\t\t\tconst options = []\n\t\t\twindow.OCP.Collaboration.getTypes().sort().forEach((type) => {\n\t\t\t\toptions.push({\n\t\t\t\t\tmethod: METHOD_CREATE_COLLECTION,\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: window.OCP.Collaboration.getLabel(type),\n\t\t\t\t\tclass: window.OCP.Collaboration.getIcon(type),\n\t\t\t\t\taction: () => window.OCP.Collaboration.trigger(type),\n\t\t\t\t})\n\t\t\t})\n\t\t\tfor (const index in this.searchCollections) {\n\t\t\t\tif (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tmethod: METHOD_ADD_TO_COLLECTION,\n\t\t\t\t\t\ttitle: this.searchCollections[index].name,\n\t\t\t\t\t\tcollectionId: this.searchCollections[index].id,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options\n\t\t},\n\n\t\tresourceIdentifier() {\n\t\t\treturn {\n\t\t\t\tresourceType: this.type,\n\t\t\t\tresourceId: this.id,\n\t\t\t\tisActive: this.isActive,\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tresourceIdentifier: {\n\t\t\tdeep: true,\n\t\t\timmediate: true,\n\t\t\thandler(resourceIdentifier) {\n\t\t\t\tif (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.fetchCollectionsByResource(resourceIdentifier)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tselect(selectedOption) {\n\t\t\tif (selectedOption.method === METHOD_CREATE_COLLECTION) {\n\t\t\t\tselectedOption.action().then((resourceId) => {\n\t\t\t\t\tthis.createCollection({\n\t\t\t\t\t\tbaseResourceType: this.type,\n\t\t\t\t\t\tbaseResourceId: this.id,\n\t\t\t\t\t\tresourceType: selectedOption.type,\n\t\t\t\t\t\tresourceId,\n\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\tthis.setError(t('Failed to create a project'), e)\n\t\t\t\t\t})\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tlogger.error('No resource selected', e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n\t\t\t\tthis.addResourceToCollection({\n\t\t\t\t\tcollectionId: selectedOption.collectionId, resourceType: this.type, resourceId: this.id,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.setError(t('Failed to add the item to the project'), e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.value = null\n\t\t},\n\n\t\tshowSelect() {\n\t\t\tthis.selectIsOpen = true\n\t\t\tthis.$refs.select.$el.focus()\n\t\t},\n\n\t\tsetError(error, e) {\n\t\t\tlogger.error(error, e)\n\t\t\tthis.error = error\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.error = null\n\t\t\t}, 5000)\n\t\t},\n\n\t\trenameCollectionFromItem({ collectionId, name }) {\n\t\t\tthis.renameCollection({ collectionId, name })\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlogger.error(t('Failed to rename the project'), e)\n\t\t\t\t\tthis.collectionsError[collectionId] = t('Failed to rename the project')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.collectionsError[collectionId] = null\n\t\t\t\t\t}, 5000)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.collection-list * {\n\tbox-sizing: border-box;\n}\n\n.collection-list > li {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\n\t& > .avatar {\n\t\tmargin-top: 0;\n\t}\n}\n\n#collection-select-container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.v-select {\n\t// NcAvatar in the dropdown\n\tspan.avatar {\n\t\tdisplay: block;\n\t\tpadding: 16px;\n\t\topacity: .7;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\np.hint {\n\tz-index: 1;\n\t// fix alignment\n\tmargin-top: -16px;\n\tpadding: 8px 8px;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: normal;\n}\n\ndiv.avatar {\n\twidth: 32px;\n\theight: 32px;\n\tmargin: 0;\n\tpadding: 8px;\n\tbackground-color: var(--color-background-dark);\n\tmargin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects {\n\tdisplay: block;\n\tpadding: 8px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.option__wrapper {\n\tdisplay: flex;\n\n\t.avatar {\n\t\tdisplay: block;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-background-darker) !important;\n\t}\n\n\t.option__title {\n\t\tpadding: 4px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n\n</style>\n"],"names":["_sfc_main"],"mappings":"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"}
1
+ {"version":3,"file":"NcCollectionList-w-7M5HGN.mjs","sources":["../../src/components/NcCollectionList/NcCollectionListItem.vue","../../src/components/NcCollectionList/service.ts","../../src/components/NcCollectionList/useCollections.js","../../src/components/NcCollectionList/NcCollectionList.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li class=\"collection-list-item\">\n\t\t<NcAvatar :display-name=\"collection.name\" allow-placeholder class=\"collection-avatar\" />\n\t\t<span\n\t\t\tv-if=\"newName === null\"\n\t\t\tclass=\"collection-item-name\"\n\t\t\ttitle=\"\"\n\t\t\t@click=\"showDetails\">{{ collection.name }}</span>\n\t\t<form v-else :class=\"{ 'should-shake': error }\" @submit.prevent=\"renameCollection\">\n\t\t\t<input\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocapitalize=\"off\">\n\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t</form>\n\t\t<div v-if=\"!detailsOpen && newName === null\" class=\"linked-icons\">\n\t\t\t<component\n\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\tv-for=\"resource in resources.slice(0, 2)\"\n\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t:title=\"resource.name\"\n\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t:href=\"getComponent(resource).href\"\n\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t</component>\n\t\t</div>\n\n\t\t<span v-if=\"newName === null\" class=\"sharingOptionsGroup\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-info\"\n\t\t\t\t\t@click.prevent=\"toggleDetails\">\n\t\t\t\t\t{{ detailsOpen ? t('Hide details') : t('Show details') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.prevent=\"openRename\">\n\t\t\t\t\t{{ t('Rename project') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</span>\n\n\t\t<transition name=\"fade\">\n\t\t\t<div v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t</transition>\n\t\t<transition name=\"fade\">\n\t\t\t<ul v-if=\"detailsOpen\" class=\"resource-list-details\">\n\t\t\t\t<li\n\t\t\t\t\tv-for=\"resource in resources\"\n\t\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t\t<component\n\t\t\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t\t\t:href=\"getComponent(resource).href\">\n\t\t\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t\t\t\t<span class=\"resource-name\">{{ resource.name || '' }}</span>\n\t\t\t\t\t</component>\n\t\t\t\t\t<span class=\"icon-close\" @click=\"removeResource(collection, resource)\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</transition>\n\t</li>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcActionButton from '../NcActionButton/index.js'\nimport NcActions from '../NcActions/index.js'\nimport NcAvatar from '../NcAvatar/index.js'\nimport { getRoute } from '../NcRichText/autolink.js'\n\nexport default {\n\tname: 'NcCollectionListItem',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The collection\n\t\t */\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Current error if any\n\t\t */\n\t\terror: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\temits: ['remove-resource', 'rename-collection'],\n\n\tdata() {\n\t\treturn {\n\t\t\tdetailsOpen: false,\n\t\t\tnewName: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgetIcon() {\n\t\t\treturn (resource) => [resource.iconClass]\n\t\t},\n\n\t\ttypeClass() {\n\t\t\treturn (resource) => 'resource-type-' + resource.type\n\t\t},\n\n\t\tresources() {\n\t\t\t// invalid resources come from server as empty array ([]) and not an object\n\t\t\treturn this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? []\n\t\t},\n\n\t\tgetComponent() {\n\t\t\treturn (resource) => {\n\t\t\t\tconst route = getRoute(this.$router, resource.link)\n\n\t\t\t\treturn route\n\t\t\t\t\t? { component: 'router-link', to: route, href: undefined }\n\t\t\t\t\t: { component: 'a', to: undefined, href: resource.link }\n\t\t\t}\n\t\t},\n\n\t\ticonUrl() {\n\t\t\treturn (resource) => {\n\t\t\t\tif (resource.mimetype) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl(resource.mimetype)\n\t\t\t\t}\n\t\t\t\tif (resource.iconUrl) {\n\t\t\t\t\treturn resource.iconUrl\n\t\t\t\t}\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\ttoggleDetails() {\n\t\t\tthis.detailsOpen = !this.detailsOpen\n\t\t},\n\n\t\tshowDetails() {\n\t\t\tthis.detailsOpen = true\n\t\t},\n\n\t\tremoveResource(collection, resource) {\n\t\t\tthis.$emit('remove-resource', {\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tresourceType: resource.type,\n\t\t\t\tresourceId: resource.id,\n\t\t\t})\n\t\t},\n\n\t\topenRename() {\n\t\t\tthis.newName = this.collection.name\n\t\t},\n\n\t\trenameCollection() {\n\t\t\tif (this.newName) {\n\t\t\t\tthis.$emit('rename-collection', {\n\t\t\t\t\tcollectionId: this.collection.id,\n\t\t\t\t\tname: this.newName,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.newName = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s ease;\n}\n\n.fade-enter, .fade-leave-to\n\t/* .fade-leave-active below version 2.1.8 */\n{\n\topacity: 0;\n}\n\n.linked-icons {\n\tdisplay: flex;\n\n\timg {\n\t\tpadding: 12px;\n\t\theight: 44px;\n\t\tdisplay: block;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\topacity: 0.7;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.popovermenu {\n\tdisplay: none;\n\n\t&.open {\n\t\tdisplay: block;\n\t}\n}\n\nli.collection-list-item {\n\tflex-wrap: wrap;\n\theight: auto;\n\tcursor: pointer;\n\tmargin-bottom: 0 !important;\n\n\t.collection-avatar {\n\t\tmargin-top: 0;\n\t}\n\n\tform, .collection-item-name {\n\t\tflex-basis: 10%;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t}\n\n\t.collection-item-name {\n\t\tpadding: 12px 9px;\n\t}\n\n\tinput {\n\t\tmargin-top: 4px;\n\t\tborder-color: var(--color-border-maxcontrast);\n\n\t\t&[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t.error {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.resource-list-details {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\n\t\tli {\n\t\t\tdisplay: flex;\n\t\t\tmargin-left: 44px;\n\t\t\tborder-radius: 3px;\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t}\n\n\t\t\ta {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding: 3px;\n\t\t\t\tmax-width: calc(100% - 30px);\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: top;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\tspan.resource-name {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\t\t\tvertical-align: top;\n\t\t\twhite-space: nowrap;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t}\n\n\t\t.icon-close {\n\t\t\topacity: .7;\n\n\t\t\t&:hover, &:focus {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.should-shake {\n\tanimation: shake 0.6s 1 linear;\n}\n\n@keyframes shake {\n\t0% {\n\t\ttransform: translate(15px);\n\t}\n\t20% {\n\t\ttransform: translate(-15px);\n\t}\n\t40% {\n\t\ttransform: translate(7px);\n\t}\n\t60% {\n\t\ttransform: translate(-7px);\n\t}\n\t80% {\n\t\ttransform: translate(3px);\n\t}\n\t100% {\n\t\ttransform: translate(0px);\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { type AxiosResponse } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Extracts the OCS data from a response\n *\n * @param response OCS response\n */\nfunction extractOcsData(response: AxiosResponse<OCSResponse>) {\n\treturn response.data.ocs.data\n}\n\n/**\n * Lists all collections\n *\n * @param collectionId Collection ID\n */\nexport function listCollectionService(collectionId: number) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId })).then(extractOcsData)\n}\n\n/**\n * Renames a collection\n *\n * @param collectionId Collection ID\n * @param collectionName New collection name\n */\nexport function renameCollectionService(collectionId: number, collectionName: string) {\n\treturn axios.put(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { collectionName }).then(extractOcsData)\n}\n\n/**\n * Lists all collections for a resource\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function getCollectionsByResourceService(resourceType: string, resourceId: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId })).then(extractOcsData)\n}\n\n/**\n * Creates a collection\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n * @param name Collection name\n */\nexport function createCollectionService(resourceType: string, resourceId: string, name: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId }), { name }).then(extractOcsData)\n}\n\n/**\n * Adds a resource to a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function addResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { resourceType, resourceId }).then(extractOcsData)\n}\n\n/**\n * Removes a resource from a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function removeResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.delete(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData)\n}\n\n/**\n * Searches for collections\n *\n * @param query Search query\n */\nexport function searchService(query: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/search/{query}', { query })).then(extractOcsData)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ref, set } from 'vue'\nimport {\n\taddResourceService,\n\tcreateCollectionService,\n\tgetCollectionsByResourceService,\n\tremoveResourceService,\n\trenameCollectionService,\n} from './service.ts'\n\n/**\n * Use collections composable\n */\nexport function useCollections() {\n\t// State\n\tconst storedCollections = ref([])\n\n\t// Mutations\n\tconst addCollections = (collections) => {\n\t\tset(storedCollections, 'value', collections)\n\t}\n\n\tconst addCollection = (collection) => {\n\t\tset(storedCollections, 'value', [...storedCollections.value, collection])\n\t}\n\n\tconst removeCollection = (collectionId) => {\n\t\tset(storedCollections, 'value', storedCollections.value.filter((item) => item.id !== collectionId))\n\t}\n\n\tconst updateCollection = (collection) => {\n\t\tconst index = storedCollections.value.findIndex((item) => item.id === collection.id)\n\t\tif (index !== -1) {\n\t\t\tset(storedCollections.value, index, collection)\n\t\t} else {\n\t\t\taddCollection(collection)\n\t\t}\n\t}\n\n\t// Actions\n\tconst fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n\t\tconst collections = await getCollectionsByResourceService(resourceType, resourceId)\n\n\t\taddCollections(collections)\n\t}\n\n\tconst createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n\t\tconst collection = await createCollectionService(baseResourceType, baseResourceId, name)\n\n\t\taddCollection(collection)\n\t\tawait addResourceToCollection({\n\t\t\tcollectionId: collection.id,\n\t\t\tresourceType,\n\t\t\tresourceId,\n\t\t})\n\t}\n\n\tconst renameCollection = async ({ collectionId, name }) => {\n\t\tconst collection = await renameCollectionService(collectionId, name)\n\n\t\tupdateCollection(collection)\n\t}\n\n\t/**\n\t * @param {*} options - Options\n\t */\n\tasync function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n\t\tconst collection = await addResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await removeResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tif (collection.resources.length > 0) {\n\t\t\tupdateCollection(collection)\n\t\t} else {\n\t\t\tremoveCollection(collectionId)\n\t\t}\n\t}\n\n\treturn {\n\t\tstoredCollections,\n\t\tfetchCollectionsByResource,\n\t\tcreateCollection,\n\t\trenameCollection,\n\t\taddResourceToCollection,\n\t\tremoveResourceFromCollection,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nProvides a Vue standalone component for Nextcloud Projects feature introduced in Nextcloud 16. Replaces deprecated `nextcloud-vue-collections` library.\n\nProjects feature is deprecated since Nextcloud 25, and superseded by Related resources. See [NcRelatedResourcesPanel](#/Components/NcRelatedResourcesPanel) documentation for more information.\n\n### Usage\n\nTo enable feature in Nextcloud, run following command:\n```sh\nocc config:system:set --value true 'projects.enabled'\n```\n</docs>\n\n<template>\n\t<ul v-if=\"collections && type && id\" id=\"collection-list\" class=\"collection-list\">\n\t\t<li @click=\"showSelect\">\n\t\t\t<div class=\"avatar\">\n\t\t\t\t<span class=\"icon-projects\" />\n\t\t\t</div>\n\t\t\t<div id=\"collection-select-container\">\n\t\t\t\t<NcSelect\n\t\t\t\t\tref=\"select\"\n\t\t\t\t\tv-model=\"value\"\n\t\t\t\t\t:aria-label-combobox=\"t('Add to a project')\"\n\t\t\t\t\t:options=\"options\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t@close=\"isSelectOpen = false\"\n\t\t\t\t\t@open=\"isSelectOpen = true\"\n\t\t\t\t\t@option:selected=\"select\"\n\t\t\t\t\t@search=\"search\">\n\t\t\t\t\t<template #selected-option=\"option\">\n\t\t\t\t\t\t<span class=\"option__desc\">\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #option=\"option\">\n\t\t\t\t\t\t<span class=\"option__wrapper\">\n\t\t\t\t\t\t\t<span v-if=\"option.class\" :class=\"option.class\" class=\"avatar\" />\n\t\t\t\t\t\t\t<NcAvatar v-else-if=\"option.method !== 2\" allow-placeholder :display-name=\"option.title\" />\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<p class=\"hint\">\n\t\t\t\t\t\t{{ t('Connect items to a project to make them easier to find') }}\n\t\t\t\t\t</p>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t</li>\n\t\t<transition name=\"fade\">\n\t\t\t<li v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</li>\n\t\t</transition>\n\t\t<NcCollectionListItem\n\t\t\tv-for=\"collection in collections\"\n\t\t\t:key=\"collection.id\"\n\t\t\t:collection=\"collection\"\n\t\t\t:error=\"collectionsError[collection.id]\"\n\t\t\t@rename-collection=\"renameCollectionFromItem\"\n\t\t\t@remove-resource=\"removeResourceFromCollection\" />\n\t</ul>\n</template>\n\n<script>\nimport debounce from 'debounce'\nimport { ref } from 'vue'\nimport NcCollectionListItem from './NcCollectionListItem.vue'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport { searchService } from './service.ts'\nimport { useCollections } from './useCollections.js'\n\nconst METHOD_CREATE_COLLECTION = 0\nconst METHOD_ADD_TO_COLLECTION = 1\n\nexport default {\n\tname: 'NcCollectionList',\n\n\tcomponents: {\n\t\tNcCollectionListItem,\n\t\tNcAvatar,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Resource type identifier\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Unique id of the resource\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Name of the resource\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Whether the component is active (to start fetch resources)\n\t\t */\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t} = useCollections()\n\n\t\tconst searchCollections = ref([])\n\t\tconst search = debounce(function(query, loading) {\n\t\t\tif (query !== '') {\n\t\t\t\tloading(true)\n\t\t\t\tsearchService(query).then((collections) => {\n\t\t\t\t\tsearchCollections.value = collections\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tlogger.error('Failed to search for collections', { error })\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tloading(false)\n\t\t\t\t})\n\t\t\t}\n\t\t}, 500)\n\n\t\treturn {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t\tsearchCollections,\n\t\t\tsearch,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectIsOpen: false,\n\t\t\tgeneratingCodes: false,\n\t\t\tcodes: undefined,\n\t\t\tvalue: null,\n\t\t\tmodel: {},\n\t\t\tcollectionsError: {},\n\t\t\terror: null,\n\t\t\tisSelectOpen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcollections() {\n\t\t\treturn this.storedCollections.filter((collection) => collection.resources\n\t\t\t\t.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type))\n\t\t},\n\n\t\tplaceholder() {\n\t\t\treturn this.isSelectOpen\n\t\t\t\t? t('Type to search for existing projects')\n\t\t\t\t: t('Add to a project')\n\t\t},\n\n\t\toptions() {\n\t\t\tconst options = []\n\t\t\twindow.OCP.Collaboration.getTypes().sort().forEach((type) => {\n\t\t\t\toptions.push({\n\t\t\t\t\tmethod: METHOD_CREATE_COLLECTION,\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: window.OCP.Collaboration.getLabel(type),\n\t\t\t\t\tclass: window.OCP.Collaboration.getIcon(type),\n\t\t\t\t\taction: () => window.OCP.Collaboration.trigger(type),\n\t\t\t\t})\n\t\t\t})\n\t\t\tfor (const index in this.searchCollections) {\n\t\t\t\tif (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tmethod: METHOD_ADD_TO_COLLECTION,\n\t\t\t\t\t\ttitle: this.searchCollections[index].name,\n\t\t\t\t\t\tcollectionId: this.searchCollections[index].id,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options\n\t\t},\n\n\t\tresourceIdentifier() {\n\t\t\treturn {\n\t\t\t\tresourceType: this.type,\n\t\t\t\tresourceId: this.id,\n\t\t\t\tisActive: this.isActive,\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tresourceIdentifier: {\n\t\t\tdeep: true,\n\t\t\timmediate: true,\n\t\t\thandler(resourceIdentifier) {\n\t\t\t\tif (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.fetchCollectionsByResource(resourceIdentifier)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tselect(selectedOption) {\n\t\t\tif (selectedOption.method === METHOD_CREATE_COLLECTION) {\n\t\t\t\tselectedOption.action().then((resourceId) => {\n\t\t\t\t\tthis.createCollection({\n\t\t\t\t\t\tbaseResourceType: this.type,\n\t\t\t\t\t\tbaseResourceId: this.id,\n\t\t\t\t\t\tresourceType: selectedOption.type,\n\t\t\t\t\t\tresourceId,\n\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\tthis.setError(t('Failed to create a project'), e)\n\t\t\t\t\t})\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tlogger.error('No resource selected', { error })\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n\t\t\t\tthis.addResourceToCollection({\n\t\t\t\t\tcollectionId: selectedOption.collectionId, resourceType: this.type, resourceId: this.id,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.setError(t('Failed to add the item to the project'), e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.value = null\n\t\t},\n\n\t\tshowSelect() {\n\t\t\tthis.selectIsOpen = true\n\t\t\tthis.$refs.select.$el.focus()\n\t\t},\n\n\t\tsetError(error, e) {\n\t\t\tlogger.error(error, { error: e })\n\t\t\tthis.error = error\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.error = null\n\t\t\t}, 5000)\n\t\t},\n\n\t\trenameCollectionFromItem({ collectionId, name }) {\n\t\t\tthis.renameCollection({ collectionId, name })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error(t('Failed to rename the project'), { error })\n\t\t\t\t\tthis.collectionsError[collectionId] = t('Failed to rename the project')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.collectionsError[collectionId] = null\n\t\t\t\t\t}, 5000)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.collection-list * {\n\tbox-sizing: border-box;\n}\n\n.collection-list > li {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\n\t& > .avatar {\n\t\tmargin-top: 0;\n\t}\n}\n\n#collection-select-container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.v-select {\n\t// NcAvatar in the dropdown\n\tspan.avatar {\n\t\tdisplay: block;\n\t\tpadding: 16px;\n\t\topacity: .7;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\np.hint {\n\tz-index: 1;\n\t// fix alignment\n\tmargin-top: -16px;\n\tpadding: 8px 8px;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: normal;\n}\n\ndiv.avatar {\n\twidth: 32px;\n\theight: 32px;\n\tmargin: 0;\n\tpadding: 8px;\n\tbackground-color: var(--color-background-dark);\n\tmargin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects {\n\tdisplay: block;\n\tpadding: 8px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.option__wrapper {\n\tdisplay: flex;\n\n\t.avatar {\n\t\tdisplay: block;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-background-darker) !important;\n\t}\n\n\t.option__title {\n\t\tpadding: 4px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n\n</style>\n"],"names":["_sfc_main"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- require('../assets/NcCollectionList-DInDhsAS.css');
1
+ require('../assets/NcCollectionList-hRgvNUMR.css');
2
2
  "use strict";
3
3
  const debounce = require("debounce");
4
4
  const Vue = require("vue");
5
- const _l10n = require("./_l10n-DM-VRK9x.cjs");
6
- const NcActionButton = require("./NcActionButton-CFXzNoFT.cjs");
7
- const NcActions = require("./NcActions-B7oXbiVt.cjs");
8
- const NcAvatar = require("./NcAvatar-bd-5zXWN.cjs");
5
+ const _l10n = require("./_l10n-9b4TMo5Q.cjs");
6
+ const NcActionButton = require("./NcActionButton-lJ0IA3IS.cjs");
7
+ const NcActions = require("./NcActions-D3N_As6c.cjs");
8
+ const NcAvatar = require("./NcAvatar-D_0Aw88L.cjs");
9
9
  const autolink = require("./autolink-BPlRHRHR.cjs");
10
10
  const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
11
11
  const logger = require("./logger-3HuiEIF6.cjs");
12
- const NcSelect = require("./NcSelect-s3_u0qvy.cjs");
12
+ const NcSelect = require("./NcSelect-bo6wla87.cjs");
13
13
  const axios = require("@nextcloud/axios");
14
14
  const router = require("@nextcloud/router");
15
15
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
@@ -54,7 +54,8 @@ const _sfc_main$1 = {
54
54
  return (resource) => "resource-type-" + resource.type;
55
55
  },
56
56
  resources() {
57
- return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];
57
+ var _a, _b;
58
+ return (_b = (_a = this.collection.resources) == null ? void 0 : _a.filter((resource) => !Array.isArray(resource))) != null ? _b : [];
58
59
  },
59
60
  getComponent() {
60
61
  return (resource) => {
@@ -269,8 +270,8 @@ const _sfc_main = {
269
270
  loading(true);
270
271
  searchService(query).then((collections) => {
271
272
  searchCollections.value = collections;
272
- }).catch((e) => {
273
- logger.logger.error("Failed to search for collections", e);
273
+ }).catch((error) => {
274
+ logger.logger.error("Failed to search for collections", { error });
274
275
  }).finally(() => {
275
276
  loading(false);
276
277
  });
@@ -362,8 +363,8 @@ const _sfc_main = {
362
363
  }).catch((e) => {
363
364
  this.setError(_l10n.t("Failed to create a project"), e);
364
365
  });
365
- }).catch((e) => {
366
- logger.logger.error("No resource selected", e);
366
+ }).catch((error) => {
367
+ logger.logger.error("No resource selected", { error });
367
368
  });
368
369
  }
369
370
  if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {
@@ -382,15 +383,15 @@ const _sfc_main = {
382
383
  this.$refs.select.$el.focus();
383
384
  },
384
385
  setError(error, e) {
385
- logger.logger.error(error, e);
386
+ logger.logger.error(error, { error: e });
386
387
  this.error = error;
387
388
  setTimeout(() => {
388
389
  this.error = null;
389
390
  }, 5e3);
390
391
  },
391
392
  renameCollectionFromItem({ collectionId, name }) {
392
- this.renameCollection({ collectionId, name }).catch((e) => {
393
- logger.logger.error(_l10n.t("Failed to rename the project"), e);
393
+ this.renameCollection({ collectionId, name }).catch((error) => {
394
+ logger.logger.error(_l10n.t("Failed to rename the project"), { error });
394
395
  this.collectionsError[collectionId] = _l10n.t("Failed to rename the project");
395
396
  setTimeout(() => {
396
397
  this.collectionsError[collectionId] = null;
@@ -425,8 +426,8 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
425
426
  _sfc_staticRenderFns,
426
427
  false,
427
428
  null,
428
- "9d1654c2"
429
+ "73e5825c"
429
430
  );
430
431
  const NcCollectionList = __component__.exports;
431
432
  exports.NcCollectionList = NcCollectionList;
432
- //# sourceMappingURL=NcCollectionList-DZh_7a3g.cjs.map
433
+ //# sourceMappingURL=NcCollectionList-zAI6Ysc0.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcCollectionList-DZh_7a3g.cjs","sources":["../../src/components/NcCollectionList/NcCollectionListItem.vue","../../src/components/NcCollectionList/service.ts","../../src/components/NcCollectionList/useCollections.js","../../src/components/NcCollectionList/NcCollectionList.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li class=\"collection-list-item\">\n\t\t<NcAvatar :display-name=\"collection.name\" allow-placeholder class=\"collection-avatar\" />\n\t\t<span\n\t\t\tv-if=\"newName === null\"\n\t\t\tclass=\"collection-item-name\"\n\t\t\ttitle=\"\"\n\t\t\t@click=\"showDetails\">{{ collection.name }}</span>\n\t\t<form v-else :class=\"{ 'should-shake': error }\" @submit.prevent=\"renameCollection\">\n\t\t\t<input\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocapitalize=\"off\">\n\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t</form>\n\t\t<div v-if=\"!detailsOpen && newName === null\" class=\"linked-icons\">\n\t\t\t<component\n\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\tv-for=\"resource in resources.slice(0, 2)\"\n\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t:title=\"resource.name\"\n\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t:href=\"getComponent(resource).href\"\n\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t</component>\n\t\t</div>\n\n\t\t<span v-if=\"newName === null\" class=\"sharingOptionsGroup\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-info\"\n\t\t\t\t\t@click.prevent=\"toggleDetails\">\n\t\t\t\t\t{{ detailsOpen ? t('Hide details') : t('Show details') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.prevent=\"openRename\">\n\t\t\t\t\t{{ t('Rename project') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</span>\n\n\t\t<transition name=\"fade\">\n\t\t\t<div v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t</transition>\n\t\t<transition name=\"fade\">\n\t\t\t<ul v-if=\"detailsOpen\" class=\"resource-list-details\">\n\t\t\t\t<li\n\t\t\t\t\tv-for=\"resource in resources\"\n\t\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t\t<component\n\t\t\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t\t\t:href=\"getComponent(resource).href\">\n\t\t\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t\t\t\t<span class=\"resource-name\">{{ resource.name || '' }}</span>\n\t\t\t\t\t</component>\n\t\t\t\t\t<span class=\"icon-close\" @click=\"removeResource(collection, resource)\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</transition>\n\t</li>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcActionButton from '../NcActionButton/index.js'\nimport NcActions from '../NcActions/index.js'\nimport NcAvatar from '../NcAvatar/index.js'\nimport { getRoute } from '../NcRichText/autolink.js'\n\nexport default {\n\tname: 'NcCollectionListItem',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The collection\n\t\t */\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Current error if any\n\t\t */\n\t\terror: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\temits: ['remove-resource', 'rename-collection'],\n\n\tdata() {\n\t\treturn {\n\t\t\tdetailsOpen: false,\n\t\t\tnewName: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgetIcon() {\n\t\t\treturn (resource) => [resource.iconClass]\n\t\t},\n\n\t\ttypeClass() {\n\t\t\treturn (resource) => 'resource-type-' + resource.type\n\t\t},\n\n\t\tresources() {\n\t\t\t// invalid resources come from server as empty array ([]) and not an object\n\t\t\treturn this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? []\n\t\t},\n\n\t\tgetComponent() {\n\t\t\treturn (resource) => {\n\t\t\t\tconst route = getRoute(this.$router, resource.link)\n\n\t\t\t\treturn route\n\t\t\t\t\t? { component: 'router-link', to: route, href: undefined }\n\t\t\t\t\t: { component: 'a', to: undefined, href: resource.link }\n\t\t\t}\n\t\t},\n\n\t\ticonUrl() {\n\t\t\treturn (resource) => {\n\t\t\t\tif (resource.mimetype) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl(resource.mimetype)\n\t\t\t\t}\n\t\t\t\tif (resource.iconUrl) {\n\t\t\t\t\treturn resource.iconUrl\n\t\t\t\t}\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\ttoggleDetails() {\n\t\t\tthis.detailsOpen = !this.detailsOpen\n\t\t},\n\n\t\tshowDetails() {\n\t\t\tthis.detailsOpen = true\n\t\t},\n\n\t\tremoveResource(collection, resource) {\n\t\t\tthis.$emit('remove-resource', {\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tresourceType: resource.type,\n\t\t\t\tresourceId: resource.id,\n\t\t\t})\n\t\t},\n\n\t\topenRename() {\n\t\t\tthis.newName = this.collection.name\n\t\t},\n\n\t\trenameCollection() {\n\t\t\tif (this.newName) {\n\t\t\t\tthis.$emit('rename-collection', {\n\t\t\t\t\tcollectionId: this.collection.id,\n\t\t\t\t\tname: this.newName,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.newName = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s ease;\n}\n\n.fade-enter, .fade-leave-to\n\t/* .fade-leave-active below version 2.1.8 */\n{\n\topacity: 0;\n}\n\n.linked-icons {\n\tdisplay: flex;\n\n\timg {\n\t\tpadding: 12px;\n\t\theight: 44px;\n\t\tdisplay: block;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\topacity: 0.7;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.popovermenu {\n\tdisplay: none;\n\n\t&.open {\n\t\tdisplay: block;\n\t}\n}\n\nli.collection-list-item {\n\tflex-wrap: wrap;\n\theight: auto;\n\tcursor: pointer;\n\tmargin-bottom: 0 !important;\n\n\t.collection-avatar {\n\t\tmargin-top: 0;\n\t}\n\n\tform, .collection-item-name {\n\t\tflex-basis: 10%;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t}\n\n\t.collection-item-name {\n\t\tpadding: 12px 9px;\n\t}\n\n\tinput {\n\t\tmargin-top: 4px;\n\t\tborder-color: var(--color-border-maxcontrast);\n\n\t\t&[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t.error {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.resource-list-details {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\n\t\tli {\n\t\t\tdisplay: flex;\n\t\t\tmargin-left: 44px;\n\t\t\tborder-radius: 3px;\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t}\n\n\t\t\ta {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding: 3px;\n\t\t\t\tmax-width: calc(100% - 30px);\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: top;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\tspan.resource-name {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\t\t\tvertical-align: top;\n\t\t\twhite-space: nowrap;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t}\n\n\t\t.icon-close {\n\t\t\topacity: .7;\n\n\t\t\t&:hover, &:focus {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.should-shake {\n\tanimation: shake 0.6s 1 linear;\n}\n\n@keyframes shake {\n\t0% {\n\t\ttransform: translate(15px);\n\t}\n\t20% {\n\t\ttransform: translate(-15px);\n\t}\n\t40% {\n\t\ttransform: translate(7px);\n\t}\n\t60% {\n\t\ttransform: translate(-7px);\n\t}\n\t80% {\n\t\ttransform: translate(3px);\n\t}\n\t100% {\n\t\ttransform: translate(0px);\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { type AxiosResponse } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Extracts the OCS data from a response\n *\n * @param response OCS response\n */\nfunction extractOcsData(response: AxiosResponse<OCSResponse>) {\n\treturn response.data.ocs.data\n}\n\n/**\n * Lists all collections\n *\n * @param collectionId Collection ID\n */\nexport function listCollectionService(collectionId: number) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId })).then(extractOcsData)\n}\n\n/**\n * Renames a collection\n *\n * @param collectionId Collection ID\n * @param collectionName New collection name\n */\nexport function renameCollectionService(collectionId: number, collectionName: string) {\n\treturn axios.put(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { collectionName }).then(extractOcsData)\n}\n\n/**\n * Lists all collections for a resource\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function getCollectionsByResourceService(resourceType: string, resourceId: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId })).then(extractOcsData)\n}\n\n/**\n * Creates a collection\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n * @param name Collection name\n */\nexport function createCollectionService(resourceType: string, resourceId: string, name: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId }), { name }).then(extractOcsData)\n}\n\n/**\n * Adds a resource to a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function addResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { resourceType, resourceId }).then(extractOcsData)\n}\n\n/**\n * Removes a resource from a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function removeResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.delete(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData)\n}\n\n/**\n * Searches for collections\n *\n * @param query Search query\n */\nexport function searchService(query: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/search/{query}', { query })).then(extractOcsData)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ref, set } from 'vue'\nimport {\n\taddResourceService,\n\tcreateCollectionService,\n\tgetCollectionsByResourceService,\n\tremoveResourceService,\n\trenameCollectionService,\n} from './service.ts'\n\n/**\n * Use collections composable\n */\nexport function useCollections() {\n\t// State\n\tconst storedCollections = ref([])\n\n\t// Mutations\n\tconst addCollections = (collections) => {\n\t\tset(storedCollections, 'value', collections)\n\t}\n\n\tconst addCollection = (collection) => {\n\t\tset(storedCollections, 'value', [...storedCollections.value, collection])\n\t}\n\n\tconst removeCollection = (collectionId) => {\n\t\tset(storedCollections, 'value', storedCollections.value.filter((item) => item.id !== collectionId))\n\t}\n\n\tconst updateCollection = (collection) => {\n\t\tconst index = storedCollections.value.findIndex((item) => item.id === collection.id)\n\t\tif (index !== -1) {\n\t\t\tset(storedCollections.value, index, collection)\n\t\t} else {\n\t\t\taddCollection(collection)\n\t\t}\n\t}\n\n\t// Actions\n\tconst fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n\t\tconst collections = await getCollectionsByResourceService(resourceType, resourceId)\n\n\t\taddCollections(collections)\n\t}\n\n\tconst createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n\t\tconst collection = await createCollectionService(baseResourceType, baseResourceId, name)\n\n\t\taddCollection(collection)\n\t\tawait addResourceToCollection({\n\t\t\tcollectionId: collection.id,\n\t\t\tresourceType,\n\t\t\tresourceId,\n\t\t})\n\t}\n\n\tconst renameCollection = async ({ collectionId, name }) => {\n\t\tconst collection = await renameCollectionService(collectionId, name)\n\n\t\tupdateCollection(collection)\n\t}\n\n\t/**\n\t * @param {*} options - Options\n\t */\n\tasync function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n\t\tconst collection = await addResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await removeResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tif (collection.resources.length > 0) {\n\t\t\tupdateCollection(collection)\n\t\t} else {\n\t\t\tremoveCollection(collectionId)\n\t\t}\n\t}\n\n\treturn {\n\t\tstoredCollections,\n\t\tfetchCollectionsByResource,\n\t\tcreateCollection,\n\t\trenameCollection,\n\t\taddResourceToCollection,\n\t\tremoveResourceFromCollection,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nProvides a Vue standalone component for Nextcloud Projects feature introduced in Nextcloud 16. Replaces deprecated `nextcloud-vue-collections` library.\n\nProjects feature is deprecated since Nextcloud 25, and superseded by Related resources. See [NcRelatedResourcesPanel](#/Components/NcRelatedResourcesPanel) documentation for more information.\n\n### Usage\n\nTo enable feature in Nextcloud, run following command:\n```sh\nocc config:system:set --value true 'projects.enabled'\n```\n</docs>\n\n<template>\n\t<ul v-if=\"collections && type && id\" id=\"collection-list\" class=\"collection-list\">\n\t\t<li @click=\"showSelect\">\n\t\t\t<div class=\"avatar\">\n\t\t\t\t<span class=\"icon-projects\" />\n\t\t\t</div>\n\t\t\t<div id=\"collection-select-container\">\n\t\t\t\t<NcSelect\n\t\t\t\t\tref=\"select\"\n\t\t\t\t\tv-model=\"value\"\n\t\t\t\t\t:aria-label-combobox=\"t('Add to a project')\"\n\t\t\t\t\t:options=\"options\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t@close=\"isSelectOpen = false\"\n\t\t\t\t\t@open=\"isSelectOpen = true\"\n\t\t\t\t\t@option:selected=\"select\"\n\t\t\t\t\t@search=\"search\">\n\t\t\t\t\t<template #selected-option=\"option\">\n\t\t\t\t\t\t<span class=\"option__desc\">\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #option=\"option\">\n\t\t\t\t\t\t<span class=\"option__wrapper\">\n\t\t\t\t\t\t\t<span v-if=\"option.class\" :class=\"option.class\" class=\"avatar\" />\n\t\t\t\t\t\t\t<NcAvatar v-else-if=\"option.method !== 2\" allow-placeholder :display-name=\"option.title\" />\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<p class=\"hint\">\n\t\t\t\t\t\t{{ t('Connect items to a project to make them easier to find') }}\n\t\t\t\t\t</p>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t</li>\n\t\t<transition name=\"fade\">\n\t\t\t<li v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</li>\n\t\t</transition>\n\t\t<NcCollectionListItem\n\t\t\tv-for=\"collection in collections\"\n\t\t\t:key=\"collection.id\"\n\t\t\t:collection=\"collection\"\n\t\t\t:error=\"collectionsError[collection.id]\"\n\t\t\t@rename-collection=\"renameCollectionFromItem\"\n\t\t\t@remove-resource=\"removeResourceFromCollection\" />\n\t</ul>\n</template>\n\n<script>\nimport debounce from 'debounce'\nimport { ref } from 'vue'\nimport NcCollectionListItem from './NcCollectionListItem.vue'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport { searchService } from './service.ts'\nimport { useCollections } from './useCollections.js'\n\nconst METHOD_CREATE_COLLECTION = 0\nconst METHOD_ADD_TO_COLLECTION = 1\n\nexport default {\n\tname: 'NcCollectionList',\n\n\tcomponents: {\n\t\tNcCollectionListItem,\n\t\tNcAvatar,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Resource type identifier\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Unique id of the resource\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Name of the resource\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Whether the component is active (to start fetch resources)\n\t\t */\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t} = useCollections()\n\n\t\tconst searchCollections = ref([])\n\t\tconst search = debounce(function(query, loading) {\n\t\t\tif (query !== '') {\n\t\t\t\tloading(true)\n\t\t\t\tsearchService(query).then((collections) => {\n\t\t\t\t\tsearchCollections.value = collections\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tlogger.error('Failed to search for collections', e)\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tloading(false)\n\t\t\t\t})\n\t\t\t}\n\t\t}, 500)\n\n\t\treturn {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t\tsearchCollections,\n\t\t\tsearch,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectIsOpen: false,\n\t\t\tgeneratingCodes: false,\n\t\t\tcodes: undefined,\n\t\t\tvalue: null,\n\t\t\tmodel: {},\n\t\t\tcollectionsError: {},\n\t\t\terror: null,\n\t\t\tisSelectOpen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcollections() {\n\t\t\treturn this.storedCollections.filter((collection) => collection.resources\n\t\t\t\t.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type))\n\t\t},\n\n\t\tplaceholder() {\n\t\t\treturn this.isSelectOpen\n\t\t\t\t? t('Type to search for existing projects')\n\t\t\t\t: t('Add to a project')\n\t\t},\n\n\t\toptions() {\n\t\t\tconst options = []\n\t\t\twindow.OCP.Collaboration.getTypes().sort().forEach((type) => {\n\t\t\t\toptions.push({\n\t\t\t\t\tmethod: METHOD_CREATE_COLLECTION,\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: window.OCP.Collaboration.getLabel(type),\n\t\t\t\t\tclass: window.OCP.Collaboration.getIcon(type),\n\t\t\t\t\taction: () => window.OCP.Collaboration.trigger(type),\n\t\t\t\t})\n\t\t\t})\n\t\t\tfor (const index in this.searchCollections) {\n\t\t\t\tif (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tmethod: METHOD_ADD_TO_COLLECTION,\n\t\t\t\t\t\ttitle: this.searchCollections[index].name,\n\t\t\t\t\t\tcollectionId: this.searchCollections[index].id,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options\n\t\t},\n\n\t\tresourceIdentifier() {\n\t\t\treturn {\n\t\t\t\tresourceType: this.type,\n\t\t\t\tresourceId: this.id,\n\t\t\t\tisActive: this.isActive,\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tresourceIdentifier: {\n\t\t\tdeep: true,\n\t\t\timmediate: true,\n\t\t\thandler(resourceIdentifier) {\n\t\t\t\tif (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.fetchCollectionsByResource(resourceIdentifier)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tselect(selectedOption) {\n\t\t\tif (selectedOption.method === METHOD_CREATE_COLLECTION) {\n\t\t\t\tselectedOption.action().then((resourceId) => {\n\t\t\t\t\tthis.createCollection({\n\t\t\t\t\t\tbaseResourceType: this.type,\n\t\t\t\t\t\tbaseResourceId: this.id,\n\t\t\t\t\t\tresourceType: selectedOption.type,\n\t\t\t\t\t\tresourceId,\n\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\tthis.setError(t('Failed to create a project'), e)\n\t\t\t\t\t})\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tlogger.error('No resource selected', e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n\t\t\t\tthis.addResourceToCollection({\n\t\t\t\t\tcollectionId: selectedOption.collectionId, resourceType: this.type, resourceId: this.id,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.setError(t('Failed to add the item to the project'), e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.value = null\n\t\t},\n\n\t\tshowSelect() {\n\t\t\tthis.selectIsOpen = true\n\t\t\tthis.$refs.select.$el.focus()\n\t\t},\n\n\t\tsetError(error, e) {\n\t\t\tlogger.error(error, e)\n\t\t\tthis.error = error\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.error = null\n\t\t\t}, 5000)\n\t\t},\n\n\t\trenameCollectionFromItem({ collectionId, name }) {\n\t\t\tthis.renameCollection({ collectionId, name })\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlogger.error(t('Failed to rename the project'), e)\n\t\t\t\t\tthis.collectionsError[collectionId] = t('Failed to rename the project')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.collectionsError[collectionId] = null\n\t\t\t\t\t}, 5000)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.collection-list * {\n\tbox-sizing: border-box;\n}\n\n.collection-list > li {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\n\t& > .avatar {\n\t\tmargin-top: 0;\n\t}\n}\n\n#collection-select-container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.v-select {\n\t// NcAvatar in the dropdown\n\tspan.avatar {\n\t\tdisplay: block;\n\t\tpadding: 16px;\n\t\topacity: .7;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\np.hint {\n\tz-index: 1;\n\t// fix alignment\n\tmargin-top: -16px;\n\tpadding: 8px 8px;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: normal;\n}\n\ndiv.avatar {\n\twidth: 32px;\n\theight: 32px;\n\tmargin: 0;\n\tpadding: 8px;\n\tbackground-color: var(--color-background-dark);\n\tmargin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects {\n\tdisplay: block;\n\tpadding: 8px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.option__wrapper {\n\tdisplay: flex;\n\n\t.avatar {\n\t\tdisplay: block;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-background-darker) !important;\n\t}\n\n\t.option__title {\n\t\tpadding: 4px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n\n</style>\n"],"names":["_sfc_main","NcAvatar","NcActions","NcActionButton","getRoute","t","axios","generateOcsUrl","ref","set","NcSelect","debounce","logger"],"mappings":"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"}
1
+ {"version":3,"file":"NcCollectionList-zAI6Ysc0.cjs","sources":["../../src/components/NcCollectionList/NcCollectionListItem.vue","../../src/components/NcCollectionList/service.ts","../../src/components/NcCollectionList/useCollections.js","../../src/components/NcCollectionList/NcCollectionList.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li class=\"collection-list-item\">\n\t\t<NcAvatar :display-name=\"collection.name\" allow-placeholder class=\"collection-avatar\" />\n\t\t<span\n\t\t\tv-if=\"newName === null\"\n\t\t\tclass=\"collection-item-name\"\n\t\t\ttitle=\"\"\n\t\t\t@click=\"showDetails\">{{ collection.name }}</span>\n\t\t<form v-else :class=\"{ 'should-shake': error }\" @submit.prevent=\"renameCollection\">\n\t\t\t<input\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocapitalize=\"off\">\n\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t</form>\n\t\t<div v-if=\"!detailsOpen && newName === null\" class=\"linked-icons\">\n\t\t\t<component\n\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\tv-for=\"resource in resources.slice(0, 2)\"\n\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t:title=\"resource.name\"\n\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t:href=\"getComponent(resource).href\"\n\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t</component>\n\t\t</div>\n\n\t\t<span v-if=\"newName === null\" class=\"sharingOptionsGroup\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-info\"\n\t\t\t\t\t@click.prevent=\"toggleDetails\">\n\t\t\t\t\t{{ detailsOpen ? t('Hide details') : t('Show details') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.prevent=\"openRename\">\n\t\t\t\t\t{{ t('Rename project') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</span>\n\n\t\t<transition name=\"fade\">\n\t\t\t<div v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t</transition>\n\t\t<transition name=\"fade\">\n\t\t\t<ul v-if=\"detailsOpen\" class=\"resource-list-details\">\n\t\t\t\t<li\n\t\t\t\t\tv-for=\"resource in resources\"\n\t\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t\t<component\n\t\t\t\t\t\t:is=\"getComponent(resource).component\"\n\t\t\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t\t\t:href=\"getComponent(resource).href\">\n\t\t\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t\t\t\t<span class=\"resource-name\">{{ resource.name || '' }}</span>\n\t\t\t\t\t</component>\n\t\t\t\t\t<span class=\"icon-close\" @click=\"removeResource(collection, resource)\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</transition>\n\t</li>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcActionButton from '../NcActionButton/index.js'\nimport NcActions from '../NcActions/index.js'\nimport NcAvatar from '../NcAvatar/index.js'\nimport { getRoute } from '../NcRichText/autolink.js'\n\nexport default {\n\tname: 'NcCollectionListItem',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The collection\n\t\t */\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Current error if any\n\t\t */\n\t\terror: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\temits: ['remove-resource', 'rename-collection'],\n\n\tdata() {\n\t\treturn {\n\t\t\tdetailsOpen: false,\n\t\t\tnewName: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgetIcon() {\n\t\t\treturn (resource) => [resource.iconClass]\n\t\t},\n\n\t\ttypeClass() {\n\t\t\treturn (resource) => 'resource-type-' + resource.type\n\t\t},\n\n\t\tresources() {\n\t\t\t// invalid resources come from server as empty array ([]) and not an object\n\t\t\treturn this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? []\n\t\t},\n\n\t\tgetComponent() {\n\t\t\treturn (resource) => {\n\t\t\t\tconst route = getRoute(this.$router, resource.link)\n\n\t\t\t\treturn route\n\t\t\t\t\t? { component: 'router-link', to: route, href: undefined }\n\t\t\t\t\t: { component: 'a', to: undefined, href: resource.link }\n\t\t\t}\n\t\t},\n\n\t\ticonUrl() {\n\t\t\treturn (resource) => {\n\t\t\t\tif (resource.mimetype) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl(resource.mimetype)\n\t\t\t\t}\n\t\t\t\tif (resource.iconUrl) {\n\t\t\t\t\treturn resource.iconUrl\n\t\t\t\t}\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\ttoggleDetails() {\n\t\t\tthis.detailsOpen = !this.detailsOpen\n\t\t},\n\n\t\tshowDetails() {\n\t\t\tthis.detailsOpen = true\n\t\t},\n\n\t\tremoveResource(collection, resource) {\n\t\t\tthis.$emit('remove-resource', {\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tresourceType: resource.type,\n\t\t\t\tresourceId: resource.id,\n\t\t\t})\n\t\t},\n\n\t\topenRename() {\n\t\t\tthis.newName = this.collection.name\n\t\t},\n\n\t\trenameCollection() {\n\t\t\tif (this.newName) {\n\t\t\t\tthis.$emit('rename-collection', {\n\t\t\t\t\tcollectionId: this.collection.id,\n\t\t\t\t\tname: this.newName,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.newName = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s ease;\n}\n\n.fade-enter, .fade-leave-to\n\t/* .fade-leave-active below version 2.1.8 */\n{\n\topacity: 0;\n}\n\n.linked-icons {\n\tdisplay: flex;\n\n\timg {\n\t\tpadding: 12px;\n\t\theight: 44px;\n\t\tdisplay: block;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\topacity: 0.7;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.popovermenu {\n\tdisplay: none;\n\n\t&.open {\n\t\tdisplay: block;\n\t}\n}\n\nli.collection-list-item {\n\tflex-wrap: wrap;\n\theight: auto;\n\tcursor: pointer;\n\tmargin-bottom: 0 !important;\n\n\t.collection-avatar {\n\t\tmargin-top: 0;\n\t}\n\n\tform, .collection-item-name {\n\t\tflex-basis: 10%;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t}\n\n\t.collection-item-name {\n\t\tpadding: 12px 9px;\n\t}\n\n\tinput {\n\t\tmargin-top: 4px;\n\t\tborder-color: var(--color-border-maxcontrast);\n\n\t\t&[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t.error {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.resource-list-details {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\n\t\tli {\n\t\t\tdisplay: flex;\n\t\t\tmargin-left: 44px;\n\t\t\tborder-radius: 3px;\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t}\n\n\t\t\ta {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding: 3px;\n\t\t\t\tmax-width: calc(100% - 30px);\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: top;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\tspan.resource-name {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\t\t\tvertical-align: top;\n\t\t\twhite-space: nowrap;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t}\n\n\t\t.icon-close {\n\t\t\topacity: .7;\n\n\t\t\t&:hover, &:focus {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.should-shake {\n\tanimation: shake 0.6s 1 linear;\n}\n\n@keyframes shake {\n\t0% {\n\t\ttransform: translate(15px);\n\t}\n\t20% {\n\t\ttransform: translate(-15px);\n\t}\n\t40% {\n\t\ttransform: translate(7px);\n\t}\n\t60% {\n\t\ttransform: translate(-7px);\n\t}\n\t80% {\n\t\ttransform: translate(3px);\n\t}\n\t100% {\n\t\ttransform: translate(0px);\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { type AxiosResponse } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Extracts the OCS data from a response\n *\n * @param response OCS response\n */\nfunction extractOcsData(response: AxiosResponse<OCSResponse>) {\n\treturn response.data.ocs.data\n}\n\n/**\n * Lists all collections\n *\n * @param collectionId Collection ID\n */\nexport function listCollectionService(collectionId: number) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId })).then(extractOcsData)\n}\n\n/**\n * Renames a collection\n *\n * @param collectionId Collection ID\n * @param collectionName New collection name\n */\nexport function renameCollectionService(collectionId: number, collectionName: string) {\n\treturn axios.put(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { collectionName }).then(extractOcsData)\n}\n\n/**\n * Lists all collections for a resource\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function getCollectionsByResourceService(resourceType: string, resourceId: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId })).then(extractOcsData)\n}\n\n/**\n * Creates a collection\n *\n * @param resourceType Resource type\n * @param resourceId Resource ID\n * @param name Collection name\n */\nexport function createCollectionService(resourceType: string, resourceId: string, name: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId }), { name }).then(extractOcsData)\n}\n\n/**\n * Adds a resource to a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function addResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { resourceType, resourceId }).then(extractOcsData)\n}\n\n/**\n * Removes a resource from a collection\n *\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function removeResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.delete(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData)\n}\n\n/**\n * Searches for collections\n *\n * @param query Search query\n */\nexport function searchService(query: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/search/{query}', { query })).then(extractOcsData)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ref, set } from 'vue'\nimport {\n\taddResourceService,\n\tcreateCollectionService,\n\tgetCollectionsByResourceService,\n\tremoveResourceService,\n\trenameCollectionService,\n} from './service.ts'\n\n/**\n * Use collections composable\n */\nexport function useCollections() {\n\t// State\n\tconst storedCollections = ref([])\n\n\t// Mutations\n\tconst addCollections = (collections) => {\n\t\tset(storedCollections, 'value', collections)\n\t}\n\n\tconst addCollection = (collection) => {\n\t\tset(storedCollections, 'value', [...storedCollections.value, collection])\n\t}\n\n\tconst removeCollection = (collectionId) => {\n\t\tset(storedCollections, 'value', storedCollections.value.filter((item) => item.id !== collectionId))\n\t}\n\n\tconst updateCollection = (collection) => {\n\t\tconst index = storedCollections.value.findIndex((item) => item.id === collection.id)\n\t\tif (index !== -1) {\n\t\t\tset(storedCollections.value, index, collection)\n\t\t} else {\n\t\t\taddCollection(collection)\n\t\t}\n\t}\n\n\t// Actions\n\tconst fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n\t\tconst collections = await getCollectionsByResourceService(resourceType, resourceId)\n\n\t\taddCollections(collections)\n\t}\n\n\tconst createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n\t\tconst collection = await createCollectionService(baseResourceType, baseResourceId, name)\n\n\t\taddCollection(collection)\n\t\tawait addResourceToCollection({\n\t\t\tcollectionId: collection.id,\n\t\t\tresourceType,\n\t\t\tresourceId,\n\t\t})\n\t}\n\n\tconst renameCollection = async ({ collectionId, name }) => {\n\t\tconst collection = await renameCollectionService(collectionId, name)\n\n\t\tupdateCollection(collection)\n\t}\n\n\t/**\n\t * @param {*} options - Options\n\t */\n\tasync function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n\t\tconst collection = await addResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await removeResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tif (collection.resources.length > 0) {\n\t\t\tupdateCollection(collection)\n\t\t} else {\n\t\t\tremoveCollection(collectionId)\n\t\t}\n\t}\n\n\treturn {\n\t\tstoredCollections,\n\t\tfetchCollectionsByResource,\n\t\tcreateCollection,\n\t\trenameCollection,\n\t\taddResourceToCollection,\n\t\tremoveResourceFromCollection,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nProvides a Vue standalone component for Nextcloud Projects feature introduced in Nextcloud 16. Replaces deprecated `nextcloud-vue-collections` library.\n\nProjects feature is deprecated since Nextcloud 25, and superseded by Related resources. See [NcRelatedResourcesPanel](#/Components/NcRelatedResourcesPanel) documentation for more information.\n\n### Usage\n\nTo enable feature in Nextcloud, run following command:\n```sh\nocc config:system:set --value true 'projects.enabled'\n```\n</docs>\n\n<template>\n\t<ul v-if=\"collections && type && id\" id=\"collection-list\" class=\"collection-list\">\n\t\t<li @click=\"showSelect\">\n\t\t\t<div class=\"avatar\">\n\t\t\t\t<span class=\"icon-projects\" />\n\t\t\t</div>\n\t\t\t<div id=\"collection-select-container\">\n\t\t\t\t<NcSelect\n\t\t\t\t\tref=\"select\"\n\t\t\t\t\tv-model=\"value\"\n\t\t\t\t\t:aria-label-combobox=\"t('Add to a project')\"\n\t\t\t\t\t:options=\"options\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t@close=\"isSelectOpen = false\"\n\t\t\t\t\t@open=\"isSelectOpen = true\"\n\t\t\t\t\t@option:selected=\"select\"\n\t\t\t\t\t@search=\"search\">\n\t\t\t\t\t<template #selected-option=\"option\">\n\t\t\t\t\t\t<span class=\"option__desc\">\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #option=\"option\">\n\t\t\t\t\t\t<span class=\"option__wrapper\">\n\t\t\t\t\t\t\t<span v-if=\"option.class\" :class=\"option.class\" class=\"avatar\" />\n\t\t\t\t\t\t\t<NcAvatar v-else-if=\"option.method !== 2\" allow-placeholder :display-name=\"option.title\" />\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<p class=\"hint\">\n\t\t\t\t\t\t{{ t('Connect items to a project to make them easier to find') }}\n\t\t\t\t\t</p>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t</li>\n\t\t<transition name=\"fade\">\n\t\t\t<li v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</li>\n\t\t</transition>\n\t\t<NcCollectionListItem\n\t\t\tv-for=\"collection in collections\"\n\t\t\t:key=\"collection.id\"\n\t\t\t:collection=\"collection\"\n\t\t\t:error=\"collectionsError[collection.id]\"\n\t\t\t@rename-collection=\"renameCollectionFromItem\"\n\t\t\t@remove-resource=\"removeResourceFromCollection\" />\n\t</ul>\n</template>\n\n<script>\nimport debounce from 'debounce'\nimport { ref } from 'vue'\nimport NcCollectionListItem from './NcCollectionListItem.vue'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport { searchService } from './service.ts'\nimport { useCollections } from './useCollections.js'\n\nconst METHOD_CREATE_COLLECTION = 0\nconst METHOD_ADD_TO_COLLECTION = 1\n\nexport default {\n\tname: 'NcCollectionList',\n\n\tcomponents: {\n\t\tNcCollectionListItem,\n\t\tNcAvatar,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Resource type identifier\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Unique id of the resource\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Name of the resource\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Whether the component is active (to start fetch resources)\n\t\t */\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t} = useCollections()\n\n\t\tconst searchCollections = ref([])\n\t\tconst search = debounce(function(query, loading) {\n\t\t\tif (query !== '') {\n\t\t\t\tloading(true)\n\t\t\t\tsearchService(query).then((collections) => {\n\t\t\t\t\tsearchCollections.value = collections\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tlogger.error('Failed to search for collections', { error })\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tloading(false)\n\t\t\t\t})\n\t\t\t}\n\t\t}, 500)\n\n\t\treturn {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t\tsearchCollections,\n\t\t\tsearch,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectIsOpen: false,\n\t\t\tgeneratingCodes: false,\n\t\t\tcodes: undefined,\n\t\t\tvalue: null,\n\t\t\tmodel: {},\n\t\t\tcollectionsError: {},\n\t\t\terror: null,\n\t\t\tisSelectOpen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcollections() {\n\t\t\treturn this.storedCollections.filter((collection) => collection.resources\n\t\t\t\t.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type))\n\t\t},\n\n\t\tplaceholder() {\n\t\t\treturn this.isSelectOpen\n\t\t\t\t? t('Type to search for existing projects')\n\t\t\t\t: t('Add to a project')\n\t\t},\n\n\t\toptions() {\n\t\t\tconst options = []\n\t\t\twindow.OCP.Collaboration.getTypes().sort().forEach((type) => {\n\t\t\t\toptions.push({\n\t\t\t\t\tmethod: METHOD_CREATE_COLLECTION,\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: window.OCP.Collaboration.getLabel(type),\n\t\t\t\t\tclass: window.OCP.Collaboration.getIcon(type),\n\t\t\t\t\taction: () => window.OCP.Collaboration.trigger(type),\n\t\t\t\t})\n\t\t\t})\n\t\t\tfor (const index in this.searchCollections) {\n\t\t\t\tif (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tmethod: METHOD_ADD_TO_COLLECTION,\n\t\t\t\t\t\ttitle: this.searchCollections[index].name,\n\t\t\t\t\t\tcollectionId: this.searchCollections[index].id,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options\n\t\t},\n\n\t\tresourceIdentifier() {\n\t\t\treturn {\n\t\t\t\tresourceType: this.type,\n\t\t\t\tresourceId: this.id,\n\t\t\t\tisActive: this.isActive,\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tresourceIdentifier: {\n\t\t\tdeep: true,\n\t\t\timmediate: true,\n\t\t\thandler(resourceIdentifier) {\n\t\t\t\tif (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.fetchCollectionsByResource(resourceIdentifier)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tselect(selectedOption) {\n\t\t\tif (selectedOption.method === METHOD_CREATE_COLLECTION) {\n\t\t\t\tselectedOption.action().then((resourceId) => {\n\t\t\t\t\tthis.createCollection({\n\t\t\t\t\t\tbaseResourceType: this.type,\n\t\t\t\t\t\tbaseResourceId: this.id,\n\t\t\t\t\t\tresourceType: selectedOption.type,\n\t\t\t\t\t\tresourceId,\n\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\tthis.setError(t('Failed to create a project'), e)\n\t\t\t\t\t})\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tlogger.error('No resource selected', { error })\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n\t\t\t\tthis.addResourceToCollection({\n\t\t\t\t\tcollectionId: selectedOption.collectionId, resourceType: this.type, resourceId: this.id,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.setError(t('Failed to add the item to the project'), e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.value = null\n\t\t},\n\n\t\tshowSelect() {\n\t\t\tthis.selectIsOpen = true\n\t\t\tthis.$refs.select.$el.focus()\n\t\t},\n\n\t\tsetError(error, e) {\n\t\t\tlogger.error(error, { error: e })\n\t\t\tthis.error = error\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.error = null\n\t\t\t}, 5000)\n\t\t},\n\n\t\trenameCollectionFromItem({ collectionId, name }) {\n\t\t\tthis.renameCollection({ collectionId, name })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error(t('Failed to rename the project'), { error })\n\t\t\t\t\tthis.collectionsError[collectionId] = t('Failed to rename the project')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.collectionsError[collectionId] = null\n\t\t\t\t\t}, 5000)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.collection-list * {\n\tbox-sizing: border-box;\n}\n\n.collection-list > li {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\n\t& > .avatar {\n\t\tmargin-top: 0;\n\t}\n}\n\n#collection-select-container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.v-select {\n\t// NcAvatar in the dropdown\n\tspan.avatar {\n\t\tdisplay: block;\n\t\tpadding: 16px;\n\t\topacity: .7;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\np.hint {\n\tz-index: 1;\n\t// fix alignment\n\tmargin-top: -16px;\n\tpadding: 8px 8px;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: normal;\n}\n\ndiv.avatar {\n\twidth: 32px;\n\theight: 32px;\n\tmargin: 0;\n\tpadding: 8px;\n\tbackground-color: var(--color-background-dark);\n\tmargin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects {\n\tdisplay: block;\n\tpadding: 8px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.option__wrapper {\n\tdisplay: flex;\n\n\t.avatar {\n\t\tdisplay: block;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-background-darker) !important;\n\t}\n\n\t.option__title {\n\t\tpadding: 4px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n\n</style>\n"],"names":["_sfc_main","NcAvatar","NcActions","NcActionButton","getRoute","t","axios","generateOcsUrl","ref","set","NcSelect","debounce","logger"],"mappings":"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"}