@nextcloud/vue 9.0.0-alpha.8 → 9.0.0-rc.1

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 (365) hide show
  1. package/CHANGELOG.md +99 -12
  2. package/dist/assets/{NcActionButton-d8aZCq9u.css → NcActionButton-DfdRrSEu.css} +16 -16
  3. package/dist/assets/{NcActionCheckbox-tMIOGziy.css → NcActionCheckbox--lTDnNsx.css} +12 -12
  4. package/dist/assets/{NcActionInput-C-rQsTEA.css → NcActionInput-BNWL2Q-3.css} +62 -62
  5. package/dist/assets/{NcActionLink-jSPFFKV8.css → NcActionLink-C9_ycPLF.css} +12 -12
  6. package/dist/assets/{NcActionRadio-xdrmoEIq.css → NcActionRadio-DnAjyubC.css} +12 -12
  7. package/dist/assets/{NcActionRouter-qNNqBZab.css → NcActionRouter-CVsc7Ezc.css} +15 -15
  8. package/dist/assets/{NcActionText-0XNfku_2.css → NcActionText-C7y7Pe6P.css} +17 -17
  9. package/dist/assets/{NcActionTextEditable-ZlNtR_B_.css → NcActionTextEditable-OBnWSj_T.css} +60 -60
  10. package/dist/assets/{NcAppContent-CLu_1q4O.css → NcAppContent-CvTesBem.css} +23 -23
  11. package/dist/assets/{NcAppNavigationItem-aVy0uQwf.css → NcAppNavigationItem-Cq6ZYdmT.css} +30 -30
  12. package/dist/assets/{NcAppNavigationNewItem-rCrG0Uuo.css → NcAppNavigationNewItem-CsqJ6c8v.css} +32 -32
  13. package/dist/assets/{NcAppSettingsDialog-DZfD_UEa.css → NcAppSettingsDialog-DMWosHw9.css} +10 -10
  14. package/dist/assets/{NcAppSidebar-GFQ62pY2.css → NcAppSidebar-DejDBLy4.css} +75 -63
  15. package/dist/assets/{NcAvatar-DUKfNDGL.css → NcAvatar-UxFZ39EC.css} +24 -24
  16. package/dist/assets/{NcButton-wmjlEdLP.css → NcButton-DbE0wInI.css} +68 -64
  17. package/dist/assets/{NcCheckboxRadioSwitch-uwXbP_jb.css → NcCheckboxRadioSwitch-sqQXUuVB.css} +45 -44
  18. package/dist/assets/{NcChip-CKtzzrlA.css → NcChip-C-0jMpNk.css} +9 -9
  19. package/dist/assets/{NcDashboardWidget-xV4o6Cen.css → NcDashboardWidget-BEYk4O95.css} +12 -12
  20. package/dist/assets/NcDateTimePicker-pmbCzZnb.css +83 -0
  21. package/dist/assets/{NcDialog-Dkeikssh.css → NcDialog-bP7Jt0ZE.css} +15 -15
  22. package/dist/assets/{NcEmptyContent-D1O466rM.css → NcEmptyContent-BqnUPzZQ.css} +9 -9
  23. package/dist/assets/{NcHeaderButton-BPIasMkw.css → NcHeaderButton-Ct8k0yDh.css} +7 -7
  24. package/dist/assets/{NcHeaderMenu-ZmtqwEYA.css → NcHeaderMenu-zo6kw_jn.css} +11 -11
  25. package/dist/assets/{NcIconSvgWrapper-DQFhmjCC.css → NcIconSvgWrapper-BO9Dme5J.css} +14 -8
  26. package/dist/assets/{NcListItem-Byw-ayOI.css → NcListItem-D6F_oFLK.css} +44 -44
  27. package/dist/assets/{NcMentionBubble-BL05HUeF.css → NcMentionBubble-CB5c5ue2.css} +10 -9
  28. package/dist/assets/{NcPopover-ChETNAVH.css → NcPopover-zFjgXDlM.css} +13 -0
  29. package/dist/assets/{NcRichContenteditable-Bxi-Ki0j.css → NcRichContenteditable-CkyUKlIz.css} +31 -28
  30. package/dist/assets/{NcRichText-Dvt8jvWN.css → NcRichText-BbVi69cc.css} +87 -89
  31. package/dist/assets/{NcSelect-B6DUjUdl.css → NcSelect-BCBpQnFL.css} +0 -3
  32. package/dist/assets/{index-Du_FXiPy.css → index-CjPwAJ46.css} +68 -69
  33. package/dist/assets/index-D9L0rgJk.css +4 -0
  34. package/dist/assets/{referencePickerModal-CkGgDb19.css → referencePickerModal-DAD-jv3F.css} +23 -23
  35. package/dist/chunks/{NcActionButton-BdQ_qmvW.mjs → NcActionButton-BZEDhdCm.mjs} +48 -6
  36. package/dist/chunks/NcActionButton-BZEDhdCm.mjs.map +1 -0
  37. package/dist/chunks/{NcActionButtonGroup-TitZerDl.mjs → NcActionButtonGroup-VJlvSBVZ.mjs} +2 -2
  38. package/dist/chunks/{NcActionButtonGroup-TitZerDl.mjs.map → NcActionButtonGroup-VJlvSBVZ.mjs.map} +1 -1
  39. package/dist/chunks/{NcActionCheckbox-CUYbo1rw.mjs → NcActionCheckbox-DLPDTACR.mjs} +3 -3
  40. package/dist/chunks/{NcActionCheckbox-CUYbo1rw.mjs.map → NcActionCheckbox-DLPDTACR.mjs.map} +1 -1
  41. package/dist/chunks/{NcActionInput-TI648L3V.mjs → NcActionInput-D1R71Reh.mjs} +10 -10
  42. package/dist/chunks/{NcActionInput-TI648L3V.mjs.map → NcActionInput-D1R71Reh.mjs.map} +1 -1
  43. package/dist/chunks/{NcActionLink-cQlsviu9.mjs → NcActionLink-BTIApspK.mjs} +3 -3
  44. package/dist/chunks/{NcActionLink-cQlsviu9.mjs.map → NcActionLink-BTIApspK.mjs.map} +1 -1
  45. package/dist/chunks/{NcActionRadio-tORL1qPt.mjs → NcActionRadio-CPoWB58D.mjs} +3 -3
  46. package/dist/chunks/{NcActionRadio-tORL1qPt.mjs.map → NcActionRadio-CPoWB58D.mjs.map} +1 -1
  47. package/dist/chunks/{NcActionRouter-Bw1tpEZt.mjs → NcActionRouter-DATNpU_e.mjs} +3 -3
  48. package/dist/chunks/{NcActionRouter-Bw1tpEZt.mjs.map → NcActionRouter-DATNpU_e.mjs.map} +1 -1
  49. package/dist/chunks/{NcActionText-VLCHOiIy.mjs → NcActionText-3mJjsJz_.mjs} +3 -3
  50. package/dist/chunks/{NcActionText-VLCHOiIy.mjs.map → NcActionText-3mJjsJz_.mjs.map} +1 -1
  51. package/dist/chunks/{NcActionTextEditable-nTbwgRy2.mjs → NcActionTextEditable-Dv1_bMFY.mjs} +3 -3
  52. package/dist/chunks/NcActionTextEditable-Dv1_bMFY.mjs.map +1 -0
  53. package/dist/chunks/{NcActions-CgKHXNbF.mjs → NcActions-2UedVnLW.mjs} +19 -6
  54. package/dist/chunks/NcActions-2UedVnLW.mjs.map +1 -0
  55. package/dist/chunks/{NcAppContent-C4gBVRQs.mjs → NcAppContent-Bdlo1JwI.mjs} +19 -21
  56. package/dist/chunks/NcAppContent-Bdlo1JwI.mjs.map +1 -0
  57. package/dist/chunks/{NcAppNavigation-DbRpHbi9.mjs → NcAppNavigation-BHLzIgKf.mjs} +2 -2
  58. package/dist/chunks/{NcAppNavigation-DbRpHbi9.mjs.map → NcAppNavigation-BHLzIgKf.mjs.map} +1 -1
  59. package/dist/chunks/{NcAppNavigationCaption-R_UZ7iKw.mjs → NcAppNavigationCaption-D1_4GAVS.mjs} +2 -2
  60. package/dist/chunks/{NcAppNavigationCaption-R_UZ7iKw.mjs.map → NcAppNavigationCaption-D1_4GAVS.mjs.map} +1 -1
  61. package/dist/chunks/{NcAppNavigationItem-CxYtFEhV.mjs → NcAppNavigationItem-Cxzp2qW7.mjs} +69 -69
  62. package/dist/chunks/{NcAppNavigationItem-CxYtFEhV.mjs.map → NcAppNavigationItem-Cxzp2qW7.mjs.map} +1 -1
  63. package/dist/chunks/{NcAppNavigationNew-sMVo_IoL.mjs → NcAppNavigationNew-BUQgcKdv.mjs} +2 -2
  64. package/dist/chunks/{NcAppNavigationNew-sMVo_IoL.mjs.map → NcAppNavigationNew-BUQgcKdv.mjs.map} +1 -1
  65. package/dist/chunks/{NcAppNavigationNewItem-CJZcL6GH.mjs → NcAppNavigationNewItem-BNFUFCCJ.mjs} +4 -4
  66. package/dist/chunks/{NcAppNavigationNewItem-CJZcL6GH.mjs.map → NcAppNavigationNewItem-BNFUFCCJ.mjs.map} +1 -1
  67. package/dist/chunks/{NcAppNavigationSearch-Dbhh-Vtw.mjs → NcAppNavigationSearch-B7w1J5K3.mjs} +3 -3
  68. package/dist/chunks/{NcAppNavigationSearch-Dbhh-Vtw.mjs.map → NcAppNavigationSearch-B7w1J5K3.mjs.map} +1 -1
  69. package/dist/chunks/{NcAppNavigationSettings-Bfo3EWk_.mjs → NcAppNavigationSettings-aTOqq_-d.mjs} +3 -3
  70. package/dist/chunks/{NcAppNavigationSettings-Bfo3EWk_.mjs.map → NcAppNavigationSettings-aTOqq_-d.mjs.map} +1 -1
  71. package/dist/chunks/{NcAppNavigationToggle-Ys-PjFo3.mjs → NcAppNavigationToggle-CSD4yx6Z.mjs} +3 -3
  72. package/dist/chunks/{NcAppNavigationToggle-Ys-PjFo3.mjs.map → NcAppNavigationToggle-CSD4yx6Z.mjs.map} +1 -1
  73. package/dist/chunks/{NcAppSettingsDialog-Cc-OdY9a.mjs → NcAppSettingsDialog-DJhRLDT2.mjs} +8 -8
  74. package/dist/chunks/{NcAppSettingsDialog-Cc-OdY9a.mjs.map → NcAppSettingsDialog-DJhRLDT2.mjs.map} +1 -1
  75. package/dist/chunks/{NcAppSidebar-Dgwj8O_Z.mjs → NcAppSidebar-Dnb5U9gv.mjs} +285 -272
  76. package/dist/chunks/NcAppSidebar-Dnb5U9gv.mjs.map +1 -0
  77. package/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-0j0aFDeK.mjs +30 -0
  78. package/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-0j0aFDeK.mjs.map +1 -0
  79. package/dist/chunks/{NcAvatar-CA8y4d-c.mjs → NcAvatar-Cg9PDzho.mjs} +36 -14
  80. package/dist/chunks/NcAvatar-Cg9PDzho.mjs.map +1 -0
  81. package/dist/chunks/{NcBreadcrumb-DSjIxTeU.mjs → NcBreadcrumb-DpW0HXlg.mjs} +3 -3
  82. package/dist/chunks/{NcBreadcrumb-DSjIxTeU.mjs.map → NcBreadcrumb-DpW0HXlg.mjs.map} +1 -1
  83. package/dist/chunks/{NcBreadcrumbs-jPvP6Cmo.mjs → NcBreadcrumbs-CbQjZLpZ.mjs} +6 -7
  84. package/dist/chunks/{NcBreadcrumbs-jPvP6Cmo.mjs.map → NcBreadcrumbs-CbQjZLpZ.mjs.map} +1 -1
  85. package/dist/chunks/NcButton-Byg8-ta1.mjs +102 -0
  86. package/dist/chunks/NcButton-Byg8-ta1.mjs.map +1 -0
  87. package/dist/chunks/{NcCheckboxRadioSwitch-CWU_M_ui.mjs → NcCheckboxRadioSwitch-BmzUQ-WN.mjs} +29 -27
  88. package/dist/chunks/NcCheckboxRadioSwitch-BmzUQ-WN.mjs.map +1 -0
  89. package/dist/chunks/{NcChip-C3U2HYR9.mjs → NcChip-BQRPT42V.mjs} +10 -13
  90. package/dist/chunks/NcChip-BQRPT42V.mjs.map +1 -0
  91. package/dist/chunks/{NcCollectionList-BtHsipae.mjs → NcCollectionList-CUlNTcYX.mjs} +6 -6
  92. package/dist/chunks/{NcCollectionList-BtHsipae.mjs.map → NcCollectionList-CUlNTcYX.mjs.map} +1 -1
  93. package/dist/chunks/{NcColorPicker-BI-Is4nj.mjs → NcColorPicker-DGwM1Zki.mjs} +5 -5
  94. package/dist/chunks/{NcColorPicker-BI-Is4nj.mjs.map → NcColorPicker-DGwM1Zki.mjs.map} +1 -1
  95. package/dist/chunks/{NcContent-BcF6f3N-.mjs → NcContent-BhN8SiS1.mjs} +4 -4
  96. package/dist/chunks/{NcContent-BcF6f3N-.mjs.map → NcContent-BhN8SiS1.mjs.map} +1 -1
  97. package/dist/chunks/{NcDashboardWidget-1rVqTzgV.mjs → NcDashboardWidget-CC2pZ6GI.mjs} +7 -7
  98. package/dist/chunks/{NcDashboardWidget-1rVqTzgV.mjs.map → NcDashboardWidget-CC2pZ6GI.mjs.map} +1 -1
  99. package/dist/chunks/{NcDashboardWidgetItem-7RXY5EKJ.mjs → NcDashboardWidgetItem-BsHwLKh3.mjs} +4 -4
  100. package/dist/chunks/{NcDashboardWidgetItem-7RXY5EKJ.mjs.map → NcDashboardWidgetItem-BsHwLKh3.mjs.map} +1 -1
  101. package/dist/chunks/{NcDateTime.vue_vue_type_script_setup_true_lang-DtP-oauZ.mjs → NcDateTime.vue_vue_type_script_setup_true_lang-CKX0mNnP.mjs} +2 -2
  102. package/dist/chunks/{NcDateTime.vue_vue_type_script_setup_true_lang-DtP-oauZ.mjs.map → NcDateTime.vue_vue_type_script_setup_true_lang-CKX0mNnP.mjs.map} +1 -1
  103. package/dist/chunks/{NcDateTimePicker-BzfuHym4.mjs → NcDateTimePicker-BM9F_PSI.mjs} +79 -37
  104. package/dist/chunks/NcDateTimePicker-BM9F_PSI.mjs.map +1 -0
  105. package/dist/chunks/{NcDateTimePickerNative-Dake1IML.mjs → NcDateTimePickerNative-DoGQFKev.mjs} +2 -2
  106. package/dist/chunks/{NcDateTimePickerNative-Dake1IML.mjs.map → NcDateTimePickerNative-DoGQFKev.mjs.map} +1 -1
  107. package/dist/chunks/{NcDialog-_pc2BPHU.mjs → NcDialog-CbXsHgYI.mjs} +7 -7
  108. package/dist/chunks/NcDialog-CbXsHgYI.mjs.map +1 -0
  109. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-DR0Yn-dH.mjs +69 -0
  110. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-DR0Yn-dH.mjs.map +1 -0
  111. package/dist/chunks/{NcEmojiPicker-CWbez_of.mjs → NcEmojiPicker-B0y1ZY5N.mjs} +7 -7
  112. package/dist/chunks/{NcEmojiPicker-CWbez_of.mjs.map → NcEmojiPicker-B0y1ZY5N.mjs.map} +1 -1
  113. package/dist/chunks/NcEmptyContent-CBWBkBL8.mjs +56 -0
  114. package/dist/chunks/NcEmptyContent-CBWBkBL8.mjs.map +1 -0
  115. package/dist/chunks/{NcHeaderButton-BsstEWtv.mjs → NcHeaderButton-BXfTpkIm.mjs} +4 -4
  116. package/dist/chunks/{NcHeaderButton-BsstEWtv.mjs.map → NcHeaderButton-BXfTpkIm.mjs.map} +1 -1
  117. package/dist/chunks/{NcHeaderMenu-ZzoCwPvX.mjs → NcHeaderMenu-D-WDQIHd.mjs} +5 -5
  118. package/dist/chunks/{NcHeaderMenu-ZzoCwPvX.mjs.map → NcHeaderMenu-D-WDQIHd.mjs.map} +1 -1
  119. package/dist/chunks/{NcIconSvgWrapper-BYTrkA66.mjs → NcIconSvgWrapper-DZBRQNfG.mjs} +34 -21
  120. package/dist/chunks/NcIconSvgWrapper-DZBRQNfG.mjs.map +1 -0
  121. package/dist/chunks/{NcInputConfirmCancel-CX56m05a.mjs → NcInputConfirmCancel-CUJM5y0h.mjs} +3 -3
  122. package/dist/chunks/{NcInputConfirmCancel-CX56m05a.mjs.map → NcInputConfirmCancel-CUJM5y0h.mjs.map} +1 -1
  123. package/dist/chunks/{NcInputField-DdZlDVwQ.mjs → NcInputField-BBS1E7r-.mjs} +2 -2
  124. package/dist/chunks/{NcInputField-DdZlDVwQ.mjs.map → NcInputField-BBS1E7r-.mjs.map} +1 -1
  125. package/dist/chunks/{NcListItem-DF8Yv05m.mjs → NcListItem-Bx_uxyFR.mjs} +5 -5
  126. package/dist/chunks/{NcListItem-DF8Yv05m.mjs.map → NcListItem-Bx_uxyFR.mjs.map} +1 -1
  127. package/dist/chunks/{NcListItemIcon-nzw_x2Q5.mjs → NcListItemIcon-CytWJM69.mjs} +4 -4
  128. package/dist/chunks/{NcListItemIcon-nzw_x2Q5.mjs.map → NcListItemIcon-CytWJM69.mjs.map} +1 -1
  129. package/dist/chunks/{NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs → NcMentionBubble.vue_vue_type_style_index_0_scoped_5b8f093f_lang-DZbkIMTW.mjs} +2 -2
  130. package/dist/chunks/{NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs.map → NcMentionBubble.vue_vue_type_style_index_0_scoped_5b8f093f_lang-DZbkIMTW.mjs.map} +1 -1
  131. package/dist/chunks/{NcPasswordField-BnnlEhT1.mjs → NcPasswordField-Cac3cpVY.mjs} +3 -3
  132. package/dist/chunks/{NcPasswordField-BnnlEhT1.mjs.map → NcPasswordField-Cac3cpVY.mjs.map} +1 -1
  133. package/dist/chunks/{NcPopover-C3ZoyUjc.mjs → NcPopover-CzrFCS-2.mjs} +155 -27
  134. package/dist/chunks/NcPopover-CzrFCS-2.mjs.map +1 -0
  135. package/dist/chunks/{NcRelatedResourcesPanel-D2YLEouH.mjs → NcRelatedResourcesPanel-BBKk-jjB.mjs} +4 -4
  136. package/dist/chunks/{NcRelatedResourcesPanel-D2YLEouH.mjs.map → NcRelatedResourcesPanel-BBKk-jjB.mjs.map} +1 -1
  137. package/dist/chunks/{NcRichContenteditable-B16VJW0Y.mjs → NcRichContenteditable-gt56b0Uw.mjs} +210 -45
  138. package/dist/chunks/NcRichContenteditable-gt56b0Uw.mjs.map +1 -0
  139. package/dist/chunks/{NcRichText-4jIBSmap.mjs → NcRichText-CMRNgGQw.mjs} +8 -8
  140. package/dist/chunks/{NcRichText-4jIBSmap.mjs.map → NcRichText-CMRNgGQw.mjs.map} +1 -1
  141. package/dist/chunks/NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-DlRBo3QU.mjs +58 -0
  142. package/dist/chunks/NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-DlRBo3QU.mjs.map +1 -0
  143. package/dist/chunks/{NcSelect-CAx_ixPU.mjs → NcSelect-DFMnY4fI.mjs} +25 -68
  144. package/dist/chunks/NcSelect-DFMnY4fI.mjs.map +1 -0
  145. package/dist/chunks/{NcSelectTags-UXzC7lDz.mjs → NcSelectTags-BpFmhbdp.mjs} +3 -3
  146. package/dist/chunks/{NcSelectTags-UXzC7lDz.mjs.map → NcSelectTags-BpFmhbdp.mjs.map} +1 -1
  147. package/dist/chunks/{NcSettingsInputText-BEHu3xAI.mjs → NcSettingsInputText-CMBC7DaG.mjs} +3 -3
  148. package/dist/chunks/{NcSettingsInputText-BEHu3xAI.mjs.map → NcSettingsInputText-CMBC7DaG.mjs.map} +1 -1
  149. package/dist/chunks/{NcSettingsSection-X7f0W7vZ.mjs → NcSettingsSection-Crla6NXM.mjs} +2 -2
  150. package/dist/chunks/{NcSettingsSection-X7f0W7vZ.mjs.map → NcSettingsSection-Crla6NXM.mjs.map} +1 -1
  151. package/dist/chunks/{NcSettingsSelectGroup-DfrKchOy.mjs → NcSettingsSelectGroup-BOv1UgHX.mjs} +4 -4
  152. package/dist/chunks/{NcSettingsSelectGroup-DfrKchOy.mjs.map → NcSettingsSelectGroup-BOv1UgHX.mjs.map} +1 -1
  153. package/dist/chunks/{NcTextField-BTzKCPza.mjs → NcTextField-Dzv_qpmt.mjs} +4 -4
  154. package/dist/chunks/{NcTextField-BTzKCPza.mjs.map → NcTextField-Dzv_qpmt.mjs.map} +1 -1
  155. package/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-BK7HxZja.mjs +98 -0
  156. package/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-BK7HxZja.mjs.map +1 -0
  157. package/dist/chunks/{NcUserBubble-Dgzog0Ps.mjs → NcUserBubble-CnsRuBNe.mjs} +3 -3
  158. package/dist/chunks/{NcUserBubble-Dgzog0Ps.mjs.map → NcUserBubble-CnsRuBNe.mjs.map} +1 -1
  159. package/dist/chunks/{NcUserStatusIcon-DvYiEs2L.mjs → NcUserStatusIcon-M_93a-z6.mjs} +3 -3
  160. package/dist/chunks/{NcUserStatusIcon-DvYiEs2L.mjs.map → NcUserStatusIcon-M_93a-z6.mjs.map} +1 -1
  161. package/dist/chunks/NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs +23 -0
  162. package/dist/chunks/NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs.map +1 -0
  163. package/dist/chunks/{ScopeComponent-BWZEma4R.mjs → ScopeComponent-Cr_cohWX.mjs} +2 -2
  164. package/dist/chunks/{ScopeComponent-BWZEma4R.mjs.map → ScopeComponent-Cr_cohWX.mjs.map} +1 -1
  165. package/dist/chunks/{_l10n-7kR7gXFc.mjs → _l10n-dinIMiE_.mjs} +63 -67
  166. package/dist/chunks/_l10n-dinIMiE_.mjs.map +1 -0
  167. package/dist/chunks/{colors-BJbWzaQ-.mjs → colors-AMTxjrbV.mjs} +2 -2
  168. package/dist/chunks/{colors-BJbWzaQ-.mjs.map → colors-AMTxjrbV.mjs.map} +1 -1
  169. package/dist/chunks/{referencePickerModal-BpNnwC_g.mjs → referencePickerModal-CMgdGDsm.mjs} +11 -11
  170. package/dist/chunks/{referencePickerModal-BpNnwC_g.mjs.map → referencePickerModal-CMgdGDsm.mjs.map} +1 -1
  171. package/dist/chunks/{useFormatDateTime-B5sWtJdj.mjs → useFormatDateTime-lk3QDXbQ.mjs} +2 -2
  172. package/dist/chunks/{useFormatDateTime-B5sWtJdj.mjs.map → useFormatDateTime-lk3QDXbQ.mjs.map} +1 -1
  173. package/dist/chunks/{usernameToColor-CzXWY0j4.mjs → usernameToColor-CmB20TBI.mjs} +2 -2
  174. package/dist/chunks/{usernameToColor-CzXWY0j4.mjs.map → usernameToColor-CmB20TBI.mjs.map} +1 -1
  175. package/dist/components/NcActionButton/NcActionButton.vue.d.ts +3 -3
  176. package/dist/components/NcActionButton/index.mjs +1 -1
  177. package/dist/components/NcActionButtonGroup/index.mjs +1 -1
  178. package/dist/components/NcActionCheckbox/NcActionCheckbox.vue.d.ts +1 -1
  179. package/dist/components/NcActionCheckbox/index.mjs +1 -1
  180. package/dist/components/NcActionInput/index.mjs +1 -1
  181. package/dist/components/NcActionLink/index.mjs +1 -1
  182. package/dist/components/NcActionRadio/NcActionRadio.vue.d.ts +1 -1
  183. package/dist/components/NcActionRadio/index.mjs +1 -1
  184. package/dist/components/NcActionRouter/NcActionRouter.vue.d.ts +2 -2
  185. package/dist/components/NcActionRouter/index.mjs +1 -1
  186. package/dist/components/NcActionText/index.mjs +1 -1
  187. package/dist/components/NcActionTextEditable/index.mjs +1 -1
  188. package/dist/components/NcActions/index.mjs +1 -1
  189. package/dist/components/NcAppContent/index.mjs +1 -1
  190. package/dist/components/NcAppNavigation/index.mjs +1 -1
  191. package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
  192. package/dist/components/NcAppNavigationItem/index.mjs +1 -1
  193. package/dist/components/NcAppNavigationNew/index.mjs +1 -1
  194. package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
  195. package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
  196. package/dist/components/NcAppNavigationSettings/NcAppNavigationSettings.vue.d.ts +3 -10
  197. package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
  198. package/dist/components/NcAppNavigationToggle/index.mjs +1 -1
  199. package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
  200. package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +7 -3
  201. package/dist/components/NcAppSidebar/index.mjs +1 -1
  202. package/dist/components/NcAppSidebarHeader/NcAppSidebarHeader.vue.d.ts +18 -0
  203. package/dist/components/NcAppSidebarHeader/index.d.ts +5 -0
  204. package/dist/components/NcAppSidebarHeader/index.mjs +5 -0
  205. package/dist/{mixins/richEditor → components/NcAppSidebarHeader}/index.mjs.map +1 -1
  206. package/dist/components/NcAppSidebarTab/NcAppSidebarTab.vue.d.ts +1 -1
  207. package/dist/components/NcAvatar/index.mjs +1 -1
  208. package/dist/components/NcBlurHash/NcBlurHash.vue.d.ts +6 -13
  209. package/dist/components/NcBreadcrumb/index.mjs +1 -1
  210. package/dist/components/NcBreadcrumbs/index.mjs +1 -1
  211. package/dist/components/NcButton/NcButton.vue.d.ts +102 -238
  212. package/dist/components/NcButton/index.d.ts +2 -2
  213. package/dist/components/NcButton/index.mjs +1 -4
  214. package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
  215. package/dist/components/NcChip/NcChip.vue.d.ts +36 -38
  216. package/dist/components/NcChip/index.mjs +1 -1
  217. package/dist/components/NcCollectionList/index.mjs +1 -1
  218. package/dist/components/NcColorPicker/index.mjs +1 -1
  219. package/dist/components/NcContent/index.mjs +1 -1
  220. package/dist/components/NcCounterBubble/NcCounterBubble.vue.d.ts +1 -1
  221. package/dist/components/NcDashboardWidget/index.mjs +1 -1
  222. package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
  223. package/dist/components/NcDateTime/NcDateTime.vue.d.ts +2 -31
  224. package/dist/components/NcDateTime/index.mjs +1 -1
  225. package/dist/components/NcDateTimePicker/NcDateTimePicker.vue.d.ts +49 -60
  226. package/dist/components/NcDateTimePicker/index.mjs +1 -1
  227. package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
  228. package/dist/components/NcDialog/NcDialog.vue.d.ts +55 -129
  229. package/dist/components/NcDialog/index.mjs +1 -1
  230. package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +33 -109
  231. package/dist/components/NcDialogButton/index.mjs +1 -1
  232. package/dist/components/NcEmojiPicker/index.mjs +1 -1
  233. package/dist/components/NcEmptyContent/NcEmptyContent.vue.d.ts +58 -28
  234. package/dist/components/NcEmptyContent/index.d.ts +4 -0
  235. package/dist/components/NcEmptyContent/index.mjs +1 -1
  236. package/dist/components/NcHeaderButton/NcHeaderButton.vue.d.ts +4 -13
  237. package/dist/components/NcHeaderButton/index.mjs +1 -1
  238. package/dist/components/NcHeaderMenu/index.mjs +1 -1
  239. package/dist/components/NcIconSvgWrapper/NcIconSvgWrapper.vue.d.ts +19 -10
  240. package/dist/components/NcIconSvgWrapper/index.mjs +1 -1
  241. package/dist/components/NcInputField/index.mjs +1 -1
  242. package/dist/components/NcListItem/index.mjs +1 -1
  243. package/dist/components/NcListItemIcon/index.mjs +1 -1
  244. package/dist/components/NcLoadingIcon/NcLoadingIcon.vue.d.ts +1 -1
  245. package/dist/components/NcModal/index.mjs +52 -48
  246. package/dist/components/NcModal/index.mjs.map +1 -1
  247. package/dist/components/NcPasswordField/index.mjs +1 -1
  248. package/dist/components/NcPopover/index.mjs +1 -1
  249. package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
  250. package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +2 -2
  251. package/dist/components/NcRichContenteditable/NcMentionBubble.vue.d.ts +2 -2
  252. package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +347 -0
  253. package/dist/components/NcRichContenteditable/index.mjs +3 -4
  254. package/dist/components/NcRichContenteditable/index.mjs.map +1 -1
  255. package/dist/components/NcRichText/NcReferencePicker/NcProviderList.vue.d.ts +215 -0
  256. package/dist/components/NcRichText/NcReferencePicker/NcSearch.vue.d.ts +289 -0
  257. package/dist/components/NcRichText/index.mjs +3 -3
  258. package/dist/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.vue.d.ts +13 -56
  259. package/dist/components/NcSavingIndicatorIcon/index.d.ts +4 -0
  260. package/dist/components/NcSavingIndicatorIcon/index.mjs +2 -2
  261. package/dist/components/NcSelect/NcSelect.vue.d.ts +121 -0
  262. package/dist/components/NcSelect/index.mjs +1 -1
  263. package/dist/components/NcSelectTags/NcSelectTags.vue.d.ts +205 -0
  264. package/dist/components/NcSelectTags/index.mjs +1 -1
  265. package/dist/components/NcSelectUsers/NcSelectUsers.vue.d.ts +117 -0
  266. package/dist/components/NcSelectUsers/index.d.ts +5 -0
  267. package/dist/components/NcSelectUsers/index.mjs +73 -0
  268. package/dist/components/NcSelectUsers/index.mjs.map +1 -0
  269. package/dist/components/NcSettingsInputText/NcSettingsInputText.vue.d.ts +1 -1
  270. package/dist/components/NcSettingsInputText/index.mjs +1 -1
  271. package/dist/components/NcSettingsSection/index.mjs +1 -1
  272. package/dist/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue.d.ts +265 -0
  273. package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
  274. package/dist/components/NcTextArea/NcTextArea.vue.d.ts +5 -5
  275. package/dist/components/NcTextField/index.mjs +1 -1
  276. package/dist/components/NcTimezonePicker/NcTimezonePicker.vue.d.ts +23 -0
  277. package/dist/components/NcTimezonePicker/index.d.ts +5 -0
  278. package/dist/components/NcTimezonePicker/index.mjs +2 -2
  279. package/dist/components/NcTimezonePicker/timezoneDataProviderService.d.ts +5 -1
  280. package/dist/components/NcUserBubble/index.mjs +1 -1
  281. package/dist/components/NcUserStatusIcon/index.mjs +1 -1
  282. package/dist/components/NcVNodes/NcVNodes.vue.d.ts +8 -3
  283. package/dist/components/NcVNodes/index.d.ts +4 -0
  284. package/dist/components/NcVNodes/index.mjs +2 -21
  285. package/dist/components/NcVNodes/index.mjs.map +1 -1
  286. package/dist/components/index.d.ts +5 -4
  287. package/dist/directives/Focus/index.d.ts +2 -3
  288. package/dist/directives/Focus/index.mjs +1 -2
  289. package/dist/directives/Focus/index.mjs.map +1 -1
  290. package/dist/directives/index.d.ts +1 -2
  291. package/dist/functions/contactsMenu/index.d.ts +40 -0
  292. package/dist/functions/contactsMenu/index.mjs +22 -0
  293. package/dist/functions/contactsMenu/index.mjs.map +1 -0
  294. package/dist/functions/dialog/index.d.ts +29 -13
  295. package/dist/functions/dialog/index.mjs +27 -18
  296. package/dist/functions/dialog/index.mjs.map +1 -1
  297. package/dist/functions/index.d.ts +1 -0
  298. package/dist/functions/reference/index.mjs +1 -1
  299. package/dist/functions/usernameToColor/index.mjs +1 -1
  300. package/dist/index.d.ts +0 -1
  301. package/dist/index.mjs +97 -98
  302. package/dist/index.mjs.map +1 -1
  303. package/package.json +21 -13
  304. package/dist/assets/NcDateTimePicker-AIJmp5dC.css +0 -81
  305. package/dist/assets/index-DQ4Plm4r.css +0 -89
  306. package/dist/chunks/ChevronLeft-FfC-tiIS.mjs +0 -49
  307. package/dist/chunks/ChevronLeft-FfC-tiIS.mjs.map +0 -1
  308. package/dist/chunks/NcActionButton-BdQ_qmvW.mjs.map +0 -1
  309. package/dist/chunks/NcActionTextEditable-nTbwgRy2.mjs.map +0 -1
  310. package/dist/chunks/NcActions-CgKHXNbF.mjs.map +0 -1
  311. package/dist/chunks/NcAppContent-C4gBVRQs.mjs.map +0 -1
  312. package/dist/chunks/NcAppSidebar-Dgwj8O_Z.mjs.map +0 -1
  313. package/dist/chunks/NcAvatar-CA8y4d-c.mjs.map +0 -1
  314. package/dist/chunks/NcButton-BHLqKKYP.mjs +0 -308
  315. package/dist/chunks/NcButton-BHLqKKYP.mjs.map +0 -1
  316. package/dist/chunks/NcCheckboxRadioSwitch-CWU_M_ui.mjs.map +0 -1
  317. package/dist/chunks/NcChip-C3U2HYR9.mjs.map +0 -1
  318. package/dist/chunks/NcDateTimePicker-BzfuHym4.mjs.map +0 -1
  319. package/dist/chunks/NcDialog-_pc2BPHU.mjs.map +0 -1
  320. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-BKrJ_xd8.mjs +0 -119
  321. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-BKrJ_xd8.mjs.map +0 -1
  322. package/dist/chunks/NcEmptyContent-BQnIrQQn.mjs +0 -68
  323. package/dist/chunks/NcEmptyContent-BQnIrQQn.mjs.map +0 -1
  324. package/dist/chunks/NcIconSvgWrapper-BYTrkA66.mjs.map +0 -1
  325. package/dist/chunks/NcPopover-C3ZoyUjc.mjs.map +0 -1
  326. package/dist/chunks/NcRichContenteditable-B16VJW0Y.mjs.map +0 -1
  327. package/dist/chunks/NcSavingIndicatorIcon-icWy8J5x.mjs +0 -80
  328. package/dist/chunks/NcSavingIndicatorIcon-icWy8J5x.mjs.map +0 -1
  329. package/dist/chunks/NcSelect-CAx_ixPU.mjs.map +0 -1
  330. package/dist/chunks/NcTimezonePicker-CMoUk4sZ.mjs +0 -188
  331. package/dist/chunks/NcTimezonePicker-CMoUk4sZ.mjs.map +0 -1
  332. package/dist/chunks/_l10n-7kR7gXFc.mjs.map +0 -1
  333. package/dist/chunks/index--u6iHwFv.mjs +0 -184
  334. package/dist/chunks/index--u6iHwFv.mjs.map +0 -1
  335. package/dist/components/NcActions/NcActions.vue.d.ts +0 -544
  336. package/dist/components/NcAppNavigation/NcAppNavigation.vue.d.ts +0 -215
  337. package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +0 -379
  338. package/dist/components/NcAppNavigationItem/NcAppNavigationIconCollapsible.vue.d.ts +0 -161
  339. package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +0 -1310
  340. package/dist/components/NcAppNavigationItem/NcInputConfirmCancel.vue.d.ts +0 -195
  341. package/dist/components/NcAppNavigationNew/NcAppNavigationNew.vue.d.ts +0 -195
  342. package/dist/components/NcAppNavigationNewItem/NcAppNavigationNewItem.vue.d.ts +0 -316
  343. package/dist/components/NcAppNavigationSearch/NcAppNavigationSearch.vue.d.ts +0 -389
  344. package/dist/components/NcAppNavigationToggle/NcAppNavigationToggle.vue.d.ts +0 -173
  345. package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +0 -717
  346. package/dist/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +0 -1330
  347. package/dist/components/NcButton/types.d.ts +0 -30
  348. package/dist/components/NcContent/NcContent.vue.d.ts +0 -227
  349. package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +0 -642
  350. package/dist/components/NcHeaderMenu/NcHeaderMenu.vue.d.ts +0 -245
  351. package/dist/components/NcInputField/NcInputField.vue.d.ts +0 -419
  352. package/dist/components/NcListItem/NcListItem.vue.d.ts +0 -714
  353. package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +0 -553
  354. package/dist/components/NcRelatedResourcesPanel/NcResource.vue.d.ts +0 -173
  355. package/dist/components/NcRelatedResourcesPanel/NcTeamResources.vue.d.ts +0 -241
  356. package/dist/components/NcRichText/NcReferenceList.vue.d.ts +0 -292
  357. package/dist/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue.d.ts +0 -606
  358. package/dist/components/NcRichText/NcReferenceWidget.vue.d.ts +0 -211
  359. package/dist/components/NcRichText/NcRichText.vue.d.ts +0 -409
  360. package/dist/components/NcTextField/NcTextField.vue.d.ts +0 -314
  361. package/dist/components/NcTimezonePicker/timezone.d.ts +0 -14
  362. package/dist/directives/Tooltip/index.d.ts +0 -3
  363. package/dist/directives/Tooltip/index.mjs +0 -12
  364. package/dist/directives/Tooltip/index.mjs.map +0 -1
  365. package/dist/mixins/richEditor/index.mjs +0 -10
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelect-CAx_ixPU.mjs","sources":["../../src/components/NcSelect/NcSelect.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\n\nGeneral purpose multiselect component.\n\n### Basic examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple (top placement)',\n\t\t\tplacement: 'top',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (with placeholder)',\n\t\t\tmultiple: true,\n\t\t\tplaceholder: 'Select multiple options',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (objects, pre-selected, stay open on select)',\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'baz',\n\t\t\t\t\tlabel: 'Baz',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'qux',\n\t\t\t\t\tlabel: 'Qux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'quux',\n\t\t\t\t\tlabel: 'Quux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'corge',\n\t\t\t\t\tlabel: 'Corge',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'grault',\n\t\t\t\t\tlabel: 'Grault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'garply',\n\t\t\t\t\tlabel: 'Garply',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'waldo',\n\t\t\t\t\tlabel: 'Waldo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'fred',\n\t\t\t\t\tlabel: 'Fred',\n\t\t\t\t},\n\t\t\t],\n\t\t\tvalue: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### Native form validation example\n\n```vue\n<template>\n\t<div class=\"container\">\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require a selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"singleValue\"\n\t\t\t\trequired />\n\t\t\t<NcButton type=\"submit\">Submit</NcButton>\n\t\t</form>\n\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require at least one selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"multiValue\"\n\t\t\t\tmultiple\n\t\t\t\trequired />\n\t\t\t<NcButton type=\"submit\">Submit</NcButton>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\toptions: ['foo', 'bar', 'baz', 'qux', 'quux'],\n\t\t\tsingleValue: null,\n\t\t\tmultiValue: [],\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.container {\n\tdisplay: flex;\n\tgap: 0 12px;\n}\n\n.container__form {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-end;\n\twidth: 100%;\n\tgap: 8px 0;\n}\n\n.container__select {\n\twidth: 100%;\n}\n</style>\n```\n\n### No wrap example\n\nThe `noWrap` prop is set to `true` and the `max-width` of the multiselect\nparent container is limited to `350px`\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"false\"\n\t\t\t\tv-bind=\"data1.props\"\n\t\t\t\tv-model=\"data1.props.value\" />\n\t\t</div>\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"true\"\n\t\t\t\tv-bind=\"data2.props\"\n\t\t\t\tv-model=\"data2.props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst data1 = {\n\tprops: {\n\t\tinputLabel: 'Wrapped (Default)',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nconst data2 = {\n\tprops: {\n\t\tinputLabel: 'Not wrapped',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tdata1,\n\t\t\tdata2,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tmax-width: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### User select examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport Email from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\tuserSelect: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\ticon: '',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tuserSelect: true,\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<VueSelect class=\"select\"\n\t\t:class=\"{\n\t\t\t'select--no-wrap': noWrap,\n\t\t\t'user-select': userSelect,\n\t\t}\"\n\t\tv-bind=\"propsToForward\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template v-if=\"!labelOutside && inputLabel\" #header>\n\t\t\t<label :for=\"inputId\"\n\t\t\t\tclass=\"select__label\">\n\t\t\t\t{{ inputLabel }}\n\t\t\t</label>\n\t\t</template>\n\t\t<template #search=\"{ attributes, events }\">\n\t\t\t<input :class=\"['vs__search', inputClass]\"\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\t:required=\"inputRequired\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tv-on=\"events\">\n\t\t</template>\n\t\t<template #open-indicator=\"{ attributes }\">\n\t\t\t<ChevronDown v-bind=\"attributes\"\n\t\t\t\tfill-color=\"var(--vs-controls-color)\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tcursor: !disabled ? 'pointer' : null,\n\t\t\t\t}\"\n\t\t\t\t:size=\"26\" />\n\t\t\t\t<!-- Set size to 26 to make up for the increased padding of this icon -->\n\t\t</template>\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option[localLabel]\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(option[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption[localLabel]\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(selectedOption[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #spinner=\"spinner\">\n\t\t\t<NcLoadingIcon v-if=\"spinner.loading\" />\n\t\t</template>\n\t\t<template #no-options>\n\t\t\t{{ t('No results') }}\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $slots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</VueSelect>\n</template>\n\n<script>\n// TODO: Use @nextcloud/vue-select once a vue 3 version is available.\n// Until then, all @nextcloud/vue-select specific improvements won't be available.\n// E.g. the `limit` prop has no effect, currently.\nimport 'vue-select/dist/vue-select.css'\n\nimport VueSelect from 'vue-select'\nimport {\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\tlimitShift,\n\toffset,\n\tshift,\n} from '@floating-ui/dom'\nimport { h, warn } from 'vue'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { t } from '../../l10n.js'\n\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcListItemIcon from '../NcListItemIcon/index.js'\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\n\nexport default {\n\tname: 'NcSelect',\n\n\tcomponents: {\n\t\tChevronDown,\n\t\tNcEllipsisedOption,\n\t\tNcListItemIcon,\n\t\tNcLoadingIcon,\n\t\tVueSelect,\n\t},\n\n\tprops: {\n\t\t// Add VueSelect props to $props\n\t\t...VueSelect.props,\n\t\t...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n\n\t\t/**\n\t\t * `aria-label` for the clear input button\n\t\t */\n\t\tariaLabelClearSelected: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Clear selected'),\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the search input\n\t\t *\n\t\t * A descriptive `inputLabel` is preferred as this is not visible.\n\t\t */\n\t\tariaLabelCombobox: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the listbox element\n\t\t */\n\t\tariaLabelListbox: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Options'),\n\t\t},\n\n\t\t/**\n\t\t * Allows to customize the `aria-label` for the deselect-option button\n\t\t * The default is \"Deselect \" + optionLabel\n\t\t * @type {(optionLabel: string) => string}\n\t\t */\n\t\tariaLabelDeselectOption: {\n\t\t\ttype: Function,\n\t\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t\t},\n\n\t\t/**\n\t\t * Append the dropdown element to the end of the body\n\t\t * and size/position it dynamically.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#appendtobody\n\t\t */\n\t\tappendToBody: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this function is responsible for\n\t\t * positioning the drop down list.\n\t\t *\n\t\t * If a function is returned from `calculatePosition`, it will\n\t\t * be called when the drop down list is removed from the DOM.\n\t\t * This allows for any garbage collection you may need to do.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#calculateposition\n\t\t */\n\t\tcalculatePosition: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Close the dropdown when selecting an option\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#closeonselect\n\t\t */\n\t\tcloseOnSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Replace default vue-select components\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#components\n\t\t */\n\t\tcomponents: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({\n\t\t\t\tDeselect: {\n\t\t\t\t\trender: () => h(Close, {\n\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\tfillColor: 'var(--vs-controls-color)',\n\t\t\t\t\t\tstyle: [\n\t\t\t\t\t\t\t{ cursor: 'pointer' },\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of options to display in the dropdown list\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Disable the component\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#disabled\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Determines whether the dropdown should be open.\n\t\t * Receives the component instance as the only argument.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#dropdownshouldopen\n\t\t */\n\t\tdropdownShouldOpen: {\n\t\t\ttype: Function,\n\t\t\tdefault: ({ noDrop, open }) => {\n\t\t\t\treturn noDrop ? false : open\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Callback to determine if the provided option should\n\t\t * match the current search text. Used to determine\n\t\t * if the option should be displayed.\n\t\t *\n\t\t * Defaults to the internal vue-select function documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to filter by the\n\t\t * `displayName` and `subname` properties of the user option object\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#filterby\n\t\t */\n\t\tfilterBy: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Class for the `input`\n\t\t *\n\t\t * Necessary for use in NcActionInput\n\t\t */\n\t\tinputClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Input element id\n\t\t */\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: () => createElementId(),\n\t\t},\n\n\t\t/**\n\t\t * Visible label for the input element\n\t\t *\n\t\t * @todo Set default for @nextcloud/vue 9\n\t\t */\n\t\tinputLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass true if you are using an external label\n\t\t */\n\t\tlabelOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Display a visible border around dropdown options\n\t\t * which have keyboard focus\n\t\t */\n\t\tkeyboardFocusBorder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Key of the displayed label for object options\n\t\t *\n\t\t * Defaults to the internal vue-select string documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to `'displayName'`\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#label\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Show the loading icon\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#loading\n\t\t */\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Disable automatic wrapping when selected options overflow the width\n\t\t */\n\t\tnoWrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Array of options\n\t\t *\n\t\t * @type {Array<string | number | Record<string | number, any>>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#options\n\t\t */\n\t\toptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Customized component's response to keydown events while the search input has focus\n\t\t *\n\t\t * @see https://vue-select.org/guide/keydown.html#mapkeydown\n\t\t */\n\t\tmapKeydown: {\n\t\t\ttype: Function,\n\t\t\t/**\n\t\t\t * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n\t\t\t *\n\t\t\t * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n\t\t\t * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n\t\t\t * @return {Record<number, Function>} patched keydown event handlers\n\t\t\t */\n\t\t\tdefault(map, vm) {\n\t\t\t\treturn {\n\t\t\t\t\t...map,\n\t\t\t\t\t/**\n\t\t\t\t\t * Patched Escape handler to stop propagation from open select\n\t\t\t\t\t *\n\t\t\t\t\t * @param {KeyboardEvent} event - default keydown event handler\n\t\t\t\t\t */\n\t\t\t\t\t27: (event) => {\n\t\t\t\t\t\tif (vm.open) {\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Default VueSelect's handler\n\t\t\t\t\t\tmap[27](event)\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#uid\n\t\t */\n\t\tuid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => createElementId(),\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this sets the placement of the dropdown\n\t\t *\n\t\t * @type {'bottom' | 'top'}\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * If false, the focused dropdown option will not be reset when filtered\n\t\t * options change\n\t\t */\n\t\tresetFocusOnOptionsChange: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable the user selector with avatars\n\t\t *\n\t\t * Objects must contain the data expected by the\n\t\t * [NcListItemIcon](#/Components/NcListItemIcon) and\n\t\t * [NcAvatar](#/Components/NcAvatar) components\n\t\t */\n\t\tuserSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t *\n\t\t * The `v-model` directive may be used for two-way data binding\n\t\t *\n\t\t * @type {string | number | Record<string | number, any> | Array<any>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [String, Number, Object, Array],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable if a value is required for native form validation\n\t\t */\n\t\trequired: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t\t'update:modelValue',\n\t],\n\n\tsetup() {\n\t\tconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\n\t\tconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\n\t\tconst avatarSize = clickableArea - 2 * gridBaseLine\n\n\t\treturn {\n\t\t\tavatarSize,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputRequired() {\n\t\t\tif (!this.required) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// The <input> itself does not have any value so we set the `required` attribute conditionally\n\t\t\treturn this.modelValue === null || (Array.isArray(this.modelValue) && this.modelValue.length === 0)\n\t\t},\n\n\t\tlocalCalculatePosition() {\n\t\t\tif (this.calculatePosition !== null) {\n\t\t\t\treturn this.calculatePosition\n\t\t\t}\n\n\t\t\treturn (dropdownMenu, component, { width }) => {\n\t\t\t\tdropdownMenu.style.width = width\n\n\t\t\t\tconst addClass = {\n\t\t\t\t\tname: 'addClass',\n\t\t\t\t\tfn(/* middlewareArgs */) {\n\t\t\t\t\t\tdropdownMenu.classList.add('vs__dropdown-menu--floating')\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst togglePlacementClass = {\n\t\t\t\t\tname: 'togglePlacementClass',\n\t\t\t\t\tfn({ placement }) {\n\t\t\t\t\t\tcomponent.$el.classList.toggle(\n\t\t\t\t\t\t\t'select--drop-up',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\tdropdownMenu.classList.toggle(\n\t\t\t\t\t\t\t'vs__dropdown-menu--floating-placement-top',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst updatePosition = () => {\n\t\t\t\t\tcomputePosition(component.$refs.toggle, dropdownMenu, {\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tmiddleware: [\n\t\t\t\t\t\t\toffset(-1),\n\t\t\t\t\t\t\taddClass,\n\t\t\t\t\t\t\ttogglePlacementClass,\n\t\t\t\t\t\t\t// Match popperjs default collision prevention behavior by appending the following middleware in order\n\t\t\t\t\t\t\tflip(),\n\t\t\t\t\t\t\tshift({ limiter: limitShift() }),\n\t\t\t\t\t\t],\n\t\t\t\t\t}).then(({ x, y }) => {\n\t\t\t\t\t\tObject.assign(dropdownMenu.style, {\n\t\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t\t\twidth: `${component.$refs.toggle.getBoundingClientRect().width}px`,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst cleanup = autoUpdate(\n\t\t\t\t\tcomponent.$refs.toggle,\n\t\t\t\t\tdropdownMenu,\n\t\t\t\t\tupdatePosition,\n\t\t\t\t)\n\n\t\t\t\treturn cleanup\n\t\t\t}\n\t\t},\n\n\t\tlocalFilterBy() {\n\t\t\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\t\t\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\t\t\tif (this.filterBy !== null) {\n\t\t\t\treturn this.filterBy\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn (option, label, search) => {\n\t\t\t\t\tconst match = search.match(EMAIL_NOTATION)\n\t\t\t\t\treturn (match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t\t\t\t\t|| (`${label} ${option.subname}`\n\t\t\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn VueSelect.props.filterBy.default\n\t\t},\n\n\t\tlocalLabel() {\n\t\t\tif (this.label !== null) {\n\t\t\t\treturn this.label\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn 'displayName'\n\t\t\t}\n\t\t\treturn VueSelect.props.label.default\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst vueSelectKeys = [\n\t\t\t\t...Object.keys(VueSelect.props),\n\t\t\t\t...VueSelect.mixins.flatMap(mixin => Object.keys(mixin.props ?? {})),\n\t\t\t]\n\t\t\tconst initialPropsToForward = Object.fromEntries(\n\t\t\t\tObject.entries(this.$props)\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\t\t.filter(([key, _value]) => vueSelectKeys.includes(key)),\n\t\t\t)\n\t\t\tconst propsToForward = {\n\t\t\t\t...initialPropsToForward,\n\t\t\t\t// Custom overrides of vue-select props\n\t\t\t\tcalculatePosition: this.localCalculatePosition,\n\t\t\t\tfilterBy: this.localFilterBy,\n\t\t\t\tlabel: this.localLabel,\n\t\t\t}\n\t\t\treturn propsToForward\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n\t\t\twarn('[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.')\n\t\t}\n\t\tif (this.inputLabel && this.ariaLabelCombobox) {\n\t\t\twarn('[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.')\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\t/**\n\t * Set custom vue-select CSS variables.\n\t * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462)\n\t */\n\n\t/* Search Input */\n\t--vs-search-input-color: var(--color-main-text);\n\t--vs-search-input-bg: var(--color-main-background);\n\t--vs-search-input-placeholder-color: var(--color-text-maxcontrast);\n\n\t/* Font */\n\t--vs-font-size: var(--default-font-size);\n\t--vs-line-height: var(--default-line-height);\n\n\t/* Disabled State */\n\t--vs-state-disabled-bg: var(--color-background-hover);\n\t--vs-state-disabled-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-controls-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-cursor: not-allowed;\n\t--vs-disabled-bg: var(--color-background-hover);\n\t--vs-disabled-color: var(--color-text-maxcontrast);\n\t--vs-disabled-cursor: not-allowed;\n\n\t/* Borders */\n\t--vs-border-color: var(--color-border-maxcontrast);\n\t--vs-border-width: var(--border-width-input, 2px) !important;\n\t--vs-border-style: solid;\n\t--vs-border-radius: var(--border-radius-large);\n\n\t/* Component Controls: Clear, Open Indicator */\n\t--vs-controls-color: var(--color-main-text);\n\n\t/* Selected */\n\t--vs-selected-bg: var(--color-background-hover);\n\t--vs-selected-color: var(--color-main-text);\n\t--vs-selected-border-color: var(--vs-border-color);\n\t--vs-selected-border-style: var(--vs-border-style);\n\t--vs-selected-border-width: var(--vs-border-width);\n\n\t/* Dropdown */\n\t--vs-dropdown-bg: var(--color-main-background);\n\t--vs-dropdown-color: var(--color-main-text);\n\t--vs-dropdown-z-index: 9999;\n\t--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);\n\n\t/* Options */\n\t--vs-dropdown-option-padding: 8px 20px;\n\n\t/* Active State */\n\t--vs-dropdown-option--active-bg: var(--color-background-hover);\n\t--vs-dropdown-option--active-color: var(--color-main-text);\n\n\t/* Keyboard Focus State */\n\t--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);\n\n\t/* Deselect State */\n\t--vs-dropdown-option--deselect-bg: var(--color-error);\n\t--vs-dropdown-option--deselect-color: #fff;\n\n\t/* Transitions */\n\t--vs-transition-duration: 0ms;\n\n\t/* Actions */\n\t--vs-actions-padding: 0 8px 0 4px;\n}\n\n.v-select.select {\n\t/* Override default vue-select styles */\n\tmin-height: var(--default-clickable-area);\n\tmin-width: 260px;\n\tmargin: 0 0 var(--default-grid-baseline);\n\n\t&.vs--open {\n\t\t--vs-border-width: var(--border-width-input-focused, 2px);\n\t}\n\n\t.select__label {\n\t\tdisplay: block;\n\t\tmargin-bottom: 2px;\n\t}\n\n\t.vs__selected {\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));\n\t\tmargin: calc(var(--default-grid-baseline) / 2);\n\t\tpadding-block: 0;\n\t\tpadding-inline: 12px 8px;\n\t\tborder-radius: 16px !important;\n\t\tbackground: var(--color-primary-element-light);\n\t\tborder: none;\n\t}\n\n\t&.vs--open .vs__selected:first-of-type {\n\t\tmargin-inline-start: calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px))) !important; // prevent jumping\n\t}\n\n\t.vs__search {\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-main-text);\n\t\tmin-height: unset !important;\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width)) !important;\n\n\t\t&::placeholder {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t.vs__search, .vs__search:focus {\n\t\tmargin: 0;\n\t}\n\n\t.vs__dropdown-toggle {\n\t\tposition: relative;\n\t\tmax-height: 100px;\n\t\tpadding: 0;\n\t\toverflow-y: auto;\n\t}\n\n\t.vs__actions {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t}\n\n\t.vs__clear {\n\t\tmargin-inline-end: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\tborder-width: var(--border-width-input-focused);\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t\tborder-bottom-color: transparent;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover {\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t}\n\n\t&.vs--disabled {\n\t\t.vs__search,\n\t\t.vs__selected {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.vs__clear,\n\t\t.vs__deselect {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&--no-wrap {\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t\toverflow: auto;\n\t\t\tmin-width: unset;\n\t\t\t.vs__selected {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--drop-up {\n\t\t&.vs--open {\n\t\t\t.vs__dropdown-toggle {\n\t\t\t\tborder-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\n\t\t\t\tborder-top-color: transparent;\n\t\t\t\tborder-bottom-color: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t.vs__selected-options {\n\t\t// If search is hidden, ensure that the height of the search is the same\n\t\tmin-height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width));\n\n\t\t// Hide search from dom if unused to prevent unneeded flex wrap\n\t\t.vs__selected ~ .vs__search[readonly] {\n\t\t\tposition: absolute;\n\t\t}\n\t\tpadding: 0 5px;\n\t}\n\n\t&.vs--single {\n\t\t&.vs--loading,\n\t\t&.vs--open {\n\t\t\t.vs__selected {\n\t\t\t\t// Fix `max-width` for `position: absolute`\n\t\t\t\tmax-width: 100%;\n\t\t\t\t// Fix color to be accessible\n\t\t\t\topacity: 1;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t\t.vs__selected {\n\t\t\tbackground: unset !important;\n\t\t}\n\t}\n}\n\n.vs__dropdown-menu {\n\tborder-width: var(--border-width-input-focused) !important;\n\tborder-color: var(--color-main-text) !important;\n\toutline: none !important;\n\tbox-shadow:\n\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t0 2px 0 var(--color-main-background), // Bottom\n\t\t2px 0 0 var(--color-main-background), // Left\n\t\t!important;\n\tpadding: 4px !important;\n\n\t&--floating {\n\t\t/* Fallback styles overidden by programmatically set inline styles */\n\t\twidth: max-content;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tinset-inline-start: 0;\n\n\t\t&-placement-top {\n\t\t\tborder-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;\n\t\t\tborder-top-style: var(--vs-border-style) !important;\n\t\t\tborder-bottom-style: none !important;\n\t\t\tbox-shadow:\n\t\t\t\t0 -2px 0 var(--color-main-background), // Top\n\t\t\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t\t\t2px 0 0 var(--color-main-background), // Left\n\t\t\t\t!important\n\t\t}\n\t}\n\n\t.vs__dropdown-option {\n\t\tborder-radius: 6px !important;\n\t}\n\n\t.vs__no-options {\n\t\tcolor: var(--color-text-lighter) !important;\n\t}\n}\n\n// Selected users require slightly different padding\n.user-select .vs__selected {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["Close","_openBlock","_createBlock","_mergeProps","_createSlots","_withCtx","_createElementVNode","_toHandlers","_createVNode","_createCommentVNode","_createTextVNode","_toDisplayString","_renderList","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
@@ -1,188 +0,0 @@
1
- import { r as register, p as t25, a as t, q as t40 } from "./_l10n-7kR7gXFc.mjs";
2
- import { c as createElementId } from "./createElementId-DhjFt1I9.mjs";
3
- import { getTimezoneManager as getTimezoneManager$1 } from "@nextcloud/timezones";
4
- import { N as NcSelect } from "./NcSelect-CAx_ixPU.mjs";
5
- import { resolveComponent, createBlock, openBlock } from "vue";
6
- import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
7
- register(t25);
8
- function getSortedTimezoneList(timezoneList = [], additionalTimezones = []) {
9
- const sortedByContinent = {};
10
- const sortedList = [];
11
- for (const timezoneId of timezoneList) {
12
- const components = timezoneId.split("/");
13
- let [continent, name] = [components.shift(), components.join("/")];
14
- if (!name) {
15
- name = continent;
16
- continent = t("Global");
17
- }
18
- sortedByContinent[continent] = sortedByContinent[continent] || {
19
- continent,
20
- regions: []
21
- };
22
- sortedByContinent[continent].regions.push({
23
- label: getReadableTimezoneName(name),
24
- cities: [],
25
- timezoneId
26
- });
27
- }
28
- for (const additionalTimezone of additionalTimezones) {
29
- const { continent, label, timezoneId } = additionalTimezone;
30
- sortedByContinent[continent] = sortedByContinent[continent] || {
31
- continent,
32
- regions: []
33
- };
34
- sortedByContinent[continent].regions.push({
35
- label,
36
- cities: [],
37
- timezoneId
38
- });
39
- }
40
- for (const continent in sortedByContinent) {
41
- if (!Object.prototype.hasOwnProperty.call(sortedByContinent, continent)) {
42
- continue;
43
- }
44
- sortedByContinent[continent].regions.sort((a, b) => {
45
- if (a.label < b.label) {
46
- return -1;
47
- }
48
- return 1;
49
- });
50
- sortedList.push(sortedByContinent[continent]);
51
- }
52
- sortedList.sort((a, b) => {
53
- if (a.continent < b.continent) {
54
- return -1;
55
- }
56
- return 1;
57
- });
58
- return sortedList;
59
- }
60
- function getReadableTimezoneName(timezoneId) {
61
- return timezoneId.split("_").join(" ").replace("St ", "St. ").split("/").join(" - ");
62
- }
63
- register(t40);
64
- const timezoneManager = getTimezoneManager$1();
65
- let initialized = false;
66
- function getTimezoneManager() {
67
- if (!initialized) {
68
- timezoneManager.registerDefaultTimezones();
69
- initialized = true;
70
- }
71
- return timezoneManager;
72
- }
73
- const _sfc_main = {
74
- name: "NcTimezonePicker",
75
- components: {
76
- NcSelect
77
- },
78
- props: {
79
- /**
80
- * An array of additional timezones to include with the standard database. Useful if there is a custom timezone, e.g. read from user data
81
- */
82
- additionalTimezones: {
83
- type: Array,
84
- default: () => []
85
- },
86
- /**
87
- * The selected timezone. Use v-model for two-way binding. The default timezone is floating, which means a time independent of timezone. See https://icalendar.org/CalDAV-Access-RFC-4791/7-3-date-and-floating-time.html for details.
88
- */
89
- modelValue: {
90
- type: String,
91
- default: "floating"
92
- },
93
- /**
94
- * ID of the inner vue-select element, can be used for labels like: `vs-${uid}__combobox`
95
- */
96
- uid: {
97
- type: [String, Number],
98
- default: () => createElementId()
99
- }
100
- },
101
- emits: ["update:modelValue"],
102
- computed: {
103
- placeholder() {
104
- return t("Type to search time zone");
105
- },
106
- selectedTimezone() {
107
- for (const additionalTimezone of this.additionalTimezones) {
108
- if (additionalTimezone.timezoneId === this.modelValue) {
109
- return additionalTimezone;
110
- }
111
- }
112
- return {
113
- label: getReadableTimezoneName(this.modelValue),
114
- timezoneId: this.modelValue
115
- };
116
- },
117
- options() {
118
- const timezoneManager2 = getTimezoneManager();
119
- const timezoneList = getSortedTimezoneList(timezoneManager2.listAllTimezones(), this.additionalTimezones);
120
- let timezonesGrouped = [];
121
- Object.values(timezoneList).forEach((group) => {
122
- timezonesGrouped = timezonesGrouped.concat(group.regions);
123
- });
124
- return timezonesGrouped;
125
- }
126
- },
127
- methods: {
128
- t,
129
- change(newValue) {
130
- if (!newValue) {
131
- return;
132
- }
133
- this.$emit("update:modelValue", newValue.timezoneId);
134
- },
135
- /**
136
- * Returns whether this is a continent label,
137
- * or an actual timezone. Continent labels are not selectable.
138
- *
139
- * @param {string} option The option
140
- * @return {boolean}
141
- */
142
- isSelectable(option) {
143
- return !option.timezoneId.startsWith("tz-group__");
144
- },
145
- /**
146
- * Function to filter the timezone list.
147
- * We search in the timezoneId, so both continent and region names can be matched.
148
- *
149
- * @param {object} option The timezone option
150
- * @param {string} label The label of the timezone
151
- * @param {string} search The search string
152
- * @return {boolean}
153
- */
154
- filterBy(option, label, search) {
155
- const terms = search.trim().split(" ");
156
- if (option.timezoneId.startsWith("tz-group__")) {
157
- return option.regions.some((region) => {
158
- return this.matchTimezoneId(region.timezoneId, terms);
159
- });
160
- }
161
- return this.matchTimezoneId(option.timezoneId, terms);
162
- },
163
- matchTimezoneId(timezoneId, terms) {
164
- return terms.every((term) => timezoneId.toLowerCase().includes(term.toLowerCase()));
165
- }
166
- }
167
- };
168
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
169
- const _component_NcSelect = resolveComponent("NcSelect");
170
- return openBlock(), createBlock(_component_NcSelect, {
171
- "aria-label-combobox": $options.t("Search for timezone"),
172
- clearable: false,
173
- "filter-by": $options.filterBy,
174
- "model-value": $options.selectedTimezone,
175
- multiple: false,
176
- options: $options.options,
177
- placeholder: $options.placeholder,
178
- selectable: $options.isSelectable,
179
- uid: $props.uid,
180
- label: "label",
181
- "onOption:selected": $options.change
182
- }, null, 8, ["aria-label-combobox", "filter-by", "model-value", "options", "placeholder", "selectable", "uid", "onOption:selected"]);
183
- }
184
- const NcTimezonePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
185
- export {
186
- NcTimezonePicker as N
187
- };
188
- //# sourceMappingURL=NcTimezonePicker-CMoUk4sZ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTimezonePicker-CMoUk4sZ.mjs","sources":["../../src/components/NcTimezonePicker/timezone.js","../../src/components/NcTimezonePicker/timezoneDataProviderService.js","../../src/components/NcTimezonePicker/NcTimezonePicker.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '../../l10n.js'\n\n/**\n *\n * @param {string[]} timezoneList List of Olsen timezones\n * @param {Array} additionalTimezones List of additional timezones\n * @return {Array}\n */\nexport function getSortedTimezoneList(timezoneList = [], additionalTimezones = []) {\n\tconst sortedByContinent = {}\n\tconst sortedList = []\n\n\tfor (const timezoneId of timezoneList) {\n\t\tconst components = timezoneId.split('/')\n\t\tlet [continent, name] = [components.shift(), components.join('/')]\n\t\tif (!name) {\n\t\t\tname = continent\n\t\t\t// TRANSLATORS This refers to global timezones in the timezone picker\n\t\t\tcontinent = t('Global')\n\t\t}\n\n\t\tsortedByContinent[continent] = sortedByContinent[continent] || {\n\t\t\tcontinent,\n\t\t\tregions: [],\n\t\t}\n\n\t\tsortedByContinent[continent].regions.push({\n\t\t\tlabel: getReadableTimezoneName(name),\n\t\t\tcities: [],\n\t\t\ttimezoneId,\n\t\t})\n\t}\n\n\tfor (const additionalTimezone of additionalTimezones) {\n\t\tconst { continent, label, timezoneId } = additionalTimezone\n\n\t\tsortedByContinent[continent] = sortedByContinent[continent] || {\n\t\t\tcontinent,\n\t\t\tregions: [],\n\t\t}\n\n\t\tsortedByContinent[continent].regions.push({\n\t\t\tlabel,\n\t\t\tcities: [],\n\t\t\ttimezoneId,\n\t\t})\n\t}\n\n\tfor (const continent in sortedByContinent) {\n\t\tif (!Object.prototype.hasOwnProperty.call(sortedByContinent, continent)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tsortedByContinent[continent].regions.sort((a, b) => {\n\t\t\tif (a.label < b.label) {\n\t\t\t\treturn -1\n\t\t\t}\n\n\t\t\treturn 1\n\t\t})\n\t\tsortedList.push(sortedByContinent[continent])\n\t}\n\n\t// Sort continents by name\n\tsortedList.sort((a, b) => {\n\t\tif (a.continent < b.continent) {\n\t\t\treturn -1\n\t\t}\n\n\t\treturn 1\n\t})\n\n\treturn sortedList\n}\n\n/**\n * Get human-readable name for timezoneId\n *\n * @param {string} timezoneId TimezoneId to turn human-readable\n * @return {string}\n */\nexport function getReadableTimezoneName(timezoneId) {\n\treturn timezoneId\n\t\t.split('_')\n\t\t.join(' ')\n\t\t.replace('St ', 'St. ')\n\t\t.split('/')\n\t\t.join(' - ')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getTimezoneManager } from '@nextcloud/timezones'\n\nconst timezoneManager = getTimezoneManager()\nlet initialized = false\n\n/**\n * Gets the timezone-manager\n * initializes it if necessary\n *\n * @return {object}\n */\nexport default function() {\n\tif (!initialized) {\n\t\ttimezoneManager.registerDefaultTimezones()\n\t\tinitialized = true\n\t}\n\n\treturn timezoneManager\n}\n","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Example\n```vue\n<template>\n\t<span>\n\t\t<NcTimezonePicker v-model=\"tz\" />\n\t\t{{ tz }}\n\t</span>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttz: 'Hawaiian Standard Time',\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect :aria-label-combobox=\"t('Search for timezone')\"\n\t\t:clearable=\"false\"\n\t\t:filter-by=\"filterBy\"\n\t\t:model-value=\"selectedTimezone\"\n\t\t:multiple=\"false\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"placeholder\"\n\t\t:selectable=\"isSelectable\"\n\t\t:uid=\"uid\"\n\t\tlabel=\"label\"\n\t\t@option:selected=\"change\" />\n</template>\n\n<script>\nimport {\n\tgetReadableTimezoneName,\n\tgetSortedTimezoneList,\n} from './timezone.js'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { t } from '../../l10n.js'\nimport getTimezoneManager from './timezoneDataProviderService.js'\nimport NcSelect from '../NcSelect/index.js'\n\nexport default {\n\tname: 'NcTimezonePicker',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\t/**\n\t\t * An array of additional timezones to include with the standard database. Useful if there is a custom timezone, e.g. read from user data\n\t\t */\n\t\tadditionalTimezones: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\t/**\n\t\t * The selected timezone. Use v-model for two-way binding. The default timezone is floating, which means a time independent of timezone. See https://icalendar.org/CalDAV-Access-RFC-4791/7-3-date-and-floating-time.html for details.\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: 'floating',\n\t\t},\n\t\t/**\n\t\t * ID of the inner vue-select element, can be used for labels like: `vs-${uid}__combobox`\n\t\t */\n\t\tuid: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: () => createElementId(),\n\t\t},\n\t},\n\temits: ['update:modelValue'],\n\tcomputed: {\n\t\tplaceholder() {\n\t\t\treturn t('Type to search time zone')\n\t\t},\n\t\tselectedTimezone() {\n\t\t\tfor (const additionalTimezone of this.additionalTimezones) {\n\t\t\t\tif (additionalTimezone.timezoneId === this.modelValue) {\n\t\t\t\t\treturn additionalTimezone\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tlabel: getReadableTimezoneName(this.modelValue),\n\t\t\t\ttimezoneId: this.modelValue,\n\t\t\t}\n\t\t},\n\t\toptions() {\n\t\t\tconst timezoneManager = getTimezoneManager()\n\t\t\tconst timezoneList = getSortedTimezoneList(timezoneManager.listAllTimezones(), this.additionalTimezones)\n\t\t\t/**\n\t\t\t * Since NcSelect does not support groups,\n\t\t\t * we create an object with the grouped timezones and continent labels.\n\t\t\t *\n\t\t\t * NOTE for now we are removing the grouping from the fields to fix an accessibility issue\n\t\t\t * in the future, other options can be introduced to better display the different areas\n\t\t\t */\n\t\t\tlet timezonesGrouped = []\n\t\t\tObject.values(timezoneList).forEach(group => {\n\t\t\t\t// Add an entry as group label\n\t\t\t\t// timezonesGrouped.push({\n\t\t\t\t// label: group.continent,\n\t\t\t\t// timezoneId: `tz-group__${group.continent}`,\n\t\t\t\t// regions: group.regions,\n\t\t\t\t// })\n\t\t\t\ttimezonesGrouped = timezonesGrouped.concat(group.regions)\n\t\t\t})\n\t\t\treturn timezonesGrouped\n\t\t},\n\t},\n\tmethods: {\n\t\tt,\n\n\t\tchange(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Two-way binding of the value prop. Use v-model=\"selectedTimezone\" for two-way binding\n\t\t\t */\n\t\t\tthis.$emit('update:modelValue', newValue.timezoneId)\n\t\t},\n\n\t\t/**\n\t\t * Returns whether this is a continent label,\n\t\t * or an actual timezone. Continent labels are not selectable.\n\t\t *\n\t\t * @param {string} option The option\n\t\t * @return {boolean}\n\t\t */\n\t\tisSelectable(option) {\n\t\t\treturn !option.timezoneId.startsWith('tz-group__')\n\t\t},\n\n\t\t/**\n\t\t * Function to filter the timezone list.\n\t\t * We search in the timezoneId, so both continent and region names can be matched.\n\t\t *\n\t\t * @param {object} option The timezone option\n\t\t * @param {string} label The label of the timezone\n\t\t * @param {string} search The search string\n\t\t * @return {boolean}\n\t\t */\n\t\tfilterBy(option, label, search) {\n\t\t\t// We split the search term in case one searches \"<continent> <region>\".\n\t\t\tconst terms = search.trim().split(' ')\n\n\t\t\t// For the continent labels, we have to check if one region matches every search term.\n\t\t\tif (option.timezoneId.startsWith('tz-group__')) {\n\t\t\t\treturn option.regions.some(region => {\n\t\t\t\t\treturn this.matchTimezoneId(region.timezoneId, terms)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// For a region, every search term must be found.\n\t\t\treturn this.matchTimezoneId(option.timezoneId, terms)\n\t\t},\n\n\t\tmatchTimezoneId(timezoneId, terms) {\n\t\t\treturn terms.every(term => timezoneId.toLowerCase().includes(term.toLowerCase()))\n\t\t},\n\t},\n}\n</script>\n"],"names":["getTimezoneManager","timezoneManager","_createBlock"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_l10n-7kR7gXFc.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,184 +0,0 @@
1
- import { g as getAvatarUrl } from "./NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs";
2
- import { createElementBlock, openBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp } from "vue";
3
- import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
4
- import escapeHTML from "escape-html";
5
- import stripTags from "striptags";
6
- const _sfc_main = {
7
- name: "NcMentionBubble",
8
- props: {
9
- id: {
10
- type: String,
11
- required: true
12
- },
13
- /**
14
- * @deprecated Use `label` instead
15
- */
16
- title: {
17
- type: String,
18
- required: false,
19
- default: null
20
- },
21
- label: {
22
- type: String,
23
- required: false,
24
- default: null
25
- },
26
- icon: {
27
- type: String,
28
- required: true
29
- },
30
- iconUrl: {
31
- type: [String, null],
32
- default: null
33
- },
34
- source: {
35
- type: String,
36
- required: true
37
- },
38
- primary: {
39
- type: Boolean,
40
- default: false
41
- }
42
- },
43
- computed: {
44
- avatarUrl() {
45
- if (this.iconUrl) {
46
- return this.iconUrl;
47
- }
48
- return this.id && this.source === "users" ? this.getAvatarUrl(this.id, 44) : null;
49
- },
50
- mentionText() {
51
- return !this.id.includes(" ") && !this.id.includes("/") ? `@${this.id}` : `@"${this.id}"`;
52
- },
53
- // Fallback to title for compatibility
54
- labelWithFallback() {
55
- return this.label || this.title;
56
- }
57
- },
58
- methods: {
59
- getAvatarUrl
60
- }
61
- };
62
- const _hoisted_1 = { class: "mention-bubble__wrapper" };
63
- const _hoisted_2 = { class: "mention-bubble__content" };
64
- const _hoisted_3 = ["title"];
65
- const _hoisted_4 = {
66
- role: "none",
67
- class: "mention-bubble__select"
68
- };
69
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
70
- return openBlock(), createElementBlock("span", {
71
- class: normalizeClass([{ "mention-bubble--primary": $props.primary }, "mention-bubble"]),
72
- contenteditable: "false"
73
- }, [
74
- createElementVNode("span", _hoisted_1, [
75
- createElementVNode("span", _hoisted_2, [
76
- createElementVNode("span", {
77
- class: normalizeClass([[$props.icon, `mention-bubble__icon--${$options.avatarUrl ? "with-avatar" : ""}`], "mention-bubble__icon"]),
78
- style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)
79
- }, null, 6),
80
- createElementVNode("span", {
81
- role: "heading",
82
- class: "mention-bubble__title",
83
- title: $options.labelWithFallback
84
- }, null, 8, _hoisted_3)
85
- ]),
86
- createElementVNode("span", _hoisted_4, toDisplayString($options.mentionText), 1)
87
- ])
88
- ], 2);
89
- }
90
- const NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6c8d0da9"]]);
91
- const MENTION_START = /(?=[a-z0-9_\-@.'])\B/.source;
92
- const MENTION_SIMPLE = /(@[a-z0-9_\-@.']+)/.source;
93
- const MENTION_GUEST = /@&quot;(?:guest|email){1}\/[a-f0-9]+&quot;/.source;
94
- const MENTION_PREFIXED = /@&quot;(?:federated_)?(?:group|team|user){1}\/[a-z0-9_\-@.' /:]+&quot;/.source;
95
- const MENTION_WITH_SPACE = /@&quot;[a-z0-9_\-@.' ]+&quot;/.source;
96
- const MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;
97
- const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, "gi");
98
- const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, "gi");
99
- const richEditor = {
100
- props: {
101
- userData: {
102
- type: Object,
103
- default: () => ({})
104
- }
105
- },
106
- methods: {
107
- /**
108
- * Convert the value string to html for the inner content
109
- *
110
- * @param {string} value the content without html
111
- * @return {string} rendered html
112
- */
113
- renderContent(value) {
114
- const sanitizedValue = escapeHTML(value);
115
- const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();
116
- return splitValue.map((part) => {
117
- if (!part.startsWith("@")) {
118
- return part;
119
- }
120
- const id = part.slice(1).replace(/&quot;/gi, "");
121
- return this.genSelectTemplate(id);
122
- }).join("").replace(/\n/gmi, "<br>").replace(/&amp;/gmi, "&");
123
- },
124
- /**
125
- * Convert the innerHtml content to a string with mentions as text
126
- *
127
- * @param {string} content the content without html
128
- * @return {string}
129
- */
130
- parseContent(content) {
131
- let text = content;
132
- text = text.replace(/<br>/gmi, "\n");
133
- text = text.replace(/&nbsp;/gmi, " ");
134
- text = text.replace(/&amp;/gmi, "&");
135
- text = text.replace(/<\/div>/gmi, "\n");
136
- text = stripTags(text, "<div>");
137
- text = stripTags(text);
138
- return text;
139
- },
140
- /**
141
- * Generate an autocompletion popup entry template
142
- *
143
- * @param {string} value the value to match against the userData
144
- * @return {string}
145
- */
146
- genSelectTemplate(value) {
147
- if (typeof value === "undefined") {
148
- return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;
149
- }
150
- const data = this.userData[value];
151
- if (!data) {
152
- return [" ", "/", ":"].every((char) => !value.includes(char)) ? `@${value}` : `@"${value}"`;
153
- }
154
- return this.renderComponentHtml(data, NcMentionBubble).replace(/[\n\t]/gmi, "").replace(/>\s+</g, "><");
155
- },
156
- /**
157
- * Render a component and return its html content
158
- *
159
- * @param {object} props the props to pass to the component
160
- * @param {object} component the component to render
161
- * @return {string} the rendered html
162
- */
163
- renderComponentHtml(props, component) {
164
- const Item = createApp(component, {
165
- ...props
166
- });
167
- const mount = document.createElement("div");
168
- mount.style.display = "none";
169
- document.body.appendChild(mount);
170
- Item.mount(mount);
171
- const renderedHtml = mount.innerHTML;
172
- Item.unmount();
173
- mount.remove();
174
- return renderedHtml;
175
- }
176
- }
177
- };
178
- export {
179
- NcMentionBubble as N,
180
- USERID_REGEX as U,
181
- USERID_REGEX_WITH_SPACE as a,
182
- richEditor as r
183
- };
184
- //# sourceMappingURL=index--u6iHwFv.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index--u6iHwFv.mjs","sources":["../../src/components/NcRichContenteditable/NcMentionBubble.vue","../../src/mixins/richEditor/index.js"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"labelWithFallback\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nexport default {\n\tname: 'NcMentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: [String, null],\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\tmentionText() {\n\t\t\treturn !this.id.includes(' ') && !this.id.includes('/')\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t\t// Fallback to title for compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-inline: $bubble-padding $bubble-padding * 3;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-inline-start: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put title in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tinset-inline-start: -100vw;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\toverflow: hidden;\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport { createApp } from 'vue'\n\n// Referenced from public function getMentions(): https://github.com/nextcloud/server/blob/master/lib/private/Comments/Comment.php\n// Beginning or whitespace. Uses positive lookahead (to work on MobileSafari <16.4)\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source\n// Capturing groups like: @user-id, @\"guest/abc16def\", @\"federated_user/user-id\", @\"user-id with space\"\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source\nconst MENTION_GUEST = /@&quot;(?:guest|email){1}\\/[a-f0-9]+&quot;/.source\nconst MENTION_PREFIXED = /@&quot;(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+&quot;/.source\nconst MENTION_WITH_SPACE = /@&quot;[a-z0-9_\\-@.' ]+&quot;/.source\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`\n// Concatenated regular expressions\nexport const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @return {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\treturn part\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the leading @ and all \"\n\t\t\t\t\tconst id = part.slice(1).replace(/&quot;/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&amp;/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @return {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content\n\t\t\t// Replace break lines with new lines\n\t\t\ttext = text.replace(/<br>/gmi, '\\n')\n\t\t\t// Replace some html special characters\n\t\t\ttext = text.replace(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @return {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\t// The value returned by this function will replace the trigger '@'\n\t\t\t// and the search text, so when there is no match we simply return\n\t\t\t// '@' and the text.\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\treturn `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`\n\t\t\t}\n\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return @value if matches MENTION_SIMPLE, @\"value\" otherwise\n\t\t\t\treturn [' ', '/', ':'].every(char => !value.includes(char))\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip off new lines, tabs and consecutive whitespaces\n\t\t\treturn this.renderComponentHtml(data, NcMentionBubble)\n\t\t\t\t.replace(/[\\n\\t]/gmi, '')\n\t\t\t\t.replace(/>\\s+</g, '><')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {object} props the props to pass to the component\n\t\t * @param {object} component the component to render\n\t\t * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(props, component) {\n\t\t\tconst Item = createApp(component, {\n\t\t\t\t...props,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst mount = document.createElement('div')\n\t\t\tmount.style.display = 'none'\n\t\t\tdocument.body.appendChild(mount)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.mount(mount)\n\t\t\tconst renderedHtml = mount.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.unmount()\n\t\t\tmount.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_toDisplayString","escapeHtml"],"mappings":"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"}