@nextcloud/vue 9.0.0-alpha.7 → 9.0.0-alpha.8

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 (461) hide show
  1. package/CHANGELOG.md +228 -138
  2. package/README.md +9 -5
  3. package/dist/assets/{NcActionButton-CVjVxm7I.css → NcActionButton-d8aZCq9u.css} +16 -16
  4. package/dist/assets/{NcActionCaption-BNDtcWJ7.css → NcActionCaption-DnG2OyWa.css} +2 -2
  5. package/dist/assets/{NcActionCheckbox-CnTyr-NN.css → NcActionCheckbox-tMIOGziy.css} +12 -12
  6. package/dist/assets/{NcActionInput-D19t1QsM.css → NcActionInput-C-rQsTEA.css} +62 -62
  7. package/dist/assets/{NcActionLink-DA3ebr8W.css → NcActionLink-jSPFFKV8.css} +12 -12
  8. package/dist/assets/{NcActionRadio-C7Kqlz6k.css → NcActionRadio-xdrmoEIq.css} +12 -12
  9. package/dist/assets/{NcActionRouter-BtJqkgqu.css → NcActionRouter-qNNqBZab.css} +15 -15
  10. package/dist/assets/{NcActionText-FHEPUweO.css → NcActionText-0XNfku_2.css} +17 -17
  11. package/dist/assets/{NcActionTextEditable-DzNRmwkV.css → NcActionTextEditable-ZlNtR_B_.css} +60 -60
  12. package/dist/assets/{NcActions-BepWTc-7.css → NcActions-D7gPHaUE.css} +11 -11
  13. package/dist/assets/{NcAppContent-BZ3rplmb.css → NcAppContent-CLu_1q4O.css} +24 -24
  14. package/dist/assets/{NcAppNavigation-_K9H-MtG.css → NcAppNavigation-BXItV5BV.css} +13 -13
  15. package/dist/assets/{NcAppNavigationItem-PKTHyQue.css → NcAppNavigationItem-aVy0uQwf.css} +34 -34
  16. package/dist/assets/{NcAppNavigationNew-L_VNZNL4.css → NcAppNavigationNew-Ba3wWpcY.css} +3 -3
  17. package/dist/assets/{NcAppNavigationSearch-Bsr4esEc.css → NcAppNavigationSearch-BAzhDRd7.css} +6 -6
  18. package/dist/assets/{NcAppNavigationToggle-By3_rHPL.css → NcAppNavigationToggle-DnTKNSH7.css} +3 -3
  19. package/dist/assets/{NcAppSettingsDialog-c8Xj_A-1.css → NcAppSettingsDialog-DZfD_UEa.css} +11 -11
  20. package/dist/assets/{NcAppSidebar-g99AGRiQ.css → NcAppSidebar-GFQ62pY2.css} +61 -61
  21. package/dist/assets/{NcAvatar-Bg20-FW4.css → NcAvatar-DUKfNDGL.css} +26 -26
  22. package/dist/assets/{NcBreadcrumb-r0TATv9A.css → NcBreadcrumb-CV3DgRKn.css} +15 -15
  23. package/dist/assets/{NcBreadcrumbs-Bbd8rdwH.css → NcBreadcrumbs-D2wff82k.css} +6 -6
  24. package/dist/assets/{NcButton-C50FLvfa.css → NcButton-wmjlEdLP.css} +48 -49
  25. package/dist/assets/{NcCheckboxRadioSwitch-jfJIoM4m.css → NcCheckboxRadioSwitch-uwXbP_jb.css} +42 -42
  26. package/dist/assets/{NcChip-BWWUudAH.css → NcChip-CKtzzrlA.css} +9 -9
  27. package/dist/assets/{NcCollectionList-COXbQt16.css → NcCollectionList-DTJgOfCk.css} +29 -29
  28. package/dist/assets/{NcColorPicker-3h8DrL_S.css → NcColorPicker-Clz7MjCA.css} +29 -29
  29. package/dist/assets/{NcContent-BgziefsK.css → NcContent-aXaYSfjS.css} +10 -10
  30. package/dist/assets/{NcDashboardWidget-Cdxxd7ei.css → NcDashboardWidget-xV4o6Cen.css} +14 -15
  31. package/dist/assets/NcDateTimePicker-AIJmp5dC.css +81 -0
  32. package/dist/assets/{NcDateTimePickerNative-pbWtBuzt.css → NcDateTimePickerNative-CdHLvH4A.css} +13 -13
  33. package/dist/assets/{NcDialog-DL7A_udP.css → NcDialog-Dkeikssh.css} +15 -15
  34. package/dist/assets/{NcEllipsisedOption-DGr9_bIL.css → NcEllipsisedOption-D-IsjXWc.css} +5 -5
  35. package/dist/assets/{NcEmojiPicker-Bfk2pnZE.css → NcEmojiPicker-DnMU8iEd.css} +5 -5
  36. package/dist/assets/{NcEmptyContent-DZSuQ2yE.css → NcEmptyContent-D1O466rM.css} +9 -9
  37. package/dist/assets/{NcHeaderButton-cVjCMSVn.css → NcHeaderButton-BPIasMkw.css} +7 -7
  38. package/dist/assets/{NcHeaderMenu-QJK2rMK3.css → NcHeaderMenu-ZmtqwEYA.css} +11 -11
  39. package/dist/assets/{NcInputConfirmCancel-D46m8Alt.css → NcInputConfirmCancel-9YyvRYjw.css} +6 -6
  40. package/dist/assets/{NcInputField-CRvNH5sg.css → NcInputField-B8J2uFD4.css} +32 -32
  41. package/dist/assets/{NcListItem-BEfZK5UK.css → NcListItem-Byw-ayOI.css} +44 -44
  42. package/dist/assets/{NcListItemIcon-E21VFJqd.css → NcListItemIcon-Bnr-Z-SO.css} +14 -14
  43. package/dist/assets/{NcPasswordField-Bl9fhgy-.css → NcPasswordField-z9gbKnov.css} +2 -2
  44. package/dist/assets/{NcRelatedResourcesPanel-Chjd8iT7.css → NcRelatedResourcesPanel-DXfywiqL.css} +23 -23
  45. package/dist/assets/{NcRichContenteditable-BwHgQWPX.css → NcRichContenteditable-Bxi-Ki0j.css} +10 -10
  46. package/dist/assets/{NcRichText-fo4QE8--.css → NcRichText-Dvt8jvWN.css} +83 -83
  47. package/dist/assets/{NcSelect-GdIw6cIy.css → NcSelect-B6DUjUdl.css} +2 -2
  48. package/dist/assets/{NcSettingsInputText-BTOyFeAK.css → NcSettingsInputText-B-V6Y4MD.css} +7 -7
  49. package/dist/assets/{NcSettingsSelectGroup-DhyosmOr.css → NcSettingsSelectGroup-DZcNr_Dq.css} +2 -2
  50. package/dist/assets/{NcTextArea-BfSGN55r.css → NcTextArea-DHr9DPOJ.css} +20 -20
  51. package/dist/assets/{index-BRaTLqzR.css → index-Du_FXiPy.css} +61 -61
  52. package/dist/assets/{referencePickerModal-Cy43S4js.css → referencePickerModal-CkGgDb19.css} +8 -8
  53. package/dist/chunks/AlertCircleOutline-DVzpKQVu.mjs +1 -0
  54. package/dist/chunks/ArrowLeft-CanHG70H.mjs +1 -0
  55. package/dist/chunks/ArrowRight-DQT24Cb-.mjs +1 -0
  56. package/dist/chunks/Check-5i4xKnkl.mjs +1 -0
  57. package/dist/chunks/ChevronDown-FiGpp0KT.mjs +1 -0
  58. package/dist/chunks/ChevronLeft-FfC-tiIS.mjs +1 -0
  59. package/dist/chunks/ChevronRight-LvtA5_hq.mjs +1 -0
  60. package/dist/chunks/ChevronUp-DPXFp1ss.mjs +1 -0
  61. package/dist/chunks/{Close-idsVwGrC.mjs → Close-D6ngJ4t9.mjs} +3 -2
  62. package/dist/chunks/{Close-idsVwGrC.mjs.map → Close-D6ngJ4t9.mjs.map} +1 -1
  63. package/dist/chunks/DotsHorizontal-AMVAlTNH.mjs +1 -0
  64. package/dist/chunks/{NcActionButton-DBFJTCO5.mjs → NcActionButton-BdQ_qmvW.mjs} +6 -4
  65. package/dist/chunks/{NcActionButton-DBFJTCO5.mjs.map → NcActionButton-BdQ_qmvW.mjs.map} +1 -1
  66. package/dist/chunks/{NcActionButtonGroup-nwHeJeV7.mjs → NcActionButtonGroup-TitZerDl.mjs} +6 -4
  67. package/dist/chunks/NcActionButtonGroup-TitZerDl.mjs.map +1 -0
  68. package/dist/chunks/{NcActionCaption-DmOKI_Kc.mjs → NcActionCaption-Fumfjzxj.mjs} +5 -3
  69. package/dist/chunks/NcActionCaption-Fumfjzxj.mjs.map +1 -0
  70. package/dist/chunks/{NcActionCheckbox-yPCmA5vr.mjs → NcActionCheckbox-CUYbo1rw.mjs} +7 -5
  71. package/dist/chunks/NcActionCheckbox-CUYbo1rw.mjs.map +1 -0
  72. package/dist/chunks/{NcActionInput-DTzVHmHn.mjs → NcActionInput-TI648L3V.mjs} +12 -11
  73. package/dist/chunks/NcActionInput-TI648L3V.mjs.map +1 -0
  74. package/dist/chunks/{NcActionLink-CG3cKif-.mjs → NcActionLink-cQlsviu9.mjs} +6 -4
  75. package/dist/chunks/NcActionLink-cQlsviu9.mjs.map +1 -0
  76. package/dist/chunks/{NcActionRadio-BWPi0DII.mjs → NcActionRadio-tORL1qPt.mjs} +7 -5
  77. package/dist/chunks/NcActionRadio-tORL1qPt.mjs.map +1 -0
  78. package/dist/chunks/{NcActionRouter-C7VSuJLq.mjs → NcActionRouter-Bw1tpEZt.mjs} +6 -4
  79. package/dist/chunks/NcActionRouter-Bw1tpEZt.mjs.map +1 -0
  80. package/dist/chunks/NcActionSeparator-Doekl1NX.mjs +1 -0
  81. package/dist/chunks/{NcActionText-ByD1mFXe.mjs → NcActionText-VLCHOiIy.mjs} +6 -4
  82. package/dist/chunks/NcActionText-VLCHOiIy.mjs.map +1 -0
  83. package/dist/chunks/{NcActionTextEditable-DLKA6lfe.mjs → NcActionTextEditable-nTbwgRy2.mjs} +7 -6
  84. package/dist/chunks/NcActionTextEditable-nTbwgRy2.mjs.map +1 -0
  85. package/dist/chunks/{NcActions-DxTtucKk.mjs → NcActions-CgKHXNbF.mjs} +49 -37
  86. package/dist/chunks/NcActions-CgKHXNbF.mjs.map +1 -0
  87. package/dist/chunks/{NcAppContent-Cu9zhNK3.mjs → NcAppContent-C4gBVRQs.mjs} +67 -16
  88. package/dist/chunks/NcAppContent-C4gBVRQs.mjs.map +1 -0
  89. package/dist/chunks/NcAppContentDetails-DsEEBJ0U.mjs +1 -0
  90. package/dist/chunks/NcAppContentList-DnLY_sWw.mjs +1 -0
  91. package/dist/chunks/{NcAppNavigation-BxUvXgeG.mjs → NcAppNavigation-DbRpHbi9.mjs} +4 -3
  92. package/dist/chunks/{NcAppNavigation-BxUvXgeG.mjs.map → NcAppNavigation-DbRpHbi9.mjs.map} +1 -1
  93. package/dist/chunks/{NcAppNavigationCaption-S_2Jmwqr.mjs → NcAppNavigationCaption-R_UZ7iKw.mjs} +2 -1
  94. package/dist/chunks/{NcAppNavigationCaption-S_2Jmwqr.mjs.map → NcAppNavigationCaption-R_UZ7iKw.mjs.map} +1 -1
  95. package/dist/chunks/NcAppNavigationIconBullet-B1kc4u65.mjs +1 -0
  96. package/dist/chunks/{NcAppNavigationItem-C7bIZuo2.mjs → NcAppNavigationItem-CxYtFEhV.mjs} +16 -15
  97. package/dist/chunks/NcAppNavigationItem-CxYtFEhV.mjs.map +1 -0
  98. package/dist/chunks/NcAppNavigationList-DX_Yo23V.mjs +1 -0
  99. package/dist/chunks/{NcAppNavigationNew-BO-Llutk.mjs → NcAppNavigationNew-sMVo_IoL.mjs} +11 -6
  100. package/dist/chunks/NcAppNavigationNew-sMVo_IoL.mjs.map +1 -0
  101. package/dist/chunks/{NcAppNavigationNewItem-D7CYmmOm.mjs → NcAppNavigationNewItem-CJZcL6GH.mjs} +2 -1
  102. package/dist/chunks/{NcAppNavigationNewItem-D7CYmmOm.mjs.map → NcAppNavigationNewItem-CJZcL6GH.mjs.map} +1 -1
  103. package/dist/chunks/{NcAppNavigationSearch-DLbzvkkq.mjs → NcAppNavigationSearch-Dbhh-Vtw.mjs} +7 -6
  104. package/dist/chunks/NcAppNavigationSearch-Dbhh-Vtw.mjs.map +1 -0
  105. package/dist/chunks/{NcAppNavigationSettings-vM8ajNNK.mjs → NcAppNavigationSettings-Bfo3EWk_.mjs} +5 -4
  106. package/dist/chunks/NcAppNavigationSettings-Bfo3EWk_.mjs.map +1 -0
  107. package/dist/chunks/NcAppNavigationSpacer-CzBLuQL8.mjs +1 -0
  108. package/dist/chunks/{NcAppNavigationToggle-DBtf139E.mjs → NcAppNavigationToggle-Ys-PjFo3.mjs} +9 -8
  109. package/dist/chunks/NcAppNavigationToggle-Ys-PjFo3.mjs.map +1 -0
  110. package/dist/chunks/{NcAppSettingsDialog-CdFUuydh.mjs → NcAppSettingsDialog-Cc-OdY9a.mjs} +5 -4
  111. package/dist/chunks/{NcAppSettingsDialog-CdFUuydh.mjs.map → NcAppSettingsDialog-Cc-OdY9a.mjs.map} +1 -1
  112. package/dist/chunks/NcAppSettingsSection-CssmXyZ0.mjs +1 -0
  113. package/dist/chunks/{NcAppSidebar-Dav-iGv2.mjs → NcAppSidebar-Dgwj8O_Z.mjs} +26 -25
  114. package/dist/chunks/NcAppSidebar-Dgwj8O_Z.mjs.map +1 -0
  115. package/dist/chunks/NcAppSidebarTab-DG51ajic.mjs +1 -0
  116. package/dist/chunks/{NcAvatar-A1YnlIoN.mjs → NcAvatar-CA8y4d-c.mjs} +34 -34
  117. package/dist/chunks/NcAvatar-CA8y4d-c.mjs.map +1 -0
  118. package/dist/chunks/NcBlurHash-BiFktE2N.mjs +1 -0
  119. package/dist/chunks/NcBlurHash-BiFktE2N.mjs.map +1 -1
  120. package/dist/chunks/{NcBreadcrumb-D5cRcQg5.mjs → NcBreadcrumb-DSjIxTeU.mjs} +21 -17
  121. package/dist/chunks/NcBreadcrumb-DSjIxTeU.mjs.map +1 -0
  122. package/dist/chunks/{NcBreadcrumbs-CnWT9rE5.mjs → NcBreadcrumbs-jPvP6Cmo.mjs} +10 -9
  123. package/dist/chunks/NcBreadcrumbs-jPvP6Cmo.mjs.map +1 -0
  124. package/dist/chunks/{NcButton-QmfEsvXC.mjs → NcButton-BHLqKKYP.mjs} +63 -53
  125. package/dist/chunks/NcButton-BHLqKKYP.mjs.map +1 -0
  126. package/dist/chunks/{NcCheckboxRadioSwitch-Ctdu7_UC.mjs → NcCheckboxRadioSwitch-CWU_M_ui.mjs} +7 -6
  127. package/dist/chunks/NcCheckboxRadioSwitch-CWU_M_ui.mjs.map +1 -0
  128. package/dist/chunks/{NcChip-BnD-EmBn.mjs → NcChip-C3U2HYR9.mjs} +21 -60
  129. package/dist/chunks/NcChip-C3U2HYR9.mjs.map +1 -0
  130. package/dist/chunks/{NcCollectionList-9YfN6xAi.mjs → NcCollectionList-BtHsipae.mjs} +9 -8
  131. package/dist/chunks/NcCollectionList-BtHsipae.mjs.map +1 -0
  132. package/dist/chunks/{NcColorPicker-DQqAv2wB.mjs → NcColorPicker-BI-Is4nj.mjs} +14 -13
  133. package/dist/chunks/NcColorPicker-BI-Is4nj.mjs.map +1 -0
  134. package/dist/chunks/{NcContent-CsDFFKvH.mjs → NcContent-BcF6f3N-.mjs} +8 -7
  135. package/dist/chunks/{NcContent-CsDFFKvH.mjs.map → NcContent-BcF6f3N-.mjs.map} +1 -1
  136. package/dist/chunks/NcCounterBubble-6B_JNUUS.mjs +1 -0
  137. package/dist/chunks/{NcDashboardWidget-ROT13m5A.mjs → NcDashboardWidget-1rVqTzgV.mjs} +8 -7
  138. package/dist/chunks/{NcDashboardWidget-ROT13m5A.mjs.map → NcDashboardWidget-1rVqTzgV.mjs.map} +1 -1
  139. package/dist/chunks/{NcDashboardWidgetItem-DoYOYxck.mjs → NcDashboardWidgetItem-7RXY5EKJ.mjs} +4 -3
  140. package/dist/chunks/{NcDashboardWidgetItem-DoYOYxck.mjs.map → NcDashboardWidgetItem-7RXY5EKJ.mjs.map} +1 -1
  141. package/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-DtP-oauZ.mjs +31 -0
  142. package/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-DtP-oauZ.mjs.map +1 -0
  143. package/dist/chunks/NcDateTimePicker-BzfuHym4.mjs +257 -0
  144. package/dist/chunks/NcDateTimePicker-BzfuHym4.mjs.map +1 -0
  145. package/dist/chunks/{NcDateTimePickerNative-Dbc6pBXk.mjs → NcDateTimePickerNative-Dake1IML.mjs} +6 -5
  146. package/dist/chunks/NcDateTimePickerNative-Dake1IML.mjs.map +1 -0
  147. package/dist/chunks/{NcDialog-B81mllwn.mjs → NcDialog-_pc2BPHU.mjs} +12 -11
  148. package/dist/chunks/NcDialog-_pc2BPHU.mjs.map +1 -0
  149. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-DgWqkSL7.mjs → NcDialogButton.vue_vue_type_script_setup_true_lang-BKrJ_xd8.mjs} +22 -23
  150. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-BKrJ_xd8.mjs.map +1 -0
  151. package/dist/chunks/{NcEllipsisedOption-D4OggsNq.mjs → NcEllipsisedOption-4k07kvEr.mjs} +5 -4
  152. package/dist/chunks/NcEllipsisedOption-4k07kvEr.mjs.map +1 -0
  153. package/dist/chunks/{NcEmojiPicker-DKGBXunS.mjs → NcEmojiPicker-CWbez_of.mjs} +18 -14
  154. package/dist/chunks/NcEmojiPicker-CWbez_of.mjs.map +1 -0
  155. package/dist/chunks/{NcEmptyContent-D-wBvEi4.mjs → NcEmptyContent-BQnIrQQn.mjs} +3 -2
  156. package/dist/chunks/NcEmptyContent-BQnIrQQn.mjs.map +1 -0
  157. package/dist/chunks/NcGuestContent-iQpV7mLC.mjs +1 -0
  158. package/dist/chunks/{NcHeaderButton-Cq62USyt.mjs → NcHeaderButton-BsstEWtv.mjs} +9 -8
  159. package/dist/chunks/{NcHeaderButton-Cq62USyt.mjs.map → NcHeaderButton-BsstEWtv.mjs.map} +1 -1
  160. package/dist/chunks/{NcHeaderMenu-BRiroRYT.mjs → NcHeaderMenu-ZzoCwPvX.mjs} +13 -14
  161. package/dist/chunks/NcHeaderMenu-ZzoCwPvX.mjs.map +1 -0
  162. package/dist/chunks/{NcHighlight-BHtRIzqk.mjs → NcHighlight-Cu4UfEEO.mjs} +11 -7
  163. package/dist/chunks/NcHighlight-Cu4UfEEO.mjs.map +1 -0
  164. package/dist/chunks/NcIconSvgWrapper-BYTrkA66.mjs +1 -0
  165. package/dist/chunks/{NcInputConfirmCancel-xnrPAGac.mjs → NcInputConfirmCancel-CX56m05a.mjs} +19 -18
  166. package/dist/chunks/NcInputConfirmCancel-CX56m05a.mjs.map +1 -0
  167. package/dist/chunks/{NcInputField-CzC820tG.mjs → NcInputField-DdZlDVwQ.mjs} +7 -6
  168. package/dist/chunks/NcInputField-DdZlDVwQ.mjs.map +1 -0
  169. package/dist/chunks/{NcListItem-DFLsabmR.mjs → NcListItem-DF8Yv05m.mjs} +4 -3
  170. package/dist/chunks/NcListItem-DF8Yv05m.mjs.map +1 -0
  171. package/dist/chunks/{NcListItemIcon-BK9GBjoD.mjs → NcListItemIcon-nzw_x2Q5.mjs} +5 -4
  172. package/dist/chunks/{NcListItemIcon-BK9GBjoD.mjs.map → NcListItemIcon-nzw_x2Q5.mjs.map} +1 -1
  173. package/dist/chunks/NcLoadingIcon-CsMn1bFR.mjs +1 -0
  174. package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs +1 -0
  175. package/dist/chunks/NcNoteCard-XoSOund1.mjs +1 -0
  176. package/dist/chunks/{NcPasswordField-BLHAdm-k.mjs → NcPasswordField-BnnlEhT1.mjs} +6 -5
  177. package/dist/chunks/{NcPasswordField-BLHAdm-k.mjs.map → NcPasswordField-BnnlEhT1.mjs.map} +1 -1
  178. package/dist/chunks/{NcPopover-D4D97Y3j.mjs → NcPopover-C3ZoyUjc.mjs} +7 -2
  179. package/dist/chunks/NcPopover-C3ZoyUjc.mjs.map +1 -0
  180. package/dist/chunks/NcProgressBar-Bx8bMkd4.mjs +1 -0
  181. package/dist/chunks/{NcRelatedResourcesPanel-DsuNT9hM.mjs → NcRelatedResourcesPanel-D2YLEouH.mjs} +13 -12
  182. package/dist/chunks/NcRelatedResourcesPanel-D2YLEouH.mjs.map +1 -0
  183. package/dist/chunks/{NcRichContenteditable-BkSojqgy.mjs → NcRichContenteditable-B16VJW0Y.mjs} +18 -18
  184. package/dist/chunks/NcRichContenteditable-B16VJW0Y.mjs.map +1 -0
  185. package/dist/chunks/NcRichText-4jIBSmap.mjs +3673 -0
  186. package/dist/chunks/NcRichText-4jIBSmap.mjs.map +1 -0
  187. package/dist/chunks/NcSavingIndicatorIcon-icWy8J5x.mjs +1 -0
  188. package/dist/chunks/{NcSelect-B61ik8an.mjs → NcSelect-CAx_ixPU.mjs} +11 -10
  189. package/dist/chunks/NcSelect-CAx_ixPU.mjs.map +1 -0
  190. package/dist/chunks/{NcSelectTags-Dx3nG6jx.mjs → NcSelectTags-UXzC7lDz.mjs} +4 -3
  191. package/dist/chunks/{NcSelectTags-Dx3nG6jx.mjs.map → NcSelectTags-UXzC7lDz.mjs.map} +1 -1
  192. package/dist/chunks/{NcSettingsInputText-B5FrLCL9.mjs → NcSettingsInputText-BEHu3xAI.mjs} +6 -5
  193. package/dist/chunks/NcSettingsInputText-BEHu3xAI.mjs.map +1 -0
  194. package/dist/chunks/{NcSettingsSection-CAdn6gS9.mjs → NcSettingsSection-X7f0W7vZ.mjs} +3 -2
  195. package/dist/chunks/{NcSettingsSection-CAdn6gS9.mjs.map → NcSettingsSection-X7f0W7vZ.mjs.map} +1 -1
  196. package/dist/chunks/{NcSettingsSelectGroup-CKIbxms2.mjs → NcSettingsSelectGroup-DfrKchOy.mjs} +8 -7
  197. package/dist/chunks/NcSettingsSelectGroup-DfrKchOy.mjs.map +1 -0
  198. package/dist/chunks/{NcTextArea-C-PMlEbl.mjs → NcTextArea-DKHjCur8.mjs} +5 -4
  199. package/dist/chunks/NcTextArea-DKHjCur8.mjs.map +1 -0
  200. package/dist/chunks/{NcTextField-CNV42Zey.mjs → NcTextField-BTzKCPza.mjs} +6 -5
  201. package/dist/chunks/{NcTextField-CNV42Zey.mjs.map → NcTextField-BTzKCPza.mjs.map} +1 -1
  202. package/dist/chunks/{NcTimezonePicker-tZmX1Qp4.mjs → NcTimezonePicker-CMoUk4sZ.mjs} +8 -7
  203. package/dist/chunks/NcTimezonePicker-CMoUk4sZ.mjs.map +1 -0
  204. package/dist/chunks/{NcUserBubble-MfDc1YR2.mjs → NcUserBubble-Dgzog0Ps.mjs} +3 -2
  205. package/dist/chunks/{NcUserBubble-MfDc1YR2.mjs.map → NcUserBubble-Dgzog0Ps.mjs.map} +1 -1
  206. package/dist/chunks/{NcUserStatusIcon-vtnkNASH.mjs → NcUserStatusIcon-DvYiEs2L.mjs} +2 -1
  207. package/dist/chunks/{NcUserStatusIcon-vtnkNASH.mjs.map → NcUserStatusIcon-DvYiEs2L.mjs.map} +1 -1
  208. package/dist/chunks/{ScopeComponent-DgRMJomt.mjs → ScopeComponent-BWZEma4R.mjs} +2 -1
  209. package/dist/chunks/{ScopeComponent-DgRMJomt.mjs.map → ScopeComponent-BWZEma4R.mjs.map} +1 -1
  210. package/dist/chunks/_l10n-7kR7gXFc.mjs +132 -0
  211. package/dist/chunks/_l10n-7kR7gXFc.mjs.map +1 -0
  212. package/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs +1 -0
  213. package/dist/chunks/actionGlobal-BZFdtdJL.mjs +1 -0
  214. package/dist/chunks/{actionText-aI0owku1.mjs → actionText-BiV1_BZX.mjs} +8 -13
  215. package/dist/chunks/actionText-BiV1_BZX.mjs.map +1 -0
  216. package/dist/chunks/autolink-CKPk5rzg.mjs +1 -0
  217. package/dist/chunks/{GenColors-G1ZRJcz5.mjs → colors-BJbWzaQ-.mjs} +28 -22
  218. package/dist/chunks/colors-BJbWzaQ-.mjs.map +1 -0
  219. package/dist/chunks/createElementId-DhjFt1I9.mjs +8 -0
  220. package/dist/chunks/createElementId-DhjFt1I9.mjs.map +1 -0
  221. package/dist/chunks/emoji-BY_D0V5K.mjs +1 -0
  222. package/dist/chunks/focusTrap-DmkaYJTC.mjs +1 -0
  223. package/dist/chunks/{index-wLgC9ACl.mjs → index--u6iHwFv.mjs} +3 -2
  224. package/dist/chunks/{index-wLgC9ACl.mjs.map → index--u6iHwFv.mjs.map} +1 -1
  225. package/dist/chunks/index-BF8joS9W.mjs +1 -0
  226. package/dist/chunks/logger-D3RVzcfQ.mjs +1 -0
  227. package/dist/chunks/logger-D3RVzcfQ.mjs.map +1 -1
  228. package/dist/chunks/mdi-zYpVOORa.mjs +17 -0
  229. package/dist/chunks/mdi-zYpVOORa.mjs.map +1 -0
  230. package/dist/chunks/{referencePickerModal-CzI44bxD.mjs → referencePickerModal-BpNnwC_g.mjs} +17 -17
  231. package/dist/chunks/{referencePickerModal-CzI44bxD.mjs.map → referencePickerModal-BpNnwC_g.mjs.map} +1 -1
  232. package/dist/chunks/rtl-v0UOPAM7.mjs +1 -0
  233. package/dist/chunks/{useFormatDateTime-Cvc8YJRE.mjs → useFormatDateTime-B5sWtJdj.mjs} +2 -1
  234. package/dist/chunks/{useFormatDateTime-Cvc8YJRE.mjs.map → useFormatDateTime-B5sWtJdj.mjs.map} +1 -1
  235. package/dist/chunks/useNcActions-CiGWxAJE.mjs +7 -0
  236. package/dist/chunks/useNcActions-CiGWxAJE.mjs.map +1 -0
  237. package/dist/chunks/useTrapStackControl-b3A_383w.mjs +1 -0
  238. package/dist/chunks/usernameToColor-CzXWY0j4.mjs +22 -0
  239. package/dist/chunks/usernameToColor-CzXWY0j4.mjs.map +1 -0
  240. package/dist/components/NcActionButton/NcActionButton.vue.d.ts +5 -0
  241. package/dist/components/NcActionButton/index.mjs +2 -1
  242. package/dist/components/NcActionButtonGroup/index.mjs +2 -1
  243. package/dist/components/NcActionCaption/index.mjs +2 -1
  244. package/dist/components/NcActionCheckbox/index.mjs +2 -1
  245. package/dist/components/NcActionInput/index.mjs +2 -1
  246. package/dist/components/NcActionLink/index.mjs +2 -1
  247. package/dist/components/NcActionRadio/index.mjs +2 -1
  248. package/dist/components/NcActionRouter/NcActionRouter.vue.d.ts +5 -0
  249. package/dist/components/NcActionRouter/index.mjs +2 -1
  250. package/dist/components/NcActionSeparator/index.mjs +1 -0
  251. package/dist/components/NcActionText/NcActionText.vue.d.ts +5 -0
  252. package/dist/components/NcActionText/index.mjs +2 -1
  253. package/dist/components/NcActionTextEditable/NcActionTextEditable.vue.d.ts +5 -0
  254. package/dist/components/NcActionTextEditable/index.mjs +2 -1
  255. package/dist/components/NcActions/NcActions.vue.d.ts +52 -40
  256. package/dist/components/NcActions/index.mjs +2 -1
  257. package/dist/components/NcActions/useNcActions.d.ts +3 -0
  258. package/dist/components/NcAppContent/index.mjs +2 -1
  259. package/dist/components/NcAppContentDetails/index.mjs +1 -0
  260. package/dist/components/NcAppContentList/index.mjs +1 -0
  261. package/dist/components/NcAppNavigation/NcAppNavigation.vue.d.ts +16 -15
  262. package/dist/components/NcAppNavigation/index.mjs +2 -1
  263. package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +34 -30
  264. package/dist/components/NcAppNavigationCaption/index.mjs +2 -1
  265. package/dist/components/NcAppNavigationIconBullet/index.mjs +1 -0
  266. package/dist/components/NcAppNavigationItem/NcAppNavigationIconCollapsible.vue.d.ts +16 -15
  267. package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +94 -83
  268. package/dist/components/NcAppNavigationItem/NcInputConfirmCancel.vue.d.ts +25 -24
  269. package/dist/components/NcAppNavigationItem/index.mjs +2 -1
  270. package/dist/components/NcAppNavigationList/index.mjs +1 -0
  271. package/dist/components/NcAppNavigationNew/NcAppNavigationNew.vue.d.ts +27 -18
  272. package/dist/components/NcAppNavigationNew/index.mjs +2 -1
  273. package/dist/components/NcAppNavigationNewItem/NcAppNavigationNewItem.vue.d.ts +18 -17
  274. package/dist/components/NcAppNavigationNewItem/index.mjs +2 -1
  275. package/dist/components/NcAppNavigationSearch/NcAppNavigationSearch.vue.d.ts +16 -15
  276. package/dist/components/NcAppNavigationSearch/index.mjs +2 -1
  277. package/dist/components/NcAppNavigationSettings/index.mjs +2 -1
  278. package/dist/components/NcAppNavigationSpacer/index.mjs +1 -0
  279. package/dist/components/NcAppNavigationToggle/NcAppNavigationToggle.vue.d.ts +16 -15
  280. package/dist/components/NcAppNavigationToggle/index.mjs +2 -1
  281. package/dist/components/NcAppSettingsDialog/index.mjs +2 -1
  282. package/dist/components/NcAppSettingsSection/index.mjs +1 -0
  283. package/dist/components/NcAppSidebar/index.mjs +2 -1
  284. package/dist/components/NcAppSidebarTab/index.mjs +1 -0
  285. package/dist/components/NcAvatar/index.mjs +2 -1
  286. package/dist/components/NcBlurHash/index.mjs +1 -0
  287. package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +70 -64
  288. package/dist/components/NcBreadcrumb/index.mjs +2 -1
  289. package/dist/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +97 -77
  290. package/dist/components/NcBreadcrumbs/index.mjs +2 -1
  291. package/dist/components/NcButton/NcButton.vue.d.ts +42 -38
  292. package/dist/components/NcButton/index.mjs +4 -3
  293. package/dist/components/NcButton/types.d.ts +2 -2
  294. package/dist/components/NcCheckboxRadioSwitch/index.mjs +2 -1
  295. package/dist/components/NcChip/NcChip.vue.d.ts +57 -92
  296. package/dist/components/NcChip/index.mjs +2 -1
  297. package/dist/components/NcCollectionList/index.mjs +2 -1
  298. package/dist/components/NcColorPicker/index.mjs +2 -1
  299. package/dist/components/NcContent/NcContent.vue.d.ts +16 -15
  300. package/dist/components/NcContent/index.mjs +2 -1
  301. package/dist/components/NcCounterBubble/index.mjs +1 -0
  302. package/dist/components/NcDashboardWidget/index.mjs +2 -1
  303. package/dist/components/NcDashboardWidgetItem/index.mjs +2 -1
  304. package/dist/components/NcDateTime/NcDateTime.vue.d.ts +56 -1
  305. package/dist/components/NcDateTime/index.d.ts +4 -0
  306. package/dist/components/NcDateTime/index.mjs +3 -2
  307. package/dist/components/NcDateTimePicker/NcDateTimePicker.vue.d.ts +116 -1
  308. package/dist/components/NcDateTimePicker/index.d.ts +4 -0
  309. package/dist/components/NcDateTimePicker/index.mjs +2 -1
  310. package/dist/components/NcDateTimePickerNative/index.mjs +2 -1
  311. package/dist/components/NcDialog/NcDialog.vue.d.ts +45 -48
  312. package/dist/components/NcDialog/index.mjs +2 -1
  313. package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +37 -33
  314. package/dist/components/NcDialogButton/index.mjs +2 -1
  315. package/dist/components/NcEllipsisedOption/index.mjs +2 -1
  316. package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +33 -31
  317. package/dist/components/NcEmojiPicker/index.mjs +2 -1
  318. package/dist/components/NcEmptyContent/index.mjs +2 -1
  319. package/dist/components/NcGuestContent/index.mjs +1 -0
  320. package/dist/components/NcHeaderButton/index.mjs +2 -1
  321. package/dist/components/NcHeaderMenu/NcHeaderMenu.vue.d.ts +24 -22
  322. package/dist/components/NcHeaderMenu/index.mjs +2 -1
  323. package/dist/components/NcHighlight/index.mjs +2 -1
  324. package/dist/components/NcIconSvgWrapper/index.mjs +1 -0
  325. package/dist/components/NcInputField/NcInputField.vue.d.ts +16 -15
  326. package/dist/components/NcInputField/index.mjs +2 -1
  327. package/dist/components/NcListItem/NcListItem.vue.d.ts +34 -30
  328. package/dist/components/NcListItem/index.mjs +2 -1
  329. package/dist/components/NcListItemIcon/index.mjs +2 -1
  330. package/dist/components/NcLoadingIcon/index.mjs +1 -0
  331. package/dist/components/NcModal/index.mjs +34 -31
  332. package/dist/components/NcModal/index.mjs.map +1 -1
  333. package/dist/components/NcNoteCard/index.mjs +1 -0
  334. package/dist/components/NcPasswordField/index.mjs +2 -1
  335. package/dist/components/NcPopover/index.mjs +2 -1
  336. package/dist/components/NcProgressBar/index.mjs +1 -0
  337. package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +32 -30
  338. package/dist/components/NcRelatedResourcesPanel/NcResource.vue.d.ts +16 -15
  339. package/dist/components/NcRelatedResourcesPanel/NcTeamResources.vue.d.ts +16 -15
  340. package/dist/components/NcRelatedResourcesPanel/index.mjs +2 -1
  341. package/dist/components/NcRichContenteditable/index.mjs +3 -2
  342. package/dist/components/NcRichText/NcReferenceList.vue.d.ts +17 -16
  343. package/dist/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue.d.ts +33 -31
  344. package/dist/components/NcRichText/NcReferenceWidget.vue.d.ts +17 -16
  345. package/dist/components/NcRichText/NcRichText.vue.d.ts +17 -16
  346. package/dist/components/NcRichText/index.mjs +4 -3
  347. package/dist/components/NcSavingIndicatorIcon/index.mjs +1 -0
  348. package/dist/components/NcSelect/index.mjs +2 -1
  349. package/dist/components/NcSelectTags/index.mjs +2 -1
  350. package/dist/components/NcSettingsInputText/index.mjs +2 -1
  351. package/dist/components/NcSettingsSection/index.mjs +2 -1
  352. package/dist/components/NcSettingsSelectGroup/index.mjs +2 -1
  353. package/dist/components/NcTextArea/index.mjs +2 -1
  354. package/dist/components/NcTextField/NcTextField.vue.d.ts +16 -15
  355. package/dist/components/NcTextField/index.mjs +2 -1
  356. package/dist/components/NcTimezonePicker/index.mjs +2 -1
  357. package/dist/components/NcUserBubble/index.mjs +2 -1
  358. package/dist/components/NcUserStatusIcon/index.mjs +2 -1
  359. package/dist/components/NcVNodes/index.mjs +1 -0
  360. package/dist/composables/index.d.ts +6 -2
  361. package/dist/composables/useHotKey/index.mjs +1 -0
  362. package/dist/composables/useIsDarkTheme/index.mjs +1 -0
  363. package/dist/composables/useIsFullscreen/index.d.ts +3 -4
  364. package/dist/composables/useIsFullscreen/index.mjs +4 -1
  365. package/dist/composables/useIsFullscreen/index.mjs.map +1 -1
  366. package/dist/composables/useIsMobile/index.d.ts +9 -14
  367. package/dist/composables/useIsMobile/index.mjs +1 -2
  368. package/dist/composables/useIsMobile/index.mjs.map +1 -1
  369. package/dist/directives/Focus/index.mjs +1 -0
  370. package/dist/directives/Linkify/index.d.ts +2 -1
  371. package/dist/directives/Linkify/index.mjs +38 -10
  372. package/dist/directives/Linkify/index.mjs.map +1 -1
  373. package/dist/directives/Tooltip/index.mjs +1 -0
  374. package/dist/directives/index.d.ts +1 -1
  375. package/dist/functions/a11y/index.mjs +1 -0
  376. package/dist/functions/dialog/index.mjs +1 -0
  377. package/dist/functions/emoji/index.mjs +1 -0
  378. package/dist/functions/isDarkTheme/index.mjs +1 -0
  379. package/dist/functions/preloadImage/index.mjs +1 -0
  380. package/dist/functions/reference/index.mjs +2 -1
  381. package/dist/functions/registerReference/index.mjs +1 -0
  382. package/dist/functions/usernameToColor/index.d.ts +5 -1
  383. package/dist/functions/usernameToColor/index.mjs +2 -1
  384. package/dist/functions/usernameToColor/usernameToColor.d.ts +4 -9
  385. package/dist/index.mjs +114 -114
  386. package/dist/mixins/actionText.d.ts +6 -0
  387. package/dist/mixins/richEditor/index.mjs +2 -1
  388. package/dist/utils/appName.d.ts +5 -0
  389. package/dist/utils/colors.d.ts +34 -0
  390. package/dist/utils/createElementId.d.ts +7 -0
  391. package/dist/utils/findRanges.d.ts +16 -0
  392. package/dist/utils/isSlotPopulated.d.ts +1 -2
  393. package/dist/utils/linkify.d.ts +8 -0
  394. package/dist/utils/logger.d.ts +4 -0
  395. package/dist/vendor.LICENSE.txt +128 -0
  396. package/package.json +27 -21
  397. package/dist/assets/NcDateTimePicker-CRb2xZzf.css +0 -918
  398. package/dist/chunks/GenColors-G1ZRJcz5.mjs.map +0 -1
  399. package/dist/chunks/GenRandomId-CMooMQt0.mjs +0 -6
  400. package/dist/chunks/GenRandomId-CMooMQt0.mjs.map +0 -1
  401. package/dist/chunks/NcActionButtonGroup-nwHeJeV7.mjs.map +0 -1
  402. package/dist/chunks/NcActionCaption-DmOKI_Kc.mjs.map +0 -1
  403. package/dist/chunks/NcActionCheckbox-yPCmA5vr.mjs.map +0 -1
  404. package/dist/chunks/NcActionInput-DTzVHmHn.mjs.map +0 -1
  405. package/dist/chunks/NcActionLink-CG3cKif-.mjs.map +0 -1
  406. package/dist/chunks/NcActionRadio-BWPi0DII.mjs.map +0 -1
  407. package/dist/chunks/NcActionRouter-C7VSuJLq.mjs.map +0 -1
  408. package/dist/chunks/NcActionText-ByD1mFXe.mjs.map +0 -1
  409. package/dist/chunks/NcActionTextEditable-DLKA6lfe.mjs.map +0 -1
  410. package/dist/chunks/NcActions-DxTtucKk.mjs.map +0 -1
  411. package/dist/chunks/NcAppContent-Cu9zhNK3.mjs.map +0 -1
  412. package/dist/chunks/NcAppNavigationItem-C7bIZuo2.mjs.map +0 -1
  413. package/dist/chunks/NcAppNavigationNew-BO-Llutk.mjs.map +0 -1
  414. package/dist/chunks/NcAppNavigationSearch-DLbzvkkq.mjs.map +0 -1
  415. package/dist/chunks/NcAppNavigationSettings-vM8ajNNK.mjs.map +0 -1
  416. package/dist/chunks/NcAppNavigationToggle-DBtf139E.mjs.map +0 -1
  417. package/dist/chunks/NcAppSidebar-Dav-iGv2.mjs.map +0 -1
  418. package/dist/chunks/NcAvatar-A1YnlIoN.mjs.map +0 -1
  419. package/dist/chunks/NcBreadcrumb-D5cRcQg5.mjs.map +0 -1
  420. package/dist/chunks/NcBreadcrumbs-CnWT9rE5.mjs.map +0 -1
  421. package/dist/chunks/NcButton-QmfEsvXC.mjs.map +0 -1
  422. package/dist/chunks/NcCheckboxRadioSwitch-Ctdu7_UC.mjs.map +0 -1
  423. package/dist/chunks/NcChip-BnD-EmBn.mjs.map +0 -1
  424. package/dist/chunks/NcCollectionList-9YfN6xAi.mjs.map +0 -1
  425. package/dist/chunks/NcColorPicker-DQqAv2wB.mjs.map +0 -1
  426. package/dist/chunks/NcDateTime-D3snW0sN.mjs +0 -65
  427. package/dist/chunks/NcDateTime-D3snW0sN.mjs.map +0 -1
  428. package/dist/chunks/NcDateTimePicker-DUPn2UCM.mjs +0 -377
  429. package/dist/chunks/NcDateTimePicker-DUPn2UCM.mjs.map +0 -1
  430. package/dist/chunks/NcDateTimePickerNative-Dbc6pBXk.mjs.map +0 -1
  431. package/dist/chunks/NcDialog-B81mllwn.mjs.map +0 -1
  432. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-DgWqkSL7.mjs.map +0 -1
  433. package/dist/chunks/NcEllipsisedOption-D4OggsNq.mjs.map +0 -1
  434. package/dist/chunks/NcEmojiPicker-DKGBXunS.mjs.map +0 -1
  435. package/dist/chunks/NcEmptyContent-D-wBvEi4.mjs.map +0 -1
  436. package/dist/chunks/NcHeaderMenu-BRiroRYT.mjs.map +0 -1
  437. package/dist/chunks/NcHighlight-BHtRIzqk.mjs.map +0 -1
  438. package/dist/chunks/NcInputConfirmCancel-xnrPAGac.mjs.map +0 -1
  439. package/dist/chunks/NcInputField-CzC820tG.mjs.map +0 -1
  440. package/dist/chunks/NcListItem-DFLsabmR.mjs.map +0 -1
  441. package/dist/chunks/NcPopover-D4D97Y3j.mjs.map +0 -1
  442. package/dist/chunks/NcRelatedResourcesPanel-DsuNT9hM.mjs.map +0 -1
  443. package/dist/chunks/NcRichContenteditable-BkSojqgy.mjs.map +0 -1
  444. package/dist/chunks/NcRichText-Cn583bql.mjs +0 -414
  445. package/dist/chunks/NcRichText-Cn583bql.mjs.map +0 -1
  446. package/dist/chunks/NcSelect-B61ik8an.mjs.map +0 -1
  447. package/dist/chunks/NcSettingsInputText-B5FrLCL9.mjs.map +0 -1
  448. package/dist/chunks/NcSettingsSelectGroup-CKIbxms2.mjs.map +0 -1
  449. package/dist/chunks/NcTextArea-C-PMlEbl.mjs.map +0 -1
  450. package/dist/chunks/NcTimezonePicker-tZmX1Qp4.mjs.map +0 -1
  451. package/dist/chunks/_l10n-BEP_UzXI.mjs +0 -133
  452. package/dist/chunks/_l10n-BEP_UzXI.mjs.map +0 -1
  453. package/dist/chunks/actionText-aI0owku1.mjs.map +0 -1
  454. package/dist/chunks/usernameToColor-B_Q_sS3j.mjs +0 -26
  455. package/dist/chunks/usernameToColor-B_Q_sS3j.mjs.map +0 -1
  456. package/dist/utils/FindRanges.d.ts +0 -13
  457. package/dist/utils/GenColors.d.ts +0 -28
  458. package/dist/utils/GenRandomId.d.ts +0 -6
  459. package/dist/utils/GetChildren.d.ts +0 -13
  460. package/dist/utils/GetParent.d.ts +0 -13
  461. package/dist/utils/Linkify.d.ts +0 -8
@@ -1,6 +1,18 @@
1
- import '../assets/NcButton-C50FLvfa.css';
1
+ import '../assets/NcButton-wmjlEdLP.css';
2
2
  import { Comment, Fragment, Text, defineComponent, h, resolveComponent } from "vue";
3
3
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
4
+ function isSlotPopulated(vnodes) {
5
+ return Array.isArray(vnodes) && vnodes.some((node) => {
6
+ if (node === null) return false;
7
+ if (typeof node === "object") {
8
+ const vnode = node;
9
+ if (vnode.type === Comment) return false;
10
+ if (vnode.type === Fragment && !isSlotPopulated(vnode.children)) return false;
11
+ if (vnode.type === Text && !vnode.children.trim()) return false;
12
+ }
13
+ return true;
14
+ });
15
+ }
4
16
  var ButtonAlignment = /* @__PURE__ */ ((ButtonAlignment2) => {
5
17
  ButtonAlignment2["Start"] = "start";
6
18
  ButtonAlignment2["StartReverse"] = "start-reverse";
@@ -10,35 +22,23 @@ var ButtonAlignment = /* @__PURE__ */ ((ButtonAlignment2) => {
10
22
  ButtonAlignment2["EndReverse"] = "end-reverse";
11
23
  return ButtonAlignment2;
12
24
  })(ButtonAlignment || {});
13
- var ButtonNativeType = /* @__PURE__ */ ((ButtonNativeType2) => {
14
- ButtonNativeType2["Submit"] = "submit";
15
- ButtonNativeType2["Reset"] = "reset";
16
- ButtonNativeType2["Button"] = "button";
17
- return ButtonNativeType2;
18
- })(ButtonNativeType || {});
19
25
  var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
20
- ButtonType2["Primary"] = "primary";
21
- ButtonType2["Secondary"] = "secondary";
22
- ButtonType2["Tertiary"] = "tertiary";
23
- ButtonType2["TertiaryNoBackground"] = "tertiary-no-background";
24
- ButtonType2["TertiaryOnPrimary"] = "tertiary-on-primary";
25
- ButtonType2["Error"] = "error";
26
- ButtonType2["Warning"] = "warning";
27
- ButtonType2["Success"] = "success";
26
+ ButtonType2["Submit"] = "submit";
27
+ ButtonType2["Reset"] = "reset";
28
+ ButtonType2["Button"] = "button";
28
29
  return ButtonType2;
29
30
  })(ButtonType || {});
30
- const isSlotPopulated = function(vnodes) {
31
- return Array.isArray(vnodes) && vnodes.some((node) => {
32
- if (node === null) return false;
33
- if (typeof node === "object") {
34
- const vnode = node;
35
- if (vnode.type === Comment) return false;
36
- if (vnode.type === Fragment && !isSlotPopulated(vnode.children)) return false;
37
- if (vnode.type === Text && !vnode.children.trim()) return false;
38
- }
39
- return true;
40
- });
41
- };
31
+ var ButtonVariant = /* @__PURE__ */ ((ButtonVariant2) => {
32
+ ButtonVariant2["Primary"] = "primary";
33
+ ButtonVariant2["Secondary"] = "secondary";
34
+ ButtonVariant2["Tertiary"] = "tertiary";
35
+ ButtonVariant2["TertiaryNoBackground"] = "tertiary-no-background";
36
+ ButtonVariant2["TertiaryOnPrimary"] = "tertiary-on-primary";
37
+ ButtonVariant2["Error"] = "error";
38
+ ButtonVariant2["Warning"] = "warning";
39
+ ButtonVariant2["Success"] = "success";
40
+ return ButtonVariant2;
41
+ })(ButtonVariant || {});
42
42
  const _sfc_main = defineComponent({
43
43
  name: "NcButton",
44
44
  inject: {
@@ -80,33 +80,18 @@ const _sfc_main = defineComponent({
80
80
  }
81
81
  },
82
82
  /**
83
- * Specifies the button type
84
- * If left empty, the default button style will be applied.
83
+ * Specifies the HTML button type.
84
+ * Accepted values: submit, reset, button.
85
85
  *
86
- * @default 'secondary'
87
- * @type {'primary' | 'secondary' | 'tertiary' | 'tertiary-no-background' | 'tertiary-on-primary' | 'error' | 'warning' | 'success'}
86
+ * @default 'button'
88
87
  */
89
88
  type: {
90
89
  type: String,
91
- default: ButtonType.Secondary,
90
+ default: ButtonType.Button,
92
91
  validator(value) {
93
92
  return Object.values(ButtonType).includes(value);
94
93
  }
95
94
  },
96
- /**
97
- * Specifies the button native type
98
- * If left empty, the default "button" type will be used.
99
- *
100
- * @default 'button'
101
- * @type {'submit' | 'reset' | 'button'}
102
- */
103
- nativeType: {
104
- type: String,
105
- default: ButtonNativeType.Button,
106
- validator(value) {
107
- return Object.values(ButtonNativeType).includes(value);
108
- }
109
- },
110
95
  /**
111
96
  * Specifies whether the button should span all the available width.
112
97
  * By default, buttons span the whole width of the container.
@@ -174,6 +159,21 @@ const _sfc_main = defineComponent({
174
159
  pressed: {
175
160
  type: Boolean,
176
161
  default: null
162
+ },
163
+ /**
164
+ * Specifies the button variant.
165
+ *
166
+ * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.
167
+ *
168
+ * @default 'secondary'
169
+ * @since 8.23.0
170
+ */
171
+ variant: {
172
+ type: String,
173
+ validator(value) {
174
+ return ["primary", "secondary", "tertiary", "tertiary-no-background", "tertiary-on-primary", "error", "warning", "success"].includes(value);
175
+ },
176
+ default: "secondary"
177
177
  }
178
178
  },
179
179
  emits: ["update:pressed", "click"],
@@ -182,13 +182,22 @@ const _sfc_main = defineComponent({
182
182
  * The real type to be used for the button, enforces `primary` for pressed state and, if stateful button, any other type for not pressed state
183
183
  * Otherwise the type property is used.
184
184
  */
185
- realType() {
185
+ realVariant() {
186
186
  if (this.pressed) {
187
187
  return "primary";
188
188
  }
189
- if (this.pressed === false && this.type === "primary") {
189
+ if (this.pressed === false && this.variant === "primary") {
190
190
  return "secondary";
191
191
  }
192
+ return this.variant;
193
+ },
194
+ /**
195
+ * The HTML button type
196
+ */
197
+ realType() {
198
+ if (typeof this.pressed === "boolean") {
199
+ return "button";
200
+ }
192
201
  return this.type;
193
202
  },
194
203
  /**
@@ -237,7 +246,7 @@ const _sfc_main = defineComponent({
237
246
  "button-vue--icon-only": hasIcon && !hasText,
238
247
  "button-vue--text-only": hasText && !hasIcon,
239
248
  "button-vue--icon-and-text": hasIcon && hasText,
240
- [`button-vue--vue-${this.realType}`]: this.realType,
249
+ [`button-vue--vue-${this.realVariant}`]: this.realVariant,
241
250
  "button-vue--wide": this.wide,
242
251
  [`button-vue--${this.flexAlignment}`]: this.flexAlignment !== "center",
243
252
  "button-vue--reverse": this.isReverseAligned,
@@ -247,7 +256,7 @@ const _sfc_main = defineComponent({
247
256
  "aria-label": this.ariaLabel,
248
257
  "aria-pressed": hasPressed ? this.pressed.toString() : void 0,
249
258
  disabled: this.disabled,
250
- type: isLink ? null : this.nativeType,
259
+ type: isLink ? null : this.type,
251
260
  role: isLink ? "button" : null,
252
261
  href: this.to ? href : this.href || null,
253
262
  target: isLink ? this.target : null,
@@ -288,11 +297,12 @@ const _sfc_main = defineComponent({
288
297
  return renderButton();
289
298
  }
290
299
  });
291
- const NcButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0c90d19d"]]);
300
+ const NcButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-30a46cdb"]]);
292
301
  export {
293
302
  ButtonAlignment as B,
294
303
  NcButton as N,
295
- ButtonNativeType as a,
296
- ButtonType as b,
304
+ ButtonType as a,
305
+ ButtonVariant as b,
297
306
  isSlotPopulated as i
298
307
  };
308
+ //# sourceMappingURL=NcButton-BHLqKKYP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcButton-BHLqKKYP.mjs","sources":["../../src/utils/isSlotPopulated.ts","../../src/components/NcButton/types.ts","../../src/components/NcButton/NcButton.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { VNode, VNodeNormalizedChildren } from 'vue'\nimport { Fragment, Comment, Text } from 'vue'\n\n/**\n * Checks whether a slot is populated\n *\n * @param vnodes The array of vnodes to check\n */\nexport function isSlotPopulated(vnodes?: VNode[] | VNodeNormalizedChildren) {\n\treturn Array.isArray(vnodes) && vnodes.some(node => {\n\t\tif (node === null) return false\n\t\tif (typeof node === 'object') {\n\t\t\tconst vnode = node as VNode\n\t\t\tif (vnode.type === Comment) return false\n\t\t\tif (vnode.type === Fragment && !isSlotPopulated(vnode.children)) return false\n\t\t\tif (vnode.type === Text && !(vnode.children as string).trim()) return false\n\t\t}\n\t\treturn true\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport enum ButtonAlignment {\n\tStart = 'start',\n\tStartReverse = 'start-reverse',\n\tCenter = 'center',\n\tCenterReverse = 'center-reverse',\n\tEnd = 'end',\n\tEndReverse = 'end-reverse',\n}\n\nexport enum ButtonType {\n\tSubmit = 'submit',\n\tReset = 'reset',\n\tButton = 'button',\n}\n\nexport enum ButtonVariant {\n\tPrimary = 'primary',\n\tSecondary = 'secondary',\n\tTertiary = 'tertiary',\n\tTertiaryNoBackground = 'tertiary-no-background',\n\tTertiaryOnPrimary = 'tertiary-on-primary',\n\tError = 'error',\n\t/**\n\t * @deprecated Design-wise not recommended for new code\n\t */\n\tWarning = 'warning',\n\tSuccess = 'success',\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n### General description\nGeneral purpose button component. See props for different options.\n[Use material design icons only for icons](https://www.npmjs.com/package/vue-material-design-icons) and remember to set their size to 20.\n\n### Usage\n### Custom icon slot\nTo be used with `vue-material-design-icons` only. For icon classes use the `default-icon` slot.\nIt can be used with one or multiple actions.\n```\n<template>\n<div class=\"wrapper\">\n\t<!-- Style selector -->\n\t<div class=\"grid\">\n\t\t<NcCheckboxRadioSwitch v-model=\"style\" value=\"text\" name=\"style\" type=\"radio\">Text only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"style\" value=\"icon\" name=\"style\" type=\"radio\">Icon only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"style\" value=\"icontext\" name=\"style\" type=\"radio\">Icon and text</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"disabled\" type=\"checkbox\">Disabled</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"size\" value=\"small\" name=\"size\" type=\"radio\">Small</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"size\" value=\"normal\" name=\"size\" type=\"radio\">Normal (default)</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"size\" value=\"large\" name=\"size\" type=\"radio\">Large</NcCheckboxRadioSwitch>\n\t</div>\n\n\t<h5>Standard buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Tertiary, no background</p>\n\t\t<p>Tertiary</p>\n\t\t<p>Secondary</p>\n\t\t<p>Primary</p>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary-no-background\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"primary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t</div>\n\n\t<!-- Wide button -->\n\t<h5>Wide button</h5>\n\t<NcButton\n\t\t:disabled=\"disabled\"\n\t\t:size=\"size\"\n\t\t:wide=\"true\"\n\t\ttext=\"Example text\">\n\t\t<template #icon>\n\t\t\t<Video\n\t\t\t\t:size=\"20\" />\n\t\t</template>\n\t\tExample text\n\t</NcButton>\n\n\t<!-- Special buttons -->\n\t<h5>Special buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Success</p>\n\t\t<p>Warning</p>\n\t\t<p>Error</p>\n\t\t<p> - </p>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"success\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"warning\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"error\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<p> - </p>\n\t</div>\n</div>\n\n</template>\n<script>\nimport Video from 'vue-material-design-icons/Video.vue'\n\nexport default {\n\tcomponents: {\n\t\tVideo,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttoggled: false,\n\t\t\tdisabled: false,\n\t\t\tsize: 'normal',\n\t\t\tstyle: 'icontext',\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.wrapper {\n\tpadding: 0 12px;\n}\n\n.grid {\n\tdisplay: grid;\n\tgap: 12px;\n\tgrid-template-columns: 1fr 1fr 1fr 1fr;\n\tgrid-template-rows: repeat(auto-fill, auto);\n\tposition: relative;\n\tmargin: 12px 0;\n}\n\nh5 {\n\tfont-weight: bold;\n\tmargin: 40px 0 20px 0;\n}\n\np {\n\ttext-align: center;\n\tmargin: 4px 0 12px 0;\n\tcolor: var(--color-text-maxcontrast)\n}\n\nbutton {\n\tmargin: auto;\n}\n</style>\n```\n\n### Alignment\nSometimes it is required to change the icon alignment on the button, like for switching between pages as in following example:\n\n```vue\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: 12px;\">\n\t\t<NcButton aria-label=\"center (default)\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter (default)\n\t\t</NcButton>\n\t\t<NcButton alignment=\"center-reverse\" aria-label=\"center-reverse\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter-reverse\n\t\t</NcButton>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"start\" aria-label=\"start\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"start-reverse\" aria-label=\"start-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"end\" aria-label=\"end\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"end-reverse\" aria-label=\"end-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconLeft from 'vue-material-design-icons/ArrowLeft.vue'\nimport IconRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconLeft,\n\t\tIconRight,\n\t},\n}\n</script>\n```\n\n### Pressed state\n\nIt is possible to make the button stateful by adding a pressed state, e.g. if you like to create a favorite button.\nThe button will have the required `aria` attribute for accessibility and visual style (`primary` when pressed, and the configured variant otherwise).\n\nDo not change `text` or `aria-label` of the pressed/unpressed button. See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-pressed\n\n```vue\n<template>\n\t<div>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<NcButton v-model:pressed=\"isFavorite\" aria-label=\"Favorite\" variant=\"tertiary-no-background\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-model:pressed=\"isFavorite\" variant=\"tertiary\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tFavorite\n\t\t\t</NcButton>\n\t\t\t<NcButton v-model:pressed=\"isFavorite\" aria-label=\"Favorite\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div>\n\t\t\tIt is {{ isFavorite ? 'a' : 'not a' }} favorite.\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconStar from 'vue-material-design-icons/Star.vue'\nimport IconStarOutline from 'vue-material-design-icons/StarOutline.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconStar,\n\t\tIconStarOutline,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisFavorite: false,\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleFavorite() {\n\t\t\tthis.isFavorite = !this.isFavorite\n\t\t},\n\t},\n}\n</script>\n```\n\n### Usage example: Sorting table columns\nThe standard way to implement sortable table column headers should be like this:\n\n```vue\n<template>\n\t<table>\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th :aria-sorted=\"sortedName\" class=\"row-name\">\n\t\t\t\t\t<NcButton alignment=\"start-reverse\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortName\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedName === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedName === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Name</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t\t<th :aria-sorted=\"sortedSize\" class=\"row-size\">\n\t\t\t\t\t<NcButton alignment=\"end\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortSize\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedSize === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedSize === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Size</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td class=\"row-name\">Lorem ipsum</td>\n\t\t\t\t<td class=\"row-size\">8 MiB</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</template>\n<script>\nimport IconUp from 'vue-material-design-icons/MenuUp.vue'\nimport IconDown from 'vue-material-design-icons/MenuDown.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconUp,\n\t\tIconDown,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsortedName: null,\n\t\t\tsortedSize: null,\n\t\t}\n\t},\n\tmethods: {\n\t\tsortName() {\n\t\t\tif (this.sortedName === 'ascending') {\n\t\t\t\tthis.sortedName = 'descending'\n\t\t\t} else if (this.sortedName === 'descending') {\n\t\t\t\tthis.sortedName = null\n\t\t\t} else {\n\t\t\t\tthis.sortedName = 'ascending'\n\t\t\t}\n\t\t},\n\t\tsortSize() {\n\t\t\tif (this.sortedSize === 'ascending') {\n\t\t\t\tthis.sortedSize = 'descending'\n\t\t\t} else if (this.sortedSize === 'descending') {\n\t\t\t\tthis.sortedSize = null\n\t\t\t} else {\n\t\t\t\tthis.sortedSize = 'ascending'\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style>\ntable {\n\ttable-layout: fixed;\n\twidth: 300px;\n}\n\ntd.row-name {\n\tpadding-inline-start: 16px;\n}\n\ntd.row-size {\n\ttext-align: end;\n\tpadding-inline-end: 16px;\n}\n\n.table-header {\n\tfont-weight: normal;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.sort-icon {\n\tcolor: var(--color-text-maxcontrast);\n\tposition: relative;\n\tinset-inline: -10px;\n}\n\n.row-size .sort-icon {\n\tinset-inline: 10px;\n}\n</style>\n```\n\n</docs>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\n\nimport { defineComponent, h, resolveComponent } from 'vue'\nimport { ButtonAlignment, ButtonType } from './types.ts'\nimport { isSlotPopulated } from '../../utils/isSlotPopulated.ts'\n\nexport default defineComponent({\n\tname: 'NcButton',\n\n\tinject: {\n\t\tgetNcPopoverTriggerAttrs: {\n\t\t\tfrom: 'NcPopover:trigger:attrs',\n\t\t\tdefault: () => () => ({}),\n\t\t},\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Set the text and icon alignment\n\t\t *\n\t\t * @default 'center'\n\t\t * @type {'start' | 'start-reverse' | 'center' | 'center-reverse' | 'end' | 'end-reverse'}\n\t\t */\n\t\talignment: {\n\t\t\ttype: String as PropType<ButtonAlignment>,\n\t\t\tdefault: ButtonAlignment.Center,\n\t\t\tvalidator(value: string) {\n\t\t\t\treturn Object.values(ButtonAlignment).includes(value as ButtonAlignment)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Toggles the disabled state of the button on and off.\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 * Specify the button size\n\t\t * Accepted values: `'small'`, `'normal'` (default), `'large'`\n\t\t */\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator(value: string) {\n\t\t\t\treturn ['small', 'normal', 'large'].includes(value)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Specifies the HTML button type.\n\t\t * Accepted values: submit, reset, button.\n\t\t *\n\t\t * @default 'button'\n\t\t */\n\t\ttype: {\n\t\t\ttype: String as PropType<ButtonType | `${ButtonType}`>,\n\t\t\tdefault: ButtonType.Button,\n\t\t\tvalidator(value: string) {\n\t\t\t\treturn Object.values(ButtonType).includes(value as ButtonType)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Specifies whether the button should span all the available width.\n\t\t * By default, buttons span the whole width of the container.\n\t\t */\n\t\twide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Always try to provide an aria-label to your button. Make it more\n\t\t * specific than the button's name by provide some more context. E.g. if\n\t\t * the name of the button is \"send\" in the Mail app, the aria label could\n\t\t * be \"Send email\".\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the href attribute turns the button component into an `a`\n\t\t * element.\n\t\t */\n\t\thref: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Target for the `a` element if `href` is set.\n\t\t * @default '_self'\n\t\t */\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\tdefault: '_self',\n\t\t},\n\n\t\t/**\n\t\t * Providing the download attribute with href downloads file when clicking.\n\t\t */\n\t\tdownload: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the to attribute turns the button component into a `router-link`\n\t\t * element. Takes precedence over the href attribute.\n\t\t */\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n\t\t * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n\t\t * otherwise root element will inherit incorrect aria-hidden.\n\t\t */\n\t\tariaHidden: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * The pressed state of the button if it has a checked state\n\t\t * This will add the `aria-pressed` attribute and for the button to have the primary style in checked state.\n\t\t *\n\t\t * Pressed state is not supported for links\n\t\t */\n\t\tpressed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button variant.\n\t\t *\n\t\t * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.\n\t\t *\n\t\t * @default 'secondary'\n\t\t * @since 8.23.0\n\t\t */\n\t\t variant: {\n\t\t\ttype: String as PropType<ButtonVariant | `${ButtonVariant}`>,\n\t\t\tvalidator(value: string) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(value)\n\t\t\t},\n\t\t\tdefault: 'secondary',\n\t\t},\n\t},\n\n\temits: ['update:pressed', 'click'],\n\n\tcomputed: {\n\t\t/**\n\t\t * The real type to be used for the button, enforces `primary` for pressed state and, if stateful button, any other type for not pressed state\n\t\t * Otherwise the type property is used.\n\t\t */\n\t\trealVariant() {\n\t\t\t// Force *primary* when pressed\n\t\t\tif (this.pressed) {\n\t\t\t\treturn 'primary'\n\t\t\t}\n\t\t\t// If not pressed but button is configured as stateful button then the type must not be primary\n\t\t\tif (this.pressed === false && this.variant === 'primary') {\n\t\t\t\treturn 'secondary'\n\t\t\t}\n\t\t\treturn this.variant\n\t\t},\n\n\t\t/**\n\t\t * The HTML button type\n\t\t */\n\t\trealType() {\n\t\t\tif (typeof this.pressed === 'boolean') {\n\t\t\t\treturn 'button'\n\t\t\t}\n\t\t\treturn this.type\n\t\t},\n\n\t\t/**\n\t\t * The flexbox alignment of the button content\n\t\t */\n\t\tflexAlignment() {\n\t\t\treturn this.alignment.split('-')[0]\n\t\t},\n\n\t\t/**\n\t\t * If the button content should be reversed (icon on the end)\n\t\t */\n\t\tisReverseAligned() {\n\t\t\treturn this.alignment.includes('-')\n\t\t},\n\n\t\tncPopoverTriggerAttrs() {\n\t\t\treturn (this.getNcPopoverTriggerAttrs as () => Record<string, string|undefined>)()\n\t\t},\n\t},\n\n\t/**\n\t * The render function to display the component\n\t *\n\t * @return {object|undefined} The created VNode\n\t */\n\trender() {\n\t\tconst hasText = isSlotPopulated(this.$slots.default?.())\n\t\tconst hasIcon = isSlotPopulated(this.$slots.icon?.())\n\n\t\t/**\n\t\t * Always fill either the text prop or the ariaLabel one.\n\t\t */\n\t\tif (!hasText && !this.ariaLabel) {\n\t\t\tconsole.warn('You need to fill either the text or the ariaLabel props in the button component.', {\n\t\t\t\ttext: this.$slots.default?.()?.[0]?.children,\n\t\t\t\tariaLabel: this.ariaLabel,\n\t\t\t},\n\t\t\tthis)\n\t\t}\n\n\t\tconst isLink = (this.to || this.href)\n\n\t\tconst hasPressed = !isLink && typeof this.pressed === 'boolean'\n\n\t\tconst renderButton = ({ href, navigate, isActive }: {href?: string, navigate?: (ev: Event) => void, isActive?: boolean } = {}) => h(isLink ? 'a' : 'button',\n\t\t\t{\n\t\t\t\tclass: [\n\t\t\t\t\t'button-vue',\n\t\t\t\t\t`button-vue--size-${this.size}`,\n\t\t\t\t\t{\n\t\t\t\t\t\t'button-vue--icon-only': hasIcon && !hasText,\n\t\t\t\t\t\t'button-vue--text-only': hasText && !hasIcon,\n\t\t\t\t\t\t'button-vue--icon-and-text': hasIcon && hasText,\n\t\t\t\t\t\t[`button-vue--vue-${this.realVariant}`]: this.realVariant,\n\t\t\t\t\t\t'button-vue--wide': this.wide,\n\t\t\t\t\t\t[`button-vue--${this.flexAlignment}`]: this.flexAlignment !== 'center',\n\t\t\t\t\t\t'button-vue--reverse': this.isReverseAligned,\n\t\t\t\t\t\tactive: isActive,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'aria-label': this.ariaLabel,\n\t\t\t\t'aria-pressed': hasPressed ? this.pressed.toString() : undefined,\n\t\t\t\tdisabled: this.disabled,\n\t\t\t\ttype: isLink ? null : this.type,\n\t\t\t\trole: isLink ? 'button' : null,\n\t\t\t\thref: this.to ? href : (this.href || null),\n\t\t\t\ttarget: isLink ? this.target : null,\n\t\t\t\trel: isLink ? 'nofollow noreferrer noopener' : null,\n\t\t\t\tdownload: (!this.to && this.href && this.download) ? this.download : null,\n\t\t\t\t// If this button is used as a popover trigger, we need to apply trigger attrs, e.g. aria attributes\n\t\t\t\t...this.ncPopoverTriggerAttrs,\n\t\t\t\tonClick: ($event) => {\n\t\t\t\t\t// Update pressed prop on click if it is set\n\t\t\t\t\tif (hasPressed) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Update the current pressed state of the button (if the `pressed` property was configured)\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * @property {boolean} newValue The new `pressed`-state\n\t\t\t\t\t\t */\n\t\t\t\t\t\tthis.$emit('update:pressed', !this.pressed)\n\t\t\t\t\t}\n\t\t\t\t\t// We have to both navigate and emit the click event\n\t\t\t\t\tthis.$emit('click', $event)\n\t\t\t\t\tnavigate?.($event)\n\t\t\t\t},\n\t\t\t},\n\t\t\t[\n\t\t\t\th('span', { class: 'button-vue__wrapper' }, [\n\t\t\t\t\thasIcon\n\t\t\t\t\t\t? h('span', {\n\t\t\t\t\t\t\tclass: 'button-vue__icon',\n\t\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[this.$slots.icon?.()],\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: null,\n\t\t\t\t\thasText ? h('span', { class: 'button-vue__text' }, [this.$slots.default?.()]) : null,\n\t\t\t\t]),\n\t\t\t],\n\t\t)\n\n\t\t// If we have a router-link, we wrap the button in it\n\t\tif (this.to) {\n\t\t\treturn h(resolveComponent('router-link'), {\n\t\t\t\tcustom: true,\n\t\t\t\tto: this.to,\n\t\t\t}, {\n\t\t\t\tdefault: renderButton,\n\t\t\t})\n\t\t}\n\t\t// Otherwise we simply return the button\n\t\treturn renderButton()\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\t// Setup different button sizes\n\t--button-size: var(--default-clickable-area);\n\t--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));\n\t--button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n\n\t&--size-small {\n\t\t--button-size: var(--clickable-area-small, 24px);\n\t\t--button-radius: var(--border-radius); // make the border radius even smaller for small buttons\n\t}\n\n\t&--size-large {\n\t\t--button-size: var(--clickable-area-large, 48px);\n\t}\n\n\t// General styles\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: var(--button-size);\n\tmin-width: var(--button-size);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& *,\n\tspan {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: var(--button-radius);\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: 0.1s;\n\ttransition-timing-function: linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tcolor: var(--color-primary-element-light-text);\n\tbackground-color: var(--color-primary-element-light);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t&--end &__wrapper {\n\t\tjustify-content: end;\n\t}\n\t&--start &__wrapper {\n\t\tjustify-content: start;\n\t}\n\t&--reverse &__wrapper {\n\t\tflex-direction: row-reverse;\n\t}\n\n\t&--reverse#{&}--icon-and-text {\n\t\tpadding-inline: var(--button-padding) var(--default-grid-baseline);\n\t}\n\n\t&__icon {\n\t\theight: var(--button-size);\n\t\twidth: var(--button-size);\n\t\tmin-height: var(--button-size);\n\t\tmin-width: var(--button-size);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\t// For small buttons we need to adjust the icon size\n\t&--size-small &__icon {\n\t\t:deep(> *) {\n\t\t\tmax-height: 16px;\n\t\t\tmax-width: 16px;\n\t\t}\n\t\t:deep(svg) {\n\t\t\theight: 16px;\n\t\t\twidth: 16px;\n\t\t}\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\tline-height: 1;\n\t\twidth: var(--button-size) !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 var(--button-padding);\n\t\t& .button-vue__text {\n\t\t\tmargin-inline: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\t// icon and text means the icon adds \"visual\" padding thus we need to adjust the text padding\n\t\t--button-padding: min(calc(var(--default-grid-baseline) + var(--button-radius)), calc(var(--default-grid-baseline) * 4));\n\t\t// Adjust padding as the icon already got some padding we need to reduce the padding on the icon side and only add larger padding to the text side\n\t\tpadding-block: 0;\n\t\tpadding-inline: var(--default-grid-baseline) var(--button-padding);\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-element-text);\n\t\t\tborder-radius: var(--border-radius-element, var(--border-radius));\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-element-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground-color: var(--color-primary-element-light);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\tbackground-color: var(--color-primary-element-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: transparent;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["ButtonAlignment","ButtonType","ButtonVariant"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import '../assets/NcCheckboxRadioSwitch-jfJIoM4m.css';
1
+ import '../assets/NcCheckboxRadioSwitch-uwXbP_jb.css';
2
2
  import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, resolveComponent, normalizeClass, renderSlot, createBlock, resolveDynamicComponent, toHandlers, withCtx, createVNode, createSlots } from "vue";
3
3
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
4
4
  import { N as NcLoadingIcon } from "./NcLoadingIcon-CsMn1bFR.mjs";
5
- import { G as GenRandomId } from "./GenRandomId-CMooMQt0.mjs";
6
- import { r as register, P as n, a as t } from "./_l10n-BEP_UzXI.mjs";
5
+ import { c as createElementId } from "./createElementId-DhjFt1I9.mjs";
6
+ import { r as register, O as n, a as t } from "./_l10n-7kR7gXFc.mjs";
7
7
  const _sfc_main$8 = {
8
8
  name: "CheckboxBlankOutlineIcon",
9
9
  emits: ["click"],
@@ -451,7 +451,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
451
451
  ], 2)) : createCommentVNode("", true)
452
452
  ], 2);
453
453
  }
454
- const NcCheckboxContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-18de8bed"]]);
454
+ const NcCheckboxContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-95d33103"]]);
455
455
  register();
456
456
  const _sfc_main = {
457
457
  name: "NcCheckboxRadioSwitch",
@@ -466,7 +466,7 @@ const _sfc_main = {
466
466
  */
467
467
  id: {
468
468
  type: String,
469
- default: () => "checkbox-radio-switch-" + GenRandomId(),
469
+ default: () => "checkbox-radio-switch-" + createElementId(),
470
470
  validator: (id) => id.trim() !== ""
471
471
  },
472
472
  /**
@@ -794,7 +794,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
794
794
  _: 3
795
795
  }, 16, ["id", "aria-label", "class", "style", "type"]);
796
796
  }
797
- const NcCheckboxRadioSwitch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-64447fbc"]]);
797
+ const NcCheckboxRadioSwitch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-b1b311bc"]]);
798
798
  export {
799
799
  NcCheckboxRadioSwitch as N
800
800
  };
801
+ //# sourceMappingURL=NcCheckboxRadioSwitch-CWU_M_ui.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcCheckboxRadioSwitch-CWU_M_ui.mjs","sources":["../../node_modules/vue-material-design-icons/CheckboxBlankOutline.vue","../../node_modules/vue-material-design-icons/MinusBox.vue","../../node_modules/vue-material-design-icons/CheckboxMarked.vue","../../node_modules/vue-material-design-icons/RadioboxMarked.vue","../../node_modules/vue-material-design-icons/RadioboxBlank.vue","../../node_modules/vue-material-design-icons/ToggleSwitchOff.vue","../../node_modules/vue-material-design-icons/ToggleSwitch.vue","../../src/components/NcCheckboxRadioSwitch/NcCheckboxContent.vue","../../src/components/NcCheckboxRadioSwitch/NcCheckboxRadioSwitch.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon checkbox-blank-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckboxBlankOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon minus-box-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MinusBoxIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon checkbox-marked-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckboxMarkedIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon radiobox-marked-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"RadioboxMarkedIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon radiobox-blank-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"RadioboxBlankIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon toggle-switch-off-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ToggleSwitchOffIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon toggle-switch-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ToggleSwitchIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<span class=\"checkbox-content\"\n\t\t:class=\"{\n\t\t\t['checkbox-content-' + type]: true,\n\t\t\t'checkbox-content--button-variant': buttonVariant,\n\t\t\t'checkbox-content--has-text': !!$slots.default,\n\t\t}\">\n\t\t<!--\n\t\t\tlabel can't be used here because of shift+click firefox bug\n\t\t\thttps://bugzilla.mozilla.org/show_bug.cgi?id=559506\n\t\t-->\n\t\t<span :class=\"{\n\t\t\t\t'checkbox-content__icon': true,\n\t\t\t\t'checkbox-content__icon--checked': isChecked,\n\t\t\t\t[iconClass]: true\n\t\t\t}\"\n\t\t\t:aria-hidden=\"true\"\n\t\t\tinert>\n\t\t\t<!-- @slot The checkbox/radio icon, you can use it for adding an icon to the button variant\n\t\t\t\t\t@binding {bool} checked The input checked state\n\t\t\t\t\t@binding {bool} loading The loading state\n\t\t\t-->\n\t\t\t<slot name=\"icon\"\n\t\t\t\t:checked=\"isChecked\"\n\t\t\t\t:loading=\"loading\">\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t<component :is=\"checkboxRadioIconElement\"\n\t\t\t\t\tv-else-if=\"!buttonVariant\"\n\t\t\t\t\t:size=\"size\" />\n\t\t\t</slot>\n\t\t</span>\n\n\t\t<span v-if=\"$slots.default\" :class=\"['checkbox-content__text', textClass]\">\n\t\t\t<!-- @slot The checkbox/radio label -->\n\t\t\t<slot />\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport CheckboxBlankOutline from 'vue-material-design-icons/CheckboxBlankOutline.vue'\nimport MinusBox from 'vue-material-design-icons/MinusBox.vue'\nimport CheckboxMarked from 'vue-material-design-icons/CheckboxMarked.vue'\nimport RadioboxMarked from 'vue-material-design-icons/RadioboxMarked.vue'\nimport RadioboxBlank from 'vue-material-design-icons/RadioboxBlank.vue'\nimport ToggleSwitchOff from 'vue-material-design-icons/ToggleSwitchOff.vue'\nimport ToggleSwitch from 'vue-material-design-icons/ToggleSwitch.vue'\n\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\n\nexport const TYPE_CHECKBOX = 'checkbox'\nexport const TYPE_RADIO = 'radio'\nexport const TYPE_SWITCH = 'switch'\nexport const TYPE_BUTTON = 'button'\n\nexport default {\n\tname: 'NcCheckboxContent',\n\n\tcomponents: {\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Class for the icon element\n\t\t */\n\t\ticonClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Class for the text element\n\t\t */\n\t\ttextClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Type of the input. checkbox, radio, switch, or button.\n\t\t *\n\t\t * Only use button when used in a `tablist` container and the\n\t\t * `tab` role is set.\n\t\t *\n\t\t * @type {'checkbox'|'radio'|'switch'|'button'}\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'checkbox',\n\t\t\tvalidator: type => [\n\t\t\t\tTYPE_CHECKBOX,\n\t\t\t\tTYPE_RADIO,\n\t\t\t\tTYPE_SWITCH,\n\t\t\t\tTYPE_BUTTON,\n\t\t\t].includes(type),\n\t\t},\n\n\t\t/**\n\t\t * Toggle the alternative button style\n\t\t */\n\t\tbuttonVariant: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * True if the entry is checked\n\t\t */\n\t\tisChecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Indeterminate state\n\t\t */\n\t\tindeterminate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Loading state\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 * Icon size\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 24,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisButtonType() {\n\t\t\treturn this.type === TYPE_BUTTON\n\t\t},\n\n\t\t/**\n\t\t * Returns the proper Material icon depending on the select case\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tcheckboxRadioIconElement() {\n\t\t\tif (this.type === TYPE_RADIO) {\n\t\t\t\tif (this.isChecked) {\n\t\t\t\t\treturn RadioboxMarked\n\t\t\t\t}\n\t\t\t\treturn RadioboxBlank\n\t\t\t}\n\n\t\t\t// Switch\n\t\t\tif (this.type === TYPE_SWITCH) {\n\t\t\t\tif (this.isChecked) {\n\t\t\t\t\treturn ToggleSwitch\n\t\t\t\t}\n\t\t\t\treturn ToggleSwitchOff\n\t\t\t}\n\n\t\t\t// Checkbox\n\t\t\tif (this.indeterminate) {\n\t\t\t\treturn MinusBox\n\t\t\t}\n\t\t\tif (this.isChecked) {\n\t\t\t\treturn CheckboxMarked\n\t\t\t}\n\t\t\treturn CheckboxBlankOutline\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.checkbox-content {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tuser-select: none;\n\tmin-height: var(--default-clickable-area);\n\tborder-radius: var(--checkbox-radio-switch--border-radius);\n\tpadding: var(--default-grid-baseline) calc((var(--default-clickable-area) - var(--icon-height)) / 2);\n\t// Set to 100% to make text overflow work on button style\n\twidth: 100%;\n\t// but restrict to content so plain checkboxes / radio switches do not expand\n\tmax-width: fit-content;\n\n\t&__text {\n\t\tflex: 1 0;\n\n\t\t&:empty {\n\t\t\t// hide text if empty to ensure checkbox outline is a circle instead of oval\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&__icon > * {\n\t\twidth: var(--icon-size);\n\t\theight: var(--icon-size);\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t&--button-variant {\n\t\t.checkbox-content__icon:not(.checkbox-content__icon--checked) > * {\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\n\n\t\t.checkbox-content__icon--checked > * {\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t}\n\t}\n\n\t&--has-text {\n\t\tpadding-inline-end: $icon-margin;\n\t}\n\n\t&, * {\n\t\tcursor: pointer;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n### General description\n\nThis is a simple input checkbox, radio and switch design.\nPlease have a look at proper usage and recommendations: https://material.io/components/checkboxes\n\nNote: All generic attributes on the component, except `class` and `style`, are passed to the inner `input` element *(for the button type the attributes are passed to the `button` element)*.\n\n### Standard checkbox\n```vue\n<template>\n\t<div>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingEnabled\">Enable sharing</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingEnabled\" :disabled=\"true\">Enable sharing (disabled)</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :model-value=\"sharingEnabled\" :loading=\"loading\" @update:model-value=\"onToggle\">Enable sharing (with request loading)</NcCheckboxRadioSwitch>\n\t\t<br>\n\t\tsharingEnabled: {{ sharingEnabled }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tsharingEnabled: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tonToggle() {\n\t\t\tthis.loading = true\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.sharingEnabled = !this.sharingEnabled\n\t\t\t\tthis.loading = false\n\t\t\t}, 1000)\n\t\t}\n\t}\n}\n</script>\n```\n\n### Standard radio set\n```vue\n<template>\n\t<div>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingPermission\" value=\"r\" name=\"sharing_permission_radio\" type=\"radio\">Default permission read</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingPermission\" value=\"rw\" name=\"sharing_permission_radio\" type=\"radio\">Default permission read+write</NcCheckboxRadioSwitch>\n\t\t<br>\n\t\tsharingPermission: {{ sharingPermission }}\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tsharingPermission: 'r',\n\t\t\t}\n\t\t}\n\t}\n</script>\n```\n\n### Standard radio set with alternative button style\n```vue\n<template>\n\t<div>\n\t\t<h4>Horizontal</h4>\n\t\t<div style=\"display: flex\">\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"sharingPermission\"\n\t\t\t\tvalue=\"r\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"horizontal\">\n\t\t\t\tDefault permission read\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"sharingPermission\"\n\t\t\t\tvalue=\"rw\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"horizontal\">\n\t\t\t\tDefault permission read+write\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t\t<h4>Vertically</h4>\n\t\t<div style=\"width: fit-content\">\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"sharingPermission\"\n\t\t\t\tvalue=\"r\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"vertical\">\n\t\t\t\tDefault permission read\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"sharingPermission\"\n\t\t\t\tvalue=\"rw\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"vertical\">\n\t\t\t\tDefault permission read+write\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t\tsharingPermission: {{ sharingPermission }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsharingPermission: 'r',\n\t\t}\n\t}\n}\n</script>\n```\n\n### Radio set with button style and icons\n```vue\n<template>\n\t<div>\n\t\t<h4>Horizontal</h4>\n\t\t<div style=\"display: flex\">\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"enableSettings\"\n\t\t\t\tvalue=\"y\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"horizontal\">\n\t\t\t\tEnable settings\n\t\t\t\t<template #icon><CheckIcon :size=\"20\"></template>\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"enableSettings\"\n\t\t\t\tvalue=\"n\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"horizontal\">\n\t\t\t\tDisable settings\n\t\t\t\t<template #icon><CancelIcon :size=\"20\"></template>\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t\t<h4>Vertically</h4>\n\t\t<div style=\"width: fit-content\">\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"enableSettings\"\n\t\t\t\tvalue=\"y\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"vertical\">\n\t\t\t\tEnable settings\n\t\t\t\t<template #icon><CheckIcon :size=\"20\"></template>\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t:button-variant=\"true\"\n\t\t\t\tv-model=\"enableSettings\"\n\t\t\t\tvalue=\"n\"\n\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\tbutton-variant-grouped=\"vertical\">\n\t\t\t\tDisable settings\n\t\t\t\t<template #icon><CancelIcon :size=\"20\"></template>\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t\tSettings enabled: {{ enableSettings === 'y' ? 'yes' : 'no' }}\n\t</div>\n</template>\n<script>\nimport CheckIcon from 'vue-material-design-icons/Check.vue'\nimport CancelIcon from 'vue-material-design-icons/Cancel.vue'\nexport default {\n\tcomponents: {\n\t\tCheckIcon,\n\t\tCancelIcon,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tenableSettings: 'n',\n\t\t}\n\t}\n}\n</script>\n```\n\n### Standard checkbox set\n```vue\n<template>\n\t<div>\n\t\t<NcCheckboxRadioSwitch :disabled=\"true\" v-model=\"sharingPermission\" value=\"r\" name=\"sharing_permission\">Permission read</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingPermission\" value=\"w\" name=\"sharing_permission\">Permission write</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingPermission\" value=\"d\" name=\"sharing_permission\">Permission delete</NcCheckboxRadioSwitch>\n\t\t<br>\n\t\tsharingPermission: {{ sharingPermission }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsharingPermission: ['r', 'd'],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Standard switch\n```vue\n<template>\n\t<div>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingEnabled\" type=\"switch\">Enable sharing</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"sharingEnabled\" type=\"switch\" :disabled=\"true\">Enable sharing (disabled)</NcCheckboxRadioSwitch>\n\t\t<br>\n\t\tsharingEnabled: {{ sharingEnabled }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsharingEnabled: true,\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<component :is=\"computedWrapperElement\"\n\t\t:id=\"wrapperId ?? (isButtonType ? id : null)\"\n\t\t:aria-label=\"isButtonType && ariaLabel ? ariaLabel : undefined\"\n\t\tclass=\"checkbox-radio-switch\"\n\t\t:class=\"[\n\t\t\t$props.class,\n\t\t\t{\n\t\t\t\t['checkbox-radio-switch-' + type]: type,\n\t\t\t\t'checkbox-radio-switch--checked': isChecked,\n\t\t\t\t'checkbox-radio-switch--disabled': disabled,\n\t\t\t\t'checkbox-radio-switch--indeterminate': hasIndeterminate ? indeterminate : false,\n\t\t\t\t'checkbox-radio-switch--button-variant': buttonVariant,\n\t\t\t\t'checkbox-radio-switch--button-variant-v-grouped': buttonVariant && buttonVariantGrouped === 'vertical',\n\t\t\t\t'checkbox-radio-switch--button-variant-h-grouped': buttonVariant && buttonVariantGrouped === 'horizontal',\n\t\t\t\t'button-vue': isButtonType,\n\t\t\t},\n\t\t]\"\n\t\t:style=\"[cssVars, style]\"\n\t\t:type=\"isButtonType ? 'button' : null\"\n\t\tv-bind=\"isButtonType ? $attrs : {} \"\n\t\tv-on=\"isButtonType ? listeners : {}\">\n\t\t<input v-if=\"!isButtonType\"\n\t\t\t:id=\"id\"\n\t\t\t:aria-labelledby=\"!isButtonType && !ariaLabel ? `${id}-label` : null\"\n\t\t\t:aria-label=\"ariaLabel || undefined\"\n\t\t\tclass=\"checkbox-radio-switch__input\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:type=\"inputType\"\n\t\t\t:value=\"value\"\n\t\t\t:checked=\"isChecked\"\n\t\t\t:indeterminate.prop=\"hasIndeterminate ? indeterminate : null\"\n\t\t\t:required=\"required\"\n\t\t\t:name=\"name\"\n\t\t\tv-bind=\"$attrs\"\n\t\t\tv-on=\"listeners\">\n\t\t<NcCheckboxContent :id=\"!isButtonType ? `${id}-label` : undefined\"\n\t\t\tclass=\"checkbox-radio-switch__content\"\n\t\t\ticon-class=\"checkbox-radio-switch__icon\"\n\t\t\ttext-class=\"checkbox-radio-switch__text\"\n\t\t\t:type=\"type\"\n\t\t\t:indeterminate=\"hasIndeterminate ? indeterminate : false\"\n\t\t\t:button-variant=\"buttonVariant\"\n\t\t\t:is-checked=\"isChecked\"\n\t\t\t:loading=\"loading\"\n\t\t\t:size=\"size\"\n\t\t\t@click=\"onToggle\">\n\t\t\t<template #icon>\n\t\t\t\t<!-- @slot The checkbox/radio icon, you can use it for adding an icon to the button variant -->\n\t\t\t\t<slot name=\"icon\" />\n\t\t\t</template>\n\n\t\t\t<template v-if=\"!!$slots.default\" #default>\n\t\t\t\t<!-- @slot The checkbox/radio label -->\n\t\t\t\t<slot />\n\t\t\t</template>\n\t\t</NcCheckboxContent>\n\t</component>\n</template>\n\n<script>\nimport NcCheckboxContent, { TYPE_BUTTON, TYPE_CHECKBOX, TYPE_RADIO, TYPE_SWITCH } from './NcCheckboxContent.vue'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { t, n } from '../../l10n.js'\n\nexport default {\n\tname: 'NcCheckboxRadioSwitch',\n\n\tcomponents: {\n\t\tNcCheckboxContent,\n\t},\n\n\t// We need to pass attributes to the input element\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Unique id attribute of the input\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'checkbox-radio-switch-' + createElementId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\n\t\t/**\n\t\t * Unique id attribute of the wrapper element\n\t\t */\n\t\twrapperId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Input name. Required for radio, optional for checkbox, and ignored\n\t\t * for button.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Required if no text is set.\n\t\t * The aria-label is forwarded to the input or button.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Type of the input. checkbox, radio, switch, or button.\n\t\t *\n\t\t * Only use button when used in a `tablist` container and the\n\t\t * `tab` role is set.\n\t\t *\n\t\t * @type {'checkbox'|'radio'|'switch'|'button'}\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'checkbox',\n\t\t\tvalidator: type => [\n\t\t\t\tTYPE_CHECKBOX,\n\t\t\t\tTYPE_RADIO,\n\t\t\t\tTYPE_SWITCH,\n\t\t\t\tTYPE_BUTTON,\n\t\t\t].includes(type),\n\t\t},\n\n\t\t/**\n\t\t * Toggle the alternative button style\n\t\t */\n\t\tbuttonVariant: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Are the elements are all direct siblings?\n\t\t * If so they will be grouped horizontally or vertically\n\t\t *\n\t\t * @type {'no'|'horizontal'|'vertical'}\n\t\t */\n\t\tbuttonVariantGrouped: {\n\t\t\ttype: String,\n\t\t\tdefault: 'no',\n\t\t\tvalidator: v => ['no', 'vertical', 'horizontal'].includes(v),\n\t\t},\n\n\t\t/**\n\t\t * Checked state. To be used with `v-model:value`\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [Boolean, Array, String],\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Value to be synced on check\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Disabled state\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 * Indeterminate state\n\t\t */\n\t\tindeterminate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Required state\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 * Loading state\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 * Wrapping element tag\n\t\t *\n\t\t * When `type` is set to `button` this will be ignored\n\t\t *\n\t\t * Defaults to `span`\n\t\t */\n\t\twrapperElement: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * The class(es) to pass to the wrapper / root element of the component\n\t\t */\n\t\tclass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * The style to pass to the wrapper / root element of the component\n\t\t */\n\t\tstyle: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: ['update:modelValue'],\n\n\tcomputed: {\n\t\tisButtonType() {\n\t\t\treturn this.type === TYPE_BUTTON\n\t\t},\n\n\t\tcomputedWrapperElement() {\n\t\t\tif (this.isButtonType) {\n\t\t\t\treturn 'button'\n\t\t\t}\n\t\t\tif (this.wrapperElement !== null) {\n\t\t\t\treturn this.wrapperElement\n\t\t\t}\n\t\t\treturn 'span'\n\t\t},\n\n\t\tlisteners() {\n\t\t\tif (this.isButtonType) {\n\t\t\t\treturn {\n\t\t\t\t\tclick: this.onToggle,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tchange: this.onToggle,\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * CSS local variables for this component\n\t\t * @return {Record<string, string>}\n\t\t */\n\t\tcssVars() {\n\t\t\treturn {\n\t\t\t\t'--icon-size': this.size + 'px',\n\t\t\t\t'--icon-height': (this.type === TYPE_SWITCH ? 16 : this.size) + 'px',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Icon size\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tsize() {\n\t\t\treturn this.type === TYPE_SWITCH\n\t\t\t\t? 36\n\t\t\t\t: 24\n\t\t},\n\n\t\t/**\n\t\t * Return the input type.\n\t\t * Switch is not an official type\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinputType() {\n\t\t\tconst nativeTypes = [\n\t\t\t\tTYPE_CHECKBOX,\n\t\t\t\tTYPE_RADIO,\n\t\t\t\tTYPE_BUTTON,\n\t\t\t]\n\t\t\tif (nativeTypes.includes(this.type)) {\n\t\t\t\treturn this.type\n\t\t\t}\n\t\t\treturn TYPE_CHECKBOX\n\t\t},\n\n\t\t/**\n\t\t * Check if that entry is checked\n\t\t * If value is defined, we use that as the checked value\n\t\t * If not, we expect true/false in this.checked\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisChecked() {\n\t\t\tif (this.value !== null) {\n\t\t\t\tif (Array.isArray(this.modelValue)) {\n\t\t\t\t\treturn [...this.modelValue].indexOf(this.value) > -1\n\t\t\t\t}\n\t\t\t\treturn this.modelValue === this.value\n\t\t\t}\n\t\t\treturn this.modelValue === true\n\t\t},\n\n\t\thasIndeterminate() {\n\t\t\treturn [\n\t\t\t\tTYPE_CHECKBOX,\n\t\t\t\tTYPE_RADIO,\n\t\t\t].includes(this.inputType)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.name && this.type === TYPE_CHECKBOX) {\n\t\t\tif (!Array.isArray(this.modelValue)) {\n\t\t\t\tthrow new Error('When using groups of checkboxes, the updated value will be an array.')\n\t\t\t}\n\t\t}\n\n\t\t// https://material.io/components/checkboxes#usage\n\t\tif (this.name && this.type === TYPE_SWITCH) {\n\t\t\tthrow new Error('Switches are not made to be used for data sets. Please use checkboxes instead.')\n\t\t}\n\n\t\t// https://material.io/components/checkboxes#usage\n\t\tif (typeof this.modelValue !== 'boolean' && this.type === TYPE_SWITCH) {\n\t\t\tthrow new Error('Switches can only be used with boolean as modelValue prop.')\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tn,\n\n\t\tonToggle(event) {\n\t\t\tif (this.disabled || event.target.tagName.toLowerCase() === 'a') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If this is a radio, there can only be one value\n\t\t\tif (this.type === TYPE_RADIO) {\n\t\t\t\tthis.$emit('update:modelValue', this.value)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If this is a radio, there can only be one value\n\t\t\tif (this.type === TYPE_SWITCH) {\n\t\t\t\tthis.$emit('update:modelValue', !this.isChecked)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If the initial value was a boolean, let's keep it that way\n\t\t\tif (typeof this.modelValue === 'boolean') {\n\t\t\t\tthis.$emit('update:modelValue', !this.modelValue)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Dispatch the checked values as an array if multiple, or single value otherwise\n\t\t\tconst values = this.getInputsSet()\n\t\t\t\t.filter(input => input.checked)\n\t\t\t\t.map(input => input.value)\n\n\t\t\tif (values.includes(this.value)) {\n\t\t\t\tthis.$emit('update:modelValue', values.filter((v) => v !== this.value))\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:modelValue', [...values, this.value])\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the input set based on this name\n\t\t *\n\t\t * @return {Node[]}\n\t\t */\n\t\tgetInputsSet() {\n\t\t\treturn [...document.getElementsByName(this.name)]\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.checkbox-radio-switch {\n\tdisplay: flex;\n\talign-items: center;\n\tcolor: var(--color-main-text);\n\tbackground-color: transparent;\n\tfont-size: var(--default-font-size);\n\tline-height: var(--default-line-height);\n\tpadding: 0;\n\tposition: relative;\n\n\t&__input {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\topacity: 0 !important; // We need !important, or it gets overwritten by server style\n\t\twidth: var(--icon-size);\n\t\theight: var(--icon-size);\n\t\t// Same as label padding\n\t\tmargin: 4px $icon-margin;\n\t}\n\n\t&__input:focus-visible + &__content,\n\t&__input:focus-visible {\n\t\toutline: 2px solid var(--color-main-text);\n\t\tborder-color: var(--color-main-background);\n\t\toutline-offset: -2px;\n\t}\n\n\t&--disabled &__content {\n\t\topacity: $opacity_disabled;\n\t\t:deep(.checkbox-radio-switch__icon) > * {\n\t\t\tcolor: var(--color-main-text)\n\t\t}\n\t\t&.checkbox-content,\n\t\t&.checkbox-content :deep(*:not(a)) {\n\t\t\tcursor: default !important;\n\t\t}\n\t}\n\n\t&:not(&--disabled, &--checked):focus-within &__content,\n\t&:not(&--disabled, &--checked) &__content:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&--checked:not(&--disabled):focus-within &__content,\n\t&--checked:not(&--disabled) &__content:hover {\n\t\tbackground-color: var(--color-primary-element-hover);\n\t}\n\n\t&--checked:not(&--button-variant):not(&--disabled):focus-within &__content,\n\t&--checked:not(&--button-variant):not(&--disabled) &__content:hover {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n\n\t// Switch specific rules\n\t&-switch:not(&--checked) :deep(.checkbox-radio-switch__icon) > * {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t// If switch is checked AND disabled, use the fade primary colour\n\t&-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked :deep(.checkbox-radio-switch__icon) > * {\n\t\tcolor: var(--color-primary-element-light);\n\t}\n\n\t--checkbox-radio-switch--border-radius: var(--border-radius-element, calc(var(--default-clickable-area) / 2));\n\t// keep inner border width in mind\n\t--checkbox-radio-switch--border-radius-outer: calc(var(--checkbox-radio-switch--border-radius) + 2px);\n\n\t&--button-variant.checkbox-radio-switch {\n\t\tbackground-color: var(--color-main-background);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\toverflow: hidden;\n\n\t\t&--checked {\n\t\t\tfont-weight: bold;\n\n\t\t\t.checkbox-radio-switch__content {\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Text overflow of button style\n\t&--button-variant :deep(.checkbox-radio-switch__text) {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t}\n\n\t// Set icon color for non active elements to main text color\n\t&--button-variant:not(&--checked) :deep(.checkbox-radio-switch__icon) > * {\n\t\tcolor: var(--color-main-text);\n\t}\n\n\t// Hide icon container if empty to remove virtual padding\n\t&--button-variant :deep(.checkbox-radio-switch__icon:empty) {\n\t\tdisplay: none;\n\t}\n\n\t&--button-variant:not(&--button-variant-v-grouped):not(&--button-variant-h-grouped),\n\t&--button-variant &__content {\n\t\tborder-radius: var(--checkbox-radio-switch--border-radius);\n\t}\n\n\t/* Special rules for vertical button groups */\n\t&--button-variant-v-grouped &__content {\n\t\tflex-basis: 100%;\n\t\t// vertically grouped buttons should all have the same width\n\t\tmax-width: unset;\n\t}\n\t&--button-variant-v-grouped {\n\t\t&:first-of-type {\n\t\t\tborder-start-start-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t\tborder-start-end-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t}\n\t\t&:last-of-type {\n\t\t\tborder-end-start-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t\tborder-end-end-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t}\n\n\t\t// remove borders between elements\n\t\t&:not(:last-of-type) {\n\t\t\tborder-bottom: 0!important;\n\t\t\t.checkbox-radio-switch__content {\n\t\t\t\tmargin-bottom: 2px;\n\t\t\t}\n\t\t}\n\t\t&:not(:first-of-type) {\n\t\t\tborder-top: 0!important;\n\t\t}\n\t}\n\n\t/* Special rules for horizontal button groups */\n\t&--button-variant-h-grouped {\n\t\t&:first-of-type {\n\t\t\tborder-start-start-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t\tborder-end-start-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t}\n\t\t&:last-of-type {\n\t\t\tborder-start-end-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t\tborder-end-end-radius: var(--checkbox-radio-switch--border-radius-outer);\n\t\t}\n\n\t\t// remove borders between elements\n\t\t&:not(:last-of-type) {\n\t\t\tborder-inline-end: 0!important;\n\t\t\t.checkbox-radio-switch__content {\n\t\t\t\tmargin-inline-end: 2px;\n\t\t\t}\n\t\t}\n\t\t&:not(:first-of-type) {\n\t\t\tborder-inline-start: 0!important;\n\t\t}\n\t}\n\t&--button-variant-h-grouped :deep(.checkbox-radio-switch__text) {\n\t\ttext-align: center;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\t&--button-variant-h-grouped &__content {\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t\tgap: 0;\n\t}\n}\n</style>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_hoisted_4","_createCommentVNode","_normalizeClass","_renderSlot","_openBlock","_createBlock","_resolveDynamicComponent","_toHandlers","_withCtx","_createVNode","_createSlots"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -1,11 +1,11 @@
1
- import '../assets/NcChip-BWWUudAH.css';
1
+ import '../assets/NcChip-CKtzzrlA.css';
2
2
  import { defineComponent, useSlots, computed, createElementBlock, openBlock, normalizeClass, createCommentVNode, createElementVNode, createBlock, renderSlot, createTextVNode, toDisplayString, withCtx, createVNode, unref } from "vue";
3
- import { r as register, a as t } from "./_l10n-BEP_UzXI.mjs";
4
- import { N as NcActions } from "./NcActions-DxTtucKk.mjs";
5
- import { N as NcActionButton } from "./NcActionButton-DBFJTCO5.mjs";
3
+ import { e as mdiClose } from "./mdi-zYpVOORa.mjs";
4
+ import { r as register, a as t } from "./_l10n-7kR7gXFc.mjs";
5
+ import { N as NcActions } from "./NcActions-CgKHXNbF.mjs";
6
+ import { N as NcActionButton } from "./NcActionButton-BdQ_qmvW.mjs";
6
7
  import { N as NcIconSvgWrapper } from "./NcIconSvgWrapper-BYTrkA66.mjs";
7
8
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
8
- var mdiClose = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";
9
9
  register();
10
10
  const _hoisted_1 = {
11
11
  key: 0,
@@ -15,52 +15,12 @@ const _hoisted_2 = { class: "nc-chip__text" };
15
15
  const _sfc_main = /* @__PURE__ */ defineComponent({
16
16
  __name: "NcChip",
17
17
  props: {
18
- /**
19
- * aria label to set on the close button
20
- * @default 'Close'
21
- */
22
- ariaLabelClose: {
23
- type: String,
24
- default: t("Close")
25
- },
26
- /**
27
- * Main text of the chip
28
- */
29
- text: {
30
- type: String,
31
- default: ""
32
- },
33
- /**
34
- * Chip style
35
- * This sets the background style of the chip, similar to NcButton's `type`
36
- */
37
- type: {
38
- type: String,
39
- default: "secondary",
40
- validator: (value) => ["primary", "secondary", "tertiary"].includes(value)
41
- },
42
- /**
43
- * SVG path of the icon to use, this takes precedence over `iconSVG`.
44
- * For example icon paths from `@mdi/js` can be used.
45
- */
46
- iconPath: {
47
- type: String,
48
- default: null
49
- },
50
- /**
51
- * Inline SVG to use as the icon
52
- */
53
- iconSvg: {
54
- type: String,
55
- default: null
56
- },
57
- /**
58
- * Set to true to prevent the close button to be shown
59
- */
60
- noClose: {
61
- type: Boolean,
62
- default: false
63
- }
18
+ ariaLabelClose: { default: t("Close") },
19
+ text: { default: "" },
20
+ iconPath: { default: void 0 },
21
+ iconSvg: { default: void 0 },
22
+ noClose: { type: Boolean },
23
+ variant: { default: "secondary" }
64
24
  },
65
25
  emits: ["close"],
66
26
  setup(__props, { emit: __emit }) {
@@ -76,32 +36,32 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
36
  return (_ctx, _cache) => {
77
37
  return openBlock(), createElementBlock("div", {
78
38
  class: normalizeClass(["nc-chip", {
79
- [`nc-chip--${__props.type}`]: true,
80
- "nc-chip--no-actions": __props.noClose && !hasActions(),
39
+ [`nc-chip--${_ctx.variant}`]: true,
40
+ "nc-chip--no-actions": _ctx.noClose && !hasActions(),
81
41
  "nc-chip--no-icon": !hasIcon()
82
42
  }])
83
43
  }, [
84
44
  hasIcon() ? (openBlock(), createElementBlock("span", _hoisted_1, [
85
45
  renderSlot(_ctx.$slots, "icon", {}, () => [
86
- __props.iconPath || __props.iconSvg ? (openBlock(), createBlock(NcIconSvgWrapper, {
46
+ _ctx.iconPath || _ctx.iconSvg ? (openBlock(), createBlock(NcIconSvgWrapper, {
87
47
  key: 0,
88
48
  inline: "",
89
- path: __props.iconPath,
90
- svg: __props.iconPath ? void 0 : __props.iconSvg,
49
+ path: _ctx.iconPath,
50
+ svg: _ctx.iconPath ? void 0 : _ctx.iconSvg,
91
51
  size: 18
92
52
  }, null, 8, ["path", "svg"])) : createCommentVNode("", true)
93
53
  ], true)
94
54
  ])) : createCommentVNode("", true),
95
55
  createElementVNode("span", _hoisted_2, [
96
56
  renderSlot(_ctx.$slots, "default", {}, () => [
97
- createTextVNode(toDisplayString(__props.text), 1)
57
+ createTextVNode(toDisplayString(_ctx.text), 1)
98
58
  ], true)
99
59
  ]),
100
60
  canClose.value || hasActions() ? (openBlock(), createBlock(NcActions, {
101
61
  key: 1,
102
62
  class: "nc-chip__actions",
103
63
  "force-menu": !canClose.value,
104
- type: "tertiary-no-background"
64
+ variant: "tertiary-no-background"
105
65
  }, {
106
66
  default: withCtx(() => [
107
67
  canClose.value ? (openBlock(), createBlock(NcActionButton, {
@@ -116,7 +76,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
116
76
  }, null, 8, ["path"])
117
77
  ]),
118
78
  default: withCtx(() => [
119
- createTextVNode(" " + toDisplayString(__props.ariaLabelClose), 1)
79
+ createTextVNode(" " + toDisplayString(_ctx.ariaLabelClose), 1)
120
80
  ]),
121
81
  _: 1
122
82
  })) : createCommentVNode("", true),
@@ -128,7 +88,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
128
88
  };
129
89
  }
130
90
  });
131
- const NcChip = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-008592cb"]]);
91
+ const NcChip = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ce097ec8"]]);
132
92
  export {
133
93
  NcChip as N
134
94
  };
95
+ //# sourceMappingURL=NcChip-C3U2HYR9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcChip-C3U2HYR9.mjs","sources":["../../src/components/NcChip/NcChip.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<docs>\n### Basic usage\n\n```vue\n<template>\n\t<div style=\"display: flex; gap: 8px; flex-wrap: wrap;\">\n\t\t<NcChip text=\"Notes.txt\" />\n\t\t<NcChip text=\"Files\" :icon-path=\"mdiFile\" />\n\t\t<NcChip text=\"Color\" :icon-path=\"mdiPalette\" variant=\"tertiary\" />\n\t\t<NcChip text=\"Current time\" :icon-path=\"mdiClock\" no-close variant=\"primary\" />\n\t</div>\n</template>\n<script>\nimport { mdiClock, mdiFile, mdiPalette } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiClock,\n\t\t\tmdiFile,\n\t\t\tmdiPalette,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Advanced usage\n\nIt is also possible to use custom components for the icon by using the `icon` slot.\nIn this example we are using the `NcAvatar` component to render the users avatar as the icon.\n\n*Hint: If you use round icons like avatars you should set their size to `24px` (or use CSS variable `--chip-size`) to make them fully fill and align with the the chip*\n\nAlso it is possible to pass custom actions.\n\n```vue\n<template>\n\t<NcChip>\n\t\t<!-- The icon slot allow to use custom components as the chip icon -->\n\t\t<template #icon>\n\t\t\t<NcAvatar :size=\"24\" user=\"jdoe\" display-name=\"J. Doe\" />\n\t\t</template>\n\t\t<!-- The actions slot allows to add custom actions -->\n\t\t<template #actions>\n\t\t\t<NcActionButton>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ContactsIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tAdd to contacts\n\t\t\t</NcActionButton>\n\t\t</template>\n\t\t<!-- The default slot can be used for add content, just like the `text` prop -->\n\t\tJ. Doe\n\t</NcChip>\n</template>\n<script>\nimport ContactsIcon from 'vue-material-design-icons/Contacts.vue'\nexport default {\n\tcomponents: {\n\t\tContactsIcon,\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div class=\"nc-chip\"\n\t\t:class=\"{\n\t\t\t[`nc-chip--${variant}`]: true,\n\t\t\t'nc-chip--no-actions': noClose && !hasActions(),\n\t\t\t'nc-chip--no-icon': !hasIcon(),\n\t\t}\">\n\t\t<span v-if=\"hasIcon()\" class=\"nc-chip__icon\">\n\t\t\t<!-- @slot The icon slot can be used to set the chip icon. Make sure that the icon is not exceeding a height of `24px`. For round icons a exact size of `24px` is recommended. -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<!-- The default icon wrapper uses a size of 18px to ensure the icon is not clipped by the round chip style -->\n\t\t\t\t<NcIconSvgWrapper v-if=\"iconPath || iconSvg\"\n\t\t\t\t\tinline\n\t\t\t\t\t:path=\"iconPath\"\n\t\t\t\t\t:svg=\"iconPath ? undefined : iconSvg\"\n\t\t\t\t\t:size=\"18\" />\n\t\t\t</slot>\n\t\t</span>\n\t\t<span class=\"nc-chip__text\">\n\t\t\t<!-- @slot The default slot can be used to set the text that is shown -->\n\t\t\t<slot>{{ text }}</slot>\n\t\t</span>\n\t\t<NcActions v-if=\"canClose || hasActions()\"\n\t\t\tclass=\"nc-chip__actions\"\n\t\t\t:force-menu=\"!canClose\"\n\t\t\tvariant=\"tertiary-no-background\">\n\t\t\t<NcActionButton v-if=\"canClose\"\n\t\t\t\tclose-after-click\n\t\t\t\t@click=\"onClose\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiClose\" :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ ariaLabelClose }}\n\t\t\t</NcActionButton>\n\t\t\t<!-- @slot The actions slot can be used to add custom actions to the chips actions -->\n\t\t\t<slot name=\"actions\" />\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { mdiClose } from '@mdi/js'\nimport { computed, useSlots } from 'vue'\nimport { t } from '../../l10n.js'\n\nimport NcActions from '../NcActions/NcActions.vue'\nimport NcActionButton from '../NcActionButton/NcActionButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * aria label to set on the close button\n\t * @default 'Close'\n\t */\n\tariaLabelClose?: string\n\n\t/**\n\t * Main text of the chip.\n\t */\n\ttext?: string\n\n\t/**\n\t * SVG path of the icon to use, this takes precedence over `iconSVG`.\n\t * For example icon paths from `@mdi/js` can be used.\n\t */\n\ticonPath?: string\n\n\t/**\n\t * Inline SVG to use as the icon\n\t */\n\ticonSvg?: string\n\n\t/**\n\t * Set to true to prevent the close button to be shown\n\t */\n\tnoClose?: boolean\n\n\t/**\n\t * Set the chips design variant-\n\t *\n\t * This sets the background style of the chip, similar to NcButton's `variant`.\n\t * @default 'secondary'\n\t * @since 8.23.0\n\t */\n\tvariant: 'primary' | 'secondary' | 'tertiary'\n}>(), {\n\tariaLabelClose: t('Close'),\n\ticonPath: undefined,\n\ticonSvg: undefined,\n\ttext: '',\n\tvariant: 'secondary',\n})\n\nconst emit = defineEmits(['close'])\nconst slots = useSlots()\n\nconst canClose = computed(() => !props.noClose)\nconst hasActions = () => Boolean(slots.actions?.())\nconst hasIcon = () => Boolean(props.iconPath || props.iconSvg || !!slots.icon?.())\n\n/**\n * Handle closing the chip (pressing the X-button)\n */\nfunction onClose() {\n\t/**\n\t * Emitted when the close button is clicked\n\t */\n\temit('close')\n}\n</script>\n\n<style scoped lang=\"scss\">\n.nc-chip {\n\t--chip-size: 24px;\n\t--chip-radius: calc(var(--chip-size) / 2);\n\t// Setup size of wrapper\n\theight: var(--chip-size);\n\tmax-width: fit-content;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tborder-radius: var(--chip-radius);\n\tbackground-color: var(--color-background-hover);\n\n\t&--primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-element-text);\n\t}\n\n\t&--secondary {\n\t\tbackground-color: var(--color-primary-element-light);\n\t\tcolor: var(--color-primary-element-light-text);\n\t}\n\n\t&--no-actions &__text {\n\t\t// If there are no actions we need to add some padding to ensure the text is not cut-off\n\t\tpadding-inline-end: calc(1.5 * var(--default-grid-baseline));\n\t}\n\n\t&--no-icon &__text {\n\t\t// Add some more space to the border\n\t\tpadding-inline-start: calc(1.5 * var(--default-grid-baseline));\n\t}\n\n\t&__text {\n\t\t// Allow to grow the text\n\t\t// this is only used if an app forces a width of the chip\n\t\tflex: 1 auto;\n\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\ttext-wrap: nowrap;\n\t}\n\n\t&__icon {\n\t\t// Do neither grow nor shrink, size is fixed\n\t\tflex: 0 0 var(--chip-size);\n\t\tmargin-inline-end: var(--default-grid-baseline);\n\n\t\tline-height: 1;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\t// Force size\n\t\toverflow: hidden;\n\t\theight: var(--chip-size);\n\t\twidth: var(--chip-size);\n\t}\n\n\t&__actions {\n\t\t// Do neither grow nor shrink, size is fixed\n\t\tflex: 0 0 var(--chip-size);\n\t\t// Adjust action size to match chip size\n\t\t--default-clickable-area: var(--chip-size);\n\t\t--border-radius-element: var(--chip-radius);\n\t}\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwHA,UAAM,QAAQ;AA4Cd,UAAM,OAAO;AACb,UAAM,QAAQ,SAAS;AAEvB,UAAM,WAAW,SAAS,MAAM,CAAC,MAAM,OAAO;AAC9C,UAAM,aAAa,MAAM,QAAQ,MAAM,WAAW;AAC5C,UAAA,UAAU,MAAM,QAAQ,MAAM,YAAY,MAAM,WAAW,CAAC,CAAC,MAAM,QAAQ;AAKjF,aAAS,UAAU;AAIlB,WAAK,OAAO;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}