@nextcloud/vue 8.27.0 → 8.29.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 (503) hide show
  1. package/CHANGELOG.md +99 -25
  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/NcActionInput.cjs +1 -1
  7. package/dist/Components/NcActionInput.mjs +1 -1
  8. package/dist/Components/NcActionText.cjs +3 -3
  9. package/dist/Components/NcActionText.cjs.map +1 -1
  10. package/dist/Components/NcActionText.mjs +3 -3
  11. package/dist/Components/NcActionText.mjs.map +1 -1
  12. package/dist/Components/NcActionTextEditable.cjs +1 -1
  13. package/dist/Components/NcActionTextEditable.mjs +1 -1
  14. package/dist/Components/NcActions.cjs +1 -1
  15. package/dist/Components/NcActions.mjs +1 -1
  16. package/dist/Components/NcAppContent.cjs +1 -1
  17. package/dist/Components/NcAppContent.mjs +1 -1
  18. package/dist/Components/NcAppNavigation.cjs +1 -1
  19. package/dist/Components/NcAppNavigation.mjs +1 -1
  20. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  21. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  22. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  23. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  24. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  25. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  26. package/dist/Components/NcAppNavigationSearch.cjs +1 -1
  27. package/dist/Components/NcAppNavigationSearch.mjs +1 -1
  28. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  29. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  30. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  31. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  32. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  33. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  34. package/dist/Components/NcAppSidebar.cjs +1 -1
  35. package/dist/Components/NcAppSidebar.mjs +1 -1
  36. package/dist/Components/NcAvatar.cjs +1 -1
  37. package/dist/Components/NcAvatar.mjs +1 -1
  38. package/dist/Components/NcBreadcrumb.cjs +1 -1
  39. package/dist/Components/NcBreadcrumb.mjs +1 -1
  40. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  41. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  42. package/dist/Components/NcButton.cjs +15 -2
  43. package/dist/Components/NcButton.cjs.map +1 -1
  44. package/dist/Components/NcButton.mjs +15 -2
  45. package/dist/Components/NcButton.mjs.map +1 -1
  46. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  47. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  48. package/dist/Components/NcChip.cjs +4 -4
  49. package/dist/Components/NcChip.mjs +4 -4
  50. package/dist/Components/NcCollectionList.cjs +1 -1
  51. package/dist/Components/NcCollectionList.mjs +1 -1
  52. package/dist/Components/NcColorPicker.cjs +1 -1
  53. package/dist/Components/NcColorPicker.mjs +1 -1
  54. package/dist/Components/NcContent.cjs +1 -1
  55. package/dist/Components/NcContent.mjs +1 -1
  56. package/dist/Components/NcDashboardWidget.cjs +1 -1
  57. package/dist/Components/NcDashboardWidget.mjs +1 -1
  58. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  59. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  60. package/dist/Components/NcDateTime.cjs +1 -1
  61. package/dist/Components/NcDateTime.mjs +1 -1
  62. package/dist/Components/NcDateTimePicker.cjs +5 -5
  63. package/dist/Components/NcDateTimePicker.mjs +5 -5
  64. package/dist/Components/NcDateTimePickerNative.cjs +1 -1
  65. package/dist/Components/NcDateTimePickerNative.mjs +1 -1
  66. package/dist/Components/NcDialog.cjs +1 -1
  67. package/dist/Components/NcDialog.mjs +1 -1
  68. package/dist/Components/NcDialogButton.cjs +1 -1
  69. package/dist/Components/NcDialogButton.mjs +1 -1
  70. package/dist/Components/NcEmojiPicker.cjs +1 -1
  71. package/dist/Components/NcEmojiPicker.mjs +1 -1
  72. package/dist/Components/NcGuestContent.cjs +2 -2
  73. package/dist/Components/NcGuestContent.cjs.map +1 -1
  74. package/dist/Components/NcGuestContent.mjs +2 -2
  75. package/dist/Components/NcGuestContent.mjs.map +1 -1
  76. package/dist/Components/NcHeaderButton.cjs +1 -1
  77. package/dist/Components/NcHeaderButton.mjs +1 -1
  78. package/dist/Components/NcHeaderMenu.cjs +1 -1
  79. package/dist/Components/NcHeaderMenu.mjs +1 -1
  80. package/dist/Components/NcInputField.cjs +1 -1
  81. package/dist/Components/NcInputField.mjs +1 -1
  82. package/dist/Components/NcListItem.cjs +1 -1
  83. package/dist/Components/NcListItem.mjs +1 -1
  84. package/dist/Components/NcListItemIcon.cjs +1 -1
  85. package/dist/Components/NcListItemIcon.mjs +1 -1
  86. package/dist/Components/NcLoadingIcon.cjs +2 -2
  87. package/dist/Components/NcLoadingIcon.cjs.map +1 -1
  88. package/dist/Components/NcLoadingIcon.mjs +2 -2
  89. package/dist/Components/NcLoadingIcon.mjs.map +1 -1
  90. package/dist/Components/NcModal.cjs +8 -17
  91. package/dist/Components/NcModal.cjs.map +1 -1
  92. package/dist/Components/NcModal.mjs +8 -17
  93. package/dist/Components/NcModal.mjs.map +1 -1
  94. package/dist/Components/NcPasswordField.cjs +1 -1
  95. package/dist/Components/NcPasswordField.mjs +1 -1
  96. package/dist/Components/NcPopover.cjs +1 -1
  97. package/dist/Components/NcPopover.mjs +1 -1
  98. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  99. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  100. package/dist/Components/NcRichContenteditable.cjs +2 -2
  101. package/dist/Components/NcRichContenteditable.mjs +2 -2
  102. package/dist/Components/NcRichText.cjs +2 -2
  103. package/dist/Components/NcRichText.mjs +3 -3
  104. package/dist/Components/NcSavingIndicatorIcon.cjs +1 -1
  105. package/dist/Components/NcSavingIndicatorIcon.mjs +1 -1
  106. package/dist/Components/NcSelect.cjs +1 -1
  107. package/dist/Components/NcSelect.mjs +1 -1
  108. package/dist/Components/NcSelectTags.cjs +1 -1
  109. package/dist/Components/NcSelectTags.mjs +1 -1
  110. package/dist/Components/NcSelectUsers.cjs +1 -1
  111. package/dist/Components/NcSelectUsers.mjs +1 -1
  112. package/dist/Components/NcSettingsInputText.cjs +1 -1
  113. package/dist/Components/NcSettingsInputText.mjs +1 -1
  114. package/dist/Components/NcSettingsSection.cjs +1 -1
  115. package/dist/Components/NcSettingsSection.mjs +1 -1
  116. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  117. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  118. package/dist/Components/NcTextArea.cjs +1 -1
  119. package/dist/Components/NcTextArea.mjs +1 -1
  120. package/dist/Components/NcTextField.cjs +1 -1
  121. package/dist/Components/NcTextField.mjs +1 -1
  122. package/dist/Components/NcThemeProvider.cjs +4 -0
  123. package/dist/Components/NcThemeProvider.cjs.map +1 -0
  124. package/dist/Components/NcThemeProvider.mjs +5 -0
  125. package/dist/Components/NcThemeProvider.mjs.map +1 -0
  126. package/dist/Components/NcTimezonePicker.cjs +1 -1
  127. package/dist/Components/NcTimezonePicker.mjs +1 -1
  128. package/dist/Components/NcUserBubble.cjs +1 -1
  129. package/dist/Components/NcUserBubble.mjs +1 -1
  130. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  131. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  132. package/dist/Composables/useFormatDateTime.cjs +68 -0
  133. package/dist/Composables/useFormatDateTime.cjs.map +1 -0
  134. package/dist/Composables/useFormatDateTime.mjs +68 -0
  135. package/dist/Composables/useFormatDateTime.mjs.map +1 -0
  136. package/dist/Composables/useHotKey.cjs +13 -1
  137. package/dist/Composables/useHotKey.cjs.map +1 -1
  138. package/dist/Composables/useHotKey.mjs +13 -1
  139. package/dist/Composables/useHotKey.mjs.map +1 -1
  140. package/dist/Composables/useIsDarkTheme.cjs +23 -6
  141. package/dist/Composables/useIsDarkTheme.cjs.map +1 -1
  142. package/dist/Composables/useIsDarkTheme.mjs +24 -7
  143. package/dist/Composables/useIsDarkTheme.mjs.map +1 -1
  144. package/dist/Functions/dialog.cjs +19 -7
  145. package/dist/Functions/dialog.cjs.map +1 -1
  146. package/dist/Functions/dialog.mjs +19 -7
  147. package/dist/Functions/dialog.mjs.map +1 -1
  148. package/dist/Functions/reference.cjs +1 -1
  149. package/dist/Functions/reference.mjs +1 -1
  150. package/dist/Functions/usernameToColor.cjs +28 -2
  151. package/dist/Functions/usernameToColor.cjs.map +1 -1
  152. package/dist/Functions/usernameToColor.mjs +25 -2
  153. package/dist/Functions/usernameToColor.mjs.map +1 -1
  154. package/dist/Mixins/richEditor.cjs +1 -1
  155. package/dist/Mixins/richEditor.mjs +1 -1
  156. package/dist/assets/{NcActionButton-CuV1ITDb.css → NcActionButton-D8Lyueq3.css} +20 -17
  157. package/dist/assets/{NcActionInput-gUagFGC5.css → NcActionInput-Q0DfTHVL.css} +62 -62
  158. package/dist/assets/{NcActionText-vT7nheBU.css → NcActionText-Rad4JSXq.css} +18 -18
  159. package/dist/assets/{NcActions-3STB3u9J.css → NcActions-C3F-rqxz.css} +11 -11
  160. package/dist/assets/{NcAppContent-DUkkgtHn.css → NcAppContent-Bb5hgGi3.css} +23 -23
  161. package/dist/assets/{NcAppNavigationItem-CdT6ce8-.css → NcAppNavigationItem-Ca2ekElv.css} +35 -31
  162. package/dist/assets/{NcAppNavigationNewItem-D7wroqrc.css → NcAppNavigationNewItem-PE-w8y-g.css} +5 -1
  163. package/dist/assets/{NcAppSidebar-BFg2HHh6.css → NcAppSidebar-u0G_qQMh.css} +44 -67
  164. package/dist/assets/NcAvatar-BqNcvkxP.css +134 -0
  165. package/dist/assets/{NcButton-DnNZaEy_.css → NcButton-Cjx-v-Qz.css} +84 -72
  166. package/dist/assets/{NcCheckboxRadioSwitch-DlEieXCj.css → NcCheckboxRadioSwitch-B-axx3m7.css} +45 -42
  167. package/dist/assets/{NcColorPicker-BayJGD4p.css → NcColorPicker-C-3wb1sk.css} +28 -28
  168. package/dist/assets/{NcContent-Bq-7EZQc.css → NcContent-DH4tX3N4.css} +12 -9
  169. package/dist/assets/{NcDateTimePicker-hcAowAbZ.css → NcDateTimePicker-Bx7XHFo7.css} +7 -7
  170. package/dist/assets/{NcDialog-BPI0CJvw.css → NcDialog-X7BRqUGJ.css} +15 -15
  171. package/dist/assets/{NcGuestContent-B0ivUQHg.css → NcGuestContent-ByAkjts7.css} +2 -2
  172. package/dist/assets/{NcHeaderButton-Dr6MgPDQ.css → NcHeaderButton-ByNXqS7x.css} +4 -0
  173. package/dist/assets/{NcHeaderMenu-DN-HfTkh.css → NcHeaderMenu-Dp_vJKTP.css} +4 -0
  174. package/dist/assets/{NcInputField-GxJ-rf2p.css → NcInputField-Cdd0B1OR.css} +38 -32
  175. package/dist/assets/{NcListItem-DfaWGP5A.css → NcListItem-CCu1OBiG.css} +44 -44
  176. package/dist/assets/{NcLoadingIcon-x1d284UU.css → NcLoadingIcon-DbbToJVp.css} +5 -2
  177. package/dist/assets/{NcMentionBubble-CB5c5ue2.css → NcMentionBubble-UsTMm5VD.css} +9 -9
  178. package/dist/assets/{NcModal-BS5vtogq.css → NcModal-Cy3UOuI2.css} +62 -62
  179. package/dist/assets/{NcPasswordField-whtKJFcB.css → NcPasswordField-DVK8tuPi.css} +2 -2
  180. package/dist/assets/{NcRichContenteditable-BbOjh6i7.css → NcRichContenteditable-CGRMNrie.css} +9 -9
  181. package/dist/assets/{NcRichText-li93TNBn.css → NcRichText-CWVHZl8s.css} +86 -83
  182. package/dist/assets/NcSelectUsers-BOwQNNMf.css +4 -0
  183. package/dist/assets/{NcSettingsSection-_mX6UqM_.css → NcSettingsSection-uKqWTbhb.css} +8 -8
  184. package/dist/assets/{NcTextArea-fzbciv3V.css → NcTextArea-DhttRTsL.css} +20 -20
  185. package/dist/assets/{NcUserStatusIcon-DAVSJFhS.css → NcUserStatusIcon-ChHaXPex.css} +7 -7
  186. package/dist/chunks/{GenColors-7bkY5Nwl.cjs → GenColors-BnYS3bvv.cjs} +2 -2
  187. package/dist/chunks/{GenColors-7bkY5Nwl.cjs.map → GenColors-BnYS3bvv.cjs.map} +1 -1
  188. package/dist/chunks/{GenColors-B49R8TGp.mjs → GenColors-DNN63dHB.mjs} +2 -2
  189. package/dist/chunks/{GenColors-B49R8TGp.mjs.map → GenColors-DNN63dHB.mjs.map} +1 -1
  190. package/dist/chunks/{NcActionButton-CD87AU6W.cjs → NcActionButton-2qh96K_i.cjs} +4 -4
  191. package/dist/chunks/{NcActionButton-CD87AU6W.cjs.map → NcActionButton-2qh96K_i.cjs.map} +1 -1
  192. package/dist/chunks/{NcActionButton-CuVNJJtW.mjs → NcActionButton-CHrE7amZ.mjs} +4 -4
  193. package/dist/chunks/{NcActionButton-CuVNJJtW.mjs.map → NcActionButton-CHrE7amZ.mjs.map} +1 -1
  194. package/dist/chunks/{NcActionButtonGroup-BMy3W9fG.cjs → NcActionButtonGroup-B8Bj-Qb3.cjs} +2 -2
  195. package/dist/chunks/{NcActionButtonGroup-BMy3W9fG.cjs.map → NcActionButtonGroup-B8Bj-Qb3.cjs.map} +1 -1
  196. package/dist/chunks/{NcActionButtonGroup-DEf00ge6.mjs → NcActionButtonGroup-_R4fp-bK.mjs} +2 -2
  197. package/dist/chunks/{NcActionButtonGroup-DEf00ge6.mjs.map → NcActionButtonGroup-_R4fp-bK.mjs.map} +1 -1
  198. package/dist/chunks/{NcActionInput-B4qGsF57.mjs → NcActionInput-BXOssTbe.mjs} +12 -11
  199. package/dist/chunks/NcActionInput-BXOssTbe.mjs.map +1 -0
  200. package/dist/chunks/{NcActionInput-BmERg0FB.cjs → NcActionInput-Bv4_2oYO.cjs} +13 -11
  201. package/dist/chunks/NcActionInput-Bv4_2oYO.cjs.map +1 -0
  202. package/dist/chunks/{NcActionTextEditable-Cceub6Yt.cjs → NcActionTextEditable-DqcHZqN5.cjs} +2 -2
  203. package/dist/chunks/{NcActionTextEditable-Cceub6Yt.cjs.map → NcActionTextEditable-DqcHZqN5.cjs.map} +1 -1
  204. package/dist/chunks/{NcActionTextEditable-DNweMXRJ.mjs → NcActionTextEditable-xrMV-kE8.mjs} +2 -2
  205. package/dist/chunks/{NcActionTextEditable-DNweMXRJ.mjs.map → NcActionTextEditable-xrMV-kE8.mjs.map} +1 -1
  206. package/dist/chunks/{NcActions-B4VZCD8B.mjs → NcActions-BANvgaMn.mjs} +42 -9
  207. package/dist/chunks/NcActions-BANvgaMn.mjs.map +1 -0
  208. package/dist/chunks/{NcActions-B7DbEbCo.cjs → NcActions-DV3CjPHr.cjs} +42 -9
  209. package/dist/chunks/NcActions-DV3CjPHr.cjs.map +1 -0
  210. package/dist/chunks/{NcAppContent-B7ER65tk.cjs → NcAppContent-BqR67yTH.cjs} +44 -36
  211. package/dist/chunks/NcAppContent-BqR67yTH.cjs.map +1 -0
  212. package/dist/chunks/{NcAppContent-DyXqBrOB.mjs → NcAppContent-twZJBrQv.mjs} +44 -36
  213. package/dist/chunks/NcAppContent-twZJBrQv.mjs.map +1 -0
  214. package/dist/chunks/{NcAppNavigation-JyeZxhb6.cjs → NcAppNavigation-COge8_bn.cjs} +3 -3
  215. package/dist/chunks/{NcAppNavigation-JyeZxhb6.cjs.map → NcAppNavigation-COge8_bn.cjs.map} +1 -1
  216. package/dist/chunks/{NcAppNavigation-CqKWSnxO.mjs → NcAppNavigation-VSGTDckG.mjs} +3 -3
  217. package/dist/chunks/{NcAppNavigation-CqKWSnxO.mjs.map → NcAppNavigation-VSGTDckG.mjs.map} +1 -1
  218. package/dist/chunks/{NcAppNavigationCaption-CMnWvBgA.cjs → NcAppNavigationCaption-ofy-JSGu.cjs} +2 -2
  219. package/dist/chunks/{NcAppNavigationCaption-CMnWvBgA.cjs.map → NcAppNavigationCaption-ofy-JSGu.cjs.map} +1 -1
  220. package/dist/chunks/{NcAppNavigationCaption-DcgSwIOY.mjs → NcAppNavigationCaption-oxc7chGv.mjs} +2 -2
  221. package/dist/chunks/{NcAppNavigationCaption-DcgSwIOY.mjs.map → NcAppNavigationCaption-oxc7chGv.mjs.map} +1 -1
  222. package/dist/chunks/{NcAppNavigationItem-B9Gs5p7m.cjs → NcAppNavigationItem-B-uv2tWu.cjs} +8 -8
  223. package/dist/chunks/NcAppNavigationItem-B-uv2tWu.cjs.map +1 -0
  224. package/dist/chunks/{NcAppNavigationItem-CrTVtqYV.mjs → NcAppNavigationItem-CbtPNTg_.mjs} +8 -8
  225. package/dist/chunks/NcAppNavigationItem-CbtPNTg_.mjs.map +1 -0
  226. package/dist/chunks/{NcAppNavigationNewItem-CcBvnQst.mjs → NcAppNavigationNewItem-Cz8VbLjN.mjs} +3 -3
  227. package/dist/chunks/{NcAppNavigationNewItem-CcBvnQst.mjs.map → NcAppNavigationNewItem-Cz8VbLjN.mjs.map} +1 -1
  228. package/dist/chunks/{NcAppNavigationNewItem-BLek0JRU.cjs → NcAppNavigationNewItem-DzpW6cIK.cjs} +3 -3
  229. package/dist/chunks/{NcAppNavigationNewItem-BLek0JRU.cjs.map → NcAppNavigationNewItem-DzpW6cIK.cjs.map} +1 -1
  230. package/dist/chunks/{NcAppNavigationSearch-BC3kPnxr.mjs → NcAppNavigationSearch-BvCjwhyQ.mjs} +3 -3
  231. package/dist/chunks/{NcAppNavigationSearch-BC3kPnxr.mjs.map → NcAppNavigationSearch-BvCjwhyQ.mjs.map} +1 -1
  232. package/dist/chunks/{NcAppNavigationSearch-BblolNaS.cjs → NcAppNavigationSearch-s1mEjjZM.cjs} +3 -3
  233. package/dist/chunks/{NcAppNavigationSearch-BblolNaS.cjs.map → NcAppNavigationSearch-s1mEjjZM.cjs.map} +1 -1
  234. package/dist/chunks/{NcAppNavigationSettings-JruJ3cF1.mjs → NcAppNavigationSettings-DhQ5tXEJ.mjs} +5 -3
  235. package/dist/chunks/{NcAppNavigationSettings-JruJ3cF1.mjs.map → NcAppNavigationSettings-DhQ5tXEJ.mjs.map} +1 -1
  236. package/dist/chunks/{NcAppNavigationSettings-ppse1A0c.cjs → NcAppNavigationSettings-DnvFbZyP.cjs} +5 -3
  237. package/dist/chunks/{NcAppNavigationSettings-ppse1A0c.cjs.map → NcAppNavigationSettings-DnvFbZyP.cjs.map} +1 -1
  238. package/dist/chunks/{NcAppNavigationToggle-CUdNQwyN.mjs → NcAppNavigationToggle-CINjg2Mo.mjs} +2 -2
  239. package/dist/chunks/{NcAppNavigationToggle-CUdNQwyN.mjs.map → NcAppNavigationToggle-CINjg2Mo.mjs.map} +1 -1
  240. package/dist/chunks/{NcAppNavigationToggle-CUGOWggc.cjs → NcAppNavigationToggle-CbZem2gZ.cjs} +2 -2
  241. package/dist/chunks/{NcAppNavigationToggle-CUGOWggc.cjs.map → NcAppNavigationToggle-CbZem2gZ.cjs.map} +1 -1
  242. package/dist/chunks/{NcAppSettingsDialog-6cTux_qA.cjs → NcAppSettingsDialog-C1m0QYAK.cjs} +3 -3
  243. package/dist/chunks/{NcAppSettingsDialog-6cTux_qA.cjs.map → NcAppSettingsDialog-C1m0QYAK.cjs.map} +1 -1
  244. package/dist/chunks/{NcAppSettingsDialog-D98cLpyy.mjs → NcAppSettingsDialog-Duyfikm-.mjs} +3 -3
  245. package/dist/chunks/{NcAppSettingsDialog-D98cLpyy.mjs.map → NcAppSettingsDialog-Duyfikm-.mjs.map} +1 -1
  246. package/dist/chunks/{NcAppSidebar-BqMsSY-_.cjs → NcAppSidebar-C-7OzN3N.cjs} +7 -7
  247. package/dist/chunks/{NcAppSidebar-BdryV6wY.mjs.map → NcAppSidebar-C-7OzN3N.cjs.map} +1 -1
  248. package/dist/chunks/{NcAppSidebar-BdryV6wY.mjs → NcAppSidebar-ape8OSJ3.mjs} +7 -7
  249. package/dist/chunks/{NcAppSidebar-BqMsSY-_.cjs.map → NcAppSidebar-ape8OSJ3.mjs.map} +1 -1
  250. package/dist/chunks/{NcAvatar-YSp2ORHc.mjs → NcAvatar-BA6pHpbT.mjs} +37 -26
  251. package/dist/chunks/NcAvatar-BA6pHpbT.mjs.map +1 -0
  252. package/dist/chunks/{NcAvatar-D_1clyWB.cjs → NcAvatar-CdBMEKsO.cjs} +39 -28
  253. package/dist/chunks/NcAvatar-CdBMEKsO.cjs.map +1 -0
  254. package/dist/chunks/{NcBreadcrumb-BSRmcIIh.cjs → NcBreadcrumb-BiW4k0c_.cjs} +2 -2
  255. package/dist/chunks/{NcBreadcrumb-BSRmcIIh.cjs.map → NcBreadcrumb-BiW4k0c_.cjs.map} +1 -1
  256. package/dist/chunks/{NcBreadcrumb-Cu1XtrUo.mjs → NcBreadcrumb-BjsavDr1.mjs} +2 -2
  257. package/dist/chunks/{NcBreadcrumb-Cu1XtrUo.mjs.map → NcBreadcrumb-BjsavDr1.mjs.map} +1 -1
  258. package/dist/chunks/{NcBreadcrumbs-B1LdRe5_.mjs → NcBreadcrumbs-Bc2obqjl.mjs} +4 -4
  259. package/dist/chunks/{NcBreadcrumbs-B1LdRe5_.mjs.map → NcBreadcrumbs-Bc2obqjl.mjs.map} +1 -1
  260. package/dist/chunks/{NcBreadcrumbs-B0m6jKER.cjs → NcBreadcrumbs-Dwnn6dKU.cjs} +4 -4
  261. package/dist/chunks/{NcBreadcrumbs-B0m6jKER.cjs.map → NcBreadcrumbs-Dwnn6dKU.cjs.map} +1 -1
  262. package/dist/chunks/{NcCheckboxRadioSwitch-DbK49DI7.cjs → NcCheckboxRadioSwitch-ewtyZP3Z.cjs} +5 -5
  263. package/dist/chunks/NcCheckboxRadioSwitch-ewtyZP3Z.cjs.map +1 -0
  264. package/dist/chunks/{NcCheckboxRadioSwitch-VeztTzpz.mjs → NcCheckboxRadioSwitch-qmvgRzxb.mjs} +5 -5
  265. package/dist/chunks/NcCheckboxRadioSwitch-qmvgRzxb.mjs.map +1 -0
  266. package/dist/chunks/{NcCollectionList-BStYmq4u.cjs → NcCollectionList-C5nw4svt.cjs} +6 -6
  267. package/dist/chunks/{NcCollectionList-BStYmq4u.cjs.map → NcCollectionList-C5nw4svt.cjs.map} +1 -1
  268. package/dist/chunks/{NcCollectionList-CFt-EZON.mjs → NcCollectionList-CXAtmdEZ.mjs} +6 -6
  269. package/dist/chunks/{NcCollectionList-CFt-EZON.mjs.map → NcCollectionList-CXAtmdEZ.mjs.map} +1 -1
  270. package/dist/chunks/{NcColorPicker-D7aj2f61.mjs → NcColorPicker-CU2sbJKt.mjs} +63 -33
  271. package/dist/chunks/NcColorPicker-CU2sbJKt.mjs.map +1 -0
  272. package/dist/chunks/{NcColorPicker-T-ifFDNs.cjs → NcColorPicker-DkoxNQJS.cjs} +63 -33
  273. package/dist/chunks/NcColorPicker-DkoxNQJS.cjs.map +1 -0
  274. package/dist/chunks/{NcContent-Cfz3ytoh.mjs → NcContent-BkmB4vmh.mjs} +4 -4
  275. package/dist/chunks/{NcContent-DUUfYUtn.cjs.map → NcContent-BkmB4vmh.mjs.map} +1 -1
  276. package/dist/chunks/{NcContent-DUUfYUtn.cjs → NcContent-h4LUA1hj.cjs} +4 -4
  277. package/dist/chunks/{NcContent-Cfz3ytoh.mjs.map → NcContent-h4LUA1hj.cjs.map} +1 -1
  278. package/dist/chunks/{NcDashboardWidget-eStjL-WD.mjs → NcDashboardWidget-B_Egc1Og.mjs} +4 -4
  279. package/dist/chunks/{NcDashboardWidget-eStjL-WD.mjs.map → NcDashboardWidget-B_Egc1Og.mjs.map} +1 -1
  280. package/dist/chunks/{NcDashboardWidget-BI_Z44sc.cjs → NcDashboardWidget-EsWoGPKV.cjs} +4 -4
  281. package/dist/chunks/{NcDashboardWidget-BI_Z44sc.cjs.map → NcDashboardWidget-EsWoGPKV.cjs.map} +1 -1
  282. package/dist/chunks/{NcDashboardWidgetItem-BRFj1-Ir.mjs → NcDashboardWidgetItem-3oirT6j6.mjs} +4 -4
  283. package/dist/chunks/{NcDashboardWidgetItem-BRFj1-Ir.mjs.map → NcDashboardWidgetItem-3oirT6j6.mjs.map} +1 -1
  284. package/dist/chunks/{NcDashboardWidgetItem-gMKHqbAo.cjs → NcDashboardWidgetItem-qibYWTLk.cjs} +4 -4
  285. package/dist/chunks/{NcDashboardWidgetItem-gMKHqbAo.cjs.map → NcDashboardWidgetItem-qibYWTLk.cjs.map} +1 -1
  286. package/dist/chunks/NcDateTime-Cl-PZpLN.cjs +76 -0
  287. package/dist/chunks/NcDateTime-Cl-PZpLN.cjs.map +1 -0
  288. package/dist/chunks/NcDateTime-kanSdMgW.mjs +77 -0
  289. package/dist/chunks/NcDateTime-kanSdMgW.mjs.map +1 -0
  290. package/dist/chunks/{NcDialog-CKgpZOiy.mjs → NcDialog-C_IHQciE.mjs} +5 -5
  291. package/dist/chunks/{NcDialog-CKgpZOiy.mjs.map → NcDialog-C_IHQciE.mjs.map} +1 -1
  292. package/dist/chunks/{NcDialog-DvC6y1MC.cjs → NcDialog-Cqdo11BM.cjs} +5 -5
  293. package/dist/chunks/{NcDialog-DvC6y1MC.cjs.map → NcDialog-Cqdo11BM.cjs.map} +1 -1
  294. package/dist/chunks/{NcDialogButton-CROAi1Ll.mjs → NcDialogButton-Cc3iWZH1.mjs} +2 -2
  295. package/dist/chunks/{NcDialogButton-CROAi1Ll.mjs.map → NcDialogButton-Cc3iWZH1.mjs.map} +1 -1
  296. package/dist/chunks/{NcDialogButton-BFemrIUw.cjs → NcDialogButton-_biPxXPQ.cjs} +2 -2
  297. package/dist/chunks/{NcDialogButton-BFemrIUw.cjs.map → NcDialogButton-_biPxXPQ.cjs.map} +1 -1
  298. package/dist/chunks/{NcEmojiPicker-Du-vbR5T.mjs → NcEmojiPicker-C3rhl7Xh.mjs} +7 -7
  299. package/dist/chunks/{NcEmojiPicker-Du-vbR5T.mjs.map → NcEmojiPicker-C3rhl7Xh.mjs.map} +1 -1
  300. package/dist/chunks/{NcEmojiPicker-CtvRZuBW.cjs → NcEmojiPicker-Dynz_fRD.cjs} +7 -7
  301. package/dist/chunks/{NcEmojiPicker-CtvRZuBW.cjs.map → NcEmojiPicker-Dynz_fRD.cjs.map} +1 -1
  302. package/dist/chunks/{NcHeaderMenu-Dj7jeq88.mjs → NcHeaderMenu--AvoyMeD.mjs} +6 -4
  303. package/dist/chunks/{NcHeaderMenu-Dj7jeq88.mjs.map → NcHeaderMenu--AvoyMeD.mjs.map} +1 -1
  304. package/dist/chunks/{NcHeaderMenu-CCaYMhFb.cjs → NcHeaderMenu-B12nEFGc.cjs} +6 -4
  305. package/dist/chunks/{NcHeaderMenu-CCaYMhFb.cjs.map → NcHeaderMenu-B12nEFGc.cjs.map} +1 -1
  306. package/dist/chunks/{NcInputConfirmCancel-lVLFwBA4.cjs → NcInputConfirmCancel-BpPXGiKs.cjs} +2 -2
  307. package/dist/chunks/{NcInputConfirmCancel-lVLFwBA4.cjs.map → NcInputConfirmCancel-BpPXGiKs.cjs.map} +1 -1
  308. package/dist/chunks/{NcInputConfirmCancel-Dhbj3Gad.mjs → NcInputConfirmCancel-P1H1ymiB.mjs} +2 -2
  309. package/dist/chunks/{NcInputConfirmCancel-Dhbj3Gad.mjs.map → NcInputConfirmCancel-P1H1ymiB.mjs.map} +1 -1
  310. package/dist/chunks/{NcInputField-C61UUN46.cjs → NcInputField-CD_Jxnho.cjs} +11 -4
  311. package/dist/chunks/NcInputField-CD_Jxnho.cjs.map +1 -0
  312. package/dist/chunks/{NcInputField-DTtUueUZ.mjs → NcInputField-a50IXAHm.mjs} +11 -4
  313. package/dist/chunks/NcInputField-a50IXAHm.mjs.map +1 -0
  314. package/dist/chunks/{NcListItem-BVNMtN9D.cjs → NcListItem-BJLfBv4G.cjs} +10 -9
  315. package/dist/chunks/{NcListItem-BVNMtN9D.cjs.map → NcListItem-BJLfBv4G.cjs.map} +1 -1
  316. package/dist/chunks/{NcListItem-B4Uyn2AS.mjs → NcListItem-DIupNkcV.mjs} +10 -9
  317. package/dist/chunks/{NcListItem-B4Uyn2AS.mjs.map → NcListItem-DIupNkcV.mjs.map} +1 -1
  318. package/dist/chunks/{NcListItemIcon-C_sEE5Xw.cjs → NcListItemIcon-BGehR6IP.cjs} +5 -3
  319. package/dist/chunks/{NcListItemIcon-C_sEE5Xw.cjs.map → NcListItemIcon-BGehR6IP.cjs.map} +1 -1
  320. package/dist/chunks/{NcListItemIcon-0H1Pepui.mjs → NcListItemIcon-C2PVlvB7.mjs} +5 -3
  321. package/dist/chunks/{NcListItemIcon-0H1Pepui.mjs.map → NcListItemIcon-C2PVlvB7.mjs.map} +1 -1
  322. package/dist/chunks/{NcPasswordField-BCzIotoB.cjs → NcPasswordField-Bci0EOiA.cjs} +35 -19
  323. package/dist/chunks/NcPasswordField-Bci0EOiA.cjs.map +1 -0
  324. package/dist/chunks/{NcPasswordField-DNjegDVj.mjs → NcPasswordField-CNUa4WOq.mjs} +35 -19
  325. package/dist/chunks/NcPasswordField-CNUa4WOq.mjs.map +1 -0
  326. package/dist/chunks/{NcPopover-kYsewfff.mjs → NcPopover-4-YxCZOD.mjs} +2 -2
  327. package/dist/chunks/{NcPopover-kYsewfff.mjs.map → NcPopover-4-YxCZOD.mjs.map} +1 -1
  328. package/dist/chunks/{NcPopover-B2z7TwNr.cjs → NcPopover-DH2oMHFe.cjs} +2 -2
  329. package/dist/chunks/{NcPopover-B2z7TwNr.cjs.map → NcPopover-DH2oMHFe.cjs.map} +1 -1
  330. package/dist/chunks/{NcRelatedResourcesPanel-C9qkNtuo.cjs → NcRelatedResourcesPanel-D_4x0nYR.cjs} +2 -2
  331. package/dist/chunks/{NcRelatedResourcesPanel-C9qkNtuo.cjs.map → NcRelatedResourcesPanel-D_4x0nYR.cjs.map} +1 -1
  332. package/dist/chunks/{NcRelatedResourcesPanel-Y38zaKtn.mjs → NcRelatedResourcesPanel-qQK3J_qe.mjs} +2 -2
  333. package/dist/chunks/{NcRelatedResourcesPanel-Y38zaKtn.mjs.map → NcRelatedResourcesPanel-qQK3J_qe.mjs.map} +1 -1
  334. package/dist/chunks/{NcRichContenteditable-Df_eA-oc.cjs → NcRichContenteditable-BLXUzOmi.cjs} +20 -15
  335. package/dist/chunks/NcRichContenteditable-BLXUzOmi.cjs.map +1 -0
  336. package/dist/chunks/{NcRichContenteditable-B8UqleMX.mjs → NcRichContenteditable-C5Dfv3nk.mjs} +20 -15
  337. package/dist/chunks/NcRichContenteditable-C5Dfv3nk.mjs.map +1 -0
  338. package/dist/chunks/{NcRichText-CwXSzf21.mjs → NcRichText-BE5jQHKt.mjs} +10 -6
  339. package/dist/chunks/{NcRichText-BS22_NFb.cjs.map → NcRichText-BE5jQHKt.mjs.map} +1 -1
  340. package/dist/chunks/{NcRichText-BS22_NFb.cjs → NcRichText-Blh7R46K.cjs} +10 -6
  341. package/dist/chunks/{NcRichText-CwXSzf21.mjs.map → NcRichText-Blh7R46K.cjs.map} +1 -1
  342. package/dist/chunks/{NcSavingIndicatorIcon-nv1147dk.mjs → NcSavingIndicatorIcon-BPlY5Y9p.mjs} +2 -2
  343. package/dist/chunks/{NcSavingIndicatorIcon-nv1147dk.mjs.map → NcSavingIndicatorIcon-BPlY5Y9p.mjs.map} +1 -1
  344. package/dist/chunks/{NcSavingIndicatorIcon-Bu-zt4pR.cjs → NcSavingIndicatorIcon-DmGFZsmS.cjs} +2 -2
  345. package/dist/chunks/{NcSavingIndicatorIcon-Bu-zt4pR.cjs.map → NcSavingIndicatorIcon-DmGFZsmS.cjs.map} +1 -1
  346. package/dist/chunks/{NcSelect-CjUzohn5.mjs → NcSelect-B3fxFbfG.mjs} +3 -3
  347. package/dist/chunks/{NcSelect-CjUzohn5.mjs.map → NcSelect-B3fxFbfG.mjs.map} +1 -1
  348. package/dist/chunks/{NcSelect-D2xnxw4_.cjs → NcSelect-R8bPyBFL.cjs} +3 -3
  349. package/dist/chunks/{NcSelect-D2xnxw4_.cjs.map → NcSelect-R8bPyBFL.cjs.map} +1 -1
  350. package/dist/chunks/{NcSelectTags-wJN9J7_t.mjs → NcSelectTags-BxII3k6P.mjs} +3 -3
  351. package/dist/chunks/{NcSelectTags-wJN9J7_t.mjs.map → NcSelectTags-BxII3k6P.mjs.map} +1 -1
  352. package/dist/chunks/{NcSelectTags--3rrSgOf.cjs → NcSelectTags-CmOvIcGU.cjs} +3 -3
  353. package/dist/chunks/{NcSelectTags--3rrSgOf.cjs.map → NcSelectTags-CmOvIcGU.cjs.map} +1 -1
  354. package/dist/chunks/{NcSelectUsers-CtuVriGK.cjs → NcSelectUsers-4dbGg26c.cjs} +14 -8
  355. package/dist/chunks/{NcSelectUsers-CtuVriGK.cjs.map → NcSelectUsers-4dbGg26c.cjs.map} +1 -1
  356. package/dist/chunks/{NcSelectUsers-W17kOow7.mjs → NcSelectUsers-BlVsLFrq.mjs} +14 -8
  357. package/dist/chunks/{NcSelectUsers-W17kOow7.mjs.map → NcSelectUsers-BlVsLFrq.mjs.map} +1 -1
  358. package/dist/chunks/{NcSettingsInputText-BU1_SHOq.cjs → NcSettingsInputText-Cf-juMyF.cjs} +2 -2
  359. package/dist/chunks/{NcSettingsInputText-BU1_SHOq.cjs.map → NcSettingsInputText-Cf-juMyF.cjs.map} +1 -1
  360. package/dist/chunks/{NcSettingsInputText-YO053agL.mjs → NcSettingsInputText-DYN2i2d2.mjs} +2 -2
  361. package/dist/chunks/{NcSettingsInputText-YO053agL.mjs.map → NcSettingsInputText-DYN2i2d2.mjs.map} +1 -1
  362. package/dist/chunks/{NcSettingsSection-C76Kqeew.mjs → NcSettingsSection-DK0dtGcw.mjs} +8 -9
  363. package/dist/chunks/NcSettingsSection-DK0dtGcw.mjs.map +1 -0
  364. package/dist/chunks/{NcSettingsSection-Dcdxs1IN.cjs → NcSettingsSection-VrSMms0R.cjs} +8 -9
  365. package/dist/chunks/NcSettingsSection-VrSMms0R.cjs.map +1 -0
  366. package/dist/chunks/{NcSettingsSelectGroup-Dj0Cusng.cjs → NcSettingsSelectGroup-CutKYnV3.cjs} +3 -3
  367. package/dist/chunks/{NcSettingsSelectGroup-Dj0Cusng.cjs.map → NcSettingsSelectGroup-CutKYnV3.cjs.map} +1 -1
  368. package/dist/chunks/{NcSettingsSelectGroup-CH_kppKo.mjs → NcSettingsSelectGroup-buP5uEyf.mjs} +3 -3
  369. package/dist/chunks/{NcSettingsSelectGroup-CH_kppKo.mjs.map → NcSettingsSelectGroup-buP5uEyf.mjs.map} +1 -1
  370. package/dist/chunks/{NcTextArea-CYLGAGcO.cjs → NcTextArea-BUqxDVLX.cjs} +11 -4
  371. package/dist/chunks/NcTextArea-BUqxDVLX.cjs.map +1 -0
  372. package/dist/chunks/{NcTextArea-BHERsE_g.mjs → NcTextArea-C10S9llK.mjs} +11 -4
  373. package/dist/chunks/NcTextArea-C10S9llK.mjs.map +1 -0
  374. package/dist/chunks/{NcTextField-Uk5iD8o2.cjs → NcTextField-C24Y7Zzr.cjs} +30 -49
  375. package/dist/chunks/NcTextField-C24Y7Zzr.cjs.map +1 -0
  376. package/dist/chunks/{NcTextField-o_8gWurX.mjs → NcTextField-GdOVvMI8.mjs} +30 -49
  377. package/dist/chunks/NcTextField-GdOVvMI8.mjs.map +1 -0
  378. package/dist/chunks/NcThemeProvider-25ResoIv.mjs +53 -0
  379. package/dist/chunks/NcThemeProvider-25ResoIv.mjs.map +1 -0
  380. package/dist/chunks/NcThemeProvider-BqGPTeWg.cjs +52 -0
  381. package/dist/chunks/NcThemeProvider-BqGPTeWg.cjs.map +1 -0
  382. package/dist/chunks/{NcTimezonePicker-q46K1fSq.mjs → NcTimezonePicker-CHrv7H1J.mjs} +3 -3
  383. package/dist/chunks/{NcTimezonePicker-q46K1fSq.mjs.map → NcTimezonePicker-CHrv7H1J.mjs.map} +1 -1
  384. package/dist/chunks/{NcTimezonePicker-BZhgUp10.cjs → NcTimezonePicker-DiYxhC2U.cjs} +3 -3
  385. package/dist/chunks/{NcTimezonePicker-BZhgUp10.cjs.map → NcTimezonePicker-DiYxhC2U.cjs.map} +1 -1
  386. package/dist/chunks/{NcUserBubble-CQHrLJ0S.cjs → NcUserBubble-Bb2KMW2-.cjs} +3 -3
  387. package/dist/chunks/{NcUserBubble-CQHrLJ0S.cjs.map → NcUserBubble-Bb2KMW2-.cjs.map} +1 -1
  388. package/dist/chunks/{NcUserBubble-B3-E-5F5.mjs → NcUserBubble-DMHgoLZr.mjs} +3 -3
  389. package/dist/chunks/{NcUserBubble-B3-E-5F5.mjs.map → NcUserBubble-DMHgoLZr.mjs.map} +1 -1
  390. package/dist/chunks/NcUserStatusIcon-4MmJE11d.cjs +147 -0
  391. package/dist/chunks/NcUserStatusIcon-4MmJE11d.cjs.map +1 -0
  392. package/dist/chunks/NcUserStatusIcon-C1nS9t71.mjs +146 -0
  393. package/dist/chunks/NcUserStatusIcon-C1nS9t71.mjs.map +1 -0
  394. package/dist/chunks/{ScopeComponent-CsLxtFTy.cjs → ScopeComponent-CB6JQj2P.cjs} +2 -2
  395. package/dist/chunks/{ScopeComponent-CsLxtFTy.cjs.map → ScopeComponent-CB6JQj2P.cjs.map} +1 -1
  396. package/dist/chunks/{ScopeComponent-B1B5sM-c.mjs → ScopeComponent-DRKCxrLx.mjs} +2 -2
  397. package/dist/chunks/{ScopeComponent-B1B5sM-c.mjs.map → ScopeComponent-DRKCxrLx.mjs.map} +1 -1
  398. package/dist/chunks/_l10n-BU8-kQzN.mjs +145 -0
  399. package/dist/chunks/_l10n-BU8-kQzN.mjs.map +1 -0
  400. package/dist/chunks/_l10n-DpwcsAC3.cjs +144 -0
  401. package/dist/chunks/{_l10n-BiiXtYiP.cjs.map → _l10n-DpwcsAC3.cjs.map} +1 -1
  402. package/dist/chunks/constants-Bls5liKo.mjs +9 -0
  403. package/dist/chunks/constants-Bls5liKo.mjs.map +1 -0
  404. package/dist/chunks/constants-C_lA-vcp.cjs +8 -0
  405. package/dist/chunks/constants-C_lA-vcp.cjs.map +1 -0
  406. package/dist/chunks/{focusTrap-Vbgxe8ZX.cjs → focusTrap-DUTqW_IG.cjs} +6 -3
  407. package/dist/chunks/focusTrap-DUTqW_IG.cjs.map +1 -0
  408. package/dist/chunks/{focusTrap-DmkaYJTC.mjs → focusTrap-HJQ4pqHV.mjs} +6 -3
  409. package/dist/chunks/focusTrap-HJQ4pqHV.mjs.map +1 -0
  410. package/dist/chunks/getAvatarUrl-Du9Y3cPO.cjs +14 -0
  411. package/dist/chunks/getAvatarUrl-Du9Y3cPO.cjs.map +1 -0
  412. package/dist/chunks/getAvatarUrl-IhLacDEr.mjs +15 -0
  413. package/dist/chunks/getAvatarUrl-IhLacDEr.mjs.map +1 -0
  414. package/dist/chunks/{index-B0yHh7IW.cjs → index-AlIgEQXL.cjs} +12 -8
  415. package/dist/chunks/index-AlIgEQXL.cjs.map +1 -0
  416. package/dist/chunks/{index-Dpk-sL3D.mjs → index-B8gPNa8c.mjs} +12 -8
  417. package/dist/chunks/index-B8gPNa8c.mjs.map +1 -0
  418. package/dist/chunks/legacy-Brrs7mi9.cjs +4 -0
  419. package/dist/chunks/legacy-Brrs7mi9.cjs.map +1 -0
  420. package/dist/chunks/legacy-SvM_Of-C.mjs +5 -0
  421. package/dist/chunks/legacy-SvM_Of-C.mjs.map +1 -0
  422. package/dist/chunks/{mdi-YVKlPhQN.cjs → mdi-BqDPfc6J.cjs} +7 -1
  423. package/dist/chunks/{mdi-YVKlPhQN.cjs.map → mdi-BqDPfc6J.cjs.map} +1 -1
  424. package/dist/chunks/mdi-vLkDaZ9y.mjs +19 -0
  425. package/dist/chunks/{mdi-VRLMiqbd.mjs.map → mdi-vLkDaZ9y.mjs.map} +1 -1
  426. package/dist/chunks/{referencePickerModal-4kExxHbR.mjs → referencePickerModal-C9Ot-OgO.mjs} +6 -6
  427. package/dist/chunks/{referencePickerModal-4kExxHbR.mjs.map → referencePickerModal-C9Ot-OgO.mjs.map} +1 -1
  428. package/dist/chunks/{referencePickerModal-D4q4tELn.cjs → referencePickerModal-Yw2bZ96U.cjs} +6 -6
  429. package/dist/chunks/{referencePickerModal-D4q4tELn.cjs.map → referencePickerModal-Yw2bZ96U.cjs.map} +1 -1
  430. package/dist/chunks/{useTrapStackControl-BJmJdJak.cjs → useTrapStackControl-CTZTSUOt.cjs} +2 -2
  431. package/dist/chunks/{useTrapStackControl-BJmJdJak.cjs.map → useTrapStackControl-CTZTSUOt.cjs.map} +1 -1
  432. package/dist/chunks/{useTrapStackControl-b3A_383w.mjs → useTrapStackControl-yqM2SDEs.mjs} +2 -2
  433. package/dist/chunks/{useTrapStackControl-b3A_383w.mjs.map → useTrapStackControl-yqM2SDEs.mjs.map} +1 -1
  434. package/dist/composables/useFormatDateTime/index.d.ts +73 -0
  435. package/dist/composables/useIsDarkTheme/constants.d.ts +7 -0
  436. package/dist/composables/useIsDarkTheme/index.d.ts +7 -3
  437. package/dist/functions/dialog/index.d.ts +10 -14
  438. package/dist/functions/index.d.ts +1 -1
  439. package/dist/index.cjs +59 -53
  440. package/dist/index.cjs.map +1 -1
  441. package/dist/index.mjs +61 -56
  442. package/dist/index.mjs.map +1 -1
  443. package/dist/utils/focusTrap.d.ts +6 -0
  444. package/dist/utils/getAvatarUrl.d.ts +23 -1
  445. package/dist/utils/legacy.d.ts +1 -0
  446. package/package.json +44 -35
  447. package/dist/assets/NcAvatar-CRiCqAWQ.css +0 -132
  448. package/dist/assets/NcSelectUsers-CRH00RA2.css +0 -4
  449. package/dist/chunks/DotsHorizontal-BoI3vnhk.cjs +0 -37
  450. package/dist/chunks/DotsHorizontal-BoI3vnhk.cjs.map +0 -1
  451. package/dist/chunks/DotsHorizontal-C6LNsw4N.mjs +0 -38
  452. package/dist/chunks/DotsHorizontal-C6LNsw4N.mjs.map +0 -1
  453. package/dist/chunks/NcActionInput-B4qGsF57.mjs.map +0 -1
  454. package/dist/chunks/NcActionInput-BmERg0FB.cjs.map +0 -1
  455. package/dist/chunks/NcActions-B4VZCD8B.mjs.map +0 -1
  456. package/dist/chunks/NcActions-B7DbEbCo.cjs.map +0 -1
  457. package/dist/chunks/NcAppContent-B7ER65tk.cjs.map +0 -1
  458. package/dist/chunks/NcAppContent-DyXqBrOB.mjs.map +0 -1
  459. package/dist/chunks/NcAppNavigationItem-B9Gs5p7m.cjs.map +0 -1
  460. package/dist/chunks/NcAppNavigationItem-CrTVtqYV.mjs.map +0 -1
  461. package/dist/chunks/NcAvatar-D_1clyWB.cjs.map +0 -1
  462. package/dist/chunks/NcAvatar-YSp2ORHc.mjs.map +0 -1
  463. package/dist/chunks/NcCheckboxRadioSwitch-DbK49DI7.cjs.map +0 -1
  464. package/dist/chunks/NcCheckboxRadioSwitch-VeztTzpz.mjs.map +0 -1
  465. package/dist/chunks/NcColorPicker-D7aj2f61.mjs.map +0 -1
  466. package/dist/chunks/NcColorPicker-T-ifFDNs.cjs.map +0 -1
  467. package/dist/chunks/NcDateTime-C-kLQayi.cjs +0 -158
  468. package/dist/chunks/NcDateTime-C-kLQayi.cjs.map +0 -1
  469. package/dist/chunks/NcDateTime-DshRFtUU.mjs +0 -159
  470. package/dist/chunks/NcDateTime-DshRFtUU.mjs.map +0 -1
  471. package/dist/chunks/NcInputField-C61UUN46.cjs.map +0 -1
  472. package/dist/chunks/NcInputField-DTtUueUZ.mjs.map +0 -1
  473. package/dist/chunks/NcPasswordField-BCzIotoB.cjs.map +0 -1
  474. package/dist/chunks/NcPasswordField-DNjegDVj.mjs.map +0 -1
  475. package/dist/chunks/NcRichContenteditable-B8UqleMX.mjs.map +0 -1
  476. package/dist/chunks/NcRichContenteditable-Df_eA-oc.cjs.map +0 -1
  477. package/dist/chunks/NcSettingsSection-C76Kqeew.mjs.map +0 -1
  478. package/dist/chunks/NcSettingsSection-Dcdxs1IN.cjs.map +0 -1
  479. package/dist/chunks/NcTextArea-BHERsE_g.mjs.map +0 -1
  480. package/dist/chunks/NcTextArea-CYLGAGcO.cjs.map +0 -1
  481. package/dist/chunks/NcTextField-Uk5iD8o2.cjs.map +0 -1
  482. package/dist/chunks/NcTextField-o_8gWurX.mjs.map +0 -1
  483. package/dist/chunks/NcUserStatusIcon-cs42Lzdd.cjs +0 -139
  484. package/dist/chunks/NcUserStatusIcon-cs42Lzdd.cjs.map +0 -1
  485. package/dist/chunks/NcUserStatusIcon-kbPFeJV6.mjs +0 -138
  486. package/dist/chunks/NcUserStatusIcon-kbPFeJV6.mjs.map +0 -1
  487. package/dist/chunks/_l10n-BiiXtYiP.cjs +0 -143
  488. package/dist/chunks/_l10n-DQgzdF9S.mjs +0 -144
  489. package/dist/chunks/_l10n-DQgzdF9S.mjs.map +0 -1
  490. package/dist/chunks/focusTrap-DmkaYJTC.mjs.map +0 -1
  491. package/dist/chunks/focusTrap-Vbgxe8ZX.cjs.map +0 -1
  492. package/dist/chunks/getAvatarUrl-6z9qRNH-.cjs +0 -11
  493. package/dist/chunks/getAvatarUrl-6z9qRNH-.cjs.map +0 -1
  494. package/dist/chunks/getAvatarUrl-DxvUjKMi.mjs +0 -12
  495. package/dist/chunks/getAvatarUrl-DxvUjKMi.mjs.map +0 -1
  496. package/dist/chunks/index-B0yHh7IW.cjs.map +0 -1
  497. package/dist/chunks/index-Dpk-sL3D.mjs.map +0 -1
  498. package/dist/chunks/mdi-VRLMiqbd.mjs +0 -13
  499. package/dist/chunks/usernameToColor-mqInDrGv.cjs +0 -28
  500. package/dist/chunks/usernameToColor-mqInDrGv.cjs.map +0 -1
  501. package/dist/chunks/usernameToColor-yoVXn0De.mjs +0 -27
  502. package/dist/chunks/usernameToColor-yoVXn0De.mjs.map +0 -1
  503. package/dist/composables/useFormatDateTime.d.ts +0 -56
@@ -1 +1 @@
1
- {"version":3,"file":"NcSelectTags-wJN9J7_t.mjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? model : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : noop,\n\t\t\t'update:modelValue': passthru ? $listeners['update:modelValue'] : handleInput,\n\t\t\t'update:model-value': passthru ? $listeners['update:model-value'] : noop,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t */\n\t\t'input',\n\t\t/**\n\t\t * Emitted on input events of the multiselect field\n\t\t *\n\t\t * @type {number|number[]}\n\t\t */\n\t\t'update:modelValue',\n\t\t/** Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'input')\n\t\tconst noop = () => {}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tnoop,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.model\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.model)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.model = value.map(element => element.id)\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.model = null\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = value.id\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":[],"mappings":";;;;;;;AAQA,MAAM,YAAY,CAAC,QAAQ;AAC1B,MAAI,MAAM,CAAA;AAEV,MAAI,IAAI,aAAa,GAAG;AACvB,QAAI,IAAI,WAAW,SAAS,GAAG;AAC9B,UAAI,aAAa,IAAI,CAAA;AACrB,eAAS,IAAI,GAAG,IAAI,IAAI,WAAW,QAAQ,KAAK;AAC/C,cAAM,YAAY,IAAI,WAAW,KAAK,CAAC;AACvC,YAAI,aAAa,EAAE,UAAU,QAAQ,IAAI,UAAU;AAAA,MACvD;AAAA,IACA;AAAA,EACA,WAAY,IAAI,aAAa,GAAG;AAC9B,UAAM,IAAI;AAAA,EACZ;AAEC,MAAI,IAAI,iBAAiB;AACxB,aAAS,IAAI,GAAG,IAAI,IAAI,WAAW,QAAQ,KAAK;AAC/C,YAAM,OAAO,IAAI,WAAW,KAAK,CAAC;AAClC,YAAM,WAAW,KAAK;AACtB,UAAI,OAAQ,IAAI,QAAQ,MAAO,aAAa;AAC3C,YAAI,QAAQ,IAAI,UAAU,IAAI;AAAA,MAClC,OAAU;AACN,YAAI,OAAO,IAAI,QAAQ,EAAE,SAAS,aAAa;AAC9C,gBAAM,MAAM,IAAI,QAAQ;AACxB,cAAI,QAAQ,IAAI,CAAA;AAChB,cAAI,QAAQ,EAAE,KAAK,GAAG;AAAA,QAC3B;AACI,YAAI,QAAQ,EAAE,KAAK,UAAU,IAAI,CAAC;AAAA,MACtC;AAAA,IACA;AAAA,EACA;AACC,SAAO;AACR;AAEA,MAAM,WAAW,CAAC,QAAQ;AACzB,MAAI,MAAM;AACV,MAAI;AACH,UAAO,IAAI,UAAW,EAAE,gBAAgB,KAAK,UAAU;AAAA,EACvD,SAAQ,GAAG;AACX,YAAQ,MAAM,gCAAgC,CAAC;AAAA,EACjD;AACC,SAAO;AACR;AAEA,MAAM,eAAe,CAAC,QAAQ;AAC7B,QAAM,OAAO,UAAU,SAAS,GAAG,CAAC;AACpC,QAAM,OAAO,KAAK,eAAe,EAAE,YAAY;AAC/C,QAAM,SAAS,CAAA;AACf,aAAW,SAAS,MAAM;AACzB,UAAM,MAAM,KAAK,KAAK,EAAE,YAAY;AAEpC,QAAI,IAAI,UAAU,EAAE,OAAO,MAAM,mBAAmB;AACnD;AAAA,IACH;AACE,WAAO,KAAK;AAAA,MACX,IAAI,SAAS,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;AAAA,MAC5C,aAAa,IAAI,QAAQ,EAAE,iBAAiB,EAAE,OAAO;AAAA,MACrD,WAAW,IAAI,QAAQ,EAAE,eAAe,EAAE,OAAO,MAAM;AAAA,MACvD,gBAAgB,IAAI,QAAQ,EAAE,oBAAoB,EAAE,OAAO,MAAM;AAAA,MACjE,aAAa,IAAI,QAAQ,EAAE,iBAAiB,EAAE,OAAO,MAAM;AAAA,IAC3D,CAAA;AAAA,EACH;AACC,SAAO;AACR;AAEA,MAAM,aAAa,iBAAiB;AACnC,MAAI,OAAO,kBAAkB;AAC5B,WAAO,QAAQ,QAAQ,aAAa,OAAO,iBAAiB,IAAI,CAAC;AAAA,EACnE;AAEC,QAAM,SAAS,MAAM,MAAM;AAAA,IAC1B,QAAQ;AAAA,IACR,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAChC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUN,CAAA;AACD,SAAO,aAAa,OAAO,IAAI;AAChC;;ACwDA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA,IAEA,GAAA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,CAAA,WAAA;AACA,cAAA,EAAA,aAAA,aAAA,mBAAA;AACA,YAAA,gBAAA,OAAA;AACA,iBAAA,EAAA,qBAAA,EAAA,KAAA,YAAA,CAAA;AAAA,QACA;AACA,YAAA,mBAAA,OAAA;AACA,iBAAA,EAAA,sBAAA,EAAA,KAAA,YAAA,CAAA;AAAA,QACA;AACA,eAAA;AAAA,MACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAA,cAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA,CAAA,QAAA,OAAA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA,CAAA,QAAA,OAAA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,KAAA,CAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA,EACA;AAAA,EAEA,QAAA;AACA,UAAA,QAAA,kBAAA,SAAA,OAAA;AACA,UAAA,OAAA,MAAA;AAAA,IAAA;AACA,WAAA;AAAA,MACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,mBAAA;AACA,UAAA,KAAA,eAAA;AACA,eAAA,KAAA,KAAA,OAAA,KAAA,aAAA;AAAA,MACA;AACA,aAAA,KAAA;AAAA,IACA;AAAA,IAEA,aAAA;AACA,UAAA,KAAA,KAAA,WAAA,GAAA;AACA,eAAA,CAAA;AAAA,MACA;AACA,UAAA,KAAA,UAAA;AACA,eAAA,KAAA,MACA,OAAA,SAAA,QAAA,EAAA,EACA,IAAA,QAAA,KAAA,KAAA,KAAA,UAAA,KAAA,OAAA,EAAA,CAAA;AAAA,MACA,OAAA;AACA,eAAA,KAAA,KAAA,KAAA,SAAA,IAAA,OAAA,KAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,YAAA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA,GAAA;AAAA,MACA,IAAA,KAAA;AAEA,aAAA;AAAA,IACA;AAAA,IAEA,OAAA;AACA,UAAA,CAAA,KAAA,WAAA;AACA,eAAA,KAAA;AAAA,MACA;AACA,aAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,MAAA,UAAA;AACA,QAAA,CAAA,KAAA,WAAA;AACA;AAAA,IACA;AACA,QAAA;AACA,YAAA,SAAA,MAAA,WAAA;AACA,WAAA,gBAAA;AAAA,IACA,SAAA,OAAA;AACA,cAAA,MAAA,6BAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,YAAA,OAAA;AACA,UAAA,KAAA,UAAA;AAMA,aAAA,QAAA,MAAA,IAAA,aAAA,QAAA,EAAA;AAAA,MACA,OAAA;AACA,YAAA,UAAA,MAAA;AACA,eAAA,QAAA;AAAA,QACA,OAAA;AACA,eAAA,QAAA,MAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NcSelectTags-BxII3k6P.mjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? model : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : noop,\n\t\t\t'update:modelValue': passthru ? $listeners['update:modelValue'] : handleInput,\n\t\t\t'update:model-value': passthru ? $listeners['update:model-value'] : noop,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t */\n\t\t'input',\n\t\t/**\n\t\t * Emitted on input events of the multiselect field\n\t\t *\n\t\t * @type {number|number[]}\n\t\t */\n\t\t'update:modelValue',\n\t\t/** Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'input')\n\t\tconst noop = () => {}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tnoop,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.model\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.model)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.model = value.map(element => element.id)\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.model = null\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = value.id\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  const Components_NcEllipsisedOption = require("../Components/NcEllipsisedOption.cjs");
3
- const NcSelect = require("./NcSelect-D2xnxw4_.cjs");
3
+ const NcSelect = require("./NcSelect-R8bPyBFL.cjs");
4
4
  const axios = require("@nextcloud/axios");
5
5
  const router = require("@nextcloud/router");
6
- const _l10n = require("./_l10n-BiiXtYiP.cjs");
6
+ const _l10n = require("./_l10n-DpwcsAC3.cjs");
7
7
  const useModelMigration = require("./useModelMigration-D5zhrNXr.cjs");
8
8
  const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
9
9
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
@@ -322,4 +322,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
322
322
  );
323
323
  const NcSelectTags = __component__.exports;
324
324
  exports.NcSelectTags = NcSelectTags;
325
- //# sourceMappingURL=NcSelectTags--3rrSgOf.cjs.map
325
+ //# sourceMappingURL=NcSelectTags-CmOvIcGU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcSelectTags--3rrSgOf.cjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? model : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : noop,\n\t\t\t'update:modelValue': passthru ? $listeners['update:modelValue'] : handleInput,\n\t\t\t'update:model-value': passthru ? $listeners['update:model-value'] : noop,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t */\n\t\t'input',\n\t\t/**\n\t\t * Emitted on input events of the multiselect field\n\t\t *\n\t\t * @type {number|number[]}\n\t\t */\n\t\t'update:modelValue',\n\t\t/** Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'input')\n\t\tconst noop = () => {}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tnoop,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.model\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.model)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.model = value.map(element => element.id)\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.model = null\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = value.id\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["axios","generateRemoteUrl","NcEllipsisedOption","NcSelect","t","useModelMigration"],"mappings":"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"}
1
+ {"version":3,"file":"NcSelectTags-CmOvIcGU.cjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? model : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : noop,\n\t\t\t'update:modelValue': passthru ? $listeners['update:modelValue'] : handleInput,\n\t\t\t'update:model-value': passthru ? $listeners['update:model-value'] : noop,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t */\n\t\t'input',\n\t\t/**\n\t\t * Emitted on input events of the multiselect field\n\t\t *\n\t\t * @type {number|number[]}\n\t\t */\n\t\t'update:modelValue',\n\t\t/** Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'input')\n\t\tconst noop = () => {}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tnoop,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.model\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.model)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.model = value.map(element => element.id)\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.model = null\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = value.id\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["axios","generateRemoteUrl","NcEllipsisedOption","NcSelect","t","useModelMigration"],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- require('../assets/NcSelectUsers-CRH00RA2.css');
1
+ require('../assets/NcSelectUsers-BOwQNNMf.css');
2
2
  "use strict";
3
3
  const Vue = require("vue");
4
- const _l10n = require("./_l10n-BiiXtYiP.cjs");
4
+ const _l10n = require("./_l10n-DpwcsAC3.cjs");
5
5
  const GenRandomId = require("./GenRandomId-BQDud3d4.cjs");
6
- const NcListItemIcon = require("./NcListItemIcon-C_sEE5Xw.cjs");
7
- const NcSelect = require("./NcSelect-D2xnxw4_.cjs");
6
+ const NcListItemIcon = require("./NcListItemIcon-BGehR6IP.cjs");
7
+ const NcSelect = require("./NcSelect-R8bPyBFL.cjs");
8
8
  const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
9
9
  _l10n.register(_l10n.t15, _l10n.t43);
10
- const _sfc_main = {
10
+ const __default__ = {
11
+ model: {
12
+ prop: "modelValue",
13
+ event: "update:modelValue"
14
+ }
15
+ };
16
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
11
17
  __name: "NcSelectUsers",
12
18
  props: {
13
19
  /**
@@ -163,7 +169,7 @@ const _sfc_main = {
163
169
  }
164
170
  return { __sfc: true, props, emit, search, clickableArea, gridBaseLine, avatarSize, localFilterBy, NcListItemIcon: NcListItemIcon.NcListItemIcon, NcSelect: NcSelect.NcSelect };
165
171
  }
166
- };
172
+ });
167
173
  var _sfc_render = function render() {
168
174
  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
169
175
  return _c(_setup.NcSelect, _vm._b({ staticClass: "nc-select-users", attrs: { "filter-by": _setup.localFilterBy, "label": "displayName" }, on: { "search": function($event) {
@@ -183,8 +189,8 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
183
189
  _sfc_staticRenderFns,
184
190
  false,
185
191
  null,
186
- "ecb8da4e"
192
+ "09b0d8bb"
187
193
  );
188
194
  const NcSelectUsers = __component__.exports;
189
195
  exports.NcSelectUsers = NcSelectUsers;
190
- //# sourceMappingURL=NcSelectUsers-CtuVriGK.cjs.map
196
+ //# sourceMappingURL=NcSelectUsers-4dbGg26c.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcSelectUsers-CtuVriGK.cjs","sources":["../../src/components/NcSelectUsers/NcSelectUsers.vue"],"sourcesContent":["<!--\n\t- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n\t- SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Nextcloud user picker\n\n#### Examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelectUsers v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport svgAccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport svgEmail from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tkeepOpen: true,\n\t\t\tmultiple: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<script setup>\nimport { ref, watch } from 'vue'\nimport { t } from '../../l10n.js'\nimport createElementId from '../../utils/GenRandomId.js'\n\nimport NcListItemIcon from '../NcListItemIcon/NcListItemIcon.vue'\nimport NcSelect from '../NcSelect/NcSelect.vue'\n\nconst props = defineProps({\n\t/**\n\t * `aria-label` for the clear input button\n\t */\n\tariaLabelClearSelected: {\n\t\ttype: String,\n\t\tdefault: t('Clear selected'),\n\t},\n\n\t/**\n\t * `aria-label` for the listbox element\n\t */\n\tariaLabelListbox: {\n\t\ttype: String,\n\t\tdefault: t('Options'),\n\t},\n\n\t/**\n\t * Allows to customize the `aria-label` for the deselect-option button\n\t * The default is \"Deselect \" + optionLabel\n\t * @type {(optionLabel: string) => string}\n\t */\n\tariaLabelDeselectOption: {\n\t\ttype: Function,\n\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t},\n\n\t/**\n\t * Keep the dropdown open after selecting an entry.\n\t */\n\tkeepOpen: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable the component\n\t */\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Callback to determine if the provided option should match the current search text.\n\t * Used to determine if the option should be displayed.\n\t *\n\t * By default it filters by the `displayName` and `subname` properties of the user\n\t * option object unless this prop is set explicitly\n\t */\n\tfilterBy: {\n\t\ttype: Function,\n\t\tdefault: null,\n\t},\n\n\t/**\n\t * Input element id\n\t */\n\tinputId: {\n\t\ttype: String,\n\t\tdefault: () => createElementId(),\n\t},\n\n\t/**\n\t * Visible label for the input element\n\t *\n\t * @default 'Select account'\n\t */\n\tinputLabel: {\n\t\ttype: String,\n\t\tdefault: t('Select account'),\n\t},\n\n\t/**\n\t * Pass true if you are using an external label.\n\t * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n\t */\n\tlabelOutside: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Show a loading icon.\n\t *\n\t * @default false\n\t */\n\tloading: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Allow selection of multiple options\n\t *\n\t * @default false\n\t */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable automatic wrapping when selected options overflow the width.\n\t *\n\t * @default false\n\t */\n\tnoWrap: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Array of users.\n\t *\n\t * @type {{displayName: string, user: string, subname?: string, iconSvg?: string, iconName?: string, isGuest?: boolean, isNoUser?: boolean}[]}\n\t */\n\toptions: {\n\t\ttype: Array,\n\t\tdefault: () => [],\n\t},\n\n\t/**\n\t * Placeholder text.\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '',\n\t},\n\n\t/**\n\t * Enable if a value is required for native form validation\n\t */\n\trequired: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Currently selected value\n\t *\n\t * The `v-model` directive may be used for two-way data binding\n\t */\n\tmodelValue: {\n\t\ttype: Object,\n\t\tdefault: null,\n\t},\n})\n\nconst emit = defineEmits(['search', 'update:modelValue'])\n\nconst search = ref('')\nwatch(search, () => {\n\t/**\n\t * Emitted when the user enters some query.\n\t * This can be used to asynchronously fetch more options.\n\t */\n\temit('search', search.value)\n})\n\n// Avatar size so the component has the same size as Nc*Field\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\nconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\nconst avatarSize = clickableArea - 2 * gridBaseLine\n\n/**\n * Filter function to search users.\n *\n * @param {{subname: string}} option - The option to check\n * @param {string} label - The label of the option\n * @param {string} search - The current search string\n */\nfunction localFilterBy(option, label, search) {\n\tif (props.filterBy) {\n\t\treturn props.filterBy\n\t}\n\n\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\tconst match = search.match(EMAIL_NOTATION)\n\tconst subname = option.subname?.toLocaleLowerCase() ?? ''\n\treturn (match && subname.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t|| (`${label} ${option.subname}`\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n}\n</script>\n\n<template>\n\t<NcSelect class=\"nc-select-users\"\n\t\tv-bind=\"$props\"\n\t\t:filter-by=\"localFilterBy\"\n\t\tlabel=\"displayName\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option.displayName\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption.displayName\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<style scoped lang=\"css\">\n.nc-select-users :deep(.vs__selected) {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["ref","watch","search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqUA,UAAM,SAASA,IAAG,IAAC,EAAE;AACrBC,QAAK,MAAC,QAAQ,MAAM;AAKnB,WAAK,UAAU,OAAO,KAAK;AAAA,IAC5B,CAAC;AAGD,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AASvC,aAAS,cAAc,QAAQ,OAAOC,SAAQ;AAC7C,UAAI,MAAM,UAAU;AACnB,eAAO,MAAM;AAAA,MACf;AAGC,YAAM,iBAAiB;AAEvB,YAAM,QAAQA,QAAO,MAAM,cAAc;AACzC,YAAM,UAAU,OAAO,SAAS,kBAAiB,KAAM;AACvD,aAAQ,SAAS,QAAQ,QAAQ,MAAM,CAAC,EAAE,kBAAmB,CAAA,IAAI,MAC5D,GAAG,KAAK,IAAI,OAAO,OAAO,GAC5B,kBAAiB,EACjB,QAAQA,QAAO,kBAAmB,CAAA,IAAI;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NcSelectUsers-4dbGg26c.cjs","sources":["../../src/components/NcSelectUsers/NcSelectUsers.vue"],"sourcesContent":["<!--\n\t- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n\t- SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Nextcloud user picker\n\n#### Examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelectUsers v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport svgAccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport svgEmail from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tkeepOpen: true,\n\t\t\tmultiple: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<script setup>\nimport { ref, watch } from 'vue'\nimport { t } from '../../l10n.js'\nimport createElementId from '../../utils/GenRandomId.js'\n\nimport NcListItemIcon from '../NcListItemIcon/NcListItemIcon.vue'\nimport NcSelect from '../NcSelect/NcSelect.vue'\n\nconst props = defineProps({\n\t/**\n\t * `aria-label` for the clear input button\n\t */\n\tariaLabelClearSelected: {\n\t\ttype: String,\n\t\tdefault: t('Clear selected'),\n\t},\n\n\t/**\n\t * `aria-label` for the listbox element\n\t */\n\tariaLabelListbox: {\n\t\ttype: String,\n\t\tdefault: t('Options'),\n\t},\n\n\t/**\n\t * Allows to customize the `aria-label` for the deselect-option button\n\t * The default is \"Deselect \" + optionLabel\n\t * @type {(optionLabel: string) => string}\n\t */\n\tariaLabelDeselectOption: {\n\t\ttype: Function,\n\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t},\n\n\t/**\n\t * Keep the dropdown open after selecting an entry.\n\t */\n\tkeepOpen: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable the component\n\t */\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Callback to determine if the provided option should match the current search text.\n\t * Used to determine if the option should be displayed.\n\t *\n\t * By default it filters by the `displayName` and `subname` properties of the user\n\t * option object unless this prop is set explicitly\n\t */\n\tfilterBy: {\n\t\ttype: Function,\n\t\tdefault: null,\n\t},\n\n\t/**\n\t * Input element id\n\t */\n\tinputId: {\n\t\ttype: String,\n\t\tdefault: () => createElementId(),\n\t},\n\n\t/**\n\t * Visible label for the input element\n\t *\n\t * @default 'Select account'\n\t */\n\tinputLabel: {\n\t\ttype: String,\n\t\tdefault: t('Select account'),\n\t},\n\n\t/**\n\t * Pass true if you are using an external label.\n\t * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n\t */\n\tlabelOutside: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Show a loading icon.\n\t *\n\t * @default false\n\t */\n\tloading: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Allow selection of multiple options\n\t *\n\t * @default false\n\t */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable automatic wrapping when selected options overflow the width.\n\t *\n\t * @default false\n\t */\n\tnoWrap: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Array of users.\n\t *\n\t * @type {{displayName: string, user: string, subname?: string, iconSvg?: string, iconName?: string, isGuest?: boolean, isNoUser?: boolean}[]}\n\t */\n\toptions: {\n\t\ttype: Array,\n\t\tdefault: () => [],\n\t},\n\n\t/**\n\t * Placeholder text.\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '',\n\t},\n\n\t/**\n\t * Enable if a value is required for native form validation\n\t */\n\trequired: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Currently selected value\n\t *\n\t * The `v-model` directive may be used for two-way data binding\n\t */\n\tmodelValue: {\n\t\ttype: Object,\n\t\tdefault: null,\n\t},\n})\n\nconst emit = defineEmits(['search', 'update:modelValue'])\n\nconst search = ref('')\nwatch(search, () => {\n\t/**\n\t * Emitted when the user enters some query.\n\t * This can be used to asynchronously fetch more options.\n\t */\n\temit('search', search.value)\n})\n\n// Avatar size so the component has the same size as Nc*Field\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\nconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\nconst avatarSize = clickableArea - 2 * gridBaseLine\n\n/**\n * Filter function to search users.\n *\n * @param {{subname: string}} option - The option to check\n * @param {string} label - The label of the option\n * @param {string} search - The current search string\n */\nfunction localFilterBy(option, label, search) {\n\tif (props.filterBy) {\n\t\treturn props.filterBy\n\t}\n\n\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\tconst match = search.match(EMAIL_NOTATION)\n\tconst subname = option.subname?.toLocaleLowerCase() ?? ''\n\treturn (match && subname.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t|| (`${label} ${option.subname}`\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n}\n</script>\n\n<script>\n/** For backward compatibility with Vue 2 */\nexport default {\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n}\n</script>\n\n<template>\n\t<NcSelect class=\"nc-select-users\"\n\t\tv-bind=\"$props\"\n\t\t:filter-by=\"localFilterBy\"\n\t\tlabel=\"displayName\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option.displayName\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption.displayName\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<style scoped lang=\"css\">\n.nc-select-users :deep(.vs__selected) {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["ref","watch","search"],"mappings":";;;;;;;;AA6WA,MAAA,cAAe;AAAA,EACd,OAAO;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EACP;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA7CA,UAAM,SAASA,IAAG,IAAC,EAAE;AACrBC,QAAK,MAAC,QAAQ,MAAM;AAKnB,WAAK,UAAU,OAAO,KAAK;AAAA,IAC5B,CAAC;AAGD,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AASvC,aAAS,cAAc,QAAQ,OAAOC,SAAQ;AAC7C,UAAI,MAAM,UAAU;AACnB,eAAO,MAAM;AAAA,MACf;AAGC,YAAM,iBAAiB;AAEvB,YAAM,QAAQA,QAAO,MAAM,cAAc;AACzC,YAAM,UAAU,OAAO,SAAS,kBAAiB,KAAM;AACvD,aAAQ,SAAS,QAAQ,QAAQ,MAAM,CAAC,EAAE,kBAAmB,CAAA,IAAI,MAC5D,GAAG,KAAK,IAAI,OAAO,OAAO,GAC5B,kBAAiB,EACjB,QAAQA,QAAO,kBAAmB,CAAA,IAAI;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,12 +1,18 @@
1
- import '../assets/NcSelectUsers-CRH00RA2.css';
1
+ import '../assets/NcSelectUsers-BOwQNNMf.css';
2
2
  import { ref, watch } from "vue";
3
- import { r as register, i as t43, d as t15, a as t } from "./_l10n-DQgzdF9S.mjs";
3
+ import { r as register, j as t43, g as t15, a as t } from "./_l10n-BU8-kQzN.mjs";
4
4
  import { G as GenRandomId } from "./GenRandomId-CMooMQt0.mjs";
5
- import { N as NcListItemIcon } from "./NcListItemIcon-0H1Pepui.mjs";
6
- import { N as NcSelect } from "./NcSelect-CjUzohn5.mjs";
5
+ import { N as NcListItemIcon } from "./NcListItemIcon-C2PVlvB7.mjs";
6
+ import { N as NcSelect } from "./NcSelect-B3fxFbfG.mjs";
7
7
  import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
8
8
  register(t15, t43);
9
- const _sfc_main = {
9
+ const __default__ = {
10
+ model: {
11
+ prop: "modelValue",
12
+ event: "update:modelValue"
13
+ }
14
+ };
15
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
10
16
  __name: "NcSelectUsers",
11
17
  props: {
12
18
  /**
@@ -162,7 +168,7 @@ const _sfc_main = {
162
168
  }
163
169
  return { __sfc: true, props, emit, search, clickableArea, gridBaseLine, avatarSize, localFilterBy, NcListItemIcon, NcSelect };
164
170
  }
165
- };
171
+ });
166
172
  var _sfc_render = function render() {
167
173
  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
168
174
  return _c(_setup.NcSelect, _vm._b({ staticClass: "nc-select-users", attrs: { "filter-by": _setup.localFilterBy, "label": "displayName" }, on: { "search": function($event) {
@@ -182,10 +188,10 @@ var __component__ = /* @__PURE__ */ normalizeComponent(
182
188
  _sfc_staticRenderFns,
183
189
  false,
184
190
  null,
185
- "ecb8da4e"
191
+ "09b0d8bb"
186
192
  );
187
193
  const NcSelectUsers = __component__.exports;
188
194
  export {
189
195
  NcSelectUsers as N
190
196
  };
191
- //# sourceMappingURL=NcSelectUsers-W17kOow7.mjs.map
197
+ //# sourceMappingURL=NcSelectUsers-BlVsLFrq.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcSelectUsers-W17kOow7.mjs","sources":["../../src/components/NcSelectUsers/NcSelectUsers.vue"],"sourcesContent":["<!--\n\t- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n\t- SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Nextcloud user picker\n\n#### Examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelectUsers v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport svgAccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport svgEmail from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tkeepOpen: true,\n\t\t\tmultiple: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<script setup>\nimport { ref, watch } from 'vue'\nimport { t } from '../../l10n.js'\nimport createElementId from '../../utils/GenRandomId.js'\n\nimport NcListItemIcon from '../NcListItemIcon/NcListItemIcon.vue'\nimport NcSelect from '../NcSelect/NcSelect.vue'\n\nconst props = defineProps({\n\t/**\n\t * `aria-label` for the clear input button\n\t */\n\tariaLabelClearSelected: {\n\t\ttype: String,\n\t\tdefault: t('Clear selected'),\n\t},\n\n\t/**\n\t * `aria-label` for the listbox element\n\t */\n\tariaLabelListbox: {\n\t\ttype: String,\n\t\tdefault: t('Options'),\n\t},\n\n\t/**\n\t * Allows to customize the `aria-label` for the deselect-option button\n\t * The default is \"Deselect \" + optionLabel\n\t * @type {(optionLabel: string) => string}\n\t */\n\tariaLabelDeselectOption: {\n\t\ttype: Function,\n\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t},\n\n\t/**\n\t * Keep the dropdown open after selecting an entry.\n\t */\n\tkeepOpen: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable the component\n\t */\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Callback to determine if the provided option should match the current search text.\n\t * Used to determine if the option should be displayed.\n\t *\n\t * By default it filters by the `displayName` and `subname` properties of the user\n\t * option object unless this prop is set explicitly\n\t */\n\tfilterBy: {\n\t\ttype: Function,\n\t\tdefault: null,\n\t},\n\n\t/**\n\t * Input element id\n\t */\n\tinputId: {\n\t\ttype: String,\n\t\tdefault: () => createElementId(),\n\t},\n\n\t/**\n\t * Visible label for the input element\n\t *\n\t * @default 'Select account'\n\t */\n\tinputLabel: {\n\t\ttype: String,\n\t\tdefault: t('Select account'),\n\t},\n\n\t/**\n\t * Pass true if you are using an external label.\n\t * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n\t */\n\tlabelOutside: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Show a loading icon.\n\t *\n\t * @default false\n\t */\n\tloading: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Allow selection of multiple options\n\t *\n\t * @default false\n\t */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable automatic wrapping when selected options overflow the width.\n\t *\n\t * @default false\n\t */\n\tnoWrap: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Array of users.\n\t *\n\t * @type {{displayName: string, user: string, subname?: string, iconSvg?: string, iconName?: string, isGuest?: boolean, isNoUser?: boolean}[]}\n\t */\n\toptions: {\n\t\ttype: Array,\n\t\tdefault: () => [],\n\t},\n\n\t/**\n\t * Placeholder text.\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '',\n\t},\n\n\t/**\n\t * Enable if a value is required for native form validation\n\t */\n\trequired: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Currently selected value\n\t *\n\t * The `v-model` directive may be used for two-way data binding\n\t */\n\tmodelValue: {\n\t\ttype: Object,\n\t\tdefault: null,\n\t},\n})\n\nconst emit = defineEmits(['search', 'update:modelValue'])\n\nconst search = ref('')\nwatch(search, () => {\n\t/**\n\t * Emitted when the user enters some query.\n\t * This can be used to asynchronously fetch more options.\n\t */\n\temit('search', search.value)\n})\n\n// Avatar size so the component has the same size as Nc*Field\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\nconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\nconst avatarSize = clickableArea - 2 * gridBaseLine\n\n/**\n * Filter function to search users.\n *\n * @param {{subname: string}} option - The option to check\n * @param {string} label - The label of the option\n * @param {string} search - The current search string\n */\nfunction localFilterBy(option, label, search) {\n\tif (props.filterBy) {\n\t\treturn props.filterBy\n\t}\n\n\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\tconst match = search.match(EMAIL_NOTATION)\n\tconst subname = option.subname?.toLocaleLowerCase() ?? ''\n\treturn (match && subname.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t|| (`${label} ${option.subname}`\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n}\n</script>\n\n<template>\n\t<NcSelect class=\"nc-select-users\"\n\t\tv-bind=\"$props\"\n\t\t:filter-by=\"localFilterBy\"\n\t\tlabel=\"displayName\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option.displayName\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption.displayName\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<style scoped lang=\"css\">\n.nc-select-users :deep(.vs__selected) {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqUA,UAAM,SAAS,IAAI,EAAE;AACrB,UAAM,QAAQ,MAAM;AAKnB,WAAK,UAAU,OAAO,KAAK;AAAA,IAC5B,CAAC;AAGD,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AASvC,aAAS,cAAc,QAAQ,OAAOA,SAAQ;AAC7C,UAAI,MAAM,UAAU;AACnB,eAAO,MAAM;AAAA,MACf;AAGC,YAAM,iBAAiB;AAEvB,YAAM,QAAQA,QAAO,MAAM,cAAc;AACzC,YAAM,UAAU,OAAO,SAAS,kBAAiB,KAAM;AACvD,aAAQ,SAAS,QAAQ,QAAQ,MAAM,CAAC,EAAE,kBAAmB,CAAA,IAAI,MAC5D,GAAG,KAAK,IAAI,OAAO,OAAO,GAC5B,kBAAiB,EACjB,QAAQA,QAAO,kBAAmB,CAAA,IAAI;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NcSelectUsers-BlVsLFrq.mjs","sources":["../../src/components/NcSelectUsers/NcSelectUsers.vue"],"sourcesContent":["<!--\n\t- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n\t- SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Nextcloud user picker\n\n#### Examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelectUsers v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport svgAccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport svgEmail from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tkeepOpen: true,\n\t\t\tmultiple: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\ticonSvg: svgAccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: svgEmail,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<script setup>\nimport { ref, watch } from 'vue'\nimport { t } from '../../l10n.js'\nimport createElementId from '../../utils/GenRandomId.js'\n\nimport NcListItemIcon from '../NcListItemIcon/NcListItemIcon.vue'\nimport NcSelect from '../NcSelect/NcSelect.vue'\n\nconst props = defineProps({\n\t/**\n\t * `aria-label` for the clear input button\n\t */\n\tariaLabelClearSelected: {\n\t\ttype: String,\n\t\tdefault: t('Clear selected'),\n\t},\n\n\t/**\n\t * `aria-label` for the listbox element\n\t */\n\tariaLabelListbox: {\n\t\ttype: String,\n\t\tdefault: t('Options'),\n\t},\n\n\t/**\n\t * Allows to customize the `aria-label` for the deselect-option button\n\t * The default is \"Deselect \" + optionLabel\n\t * @type {(optionLabel: string) => string}\n\t */\n\tariaLabelDeselectOption: {\n\t\ttype: Function,\n\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t},\n\n\t/**\n\t * Keep the dropdown open after selecting an entry.\n\t */\n\tkeepOpen: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable the component\n\t */\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Callback to determine if the provided option should match the current search text.\n\t * Used to determine if the option should be displayed.\n\t *\n\t * By default it filters by the `displayName` and `subname` properties of the user\n\t * option object unless this prop is set explicitly\n\t */\n\tfilterBy: {\n\t\ttype: Function,\n\t\tdefault: null,\n\t},\n\n\t/**\n\t * Input element id\n\t */\n\tinputId: {\n\t\ttype: String,\n\t\tdefault: () => createElementId(),\n\t},\n\n\t/**\n\t * Visible label for the input element\n\t *\n\t * @default 'Select account'\n\t */\n\tinputLabel: {\n\t\ttype: String,\n\t\tdefault: t('Select account'),\n\t},\n\n\t/**\n\t * Pass true if you are using an external label.\n\t * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n\t */\n\tlabelOutside: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Show a loading icon.\n\t *\n\t * @default false\n\t */\n\tloading: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Allow selection of multiple options\n\t *\n\t * @default false\n\t */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Disable automatic wrapping when selected options overflow the width.\n\t *\n\t * @default false\n\t */\n\tnoWrap: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Array of users.\n\t *\n\t * @type {{displayName: string, user: string, subname?: string, iconSvg?: string, iconName?: string, isGuest?: boolean, isNoUser?: boolean}[]}\n\t */\n\toptions: {\n\t\ttype: Array,\n\t\tdefault: () => [],\n\t},\n\n\t/**\n\t * Placeholder text.\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '',\n\t},\n\n\t/**\n\t * Enable if a value is required for native form validation\n\t */\n\trequired: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\n\t/**\n\t * Currently selected value\n\t *\n\t * The `v-model` directive may be used for two-way data binding\n\t */\n\tmodelValue: {\n\t\ttype: Object,\n\t\tdefault: null,\n\t},\n})\n\nconst emit = defineEmits(['search', 'update:modelValue'])\n\nconst search = ref('')\nwatch(search, () => {\n\t/**\n\t * Emitted when the user enters some query.\n\t * This can be used to asynchronously fetch more options.\n\t */\n\temit('search', search.value)\n})\n\n// Avatar size so the component has the same size as Nc*Field\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\nconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\nconst avatarSize = clickableArea - 2 * gridBaseLine\n\n/**\n * Filter function to search users.\n *\n * @param {{subname: string}} option - The option to check\n * @param {string} label - The label of the option\n * @param {string} search - The current search string\n */\nfunction localFilterBy(option, label, search) {\n\tif (props.filterBy) {\n\t\treturn props.filterBy\n\t}\n\n\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\tconst match = search.match(EMAIL_NOTATION)\n\tconst subname = option.subname?.toLocaleLowerCase() ?? ''\n\treturn (match && subname.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t|| (`${label} ${option.subname}`\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n}\n</script>\n\n<script>\n/** For backward compatibility with Vue 2 */\nexport default {\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n}\n</script>\n\n<template>\n\t<NcSelect class=\"nc-select-users\"\n\t\tv-bind=\"$props\"\n\t\t:filter-by=\"localFilterBy\"\n\t\tlabel=\"displayName\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option.displayName\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption.displayName\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<style scoped lang=\"css\">\n.nc-select-users :deep(.vs__selected) {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["search"],"mappings":";;;;;;;AA6WA,MAAA,cAAe;AAAA,EACd,OAAO;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EACP;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA7CA,UAAM,SAAS,IAAI,EAAE;AACrB,UAAM,QAAQ,MAAM;AAKnB,WAAK,UAAU,OAAO,KAAK;AAAA,IAC5B,CAAC;AAGD,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AASvC,aAAS,cAAc,QAAQ,OAAOA,SAAQ;AAC7C,UAAI,MAAM,UAAU;AACnB,eAAO,MAAM;AAAA,MACf;AAGC,YAAM,iBAAiB;AAEvB,YAAM,QAAQA,QAAO,MAAM,cAAc;AACzC,YAAM,UAAU,OAAO,SAAS,kBAAiB,KAAM;AACvD,aAAQ,SAAS,QAAQ,QAAQ,MAAM,CAAC,EAAE,kBAAmB,CAAA,IAAI,MAC5D,GAAG,KAAK,IAAI,OAAO,OAAO,GAC5B,kBAAiB,EACjB,QAAQA,QAAO,kBAAmB,CAAA,IAAI;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  require('../assets/NcSettingsInputText-Bsp_6DjJ.css');
2
2
  "use strict";
3
- const _l10n = require("./_l10n-BiiXtYiP.cjs");
3
+ const _l10n = require("./_l10n-DpwcsAC3.cjs");
4
4
  const GenRandomId = require("./GenRandomId-BQDud3d4.cjs");
5
5
  const useModelMigration = require("./useModelMigration-D5zhrNXr.cjs");
6
6
  const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
@@ -128,4 +128,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
128
128
  );
129
129
  const NcSettingsInputText = __component__.exports;
130
130
  exports.NcSettingsInputText = NcSettingsInputText;
131
- //# sourceMappingURL=NcSettingsInputText-BU1_SHOq.cjs.map
131
+ //# sourceMappingURL=NcSettingsInputText-Cf-juMyF.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcSettingsInputText-BU1_SHOq.cjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsInputText v-model=\"value\" label=\"Label\" hint=\"Hint\" />\n\t\t<NcSettingsInputText label=\"Label\" model-value=\"Value\" hint=\"Hint\" disabled />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: ''\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"model\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\n\tmodel: {\n\t\tprop: 'value',\n\t\tevent: 'update:value',\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\t modelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\t'update:value',\n\t\t/**\n\t\t * Emitted when the inputs value changes\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\t'update:modelValue',\n\t\t/* Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'update:value')\n\t\treturn {\n\t\t\tmodel,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\tthis.model = event.target.value\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":["GenRandomId","useModelMigration","t"],"mappings":";;;;;;AAwDA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAAA,wBAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,QAAA;AACA,UAAA,QAAAC,oCAAA,SAAA,cAAA;AACA,WAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAAC,MAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AACA,WAAA,QAAA,MAAA,OAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NcSettingsInputText-Cf-juMyF.cjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsInputText v-model=\"value\" label=\"Label\" hint=\"Hint\" />\n\t\t<NcSettingsInputText label=\"Label\" model-value=\"Value\" hint=\"Hint\" disabled />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: ''\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"model\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\n\tmodel: {\n\t\tprop: 'value',\n\t\tevent: 'update:value',\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\t modelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\t'update:value',\n\t\t/**\n\t\t * Emitted when the inputs value changes\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\t'update:modelValue',\n\t\t/* Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'update:value')\n\t\treturn {\n\t\t\tmodel,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\tthis.model = event.target.value\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":["GenRandomId","useModelMigration","t"],"mappings":";;;;;;AAwDA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAAA,wBAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,QAAA;AACA,UAAA,QAAAC,oCAAA,SAAA,cAAA;AACA,WAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAAC,MAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AACA,WAAA,QAAA,MAAA,OAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import '../assets/NcSettingsInputText-Bsp_6DjJ.css';
2
- import { r as register, h as t47, a as t } from "./_l10n-DQgzdF9S.mjs";
2
+ import { r as register, i as t47, a as t } from "./_l10n-BU8-kQzN.mjs";
3
3
  import { G as GenRandomId } from "./GenRandomId-CMooMQt0.mjs";
4
4
  import { u as useModelMigration } from "./useModelMigration-EhAWvqDD.mjs";
5
5
  import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
@@ -129,4 +129,4 @@ const NcSettingsInputText = __component__.exports;
129
129
  export {
130
130
  NcSettingsInputText as N
131
131
  };
132
- //# sourceMappingURL=NcSettingsInputText-YO053agL.mjs.map
132
+ //# sourceMappingURL=NcSettingsInputText-DYN2i2d2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NcSettingsInputText-YO053agL.mjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsInputText v-model=\"value\" label=\"Label\" hint=\"Hint\" />\n\t\t<NcSettingsInputText label=\"Label\" model-value=\"Value\" hint=\"Hint\" disabled />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: ''\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"model\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\n\tmodel: {\n\t\tprop: 'value',\n\t\tevent: 'update:value',\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\t modelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\t'update:value',\n\t\t/**\n\t\t * Emitted when the inputs value changes\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\t'update:modelValue',\n\t\t/* Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'update:value')\n\t\treturn {\n\t\t\tmodel,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\tthis.model = event.target.value\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":[],"mappings":";;;;;AAwDA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAA,YAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,QAAA;AACA,UAAA,QAAA,kBAAA,SAAA,cAAA;AACA,WAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AACA,WAAA,QAAA,MAAA,OAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NcSettingsInputText-DYN2i2d2.mjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsInputText v-model=\"value\" label=\"Label\" hint=\"Hint\" />\n\t\t<NcSettingsInputText label=\"Label\" model-value=\"Value\" hint=\"Hint\" disabled />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: ''\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"model\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\nimport { useModelMigration } from '../../composables/useModelMigration.ts'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\n\tmodel: {\n\t\tprop: 'value',\n\t\tevent: 'update:value',\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Removed in v9 - use `modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\t modelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * Removed in v9 - use `update:modelValue` (`v-model`) instead\n\t\t * @deprecated\n\t\t */\n\t\t'update:value',\n\t\t/**\n\t\t * Emitted when the inputs value changes\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\t'update:modelValue',\n\t\t/* Same as update:modelValue for Vue 2 compatibility */\n\t\t'update:model-value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tsetup() {\n\t\tconst model = useModelMigration('value', 'update:value')\n\t\treturn {\n\t\t\tmodel,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\tthis.model = event.target.value\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":[],"mappings":";;;;;AAwDA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAA,YAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,QAAA;AACA,UAAA,QAAA,kBAAA,SAAA,cAAA;AACA,WAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AACA,WAAA,QAAA,MAAA,OAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
- import '../assets/NcSettingsSection-_mX6UqM_.css';
2
- import { r as register, w as t23, a as t } from "./_l10n-DQgzdF9S.mjs";
1
+ import '../assets/NcSettingsSection-uKqWTbhb.css';
2
+ import { loadState } from "@nextcloud/initial-state";
3
+ import { r as register, v as t23, a as t } from "./_l10n-BU8-kQzN.mjs";
3
4
  import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
4
5
  register(t23);
5
6
  const _sfc_main$1 = {
@@ -35,6 +36,8 @@ var __component__$1 = /* @__PURE__ */ normalizeComponent(
35
36
  null
36
37
  );
37
38
  const HelpCircle = __component__$1.exports;
39
+ const [major] = loadState("core", "config", { version: "30.0" }).version.split(".", 2) ?? [];
40
+ const isLegacy = major && Number.parseInt(major) < 30;
38
41
  const _sfc_main = {
39
42
  name: "NcSettingsSection",
40
43
  components: {
@@ -74,11 +77,7 @@ const _sfc_main = {
74
77
  },
75
78
  computed: {
76
79
  forceLimitWidth() {
77
- if (this.limitWidth) {
78
- return true;
79
- }
80
- const [major] = window._oc_config?.version.split(".", 2) ?? [];
81
- return major && Number.parseInt(major) >= 30;
80
+ return this.limitWidth || !isLegacy;
82
81
  },
83
82
  hasDescription() {
84
83
  return this.description.length > 0;
@@ -99,10 +98,10 @@ var __component__ = /* @__PURE__ */ normalizeComponent(
99
98
  _sfc_staticRenderFns,
100
99
  false,
101
100
  null,
102
- "6f6953b5"
101
+ "5e563b2b"
103
102
  );
104
103
  const NcSettingsSection = __component__.exports;
105
104
  export {
106
105
  NcSettingsSection as N
107
106
  };
108
- //# sourceMappingURL=NcSettingsSection-C76Kqeew.mjs.map
107
+ //# sourceMappingURL=NcSettingsSection-DK0dtGcw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcSettingsSection-DK0dtGcw.mjs","sources":["../../node_modules/vue-material-design-icons/HelpCircle.vue","../../src/components/NcSettingsSection/NcSettingsSection.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon help-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"HelpCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis component is to be used in the settings section of nextcloud.\n\n### Examples\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsSection name=\"Two-factor authentication\"\n\t\t\tdescription=\"Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/19/go.php?to=admin-2fa\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnforce two-factor authentication\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"Server-side encryption\"\n\t\t\tdescription=\"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnable server-side encryption\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"OAuth 2.0 clients\"\n\t\t\tdescription=\"OAuth 2.0 allows external services to request access to Nextcloud.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/oauth2.html\">\n\n\t\t\tAny content here\n\n\t\t</NcSettingsSection>\n\t</div>\n</template>\n```\n</docs>\n\n<template>\n\t<div class=\"settings-section\" :class=\"{'settings-section--limit-width': forceLimitWidth}\">\n\t\t<h2 class=\"settings-section__name\">\n\t\t\t{{ name }}\n\t\t\t<a v-if=\"hasDocUrl\"\n\t\t\t\t:href=\"docUrl\"\n\t\t\t\tclass=\"settings-section__info\"\n\t\t\t\t:title=\"docNameTranslated\"\n\t\t\t\t:aria-label=\"docNameTranslated\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer nofollow\">\n\t\t\t\t<HelpCircle :size=\"20\" />\n\t\t\t</a>\n\t\t</h2>\n\t\t<p v-if=\"hasDescription\"\n\t\t\tclass=\"settings-section__desc\">\n\t\t\t{{ description }}\n\t\t</p>\n\t\t<slot />\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '../../l10n.js'\n\nimport HelpCircle from 'vue-material-design-icons/HelpCircle.vue'\n\n// Overwrite this on Nextcloud 30+ to always limit the width\nconst [major] = loadState('core', 'config', { version: '30.0' }).version.split('.', 2) ?? []\nconst isLegacy = major && Number.parseInt(major) < 30\n\nexport default {\n\tname: 'NcSettingsSection',\n\n\tcomponents: {\n\t\tHelpCircle,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdocUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Limit the width of the setting's content\n\t\t *\n\t\t * Setting this to false allows unrestricted (width) settings content.\n\t\t * Note that the name and description have always a width limit.\n\t\t * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n\t\t */\n\t\tlimitWidth: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdocNameTranslated: t('External documentation for {name}', {\n\t\t\t\tname: this.name,\n\t\t\t}),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tforceLimitWidth() {\n\t\t\treturn this.limitWidth || !isLegacy\n\t\t},\n\n\t\thasDescription() {\n\t\t\treturn this.description.length > 0\n\t\t},\n\t\thasDocUrl() {\n\t\t\treturn this.docUrl.length > 0\n\t\t},\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n$maxWidth: 900px;\n\n.settings-section {\n\tdisplay: block;\n\tmargin-bottom: auto;\n\tpadding: 30px;\n\n\t&:not(:last-child) {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&--limit-width > * {\n\t\tmax-width: $maxWidth;\n\t}\n\n\t&__name {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tfont-size: 20px;\n\t\tfont-weight: bold;\n\t\tmax-width: $maxWidth;\n\t\tmargin-top: 0; // Remove default heading margin\n\t}\n\n\t&__info {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\t// make sure to properly align the icon with the text\n\t\tmargin: calc($icon-margin * -1);\n\t\tmargin-inline-start: 0;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&:hover, &:focus, &:active {\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t}\n\n\t&__desc {\n\t\tmargin-top: -.2em;\n\t\tmargin-bottom: 1em;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmax-width: $maxWidth;\n\t}\n}\n\n</style>\n"],"names":["_sfc_main"],"mappings":";;;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;ACmCA,MAAA,CAAA,KAAA,IAAA,UAAA,QAAA,UAAA,EAAA,SAAA,OAAA,CAAA,EAAA,QAAA,MAAA,KAAA,CAAA,KAAA,CAAA;AACA,MAAA,WAAA,SAAA,OAAA,SAAA,KAAA,IAAA;AAEA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,mBAAA,EAAA,qCAAA;AAAA,QACA,MAAA,KAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kBAAA;AACA,aAAA,KAAA,cAAA,CAAA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,aAAA,KAAA,YAAA,SAAA;AAAA,IACA;AAAA,IACA,YAAA;AACA,aAAA,KAAA,OAAA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
@@ -1,6 +1,7 @@
1
- require('../assets/NcSettingsSection-_mX6UqM_.css');
1
+ require('../assets/NcSettingsSection-uKqWTbhb.css');
2
2
  "use strict";
3
- const _l10n = require("./_l10n-BiiXtYiP.cjs");
3
+ const initialState = require("@nextcloud/initial-state");
4
+ const _l10n = require("./_l10n-DpwcsAC3.cjs");
4
5
  const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
5
6
  _l10n.register(_l10n.t23);
6
7
  const _sfc_main$1 = {
@@ -36,6 +37,8 @@ var __component__$1 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
36
37
  null
37
38
  );
38
39
  const HelpCircle = __component__$1.exports;
40
+ const [major] = initialState.loadState("core", "config", { version: "30.0" }).version.split(".", 2) ?? [];
41
+ const isLegacy = major && Number.parseInt(major) < 30;
39
42
  const _sfc_main = {
40
43
  name: "NcSettingsSection",
41
44
  components: {
@@ -75,11 +78,7 @@ const _sfc_main = {
75
78
  },
76
79
  computed: {
77
80
  forceLimitWidth() {
78
- if (this.limitWidth) {
79
- return true;
80
- }
81
- const [major] = window._oc_config?.version.split(".", 2) ?? [];
82
- return major && Number.parseInt(major) >= 30;
81
+ return this.limitWidth || !isLegacy;
83
82
  },
84
83
  hasDescription() {
85
84
  return this.description.length > 0;
@@ -100,8 +99,8 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
100
99
  _sfc_staticRenderFns,
101
100
  false,
102
101
  null,
103
- "6f6953b5"
102
+ "5e563b2b"
104
103
  );
105
104
  const NcSettingsSection = __component__.exports;
106
105
  exports.NcSettingsSection = NcSettingsSection;
107
- //# sourceMappingURL=NcSettingsSection-Dcdxs1IN.cjs.map
106
+ //# sourceMappingURL=NcSettingsSection-VrSMms0R.cjs.map