@nextcloud/vue 8.9.0 → 8.10.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 (311) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +4 -2
  3. package/dist/Components/NcActionButtonGroup.cjs +1 -1
  4. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  5. package/dist/Components/NcActionInput.cjs +1 -1
  6. package/dist/Components/NcActionInput.mjs +1 -1
  7. package/dist/Components/NcActions.cjs +1 -1
  8. package/dist/Components/NcActions.mjs +1 -1
  9. package/dist/Components/NcAppContent.cjs +1 -1
  10. package/dist/Components/NcAppContent.mjs +1 -1
  11. package/dist/Components/NcAppNavigation.cjs +1 -1
  12. package/dist/Components/NcAppNavigation.mjs +1 -1
  13. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  14. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  15. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  16. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  17. package/dist/Components/NcAppNavigationList.cjs +2 -2
  18. package/dist/Components/NcAppNavigationList.cjs.map +1 -1
  19. package/dist/Components/NcAppNavigationList.mjs +4 -4
  20. package/dist/Components/NcAppNavigationList.mjs.map +1 -1
  21. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  22. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  23. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  24. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  25. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  26. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  27. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  28. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  29. package/dist/Components/NcAppSidebar.cjs +1 -1
  30. package/dist/Components/NcAppSidebar.mjs +1 -1
  31. package/dist/Components/NcAvatar.cjs +1 -1
  32. package/dist/Components/NcAvatar.mjs +1 -1
  33. package/dist/Components/NcBreadcrumb.cjs +1 -1
  34. package/dist/Components/NcBreadcrumb.mjs +1 -1
  35. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  36. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  37. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  38. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  39. package/dist/Components/NcColorPicker.cjs +1 -1
  40. package/dist/Components/NcColorPicker.mjs +1 -1
  41. package/dist/Components/NcContent.cjs +1 -1
  42. package/dist/Components/NcContent.mjs +1 -1
  43. package/dist/Components/NcDashboardWidget.cjs +1 -1
  44. package/dist/Components/NcDashboardWidget.mjs +1 -1
  45. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  46. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  47. package/dist/Components/NcDateTime.cjs +1 -1
  48. package/dist/Components/NcDateTime.mjs +1 -1
  49. package/dist/Components/NcDateTimePicker.cjs +2 -2
  50. package/dist/Components/NcDateTimePicker.mjs +4 -4
  51. package/dist/Components/NcDateTimePickerNative.cjs +1 -1
  52. package/dist/Components/NcDateTimePickerNative.mjs +1 -1
  53. package/dist/Components/NcEmojiPicker.cjs +1 -1
  54. package/dist/Components/NcEmojiPicker.mjs +1 -1
  55. package/dist/Components/NcListItem.cjs +1 -1
  56. package/dist/Components/NcListItem.mjs +1 -1
  57. package/dist/Components/NcListItemIcon.cjs +1 -1
  58. package/dist/Components/NcListItemIcon.mjs +1 -1
  59. package/dist/Components/NcModal.cjs +1 -1
  60. package/dist/Components/NcModal.mjs +3 -3
  61. package/dist/Components/NcPasswordField.cjs +1 -1
  62. package/dist/Components/NcPasswordField.mjs +1 -1
  63. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  64. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  65. package/dist/Components/NcRichContenteditable.cjs +1 -1
  66. package/dist/Components/NcRichContenteditable.mjs +2 -2
  67. package/dist/Components/NcRichText.cjs +1 -1
  68. package/dist/Components/NcRichText.mjs +3 -3
  69. package/dist/Components/NcSelect.cjs +1 -1
  70. package/dist/Components/NcSelect.mjs +1 -1
  71. package/dist/Components/NcSelectTags.cjs +1 -1
  72. package/dist/Components/NcSelectTags.mjs +1 -1
  73. package/dist/Components/NcSettingsInputText.cjs +1 -1
  74. package/dist/Components/NcSettingsInputText.mjs +1 -1
  75. package/dist/Components/NcSettingsSection.cjs +1 -1
  76. package/dist/Components/NcSettingsSection.mjs +1 -1
  77. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  78. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  79. package/dist/Components/NcTextField.cjs +1 -1
  80. package/dist/Components/NcTextField.mjs +1 -1
  81. package/dist/Components/NcTimezonePicker.cjs +1 -1
  82. package/dist/Components/NcTimezonePicker.mjs +1 -1
  83. package/dist/Components/NcUserBubble.cjs +1 -1
  84. package/dist/Components/NcUserBubble.mjs +1 -1
  85. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  86. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  87. package/dist/Functions/reference.cjs +1 -1
  88. package/dist/Functions/reference.mjs +1 -1
  89. package/dist/Functions/usernameToColor.cjs +1 -1
  90. package/dist/Functions/usernameToColor.mjs +1 -1
  91. package/dist/Mixins/richEditor.cjs +1 -1
  92. package/dist/Mixins/richEditor.mjs +1 -1
  93. package/dist/assets/{NcActions-CEbgl0_n.css → NcActions-DL7ZZIjx.css} +12 -12
  94. package/dist/assets/{NcAppContent-Cv8rRTyy.css → NcAppContent-DcXMrsBz.css} +32 -23
  95. package/dist/assets/{NcAppNavigation-D4ZBCJrI.css → NcAppNavigation-BgGJuJPv.css} +15 -19
  96. package/dist/assets/{NcAppNavigationList-Bj9PwL4X.css → NcAppNavigationList-CUnaMQQD.css} +4 -4
  97. package/dist/assets/{NcDateTimePicker-BChLYJ5X.css → NcDateTimePicker-DR7jRFm4.css} +10 -10
  98. package/dist/assets/NcListItem-DLFj1G31.css +175 -0
  99. package/dist/assets/{NcRelatedResourcesPanel-COW9gzml.css → NcRelatedResourcesPanel-D6K7OQFJ.css} +19 -13
  100. package/dist/assets/{NcRichContenteditable-CtbqXSHe.css → NcRichContenteditable-DvTdg1DO.css} +12 -12
  101. package/dist/assets/{NcRichText-BMe-xENJ.css → NcRichText-D2BBsB-_.css} +65 -65
  102. package/dist/assets/{referencePickerModal-C1KJzICb.css → referencePickerModal-DZ7qJeiJ.css} +19 -19
  103. package/dist/chunks/{GenColors-vI-bx9ZY.cjs → GenColors-DQEIzxqb.cjs} +1 -1
  104. package/dist/chunks/{GenColors-vI-bx9ZY.cjs.map → GenColors-DQEIzxqb.cjs.map} +1 -1
  105. package/dist/chunks/{GenColors-BteFtwOv.mjs → GenColors-SIdMEx1i.mjs} +1 -1
  106. package/dist/chunks/{GenColors-BteFtwOv.mjs.map → GenColors-SIdMEx1i.mjs.map} +1 -1
  107. package/dist/chunks/{NcActionButtonGroup-BdxkXNwc.cjs → NcActionButtonGroup-B47_9Jpc.cjs} +1 -1
  108. package/dist/chunks/{NcActionButtonGroup-BdxkXNwc.cjs.map → NcActionButtonGroup-B47_9Jpc.cjs.map} +1 -1
  109. package/dist/chunks/{NcActionButtonGroup-SS3PkUD2.mjs → NcActionButtonGroup-D6_CIr2e.mjs} +1 -1
  110. package/dist/chunks/{NcActionButtonGroup-SS3PkUD2.mjs.map → NcActionButtonGroup-D6_CIr2e.mjs.map} +1 -1
  111. package/dist/chunks/{NcActionInput-D308ZntG.cjs → NcActionInput-BPPLjfW5.cjs} +1 -1
  112. package/dist/chunks/{NcActionInput-D308ZntG.cjs.map → NcActionInput-BPPLjfW5.cjs.map} +1 -1
  113. package/dist/chunks/{NcActionInput-BHq3Le0q.mjs → NcActionInput-GZcIfn-2.mjs} +4 -4
  114. package/dist/chunks/{NcActionInput-BHq3Le0q.mjs.map → NcActionInput-GZcIfn-2.mjs.map} +1 -1
  115. package/dist/chunks/{NcActions-Dfkog_G0.cjs → NcActions-B049TCK5.cjs} +144 -85
  116. package/dist/chunks/NcActions-B049TCK5.cjs.map +1 -0
  117. package/dist/chunks/{NcActions-CpU9WXzM.mjs → NcActions-D2wvJbMw.mjs} +144 -85
  118. package/dist/chunks/NcActions-D2wvJbMw.mjs.map +1 -0
  119. package/dist/chunks/{NcAppContent-BDwOdxJE.mjs → NcAppContent-CUnQ4EVa.mjs} +67 -40
  120. package/dist/chunks/NcAppContent-CUnQ4EVa.mjs.map +1 -0
  121. package/dist/chunks/{NcAppContent-kqYjKpzU.cjs → NcAppContent-CuOJJPbt.cjs} +59 -32
  122. package/dist/chunks/NcAppContent-CuOJJPbt.cjs.map +1 -0
  123. package/dist/chunks/{NcAppNavigation-BRtyTvKt.mjs → NcAppNavigation-Dl1g_orJ.mjs} +26 -24
  124. package/dist/chunks/NcAppNavigation-Dl1g_orJ.mjs.map +1 -0
  125. package/dist/chunks/{NcAppNavigation-DMxORgkV.cjs → NcAppNavigation-DtxPGDOf.cjs} +19 -18
  126. package/dist/chunks/NcAppNavigation-DtxPGDOf.cjs.map +1 -0
  127. package/dist/chunks/{NcAppNavigationCaption-BKchbDsJ.cjs → NcAppNavigationCaption-BefNtbTx.cjs} +1 -1
  128. package/dist/chunks/{NcAppNavigationCaption-BKchbDsJ.cjs.map → NcAppNavigationCaption-BefNtbTx.cjs.map} +1 -1
  129. package/dist/chunks/{NcAppNavigationCaption-DsT6O4Hx.mjs → NcAppNavigationCaption-g4NsNSvL.mjs} +1 -1
  130. package/dist/chunks/{NcAppNavigationCaption-DsT6O4Hx.mjs.map → NcAppNavigationCaption-g4NsNSvL.mjs.map} +1 -1
  131. package/dist/chunks/{NcAppNavigationItem-bjPcEx5D.mjs → NcAppNavigationItem-BSV20azN.mjs} +3 -3
  132. package/dist/chunks/{NcAppNavigationItem-bjPcEx5D.mjs.map → NcAppNavigationItem-BSV20azN.mjs.map} +1 -1
  133. package/dist/chunks/{NcAppNavigationItem-CABF2T4q.cjs → NcAppNavigationItem-DVlpQH-e.cjs} +1 -1
  134. package/dist/chunks/{NcAppNavigationItem-CABF2T4q.cjs.map → NcAppNavigationItem-DVlpQH-e.cjs.map} +1 -1
  135. package/dist/chunks/{NcAppNavigationNewItem-BHCgaCoK.mjs → NcAppNavigationNewItem-C7PviElx.mjs} +1 -1
  136. package/dist/chunks/{NcAppNavigationNewItem-BHCgaCoK.mjs.map → NcAppNavigationNewItem-C7PviElx.mjs.map} +1 -1
  137. package/dist/chunks/{NcAppNavigationNewItem-t45tM5u1.cjs → NcAppNavigationNewItem-DG-KzABc.cjs} +1 -1
  138. package/dist/chunks/{NcAppNavigationNewItem-t45tM5u1.cjs.map → NcAppNavigationNewItem-DG-KzABc.cjs.map} +1 -1
  139. package/dist/chunks/{NcAppNavigationSettings-CBeUiVLk.cjs → NcAppNavigationSettings-CoutbNdC.cjs} +1 -1
  140. package/dist/chunks/{NcAppNavigationSettings-CBeUiVLk.cjs.map → NcAppNavigationSettings-CoutbNdC.cjs.map} +1 -1
  141. package/dist/chunks/{NcAppNavigationSettings-BQD7JA4m.mjs → NcAppNavigationSettings-D8MkJD-a.mjs} +1 -1
  142. package/dist/chunks/{NcAppNavigationSettings-BQD7JA4m.mjs.map → NcAppNavigationSettings-D8MkJD-a.mjs.map} +1 -1
  143. package/dist/chunks/{NcAppNavigationToggle-DDChOnAq.cjs → NcAppNavigationToggle-ACf6tmPq.cjs} +1 -1
  144. package/dist/chunks/{NcAppNavigationToggle-DDChOnAq.cjs.map → NcAppNavigationToggle-ACf6tmPq.cjs.map} +1 -1
  145. package/dist/chunks/{NcAppNavigationToggle-BZxbkhCr.mjs → NcAppNavigationToggle-n8ES2H5d.mjs} +1 -1
  146. package/dist/chunks/{NcAppNavigationToggle-BZxbkhCr.mjs.map → NcAppNavigationToggle-n8ES2H5d.mjs.map} +1 -1
  147. package/dist/chunks/{NcAppSettingsDialog-DeFBTD2J.mjs → NcAppSettingsDialog-CmQPplb5.mjs} +1 -1
  148. package/dist/chunks/{NcAppSettingsDialog-DeFBTD2J.mjs.map → NcAppSettingsDialog-CmQPplb5.mjs.map} +1 -1
  149. package/dist/chunks/{NcAppSettingsDialog-EUys9Os_.cjs → NcAppSettingsDialog-DYr9eXTI.cjs} +1 -1
  150. package/dist/chunks/{NcAppSettingsDialog-EUys9Os_.cjs.map → NcAppSettingsDialog-DYr9eXTI.cjs.map} +1 -1
  151. package/dist/chunks/{NcAppSidebar-Du-IRmEO.cjs → NcAppSidebar-BsbmJ5H_.cjs} +2 -2
  152. package/dist/chunks/{NcAppSidebar-Du-IRmEO.cjs.map → NcAppSidebar-BsbmJ5H_.cjs.map} +1 -1
  153. package/dist/chunks/{NcAppSidebar-CdSvRI6l.mjs → NcAppSidebar-CSjqjYTb.mjs} +3 -3
  154. package/dist/chunks/{NcAppSidebar-CdSvRI6l.mjs.map → NcAppSidebar-CSjqjYTb.mjs.map} +1 -1
  155. package/dist/chunks/{NcAvatar-e0M-nnF6.mjs → NcAvatar-BdtXzaRJ.mjs} +4 -4
  156. package/dist/chunks/{NcAvatar-e0M-nnF6.mjs.map → NcAvatar-BdtXzaRJ.mjs.map} +1 -1
  157. package/dist/chunks/{NcAvatar-BEet_8fB.cjs → NcAvatar-Bn9oT7sS.cjs} +2 -2
  158. package/dist/chunks/{NcAvatar-BEet_8fB.cjs.map → NcAvatar-Bn9oT7sS.cjs.map} +1 -1
  159. package/dist/chunks/{NcBreadcrumb-CVMyBckA.mjs → NcBreadcrumb-D8yGqnFJ.mjs} +1 -1
  160. package/dist/chunks/{NcBreadcrumb-CVMyBckA.mjs.map → NcBreadcrumb-D8yGqnFJ.mjs.map} +1 -1
  161. package/dist/chunks/{NcBreadcrumb-DVXsgQkE.cjs → NcBreadcrumb-DApyHRGZ.cjs} +1 -1
  162. package/dist/chunks/{NcBreadcrumb-DVXsgQkE.cjs.map → NcBreadcrumb-DApyHRGZ.cjs.map} +1 -1
  163. package/dist/chunks/{NcBreadcrumbs-DkgzO9f5.cjs → NcBreadcrumbs-BoA2lxaY.cjs} +1 -1
  164. package/dist/chunks/{NcBreadcrumbs-DkgzO9f5.cjs.map → NcBreadcrumbs-BoA2lxaY.cjs.map} +1 -1
  165. package/dist/chunks/{NcBreadcrumbs-DqRU0BfB.mjs → NcBreadcrumbs-DVyfjkgH.mjs} +2 -2
  166. package/dist/chunks/{NcBreadcrumbs-DqRU0BfB.mjs.map → NcBreadcrumbs-DVyfjkgH.mjs.map} +1 -1
  167. package/dist/chunks/{NcCheckboxRadioSwitch-Dt96X5bR.cjs → NcCheckboxRadioSwitch-BEYj-jaN.cjs} +2 -2
  168. package/dist/chunks/{NcCheckboxRadioSwitch-Dt96X5bR.cjs.map → NcCheckboxRadioSwitch-BEYj-jaN.cjs.map} +1 -1
  169. package/dist/chunks/{NcCheckboxRadioSwitch-7Yib86y3.mjs → NcCheckboxRadioSwitch-DiNnRbJI.mjs} +2 -2
  170. package/dist/chunks/{NcCheckboxRadioSwitch-7Yib86y3.mjs.map → NcCheckboxRadioSwitch-DiNnRbJI.mjs.map} +1 -1
  171. package/dist/chunks/{NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CKROuACA.mjs → NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-DMJGZndr.mjs} +1 -1
  172. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-DMJGZndr.mjs.map +1 -0
  173. package/dist/chunks/{NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-C1WLneXl.cjs → NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-Dh3GUSYj.cjs} +1 -1
  174. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-Dh3GUSYj.cjs.map +1 -0
  175. package/dist/chunks/{NcColorPicker-BVqwn1Fr.cjs → NcColorPicker-Acx2mFFG.cjs} +1 -1
  176. package/dist/chunks/{NcColorPicker-BVqwn1Fr.cjs.map → NcColorPicker-Acx2mFFG.cjs.map} +1 -1
  177. package/dist/chunks/{NcColorPicker-Dkxeigs5.mjs → NcColorPicker-sge8Yr9m.mjs} +2 -2
  178. package/dist/chunks/{NcColorPicker-Dkxeigs5.mjs.map → NcColorPicker-sge8Yr9m.mjs.map} +1 -1
  179. package/dist/chunks/{NcContent-Bmeq8hLO.cjs → NcContent-COHfXhM3.cjs} +1 -1
  180. package/dist/chunks/{NcContent-Bmeq8hLO.cjs.map → NcContent-COHfXhM3.cjs.map} +1 -1
  181. package/dist/chunks/{NcContent-COIw1X7V.mjs → NcContent-kTlEGtKt.mjs} +1 -1
  182. package/dist/chunks/{NcContent-COIw1X7V.mjs.map → NcContent-kTlEGtKt.mjs.map} +1 -1
  183. package/dist/chunks/{NcDashboardWidget-Cxz_n1AN.mjs → NcDashboardWidget-CL7e1yAw.mjs} +3 -3
  184. package/dist/chunks/{NcDashboardWidget-Cxz_n1AN.mjs.map → NcDashboardWidget-CL7e1yAw.mjs.map} +1 -1
  185. package/dist/chunks/{NcDashboardWidget-DArU3jbL.cjs → NcDashboardWidget-CyrKw12p.cjs} +1 -1
  186. package/dist/chunks/{NcDashboardWidget-DArU3jbL.cjs.map → NcDashboardWidget-CyrKw12p.cjs.map} +1 -1
  187. package/dist/chunks/{NcDashboardWidgetItem-BAhzcFfs.cjs → NcDashboardWidgetItem-C6Npm5U9.cjs} +1 -1
  188. package/dist/chunks/{NcDashboardWidgetItem-BAhzcFfs.cjs.map → NcDashboardWidgetItem-C6Npm5U9.cjs.map} +1 -1
  189. package/dist/chunks/{NcDashboardWidgetItem-BV2tuXoj.mjs → NcDashboardWidgetItem-Cq-HAbIB.mjs} +2 -2
  190. package/dist/chunks/{NcDashboardWidgetItem-BV2tuXoj.mjs.map → NcDashboardWidgetItem-Cq-HAbIB.mjs.map} +1 -1
  191. package/dist/chunks/{NcDateTime-B0oaElJX.mjs → NcDateTime-B1X22iSf.mjs} +1 -1
  192. package/dist/chunks/{NcDateTime-B0oaElJX.mjs.map → NcDateTime-B1X22iSf.mjs.map} +1 -1
  193. package/dist/chunks/{NcDateTime-Dl0XztMt.cjs → NcDateTime-CyKYSWsT.cjs} +1 -1
  194. package/dist/chunks/{NcDateTime-Dl0XztMt.cjs.map → NcDateTime-CyKYSWsT.cjs.map} +1 -1
  195. package/dist/chunks/{NcEmojiPicker-BCdoIKXJ.cjs → NcEmojiPicker-DuZc08BD.cjs} +1 -1
  196. package/dist/chunks/{NcEmojiPicker-BCdoIKXJ.cjs.map → NcEmojiPicker-DuZc08BD.cjs.map} +1 -1
  197. package/dist/chunks/{NcEmojiPicker-fRx7dTTf.mjs → NcEmojiPicker-r6eAlCKl.mjs} +4 -4
  198. package/dist/chunks/{NcEmojiPicker-fRx7dTTf.mjs.map → NcEmojiPicker-r6eAlCKl.mjs.map} +1 -1
  199. package/dist/chunks/{NcInputConfirmCancel-DpgXTGmT.cjs → NcInputConfirmCancel-DAaMkW9I.cjs} +1 -1
  200. package/dist/chunks/{NcInputConfirmCancel-DpgXTGmT.cjs.map → NcInputConfirmCancel-DAaMkW9I.cjs.map} +1 -1
  201. package/dist/chunks/{NcInputConfirmCancel-BXZqwqY6.mjs → NcInputConfirmCancel-fwl4-RD4.mjs} +1 -1
  202. package/dist/chunks/{NcInputConfirmCancel-BXZqwqY6.mjs.map → NcInputConfirmCancel-fwl4-RD4.mjs.map} +1 -1
  203. package/dist/chunks/{NcListItem-wxqWqs4s.cjs → NcListItem-8heZoa83.cjs} +28 -23
  204. package/dist/chunks/NcListItem-8heZoa83.cjs.map +1 -0
  205. package/dist/chunks/{NcListItem-C5oWvAZQ.mjs → NcListItem-DxnCJdGU.mjs} +27 -22
  206. package/dist/chunks/NcListItem-DxnCJdGU.mjs.map +1 -0
  207. package/dist/chunks/{NcListItemIcon-DfdkSCin.cjs → NcListItemIcon-D5NW3bY2.cjs} +1 -1
  208. package/dist/chunks/{NcListItemIcon-DfdkSCin.cjs.map → NcListItemIcon-D5NW3bY2.cjs.map} +1 -1
  209. package/dist/chunks/{NcListItemIcon-WH9TUCxb.mjs → NcListItemIcon-DyE902SK.mjs} +1 -1
  210. package/dist/chunks/{NcListItemIcon-WH9TUCxb.mjs.map → NcListItemIcon-DyE902SK.mjs.map} +1 -1
  211. package/dist/chunks/{NcPasswordField-BPAivxc_.mjs → NcPasswordField-BeIfZq-I.mjs} +1 -1
  212. package/dist/chunks/{NcPasswordField-BPAivxc_.mjs.map → NcPasswordField-BeIfZq-I.mjs.map} +1 -1
  213. package/dist/chunks/{NcPasswordField-BgNcvN0V.cjs → NcPasswordField-Bx3rarNt.cjs} +1 -1
  214. package/dist/chunks/{NcPasswordField-BgNcvN0V.cjs.map → NcPasswordField-Bx3rarNt.cjs.map} +1 -1
  215. package/dist/chunks/{NcRelatedResourcesPanel-Cp8Au2iI.cjs → NcRelatedResourcesPanel-BmE02hfU.cjs} +4 -4
  216. package/dist/chunks/NcRelatedResourcesPanel-BmE02hfU.cjs.map +1 -0
  217. package/dist/chunks/{NcRelatedResourcesPanel-LTNqJecS.mjs → NcRelatedResourcesPanel-C8HsjDiN.mjs} +8 -8
  218. package/dist/chunks/NcRelatedResourcesPanel-C8HsjDiN.mjs.map +1 -0
  219. package/dist/chunks/{NcRichContenteditable-CHggLQuR.mjs → NcRichContenteditable-COl1GELF.mjs} +35 -26
  220. package/dist/chunks/NcRichContenteditable-COl1GELF.mjs.map +1 -0
  221. package/dist/chunks/{NcRichContenteditable-hT5m_2tr.cjs → NcRichContenteditable-DVCrsKyc.cjs} +41 -32
  222. package/dist/chunks/NcRichContenteditable-DVCrsKyc.cjs.map +1 -0
  223. package/dist/chunks/{NcRichText-BBXbh0Hh.mjs → NcRichText-BEoKx41c.mjs} +45 -29
  224. package/dist/chunks/NcRichText-BEoKx41c.mjs.map +1 -0
  225. package/dist/chunks/{NcRichText-BWX8BLVh.cjs → NcRichText-Dow2nMvP.cjs} +35 -19
  226. package/dist/chunks/NcRichText-Dow2nMvP.cjs.map +1 -0
  227. package/dist/chunks/{NcSelect-BVmjiQFa.mjs → NcSelect-C_dMqtoe.mjs} +2 -2
  228. package/dist/chunks/{NcSelect-BVmjiQFa.mjs.map → NcSelect-C_dMqtoe.mjs.map} +1 -1
  229. package/dist/chunks/{NcSelect-DjTSAsNL.cjs → NcSelect-CyESQ4uQ.cjs} +1 -1
  230. package/dist/chunks/{NcSelect-DjTSAsNL.cjs.map → NcSelect-CyESQ4uQ.cjs.map} +1 -1
  231. package/dist/chunks/{NcSelectTags-BJvxyO8E.cjs → NcSelectTags-Bl95j2Kh.cjs} +1 -1
  232. package/dist/chunks/{NcSelectTags-BJvxyO8E.cjs.map → NcSelectTags-Bl95j2Kh.cjs.map} +1 -1
  233. package/dist/chunks/{NcSelectTags-Ccv-eQzZ.mjs → NcSelectTags-BoX-3tOa.mjs} +2 -2
  234. package/dist/chunks/{NcSelectTags-Ccv-eQzZ.mjs.map → NcSelectTags-BoX-3tOa.mjs.map} +1 -1
  235. package/dist/chunks/{NcSettingsInputText-CcO2Du6E.cjs → NcSettingsInputText-DlBTOZRv.cjs} +1 -1
  236. package/dist/chunks/{NcSettingsInputText-CcO2Du6E.cjs.map → NcSettingsInputText-DlBTOZRv.cjs.map} +1 -1
  237. package/dist/chunks/{NcSettingsInputText-DXxmqvcd.mjs → NcSettingsInputText-fLyjAE06.mjs} +1 -1
  238. package/dist/chunks/{NcSettingsInputText-DXxmqvcd.mjs.map → NcSettingsInputText-fLyjAE06.mjs.map} +1 -1
  239. package/dist/chunks/{NcSettingsSection-DBe4fKFA.mjs → NcSettingsSection-COSdi50c.mjs} +1 -1
  240. package/dist/chunks/{NcSettingsSection-DBe4fKFA.mjs.map → NcSettingsSection-COSdi50c.mjs.map} +1 -1
  241. package/dist/chunks/{NcSettingsSection-qgIYSB_M.cjs → NcSettingsSection-CoHKnYDP.cjs} +1 -1
  242. package/dist/chunks/{NcSettingsSection-qgIYSB_M.cjs.map → NcSettingsSection-CoHKnYDP.cjs.map} +1 -1
  243. package/dist/chunks/{NcSettingsSelectGroup-DD8PEgvQ.cjs → NcSettingsSelectGroup-2wsNrz7x.cjs} +1 -1
  244. package/dist/chunks/{NcSettingsSelectGroup-DD8PEgvQ.cjs.map → NcSettingsSelectGroup-2wsNrz7x.cjs.map} +1 -1
  245. package/dist/chunks/{NcSettingsSelectGroup-d2TLOW1O.mjs → NcSettingsSelectGroup-BZG67QrR.mjs} +2 -2
  246. package/dist/chunks/{NcSettingsSelectGroup-d2TLOW1O.mjs.map → NcSettingsSelectGroup-BZG67QrR.mjs.map} +1 -1
  247. package/dist/chunks/{NcTextField-CU-YIhL3.mjs → NcTextField-BEpgHsY2.mjs} +1 -1
  248. package/dist/chunks/{NcTextField-CU-YIhL3.mjs.map → NcTextField-BEpgHsY2.mjs.map} +1 -1
  249. package/dist/chunks/{NcTextField-CsnzlYWD.cjs → NcTextField-C-2-Of6b.cjs} +1 -1
  250. package/dist/chunks/{NcTextField-CsnzlYWD.cjs.map → NcTextField-C-2-Of6b.cjs.map} +1 -1
  251. package/dist/chunks/{NcTimezonePicker-C-Ci2IuC.cjs → NcTimezonePicker-BMlKQe6-.cjs} +1 -1
  252. package/dist/chunks/{NcTimezonePicker-C-Ci2IuC.cjs.map → NcTimezonePicker-BMlKQe6-.cjs.map} +1 -1
  253. package/dist/chunks/{NcTimezonePicker-gvp9MAcg.mjs → NcTimezonePicker-JJeMG5Mo.mjs} +2 -2
  254. package/dist/chunks/{NcTimezonePicker-gvp9MAcg.mjs.map → NcTimezonePicker-JJeMG5Mo.mjs.map} +1 -1
  255. package/dist/chunks/{NcUserBubble-COhpp9l_.cjs → NcUserBubble-DMBDwtwW.cjs} +1 -1
  256. package/dist/chunks/{NcUserBubble-COhpp9l_.cjs.map → NcUserBubble-DMBDwtwW.cjs.map} +1 -1
  257. package/dist/chunks/{NcUserBubble-CbufscPi.mjs → NcUserBubble-RZlZRmxZ.mjs} +1 -1
  258. package/dist/chunks/{NcUserBubble-CbufscPi.mjs.map → NcUserBubble-RZlZRmxZ.mjs.map} +1 -1
  259. package/dist/chunks/{NcUserStatusIcon-C7dfcW39.cjs → NcUserStatusIcon-7yBYL8ur.cjs} +4 -4
  260. package/dist/chunks/NcUserStatusIcon-7yBYL8ur.cjs.map +1 -0
  261. package/dist/chunks/{NcUserStatusIcon-0SGYQL9L.mjs → NcUserStatusIcon-DMQxYiY6.mjs} +9 -9
  262. package/dist/chunks/NcUserStatusIcon-DMQxYiY6.mjs.map +1 -0
  263. package/dist/chunks/{ScopeComponent-LxI8YPnR.mjs → ScopeComponent-9FoStIVM.mjs} +1 -1
  264. package/dist/chunks/{ScopeComponent-LxI8YPnR.mjs.map → ScopeComponent-9FoStIVM.mjs.map} +1 -1
  265. package/dist/chunks/{ScopeComponent-CSd5rNUA.cjs → ScopeComponent-DdL1psE0.cjs} +1 -1
  266. package/dist/chunks/{ScopeComponent-CSd5rNUA.cjs.map → ScopeComponent-DdL1psE0.cjs.map} +1 -1
  267. package/dist/chunks/{_l10n-D8Scz3mH.mjs → _l10n-CAwwH-o2.mjs} +3 -3
  268. package/dist/chunks/_l10n-CAwwH-o2.mjs.map +1 -0
  269. package/dist/chunks/{_l10n-B986q8RC.cjs → _l10n-DZggkcVs.cjs} +3 -3
  270. package/dist/chunks/_l10n-DZggkcVs.cjs.map +1 -0
  271. package/dist/chunks/{index-DYXjj9ET.mjs → index-BAVa4G2v.mjs} +31 -31
  272. package/dist/chunks/index-BAVa4G2v.mjs.map +1 -0
  273. package/dist/chunks/{index-CIsMzBte.cjs → index-CVsxVZon.cjs} +19 -19
  274. package/dist/chunks/index-CVsxVZon.cjs.map +1 -0
  275. package/dist/chunks/{referencePickerModal-DUhJWt2e.mjs → referencePickerModal-CtIcJRWz.mjs} +417 -414
  276. package/dist/chunks/referencePickerModal-CtIcJRWz.mjs.map +1 -0
  277. package/dist/chunks/{referencePickerModal-DV7-XzCc.cjs → referencePickerModal-Ig4S8WI3.cjs} +298 -295
  278. package/dist/chunks/referencePickerModal-Ig4S8WI3.cjs.map +1 -0
  279. package/dist/chunks/{usernameToColor-iYF-oKTP.mjs → usernameToColor-3Z3jKEos.mjs} +1 -1
  280. package/dist/chunks/{usernameToColor-iYF-oKTP.mjs.map → usernameToColor-3Z3jKEos.mjs.map} +1 -1
  281. package/dist/chunks/{usernameToColor-DibvD_OP.cjs → usernameToColor-7pQQJMR_.cjs} +1 -1
  282. package/dist/chunks/{usernameToColor-DibvD_OP.cjs.map → usernameToColor-7pQQJMR_.cjs.map} +1 -1
  283. package/dist/index.cjs +8 -9
  284. package/dist/index.cjs.map +1 -1
  285. package/dist/index.mjs +45 -45
  286. package/package.json +1 -1
  287. package/dist/assets/NcListItem-vwt4bCl6.css +0 -165
  288. package/dist/chunks/NcActions-CpU9WXzM.mjs.map +0 -1
  289. package/dist/chunks/NcActions-Dfkog_G0.cjs.map +0 -1
  290. package/dist/chunks/NcAppContent-BDwOdxJE.mjs.map +0 -1
  291. package/dist/chunks/NcAppContent-kqYjKpzU.cjs.map +0 -1
  292. package/dist/chunks/NcAppNavigation-BRtyTvKt.mjs.map +0 -1
  293. package/dist/chunks/NcAppNavigation-DMxORgkV.cjs.map +0 -1
  294. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-C1WLneXl.cjs.map +0 -1
  295. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CKROuACA.mjs.map +0 -1
  296. package/dist/chunks/NcListItem-C5oWvAZQ.mjs.map +0 -1
  297. package/dist/chunks/NcListItem-wxqWqs4s.cjs.map +0 -1
  298. package/dist/chunks/NcRelatedResourcesPanel-Cp8Au2iI.cjs.map +0 -1
  299. package/dist/chunks/NcRelatedResourcesPanel-LTNqJecS.mjs.map +0 -1
  300. package/dist/chunks/NcRichContenteditable-CHggLQuR.mjs.map +0 -1
  301. package/dist/chunks/NcRichContenteditable-hT5m_2tr.cjs.map +0 -1
  302. package/dist/chunks/NcRichText-BBXbh0Hh.mjs.map +0 -1
  303. package/dist/chunks/NcRichText-BWX8BLVh.cjs.map +0 -1
  304. package/dist/chunks/NcUserStatusIcon-0SGYQL9L.mjs.map +0 -1
  305. package/dist/chunks/NcUserStatusIcon-C7dfcW39.cjs.map +0 -1
  306. package/dist/chunks/_l10n-B986q8RC.cjs.map +0 -1
  307. package/dist/chunks/_l10n-D8Scz3mH.mjs.map +0 -1
  308. package/dist/chunks/index-CIsMzBte.cjs.map +0 -1
  309. package/dist/chunks/index-DYXjj9ET.mjs.map +0 -1
  310. package/dist/chunks/referencePickerModal-DUhJWt2e.mjs.map +0 -1
  311. package/dist/chunks/referencePickerModal-DV7-XzCc.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NcPasswordField-BPAivxc_.mjs","sources":["../../node_modules/vue-material-design-icons/Eye.vue","../../node_modules/vue-material-design-icons/EyeOff.vue","../../src/components/NcPasswordField/NcPasswordField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-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=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-off-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=\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOffIcon\",\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 - @copyright Copyright (c) 2022 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n - @author Carl Schwan <carl@carlschwan.eu>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose password field component.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcPasswordField :value.sync=\"text1\"\n\t\t\tlabel=\"Old password\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">New password</label>\n\t\t\t<NcPasswordField id=\"textField\"\n\t\t\t\t:value.sync=\"text2\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\" />\n\t\t</div>\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField2\">New password</label>\n\t\t\t<NcPasswordField id=\"textField2\"\n\t\t\t\t:value.sync=\"text3\"\n\t\t\t\t:error=\"true\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\t\thelper-text=\"Password is insecure\" />\n\t\t</div>\n\n\t\t<NcPasswordField :value.sync=\"text4\"\n\t\t\tlabel=\"Good new password\"\n\t\t\t:success=\"true\"\n\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\thelper-text=\"Password is secure\" />\n\n\t\t<NcPasswordField :value.sync=\"text5\"\n\t\t\t:disabled=\"true\"\n\t\t\tlabel=\"Disabled\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: 'hunter',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\t:type=\"isPasswordHidden ? 'password' : 'text'\"\n\t\t:trailing-button-label=\"trailingButtonLabelPassword\"\n\t\t:helper-text=\"computedHelperText\"\n\t\t:error=\"computedError\"\n\t\t:success=\"computedSuccess\"\n\t\t:minlength=\"rules.minlength\"\n\t\tv-on=\"$listeners\"\n\t\t@trailing-button-click=\"togglePasswordVisibility\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\t\t<template #trailing-button-icon>\n\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"18\" />\n\t\t\t<EyeOff v-else :size=\"18\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport Eye from 'vue-material-design-icons/Eye.vue'\nimport EyeOff from 'vue-material-design-icons/EyeOff.vue'\nimport NcInputField from '../NcInputField/NcInputField.vue'\nimport debounce from 'debounce'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport logger from '../../utils/logger.js'\n\n/**\n * @typedef PasswordPolicy\n * @property {object} api - The URLs to the password_policy app methods\n * @property {string} api.generate - The URL to the password generator\n * @property {string} api.validate - The URL to the password validator\n * @property {boolean} enforceNonCommonPassword - Whether to enforce non common passwords\n * @property {boolean} enforceNumericCharacters - Whether to enforce numeric characters\n * @property {boolean} enforceSpecialCharacters - Whether to enforce special characters\n * @property {boolean} enforceUpperLowerCase - Whether to enforce upper and lower case\n * @property {number} minLength - The minimum length of the password\n */\n\n/** @type {PasswordPolicy|null} */\nconst passwordPolicy = loadState('core', 'capabilities', {}).password_policy || null\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcPasswordField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tEye,\n\t\tEyeOff,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\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\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t// Redefined props\n\n\t\t/**\n\t\t * Controls whether to display the trailing button.\n\t\t */\n\t\t showTrailingButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t// Removed NcInputField props, defined only by this component\n\n\t\ttrailingButtonLabel: undefined,\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Check if the user entered a valid password using the password_policy\n\t\t * app if available.\n\t\t *\n\t\t * Warning: this doesn't replace server side checking and will do nothing\n\t\t * if the password_policy app is disabled.\n\t\t */\n\t\tcheckPasswordStrength: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * The minlength property defines the minimum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tminlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\n\t\t/**\n\t\t * The maxlength property defines the maximum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'valid',\n\t\t'invalid',\n\t\t'update:value',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisPasswordHidden: true,\n\t\t\tinternalHelpMessage: '',\n\t\t\tisValid: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcomputedError() {\n\t\t\treturn this.error || this.isValid === false\n\t\t},\n\t\tcomputedSuccess() {\n\t\t\treturn this.success || this.isValid === true\n\t\t},\n\t\tcomputedHelperText() {\n\t\t\tif (this.helperText.length > 0) {\n\t\t\t\treturn this.helperText\n\t\t\t}\n\t\t\treturn this.internalHelpMessage\n\t\t},\n\n\t\trules() {\n\t\t\tconst { minlength } = this\n\t\t\treturn {\n\t\t\t\tminlength: minlength ?? passwordPolicy?.minLength,\n\t\t\t}\n\t\t},\n\n\t\ttrailingButtonLabelPassword() {\n\t\t\treturn this.isPasswordHidden ? t('Show password') : t('Hide password')\n\t\t},\n\n\t\tpropsAndAttrsToForward() {\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tvalue(newValue) {\n\t\t\tif (this.checkPasswordStrength) {\n\t\t\t\tif (passwordPolicy === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.checkPassword(newValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\t/**\n\t\t\t * Triggers when the value inside the password field is\n\t\t\t * updated.\n\t\t\t *\n\t\t\t * @property {string} The new value\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\ttogglePasswordVisibility() {\n\t\t\tthis.isPasswordHidden = !this.isPasswordHidden\n\t\t},\n\t\tcheckPassword: debounce(async function(password) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateOcsUrl('apps/password_policy/api/v1/validate'), { password })\n\t\t\t\tthis.isValid = data.ocs.data.passed\n\t\t\t\tif (data.ocs.data.passed) {\n\t\t\t\t\tthis.internalHelpMessage = t('Password is secure')\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t\t * password entered is valid.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('valid')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.internalHelpMessage = data.ocs.data.reason\n\t\t\t\t/**\n\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t * password entered is invalid.\n\t\t\t\t */\n\t\t\t\tthis.$emit('invalid')\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Password policy returned an error', e)\n\t\t\t}\n\t\t}, 500),\n\t},\n}\n</script>\n"],"names":["_sfc_main","passwordPolicy","loadState","NcInputFieldProps","NcInputField","Eye","EyeOff","minlength","t","key","newValue","event","debounce","password","data","axios","generateOcsUrl","e","logger"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"NcPasswordField-BeIfZq-I.mjs","sources":["../../node_modules/vue-material-design-icons/Eye.vue","../../node_modules/vue-material-design-icons/EyeOff.vue","../../src/components/NcPasswordField/NcPasswordField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-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=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-off-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=\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOffIcon\",\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 - @copyright Copyright (c) 2022 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n - @author Carl Schwan <carl@carlschwan.eu>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose password field component.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcPasswordField :value.sync=\"text1\"\n\t\t\tlabel=\"Old password\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">New password</label>\n\t\t\t<NcPasswordField id=\"textField\"\n\t\t\t\t:value.sync=\"text2\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\" />\n\t\t</div>\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField2\">New password</label>\n\t\t\t<NcPasswordField id=\"textField2\"\n\t\t\t\t:value.sync=\"text3\"\n\t\t\t\t:error=\"true\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\t\thelper-text=\"Password is insecure\" />\n\t\t</div>\n\n\t\t<NcPasswordField :value.sync=\"text4\"\n\t\t\tlabel=\"Good new password\"\n\t\t\t:success=\"true\"\n\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\thelper-text=\"Password is secure\" />\n\n\t\t<NcPasswordField :value.sync=\"text5\"\n\t\t\t:disabled=\"true\"\n\t\t\tlabel=\"Disabled\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: 'hunter',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\t:type=\"isPasswordHidden ? 'password' : 'text'\"\n\t\t:trailing-button-label=\"trailingButtonLabelPassword\"\n\t\t:helper-text=\"computedHelperText\"\n\t\t:error=\"computedError\"\n\t\t:success=\"computedSuccess\"\n\t\t:minlength=\"rules.minlength\"\n\t\tv-on=\"$listeners\"\n\t\t@trailing-button-click=\"togglePasswordVisibility\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\t\t<template #trailing-button-icon>\n\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"18\" />\n\t\t\t<EyeOff v-else :size=\"18\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport Eye from 'vue-material-design-icons/Eye.vue'\nimport EyeOff from 'vue-material-design-icons/EyeOff.vue'\nimport NcInputField from '../NcInputField/NcInputField.vue'\nimport debounce from 'debounce'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport logger from '../../utils/logger.js'\n\n/**\n * @typedef PasswordPolicy\n * @property {object} api - The URLs to the password_policy app methods\n * @property {string} api.generate - The URL to the password generator\n * @property {string} api.validate - The URL to the password validator\n * @property {boolean} enforceNonCommonPassword - Whether to enforce non common passwords\n * @property {boolean} enforceNumericCharacters - Whether to enforce numeric characters\n * @property {boolean} enforceSpecialCharacters - Whether to enforce special characters\n * @property {boolean} enforceUpperLowerCase - Whether to enforce upper and lower case\n * @property {number} minLength - The minimum length of the password\n */\n\n/** @type {PasswordPolicy|null} */\nconst passwordPolicy = loadState('core', 'capabilities', {}).password_policy || null\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcPasswordField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tEye,\n\t\tEyeOff,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\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\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t// Redefined props\n\n\t\t/**\n\t\t * Controls whether to display the trailing button.\n\t\t */\n\t\t showTrailingButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t// Removed NcInputField props, defined only by this component\n\n\t\ttrailingButtonLabel: undefined,\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Check if the user entered a valid password using the password_policy\n\t\t * app if available.\n\t\t *\n\t\t * Warning: this doesn't replace server side checking and will do nothing\n\t\t * if the password_policy app is disabled.\n\t\t */\n\t\tcheckPasswordStrength: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * The minlength property defines the minimum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tminlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\n\t\t/**\n\t\t * The maxlength property defines the maximum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'valid',\n\t\t'invalid',\n\t\t'update:value',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisPasswordHidden: true,\n\t\t\tinternalHelpMessage: '',\n\t\t\tisValid: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcomputedError() {\n\t\t\treturn this.error || this.isValid === false\n\t\t},\n\t\tcomputedSuccess() {\n\t\t\treturn this.success || this.isValid === true\n\t\t},\n\t\tcomputedHelperText() {\n\t\t\tif (this.helperText.length > 0) {\n\t\t\t\treturn this.helperText\n\t\t\t}\n\t\t\treturn this.internalHelpMessage\n\t\t},\n\n\t\trules() {\n\t\t\tconst { minlength } = this\n\t\t\treturn {\n\t\t\t\tminlength: minlength ?? passwordPolicy?.minLength,\n\t\t\t}\n\t\t},\n\n\t\ttrailingButtonLabelPassword() {\n\t\t\treturn this.isPasswordHidden ? t('Show password') : t('Hide password')\n\t\t},\n\n\t\tpropsAndAttrsToForward() {\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tvalue(newValue) {\n\t\t\tif (this.checkPasswordStrength) {\n\t\t\t\tif (passwordPolicy === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.checkPassword(newValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\t/**\n\t\t\t * Triggers when the value inside the password field is\n\t\t\t * updated.\n\t\t\t *\n\t\t\t * @property {string} The new value\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\ttogglePasswordVisibility() {\n\t\t\tthis.isPasswordHidden = !this.isPasswordHidden\n\t\t},\n\t\tcheckPassword: debounce(async function(password) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateOcsUrl('apps/password_policy/api/v1/validate'), { password })\n\t\t\t\tthis.isValid = data.ocs.data.passed\n\t\t\t\tif (data.ocs.data.passed) {\n\t\t\t\t\tthis.internalHelpMessage = t('Password is secure')\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t\t * password entered is valid.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('valid')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.internalHelpMessage = data.ocs.data.reason\n\t\t\t\t/**\n\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t * password entered is invalid.\n\t\t\t\t */\n\t\t\t\tthis.$emit('invalid')\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Password policy returned an error', e)\n\t\t\t}\n\t\t}, 500),\n\t},\n}\n</script>\n"],"names":["_sfc_main","passwordPolicy","loadState","NcInputFieldProps","NcInputField","Eye","EyeOff","minlength","t","key","newValue","event","debounce","password","data","axios","generateOcsUrl","e","logger"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const a = require("./_plugin-vue2_normalizer-GXKvuwrq.cjs"), l = require("../Components/NcInputField.cjs"), c = require("debounce"), u = require("@nextcloud/axios"), d = require("@nextcloud/initial-state"), p = require("@nextcloud/router"), r = require("./_l10n-B986q8RC.cjs"), _ = require("./logger-D9RRY4er.cjs"), o = (t) => t && t.__esModule ? t : { default: t }, f = /* @__PURE__ */ o(c), h = /* @__PURE__ */ o(u), m = {
2
+ const a = require("./_plugin-vue2_normalizer-GXKvuwrq.cjs"), l = require("../Components/NcInputField.cjs"), c = require("debounce"), u = require("@nextcloud/axios"), d = require("@nextcloud/initial-state"), p = require("@nextcloud/router"), r = require("./_l10n-DZggkcVs.cjs"), _ = require("./logger-D9RRY4er.cjs"), o = (t) => t && t.__esModule ? t : { default: t }, f = /* @__PURE__ */ o(c), h = /* @__PURE__ */ o(u), m = {
3
3
  name: "EyeIcon",
4
4
  emits: ["click"],
5
5
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"NcPasswordField-BgNcvN0V.cjs","sources":["../../node_modules/vue-material-design-icons/Eye.vue","../../node_modules/vue-material-design-icons/EyeOff.vue","../../src/components/NcPasswordField/NcPasswordField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-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=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-off-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=\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOffIcon\",\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 - @copyright Copyright (c) 2022 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n - @author Carl Schwan <carl@carlschwan.eu>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose password field component.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcPasswordField :value.sync=\"text1\"\n\t\t\tlabel=\"Old password\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">New password</label>\n\t\t\t<NcPasswordField id=\"textField\"\n\t\t\t\t:value.sync=\"text2\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\" />\n\t\t</div>\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField2\">New password</label>\n\t\t\t<NcPasswordField id=\"textField2\"\n\t\t\t\t:value.sync=\"text3\"\n\t\t\t\t:error=\"true\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\t\thelper-text=\"Password is insecure\" />\n\t\t</div>\n\n\t\t<NcPasswordField :value.sync=\"text4\"\n\t\t\tlabel=\"Good new password\"\n\t\t\t:success=\"true\"\n\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\thelper-text=\"Password is secure\" />\n\n\t\t<NcPasswordField :value.sync=\"text5\"\n\t\t\t:disabled=\"true\"\n\t\t\tlabel=\"Disabled\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: 'hunter',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\t:type=\"isPasswordHidden ? 'password' : 'text'\"\n\t\t:trailing-button-label=\"trailingButtonLabelPassword\"\n\t\t:helper-text=\"computedHelperText\"\n\t\t:error=\"computedError\"\n\t\t:success=\"computedSuccess\"\n\t\t:minlength=\"rules.minlength\"\n\t\tv-on=\"$listeners\"\n\t\t@trailing-button-click=\"togglePasswordVisibility\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\t\t<template #trailing-button-icon>\n\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"18\" />\n\t\t\t<EyeOff v-else :size=\"18\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport Eye from 'vue-material-design-icons/Eye.vue'\nimport EyeOff from 'vue-material-design-icons/EyeOff.vue'\nimport NcInputField from '../NcInputField/NcInputField.vue'\nimport debounce from 'debounce'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport logger from '../../utils/logger.js'\n\n/**\n * @typedef PasswordPolicy\n * @property {object} api - The URLs to the password_policy app methods\n * @property {string} api.generate - The URL to the password generator\n * @property {string} api.validate - The URL to the password validator\n * @property {boolean} enforceNonCommonPassword - Whether to enforce non common passwords\n * @property {boolean} enforceNumericCharacters - Whether to enforce numeric characters\n * @property {boolean} enforceSpecialCharacters - Whether to enforce special characters\n * @property {boolean} enforceUpperLowerCase - Whether to enforce upper and lower case\n * @property {number} minLength - The minimum length of the password\n */\n\n/** @type {PasswordPolicy|null} */\nconst passwordPolicy = loadState('core', 'capabilities', {}).password_policy || null\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcPasswordField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tEye,\n\t\tEyeOff,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\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\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t// Redefined props\n\n\t\t/**\n\t\t * Controls whether to display the trailing button.\n\t\t */\n\t\t showTrailingButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t// Removed NcInputField props, defined only by this component\n\n\t\ttrailingButtonLabel: undefined,\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Check if the user entered a valid password using the password_policy\n\t\t * app if available.\n\t\t *\n\t\t * Warning: this doesn't replace server side checking and will do nothing\n\t\t * if the password_policy app is disabled.\n\t\t */\n\t\tcheckPasswordStrength: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * The minlength property defines the minimum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tminlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\n\t\t/**\n\t\t * The maxlength property defines the maximum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'valid',\n\t\t'invalid',\n\t\t'update:value',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisPasswordHidden: true,\n\t\t\tinternalHelpMessage: '',\n\t\t\tisValid: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcomputedError() {\n\t\t\treturn this.error || this.isValid === false\n\t\t},\n\t\tcomputedSuccess() {\n\t\t\treturn this.success || this.isValid === true\n\t\t},\n\t\tcomputedHelperText() {\n\t\t\tif (this.helperText.length > 0) {\n\t\t\t\treturn this.helperText\n\t\t\t}\n\t\t\treturn this.internalHelpMessage\n\t\t},\n\n\t\trules() {\n\t\t\tconst { minlength } = this\n\t\t\treturn {\n\t\t\t\tminlength: minlength ?? passwordPolicy?.minLength,\n\t\t\t}\n\t\t},\n\n\t\ttrailingButtonLabelPassword() {\n\t\t\treturn this.isPasswordHidden ? t('Show password') : t('Hide password')\n\t\t},\n\n\t\tpropsAndAttrsToForward() {\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tvalue(newValue) {\n\t\t\tif (this.checkPasswordStrength) {\n\t\t\t\tif (passwordPolicy === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.checkPassword(newValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\t/**\n\t\t\t * Triggers when the value inside the password field is\n\t\t\t * updated.\n\t\t\t *\n\t\t\t * @property {string} The new value\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\ttogglePasswordVisibility() {\n\t\t\tthis.isPasswordHidden = !this.isPasswordHidden\n\t\t},\n\t\tcheckPassword: debounce(async function(password) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateOcsUrl('apps/password_policy/api/v1/validate'), { password })\n\t\t\t\tthis.isValid = data.ocs.data.passed\n\t\t\t\tif (data.ocs.data.passed) {\n\t\t\t\t\tthis.internalHelpMessage = t('Password is secure')\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t\t * password entered is valid.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('valid')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.internalHelpMessage = data.ocs.data.reason\n\t\t\t\t/**\n\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t * password entered is invalid.\n\t\t\t\t */\n\t\t\t\tthis.$emit('invalid')\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Password policy returned an error', e)\n\t\t\t}\n\t\t}, 500),\n\t},\n}\n</script>\n"],"names":["_sfc_main","passwordPolicy","loadState","NcInputFieldProps","NcInputField","Eye","EyeOff","minlength","t","key","newValue","event","debounce","password","data","axios","generateOcsUrl","logger"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"NcPasswordField-Bx3rarNt.cjs","sources":["../../node_modules/vue-material-design-icons/Eye.vue","../../node_modules/vue-material-design-icons/EyeOff.vue","../../src/components/NcPasswordField/NcPasswordField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-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=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-off-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=\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOffIcon\",\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 - @copyright Copyright (c) 2022 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n - @author Carl Schwan <carl@carlschwan.eu>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose password field component.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcPasswordField :value.sync=\"text1\"\n\t\t\tlabel=\"Old password\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">New password</label>\n\t\t\t<NcPasswordField id=\"textField\"\n\t\t\t\t:value.sync=\"text2\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\" />\n\t\t</div>\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField2\">New password</label>\n\t\t\t<NcPasswordField id=\"textField2\"\n\t\t\t\t:value.sync=\"text3\"\n\t\t\t\t:error=\"true\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\t\thelper-text=\"Password is insecure\" />\n\t\t</div>\n\n\t\t<NcPasswordField :value.sync=\"text4\"\n\t\t\tlabel=\"Good new password\"\n\t\t\t:success=\"true\"\n\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\thelper-text=\"Password is secure\" />\n\n\t\t<NcPasswordField :value.sync=\"text5\"\n\t\t\t:disabled=\"true\"\n\t\t\tlabel=\"Disabled\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: 'hunter',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\t:type=\"isPasswordHidden ? 'password' : 'text'\"\n\t\t:trailing-button-label=\"trailingButtonLabelPassword\"\n\t\t:helper-text=\"computedHelperText\"\n\t\t:error=\"computedError\"\n\t\t:success=\"computedSuccess\"\n\t\t:minlength=\"rules.minlength\"\n\t\tv-on=\"$listeners\"\n\t\t@trailing-button-click=\"togglePasswordVisibility\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\t\t<template #trailing-button-icon>\n\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"18\" />\n\t\t\t<EyeOff v-else :size=\"18\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport Eye from 'vue-material-design-icons/Eye.vue'\nimport EyeOff from 'vue-material-design-icons/EyeOff.vue'\nimport NcInputField from '../NcInputField/NcInputField.vue'\nimport debounce from 'debounce'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport logger from '../../utils/logger.js'\n\n/**\n * @typedef PasswordPolicy\n * @property {object} api - The URLs to the password_policy app methods\n * @property {string} api.generate - The URL to the password generator\n * @property {string} api.validate - The URL to the password validator\n * @property {boolean} enforceNonCommonPassword - Whether to enforce non common passwords\n * @property {boolean} enforceNumericCharacters - Whether to enforce numeric characters\n * @property {boolean} enforceSpecialCharacters - Whether to enforce special characters\n * @property {boolean} enforceUpperLowerCase - Whether to enforce upper and lower case\n * @property {number} minLength - The minimum length of the password\n */\n\n/** @type {PasswordPolicy|null} */\nconst passwordPolicy = loadState('core', 'capabilities', {}).password_policy || null\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcPasswordField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tEye,\n\t\tEyeOff,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\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\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t// Redefined props\n\n\t\t/**\n\t\t * Controls whether to display the trailing button.\n\t\t */\n\t\t showTrailingButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t// Removed NcInputField props, defined only by this component\n\n\t\ttrailingButtonLabel: undefined,\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Check if the user entered a valid password using the password_policy\n\t\t * app if available.\n\t\t *\n\t\t * Warning: this doesn't replace server side checking and will do nothing\n\t\t * if the password_policy app is disabled.\n\t\t */\n\t\tcheckPasswordStrength: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * The minlength property defines the minimum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tminlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\n\t\t/**\n\t\t * The maxlength property defines the maximum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'valid',\n\t\t'invalid',\n\t\t'update:value',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisPasswordHidden: true,\n\t\t\tinternalHelpMessage: '',\n\t\t\tisValid: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcomputedError() {\n\t\t\treturn this.error || this.isValid === false\n\t\t},\n\t\tcomputedSuccess() {\n\t\t\treturn this.success || this.isValid === true\n\t\t},\n\t\tcomputedHelperText() {\n\t\t\tif (this.helperText.length > 0) {\n\t\t\t\treturn this.helperText\n\t\t\t}\n\t\t\treturn this.internalHelpMessage\n\t\t},\n\n\t\trules() {\n\t\t\tconst { minlength } = this\n\t\t\treturn {\n\t\t\t\tminlength: minlength ?? passwordPolicy?.minLength,\n\t\t\t}\n\t\t},\n\n\t\ttrailingButtonLabelPassword() {\n\t\t\treturn this.isPasswordHidden ? t('Show password') : t('Hide password')\n\t\t},\n\n\t\tpropsAndAttrsToForward() {\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tvalue(newValue) {\n\t\t\tif (this.checkPasswordStrength) {\n\t\t\t\tif (passwordPolicy === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.checkPassword(newValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\t/**\n\t\t\t * Triggers when the value inside the password field is\n\t\t\t * updated.\n\t\t\t *\n\t\t\t * @property {string} The new value\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\ttogglePasswordVisibility() {\n\t\t\tthis.isPasswordHidden = !this.isPasswordHidden\n\t\t},\n\t\tcheckPassword: debounce(async function(password) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateOcsUrl('apps/password_policy/api/v1/validate'), { password })\n\t\t\t\tthis.isValid = data.ocs.data.passed\n\t\t\t\tif (data.ocs.data.passed) {\n\t\t\t\t\tthis.internalHelpMessage = t('Password is secure')\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t\t * password entered is valid.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('valid')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.internalHelpMessage = data.ocs.data.reason\n\t\t\t\t/**\n\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t * password entered is invalid.\n\t\t\t\t */\n\t\t\t\tthis.$emit('invalid')\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Password policy returned an error', e)\n\t\t\t}\n\t\t}, 500),\n\t},\n}\n</script>\n"],"names":["_sfc_main","passwordPolicy","loadState","NcInputFieldProps","NcInputField","Eye","EyeOff","minlength","t","key","newValue","event","debounce","password","data","axios","generateOcsUrl","logger"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,6 +1,6 @@
1
- require('../assets/NcRelatedResourcesPanel-COW9gzml.css');
1
+ require('../assets/NcRelatedResourcesPanel-D6K7OQFJ.css');
2
2
  "use strict";
3
- const d = require("@nextcloud/axios"), l = require("@nextcloud/router"), o = require("./_plugin-vue2_normalizer-GXKvuwrq.cjs"), p = require("./ChevronDown-DQPox_nl.cjs"), _ = require("./ChevronUp-kmHRpe7H.cjs"), c = require("../Components/NcButton.cjs"), m = require("./NcIconSvgWrapper-kIn1eQyv.cjs"), n = require("./_l10n-B986q8RC.cjs"), h = require("./autolink-D0rLUkqm.cjs"), f = (r) => r && r.__esModule ? r : { default: r }, u = /* @__PURE__ */ f(d), v = {
3
+ const d = require("@nextcloud/axios"), l = require("@nextcloud/router"), o = require("./_plugin-vue2_normalizer-GXKvuwrq.cjs"), p = require("./ChevronDown-DQPox_nl.cjs"), _ = require("./ChevronUp-kmHRpe7H.cjs"), c = require("../Components/NcButton.cjs"), m = require("./NcIconSvgWrapper-kIn1eQyv.cjs"), n = require("./_l10n-DZggkcVs.cjs"), h = require("./autolink-D0rLUkqm.cjs"), f = (r) => r && r.__esModule ? r : { default: r }, u = /* @__PURE__ */ f(d), v = {
4
4
  name: "AccountGroupIcon",
5
5
  emits: ["click"],
6
6
  props: {
@@ -147,7 +147,7 @@ var V = function() {
147
147
  return [t("OpenInNew", { attrs: { size: 20 } })];
148
148
  }, proxy: !0 }], null, !0) }), e.open(s.teamId) ? t("ChevronUp", { attrs: { size: 20 } }) : t("ChevronDown", { attrs: { size: 20 } })], 1), t("div", e._l(e.teamProviders(s.teamId), function(i) {
149
149
  return t("div", { key: i.id, staticClass: "related-team-provider" }, [i.resources.length > 0 ? t("h6", [e._v(" " + e._s(i.name) + " ")]) : e._e(), t("ul", e._l(i.resources, function(a) {
150
- return t("li", { key: a.url, staticClass: "related-team-resource" }, [t("a", { staticClass: "related-team-resource__link", attrs: { href: a.url } }, [a.iconEmoji ? t("span", { staticClass: "resource__icon" }, [e._v(" " + e._s(a.iconEmoji) + " ")]) : a.iconSvg ? t("NcIconSvgWrapper", { staticClass: "resource__icon", attrs: { svg: a.iconSvg, size: 20 } }) : a.iconUrl ? t("span", { staticClass: "resource__icon" }, [t("img", { attrs: { src: a.iconURL, alt: "" } })]) : e._e(), t("span", { staticClass: "resource__name" }, [e._v(" " + e._s(a.label) + " ")])], 1)]);
150
+ return t("li", { key: a.url, staticClass: "related-team-resource" }, [t("a", { staticClass: "related-team-resource__link", attrs: { href: a.url } }, [a.iconEmoji ? t("span", { staticClass: "resource__icon" }, [e._v(" " + e._s(a.iconEmoji) + " ")]) : a.iconSvg ? t("NcIconSvgWrapper", { staticClass: "resource__icon", attrs: { svg: a.iconSvg, size: 20 } }) : a.iconURL ? t("span", { staticClass: "resource__icon" }, [t("img", { attrs: { src: a.iconURL, alt: "" } })]) : e._e(), t("span", { staticClass: "resource__name" }, [e._v(" " + e._s(a.label) + " ")])], 1)]);
151
151
  }), 0)]);
152
152
  }), 0)]);
153
153
  })], 2) : e._e();
@@ -157,7 +157,7 @@ var V = function() {
157
157
  O,
158
158
  !1,
159
159
  null,
160
- "9e7f0c5b",
160
+ "018e1c98",
161
161
  null,
162
162
  null
163
163
  );
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcRelatedResourcesPanel-BmE02hfU.cjs","sources":["../../node_modules/vue-material-design-icons/AccountGroup.vue","../../node_modules/vue-material-design-icons/OpenInNew.vue","../../src/components/NcRelatedResourcesPanel/NcTeamResources.vue","../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-group-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=\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountGroupIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon open-in-new-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=\"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"OpenInNewIcon\",\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>","<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"team-resources\">\n\t\t<h5 class=\"team-resources__header\">\n\t\t\t{{ t('Related team resources') }}\n\t\t</h5>\n\t\t<details v-for=\"team in teamResources\"\n\t\t\t:key=\"team.teamId\"\n\t\t\tname=\"Team resources\"\n\t\t\tclass=\"related-team\"\n\t\t\t:open=\"open(team.teamId)\"\n\t\t\t@toggle=\"(event) => toggleOpen(team.teamId, event.target.open)\">\n\t\t\t<summary class=\"related-team__header\">\n\t\t\t\t<h5 class=\"related-team__name\">\n\t\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t\t\t{{ team.displayName }}\n\t\t\t\t</h5>\n\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t:href=\"team.link\"\n\t\t\t\t\t:aria-label=\"t('View team')\"\n\t\t\t\t\t:title=\"t('View team')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\n\t\t\t\t<ChevronUp v-if=\"open(team.teamId)\"\n\t\t\t\t\t:size=\"20\" />\n\t\t\t\t<ChevronDown v-else\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</summary>\n\n\t\t\t<div>\n\t\t\t\t<div v-for=\"provider in teamProviders(team.teamId)\"\n\t\t\t\t\t:key=\"provider.id\"\n\t\t\t\t\tclass=\"related-team-provider\">\n\t\t\t\t\t<h6 v-if=\"provider.resources.length > 0\">\n\t\t\t\t\t\t{{ provider.name }}\n\t\t\t\t\t</h6>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"resource in provider.resources\" :key=\"resource.url\" class=\"related-team-resource\">\n\t\t\t\t\t\t\t<a :href=\"resource.url\" class=\"related-team-resource__link\">\n\t\t\t\t\t\t\t\t<span v-if=\"resource.iconEmoji\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t{{ resource.iconEmoji }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper v-else-if=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\tclass=\"resource__icon\"\n\t\t\t\t\t\t\t\t\t:svg=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\t:size=\"20\" />\n\t\t\t\t\t\t\t\t<span v-else-if=\"resource.iconURL\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t<img :src=\"resource.iconURL\" alt=\"\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class=\"resource__name\">\n\t\t\t\t\t\t\t\t\t{{ resource.label }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</details>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport ChevronUp from 'vue-material-design-icons/ChevronUp.vue'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew.vue'\nimport NcButton from '../NcButton/NcButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcTeamResources',\n\n\tcomponents: {\n\t\tAccountGroup,\n\t\tChevronDown,\n\t\tChevronUp,\n\t\tOpenInNew,\n\t\tNcButton,\n\t\tNcIconSvgWrapper,\n\t},\n\n\tprops: {\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.circles !== undefined && (OC.config.version.split('.')[0] ?? 0) >= 29,\n\t\t\tloading: false,\n\t\t\tteamResources: null,\n\t\t\tteamOpen: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn !this.loading && this.teamResources?.length > 0\n\t\t},\n\t\tteamProviders() {\n\t\t\treturn (teamId) => {\n\t\t\t\tconst team = this.teamResources.find(t => t.teamId === teamId)\n\t\t\t\treturn team.resources?.reduce((acc, resource) => {\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!acc[resource.provider.id]) {\n\t\t\t\t\t\tacc[resource.provider.id] = resource.provider\n\t\t\t\t\t\tacc[resource.provider.id].resources = []\n\t\t\t\t\t}\n\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tacc[resource.provider.id].resources.push(resource)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t\topen() {\n\t\t\treturn (teamId) => {\n\t\t\t\treturn this.teamOpen.indexOf(teamId) !== -1\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchTeamResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchTeamResources() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`))\n\t\t\t\tthis.teamResources = response.data.ocs.data.teams\n\t\t\t\tthis.teamOpen = [this.teamResources[0]?.teamId]\n\t\t\t} catch (e) {\n\t\t\t\tthis.teamResources = null\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\ttoggleOpen(teamId, open) {\n\t\t\tif (open) {\n\t\t\t\tthis.teamOpen.push(teamId)\n\t\t\t} else {\n\t\t\t\tthis.teamOpen.splice(this.teamOpen.indexOf(teamId), 1)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.team-resources__header {\n\tfont-weight: bold;\n\tmargin-bottom: 6px;\n}\n\n.related-team {\n\tborder-radius: var(--border-radius-rounded);\n\tborder: 2px solid var(--color-border-dark);\n\tmargin-bottom: 6px;\n\n\t&__open {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&__header {\n\t\tpadding: 6px;\n\t\tpadding-right: 24px;\n\t\tdisplay: flex;\n\t\tgap: 12px;\n\t}\n\n\t&__name {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\talign-items: center;\n\t\tgap: 12px;\n\t\tpadding: 6px 12px;\n\t\tfont-weight: bold;\n\t\tmargin: 0;\n\t}\n\n\t.related-team-provider {\n\t\tpadding: 6px 12px;\n\n\t\t&__name {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 3px;\n\t\t}\n\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\tpadding: 6px 12px;\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t.related-team-resource {\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\theight: 44px;\n\t\t\talign-items: center;\n\t\t\tborder-radius: var(--border-radius-large);\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\toutline: 2px solid var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t\t.resource__icon {\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\ttext-align: center;\n\n\t\t\t& > img {\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\toverflow: hidden;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:to=\"route\"\n\t\t\t:href=\"route ? null : url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { getRoute } from '../NcRichText/autolink.js'\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.url)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<NcTeamResources :provider-id=\"providerId\"\n\t\t\t:item-id=\"itemId\" />\n\n\t\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t\t<div class=\"related-resources__header\">\n\t\t\t\t<h5>{{ header }}</h5>\n\t\t\t\t<p>{{ subline }}</p>\n\t\t\t</div>\n\n\t\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t\t:key=\"resource.itemId\"\n\t\t\t\tclass=\"related-resources__entry\"\n\t\t\t\t:icon=\"resource.icon\"\n\t\t\t\t:name=\"resource.title\"\n\t\t\t\t:url=\"resource.url\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcTeamResources from './NcTeamResources.vue'\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t\tNcTeamResources,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","AccountGroup","ChevronDown","ChevronUp","OpenInNew","NcButton","NcIconSvgWrapper","_a","_b","teamId","t","acc","resource","response","axios","generateOcsUrl","open","getRoute","NcResource","NcTeamResources","providerId","itemId","error","resources"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,4 +1,4 @@
1
- import '../assets/NcRelatedResourcesPanel-COW9gzml.css';
1
+ import '../assets/NcRelatedResourcesPanel-D6K7OQFJ.css';
2
2
  import c from "@nextcloud/axios";
3
3
  import { generateOcsUrl as u } from "@nextcloud/router";
4
4
  import { n as l } from "./_plugin-vue2_normalizer-Bj5bLKV4.mjs";
@@ -6,7 +6,7 @@ import { C as p } from "./ChevronDown-HHJdUMN4.mjs";
6
6
  import { C as m } from "./ChevronUp-B6TIgl1a.mjs";
7
7
  import d from "../Components/NcButton.mjs";
8
8
  import { N as _ } from "./NcIconSvgWrapper-BTdzvQGV.mjs";
9
- import { r as o, M as f, a as n, N as h, O as v } from "./_l10n-D8Scz3mH.mjs";
9
+ import { r as o, M as f, a as n, N as h, O as v } from "./_l10n-CAwwH-o2.mjs";
10
10
  import { g } from "./autolink-BtgUDDdk.mjs";
11
11
  const y = {
12
12
  name: "AccountGroupIcon",
@@ -155,7 +155,7 @@ var k = function() {
155
155
  return [t("OpenInNew", { attrs: { size: 20 } })];
156
156
  }, proxy: !0 }], null, !0) }), e.open(s.teamId) ? t("ChevronUp", { attrs: { size: 20 } }) : t("ChevronDown", { attrs: { size: 20 } })], 1), t("div", e._l(e.teamProviders(s.teamId), function(i) {
157
157
  return t("div", { key: i.id, staticClass: "related-team-provider" }, [i.resources.length > 0 ? t("h6", [e._v(" " + e._s(i.name) + " ")]) : e._e(), t("ul", e._l(i.resources, function(a) {
158
- return t("li", { key: a.url, staticClass: "related-team-resource" }, [t("a", { staticClass: "related-team-resource__link", attrs: { href: a.url } }, [a.iconEmoji ? t("span", { staticClass: "resource__icon" }, [e._v(" " + e._s(a.iconEmoji) + " ")]) : a.iconSvg ? t("NcIconSvgWrapper", { staticClass: "resource__icon", attrs: { svg: a.iconSvg, size: 20 } }) : a.iconUrl ? t("span", { staticClass: "resource__icon" }, [t("img", { attrs: { src: a.iconURL, alt: "" } })]) : e._e(), t("span", { staticClass: "resource__name" }, [e._v(" " + e._s(a.label) + " ")])], 1)]);
158
+ return t("li", { key: a.url, staticClass: "related-team-resource" }, [t("a", { staticClass: "related-team-resource__link", attrs: { href: a.url } }, [a.iconEmoji ? t("span", { staticClass: "resource__icon" }, [e._v(" " + e._s(a.iconEmoji) + " ")]) : a.iconSvg ? t("NcIconSvgWrapper", { staticClass: "resource__icon", attrs: { svg: a.iconSvg, size: 20 } }) : a.iconURL ? t("span", { staticClass: "resource__icon" }, [t("img", { attrs: { src: a.iconURL, alt: "" } })]) : e._e(), t("span", { staticClass: "resource__name" }, [e._v(" " + e._s(a.label) + " ")])], 1)]);
159
159
  }), 0)]);
160
160
  }), 0)]);
161
161
  })], 2) : e._e();
@@ -165,7 +165,7 @@ var k = function() {
165
165
  T,
166
166
  !1,
167
167
  null,
168
- "9e7f0c5b",
168
+ "018e1c98",
169
169
  null,
170
170
  null
171
171
  );
@@ -360,22 +360,22 @@ const F = {
360
360
  }
361
361
  }
362
362
  };
363
- var P = function() {
363
+ var L = function() {
364
364
  var e = this, t = e._self._c;
365
365
  return t("div", [t("NcTeamResources", { attrs: { "provider-id": e.providerId, "item-id": e.itemId } }), e.appEnabled && e.isVisible ? t("div", { staticClass: "related-resources" }, [t("div", { staticClass: "related-resources__header" }, [t("h5", [e._v(e._s(e.header))]), t("p", [e._v(e._s(e.subline))])]), e._l(e.resources, function(s) {
366
366
  return t("NcResource", { key: s.itemId, staticClass: "related-resources__entry", attrs: { icon: s.icon, name: s.title, url: s.url } });
367
367
  })], 2) : e._e()], 1);
368
- }, U = [], j = /* @__PURE__ */ l(
368
+ }, P = [], U = /* @__PURE__ */ l(
369
369
  F,
370
+ L,
370
371
  P,
371
- U,
372
372
  !1,
373
373
  null,
374
374
  "8855c164",
375
375
  null,
376
376
  null
377
377
  );
378
- const X = j.exports;
378
+ const X = U.exports;
379
379
  export {
380
380
  X as N
381
381
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcRelatedResourcesPanel-C8HsjDiN.mjs","sources":["../../node_modules/vue-material-design-icons/AccountGroup.vue","../../node_modules/vue-material-design-icons/OpenInNew.vue","../../src/components/NcRelatedResourcesPanel/NcTeamResources.vue","../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-group-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=\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountGroupIcon\",\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon open-in-new-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=\"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"OpenInNewIcon\",\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>","<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"team-resources\">\n\t\t<h5 class=\"team-resources__header\">\n\t\t\t{{ t('Related team resources') }}\n\t\t</h5>\n\t\t<details v-for=\"team in teamResources\"\n\t\t\t:key=\"team.teamId\"\n\t\t\tname=\"Team resources\"\n\t\t\tclass=\"related-team\"\n\t\t\t:open=\"open(team.teamId)\"\n\t\t\t@toggle=\"(event) => toggleOpen(team.teamId, event.target.open)\">\n\t\t\t<summary class=\"related-team__header\">\n\t\t\t\t<h5 class=\"related-team__name\">\n\t\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t\t\t{{ team.displayName }}\n\t\t\t\t</h5>\n\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t:href=\"team.link\"\n\t\t\t\t\t:aria-label=\"t('View team')\"\n\t\t\t\t\t:title=\"t('View team')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\n\t\t\t\t<ChevronUp v-if=\"open(team.teamId)\"\n\t\t\t\t\t:size=\"20\" />\n\t\t\t\t<ChevronDown v-else\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</summary>\n\n\t\t\t<div>\n\t\t\t\t<div v-for=\"provider in teamProviders(team.teamId)\"\n\t\t\t\t\t:key=\"provider.id\"\n\t\t\t\t\tclass=\"related-team-provider\">\n\t\t\t\t\t<h6 v-if=\"provider.resources.length > 0\">\n\t\t\t\t\t\t{{ provider.name }}\n\t\t\t\t\t</h6>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"resource in provider.resources\" :key=\"resource.url\" class=\"related-team-resource\">\n\t\t\t\t\t\t\t<a :href=\"resource.url\" class=\"related-team-resource__link\">\n\t\t\t\t\t\t\t\t<span v-if=\"resource.iconEmoji\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t{{ resource.iconEmoji }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper v-else-if=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\tclass=\"resource__icon\"\n\t\t\t\t\t\t\t\t\t:svg=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\t:size=\"20\" />\n\t\t\t\t\t\t\t\t<span v-else-if=\"resource.iconURL\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t<img :src=\"resource.iconURL\" alt=\"\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class=\"resource__name\">\n\t\t\t\t\t\t\t\t\t{{ resource.label }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</details>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport ChevronUp from 'vue-material-design-icons/ChevronUp.vue'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew.vue'\nimport NcButton from '../NcButton/NcButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcTeamResources',\n\n\tcomponents: {\n\t\tAccountGroup,\n\t\tChevronDown,\n\t\tChevronUp,\n\t\tOpenInNew,\n\t\tNcButton,\n\t\tNcIconSvgWrapper,\n\t},\n\n\tprops: {\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.circles !== undefined && (OC.config.version.split('.')[0] ?? 0) >= 29,\n\t\t\tloading: false,\n\t\t\tteamResources: null,\n\t\t\tteamOpen: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn !this.loading && this.teamResources?.length > 0\n\t\t},\n\t\tteamProviders() {\n\t\t\treturn (teamId) => {\n\t\t\t\tconst team = this.teamResources.find(t => t.teamId === teamId)\n\t\t\t\treturn team.resources?.reduce((acc, resource) => {\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!acc[resource.provider.id]) {\n\t\t\t\t\t\tacc[resource.provider.id] = resource.provider\n\t\t\t\t\t\tacc[resource.provider.id].resources = []\n\t\t\t\t\t}\n\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tacc[resource.provider.id].resources.push(resource)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t\topen() {\n\t\t\treturn (teamId) => {\n\t\t\t\treturn this.teamOpen.indexOf(teamId) !== -1\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchTeamResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchTeamResources() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`))\n\t\t\t\tthis.teamResources = response.data.ocs.data.teams\n\t\t\t\tthis.teamOpen = [this.teamResources[0]?.teamId]\n\t\t\t} catch (e) {\n\t\t\t\tthis.teamResources = null\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\ttoggleOpen(teamId, open) {\n\t\t\tif (open) {\n\t\t\t\tthis.teamOpen.push(teamId)\n\t\t\t} else {\n\t\t\t\tthis.teamOpen.splice(this.teamOpen.indexOf(teamId), 1)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.team-resources__header {\n\tfont-weight: bold;\n\tmargin-bottom: 6px;\n}\n\n.related-team {\n\tborder-radius: var(--border-radius-rounded);\n\tborder: 2px solid var(--color-border-dark);\n\tmargin-bottom: 6px;\n\n\t&__open {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&__header {\n\t\tpadding: 6px;\n\t\tpadding-right: 24px;\n\t\tdisplay: flex;\n\t\tgap: 12px;\n\t}\n\n\t&__name {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\talign-items: center;\n\t\tgap: 12px;\n\t\tpadding: 6px 12px;\n\t\tfont-weight: bold;\n\t\tmargin: 0;\n\t}\n\n\t.related-team-provider {\n\t\tpadding: 6px 12px;\n\n\t\t&__name {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 3px;\n\t\t}\n\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\tpadding: 6px 12px;\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t.related-team-resource {\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\theight: 44px;\n\t\t\talign-items: center;\n\t\t\tborder-radius: var(--border-radius-large);\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\toutline: 2px solid var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t\t.resource__icon {\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\ttext-align: center;\n\n\t\t\t& > img {\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\toverflow: hidden;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:to=\"route\"\n\t\t\t:href=\"route ? null : url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.js'\n\nimport { getRoute } from '../NcRichText/autolink.js'\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.url)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<docs>\n### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<NcTeamResources :provider-id=\"providerId\"\n\t\t\t:item-id=\"itemId\" />\n\n\t\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t\t<div class=\"related-resources__header\">\n\t\t\t\t<h5>{{ header }}</h5>\n\t\t\t\t<p>{{ subline }}</p>\n\t\t\t</div>\n\n\t\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t\t:key=\"resource.itemId\"\n\t\t\t\tclass=\"related-resources__entry\"\n\t\t\t\t:icon=\"resource.icon\"\n\t\t\t\t:name=\"resource.title\"\n\t\t\t\t:url=\"resource.url\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcTeamResources from './NcTeamResources.vue'\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t\tNcTeamResources,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","AccountGroup","ChevronDown","ChevronUp","OpenInNew","NcButton","NcIconSvgWrapper","_a","_b","teamId","t","acc","resource","response","axios","generateOcsUrl","open","getRoute","NcResource","NcTeamResources","providerId","itemId","error","resources"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,22 +1,23 @@
1
- import '../assets/NcRichText-BMe-xENJ.css';
2
- import '../assets/NcRichContenteditable-CtbqXSHe.css';
3
- import { r as d, v as m, B as h, a } from "./_l10n-D8Scz3mH.mjs";
1
+ import '../assets/NcRichText-D2BBsB-_.css';
2
+ import '../assets/NcRichContenteditable-DvTdg1DO.css';
3
+ import { r as d, v as m, B as h, a } from "./_l10n-CAwwH-o2.mjs";
4
4
  import { generateUrl as b } from "@nextcloud/router";
5
- import { N as f } from "./NcUserStatusIcon-0SGYQL9L.mjs";
5
+ import { N as f } from "./NcUserStatusIcon-DMQxYiY6.mjs";
6
6
  import { n as p } from "./_plugin-vue2_normalizer-Bj5bLKV4.mjs";
7
- import { r as _ } from "./index-DYXjj9ET.mjs";
7
+ import { r as _ } from "./index-BAVa4G2v.mjs";
8
8
  import "../Directives/Tooltip.mjs";
9
9
  import { a as g, e as y } from "./emoji-k4gWHxrE.mjs";
10
+ import "@vueuse/core";
11
+ import "vue";
12
+ import { d as C, g as v } from "./referencePickerModal-CtIcJRWz.mjs";
10
13
  import "unist-util-visit";
11
14
  import "unist-builder";
12
15
  import "./index-CU14QsCg.mjs";
13
- import "@vueuse/core";
14
16
  import "../Components/NcButton.mjs";
15
- import { d as C, g as v } from "./referencePickerModal-DUhJWt2e.mjs";
16
17
  import "@nextcloud/axios";
17
18
  /* empty css */
18
19
  import "../Components/NcLoadingIcon.mjs";
19
- import "./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CKROuACA.mjs";
20
+ import "./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-DMJGZndr.mjs";
20
21
  import { G as u } from "./GenRandomId-BW3iYFf9.mjs";
21
22
  import "unified";
22
23
  import "remark-parse";
@@ -26,13 +27,13 @@ import "remark-rehype";
26
27
  import "rehype-react";
27
28
  import "rehype-external-links";
28
29
  import "../Components/NcEmptyContent.mjs";
29
- import "./NcSelect-BVmjiQFa.mjs";
30
- import "./NcTextField-CU-YIhL3.mjs";
30
+ import "./NcSelect-C_dMqtoe.mjs";
31
+ import "./NcTextField-BEpgHsY2.mjs";
31
32
  import "../Components/NcModal.mjs";
32
33
  import "@nextcloud/event-bus";
33
34
  import T from "tributejs/dist/tribute.esm.js";
34
- import A from "debounce";
35
- import k from "string-length";
35
+ import k from "debounce";
36
+ import A from "string-length";
36
37
  import { VTooltip as S } from "floating-vue";
37
38
  const x = {
38
39
  name: "NcAutoCompleteResult",
@@ -99,17 +100,17 @@ const x = {
99
100
  var I = function() {
100
101
  var t = this, n = t._self._c;
101
102
  return n("div", { staticClass: "autocomplete-result" }, [n("div", { staticClass: "autocomplete-result__icon", class: [t.icon, "autocomplete-result__icon--".concat(t.avatarUrl ? "with-avatar" : "")], style: t.avatarUrl ? { backgroundImage: "url(".concat(t.avatarUrl, ")") } : null }, [t.status.icon ? n("span", { staticClass: "autocomplete-result__status autocomplete-result__status--icon" }, [t._v(" " + t._s(t.status && t.status.icon || "") + " ")]) : t.status.status && t.status.status !== "offline" ? n("NcUserStatusIcon", { staticClass: "autocomplete-result__status", attrs: { status: t.status.status } }) : t._e()], 1), n("span", { staticClass: "autocomplete-result__content" }, [n("span", { staticClass: "autocomplete-result__title", attrs: { title: t.labelWithFallback } }, [t._v(" " + t._s(t.labelWithFallback) + " ")]), t.subline ? n("span", { staticClass: "autocomplete-result__subline" }, [t._v(" " + t._s(t.subline) + " ")]) : t._e()])]);
102
- }, w = [], $ = /* @__PURE__ */ p(
103
+ }, E = [], w = /* @__PURE__ */ p(
103
104
  x,
104
105
  I,
105
- w,
106
+ E,
106
107
  !1,
107
108
  null,
108
109
  "9cff39ed",
109
110
  null,
110
111
  null
111
112
  );
112
- const E = $.exports;
113
+ const $ = w.exports;
113
114
  d(h, m);
114
115
  const O = {
115
116
  "material-design-icon": "_material-design-icon_pq0s6_26",
@@ -271,7 +272,7 @@ const R = {
271
272
  * @return {boolean}
272
273
  */
273
274
  isOverMaxlength() {
274
- return this.isEmptyValue || !this.maxlength ? !1 : k(this.localValue) > this.maxlength;
275
+ return this.isEmptyValue || !this.maxlength ? !1 : A(this.localValue) > this.maxlength;
275
276
  },
276
277
  /**
277
278
  * Tooltip to show if characters count is over limit
@@ -306,7 +307,7 @@ const R = {
306
307
  * Compute debounce function for the autocomplete function
307
308
  */
308
309
  debouncedAutoComplete() {
309
- return A(async (i, t) => {
310
+ return k(async (i, t) => {
310
311
  this.autoComplete(i, t);
311
312
  }, 100);
312
313
  }
@@ -345,8 +346,9 @@ const R = {
345
346
  var e;
346
347
  return "".concat(n.id, " ").concat((e = n.label) != null ? e : n.title);
347
348
  },
349
+ requireLeadingSpace: !0,
348
350
  // Popup mention autocompletion templates
349
- menuItemTemplate: (n) => i(this.renderComponentHtml(n.original, E)),
351
+ menuItemTemplate: (n) => i(this.renderComponentHtml(n.original, $)),
350
352
  // Hide if no results
351
353
  noMatchTemplate: () => '<span class="hidden"></span>',
352
354
  // Inner display of mentions
@@ -365,6 +367,7 @@ const R = {
365
367
  // Don't use the tribute search function at all
366
368
  // We pass search results as values (see below)
367
369
  lookup: (n, e) => e,
370
+ requireLeadingSpace: !0,
368
371
  // Popup mention autocompletion templates
369
372
  menuItemTemplate: (n) => o.includes(n.original) ? n.original : i('<span class="'.concat(this.$style["tribute-item__emoji"], '">').concat(n.original.native, "</span> :").concat(n.original.short_name)),
370
373
  // Hide if no results
@@ -385,6 +388,7 @@ const R = {
385
388
  // Don't use the tribute search function at all
386
389
  // We pass search results as values (see below)
387
390
  lookup: (n, e) => e,
391
+ requireLeadingSpace: !0,
388
392
  // Popup mention autocompletion templates
389
393
  menuItemTemplate: (n) => i('<img class="'.concat(this.$style["tribute-item__icon"], '" src="').concat(n.original.icon_url, '"> <span class="').concat(this.$style["tribute-item__title"], '">').concat(n.original.title, "</span>")),
390
394
  // Hide if no results
@@ -533,6 +537,9 @@ const R = {
533
537
  onKeyUp(i) {
534
538
  i.stopImmediatePropagation();
535
539
  },
540
+ onKeyEsc(i) {
541
+ this.tribute && this.isAutocompleteOpen && (i.stopImmediatePropagation(), this.tribute.hideMenu());
542
+ },
536
543
  /**
537
544
  * Get HTML element with Tribute.js container
538
545
  * @return {HTMLElement}
@@ -612,7 +619,9 @@ var K = function() {
612
619
  return !e.type.indexOf("key") && t._k(e.keyCode, "up", 38, e.key, ["Up", "ArrowUp"]) || e.ctrlKey || e.shiftKey || e.altKey || e.metaKey ? null : (e.stopPropagation(), t.onTributeArrowKeyDown.apply(null, arguments));
613
620
  }, function(e) {
614
621
  return !e.type.indexOf("key") && t._k(e.keyCode, "down", 40, e.key, ["Down", "ArrowDown"]) || e.ctrlKey || e.shiftKey || e.altKey || e.metaKey ? null : (e.stopPropagation(), t.onTributeArrowKeyDown.apply(null, arguments));
615
- }], paste: t.onPaste, "!keyup": function(e) {
622
+ }], "!keydown": function(e) {
623
+ return !e.type.indexOf("key") && t._k(e.keyCode, "esc", 27, e.key, ["Esc", "Escape"]) ? null : t.onKeyEsc.apply(null, arguments);
624
+ }, paste: t.onPaste, "!keyup": function(e) {
616
625
  return e.stopPropagation(), e.preventDefault(), t.onKeyUp.apply(null, arguments);
617
626
  }, "tribute-active-true": function(e) {
618
627
  return t.onTributeActive(!0);
@@ -623,22 +632,22 @@ var K = function() {
623
632
  const c = {
624
633
  $style: O
625
634
  };
626
- function N(i) {
635
+ function q(i) {
627
636
  for (var t in c)
628
637
  this[t] = c[t];
629
638
  }
630
- var V = /* @__PURE__ */ p(
639
+ var N = /* @__PURE__ */ p(
631
640
  R,
632
641
  K,
633
642
  M,
634
643
  !1,
635
- N,
636
- "42936321",
644
+ q,
645
+ "2d2d4f42",
637
646
  null,
638
647
  null
639
648
  );
640
- const gt = V.exports;
649
+ const yt = N.exports;
641
650
  export {
642
- E as N,
643
- gt as a
651
+ $ as N,
652
+ yt as a
644
653
  };