@nextcloud/vue 9.0.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/assets/{NcAppContent-BC1UrvXW.css → NcAppContent-r_MkL84m.css} +23 -23
  3. package/dist/assets/{NcAppSettingsDialog-Csh7L4r1.css → NcAppSettingsDialog-Dcv235GW.css} +10 -10
  4. package/dist/assets/{NcAppSettingsSection-qx2jbXXG.css → NcAppSettingsSection-DIVdlb0g.css} +3 -3
  5. package/dist/assets/NcAppSettingsSectionShortcuts-CRO4RakN.css +6 -0
  6. package/dist/assets/{NcAppSidebar-RFBRejzg.css → NcAppSidebar-aGrIJ9f6.css} +119 -83
  7. package/dist/assets/{NcAvatar-CtFA4-sC.css → NcAvatar-BvgSFJqT.css} +24 -24
  8. package/dist/assets/{NcChip-Cjdo3xPB.css → NcChip-T6s7HqeL.css} +23 -11
  9. package/dist/assets/{NcColorPicker-DtGrgPdj.css → NcColorPicker-CO_Jq2Ow.css} +31 -31
  10. package/dist/assets/{NcEmptyContent-q-geAf0w.css → NcEmptyContent-CLjlZ-UT.css} +9 -9
  11. package/dist/assets/NcHotkey-QklVKSyr.css +44 -0
  12. package/dist/assets/NcHotkeyList-B42a0d8Z.css +9 -0
  13. package/dist/assets/{NcInputField-DRt2ahWd.css → NcInputField-D5SEE7D0.css} +40 -40
  14. package/dist/assets/{NcPasswordField-CrBkaH78.css → NcPasswordField-CMuvrdVC.css} +2 -2
  15. package/dist/assets/{NcRadioGroupButton-6mf16D0h.css → NcRadioGroupButton-qxDfssOp.css} +13 -13
  16. package/dist/assets/{NcRelatedResourcesPanel-BVdRCi64.css → NcRelatedResourcesPanel-CZDNe7DZ.css} +14 -14
  17. package/dist/assets/{NcRichContenteditable-zvOx7ivB.css → NcRichContenteditable-CPbTS8xJ.css} +11 -11
  18. package/dist/assets/{NcTextArea-D7H1UNAd.css → NcTextArea-7C2JBozT.css} +25 -25
  19. package/dist/assets/{NcUserStatusIcon-D8HqS9GC.css → NcUserStatusIcon-B3aHoBAd.css} +4 -4
  20. package/dist/assets/{referencePickerModal-B4dORP5P.css → referencePickerModal-DWMAMaU3.css} +6 -6
  21. package/dist/chunks/{NcActionButtonGroup-BVFZ42sR.mjs → NcActionButtonGroup-EyWT8pe-.mjs} +2 -2
  22. package/dist/chunks/{NcActionButtonGroup-BVFZ42sR.mjs.map → NcActionButtonGroup-EyWT8pe-.mjs.map} +1 -1
  23. package/dist/chunks/{NcActionInput-CYkUDMIE.mjs → NcActionInput-BaHXAvFo.mjs} +6 -6
  24. package/dist/chunks/{NcActionInput-CYkUDMIE.mjs.map → NcActionInput-BaHXAvFo.mjs.map} +1 -1
  25. package/dist/chunks/{NcActions-DSYz-dfd.mjs → NcActions-C-E6BGfZ.mjs} +2 -2
  26. package/dist/chunks/{NcActions-DSYz-dfd.mjs.map → NcActions-C-E6BGfZ.mjs.map} +1 -1
  27. package/dist/chunks/{NcAppContent-M-ffnIS0.mjs → NcAppContent-Qg8YBJa7.mjs} +19 -21
  28. package/dist/chunks/NcAppContent-Qg8YBJa7.mjs.map +1 -0
  29. package/dist/chunks/{NcAppNavigation-B1kSbOL2.mjs → NcAppNavigation-BWd7-5H0.mjs} +2 -2
  30. package/dist/chunks/{NcAppNavigation-B1kSbOL2.mjs.map → NcAppNavigation-BWd7-5H0.mjs.map} +1 -1
  31. package/dist/chunks/{NcAppNavigationCaption-BEJgQZnC.mjs → NcAppNavigationCaption-wzGkHPZs.mjs} +2 -2
  32. package/dist/chunks/{NcAppNavigationCaption-BEJgQZnC.mjs.map → NcAppNavigationCaption-wzGkHPZs.mjs.map} +1 -1
  33. package/dist/chunks/{NcAppNavigationItem-BQn3eApT.mjs → NcAppNavigationItem-Cz_lEp5a.mjs} +5 -5
  34. package/dist/chunks/{NcAppNavigationItem-BQn3eApT.mjs.map → NcAppNavigationItem-Cz_lEp5a.mjs.map} +1 -1
  35. package/dist/chunks/{NcAppNavigationNewItem-_Pc4DgGz.mjs → NcAppNavigationNewItem-D-JsQf87.mjs} +2 -2
  36. package/dist/chunks/{NcAppNavigationNewItem-_Pc4DgGz.mjs.map → NcAppNavigationNewItem-D-JsQf87.mjs.map} +1 -1
  37. package/dist/chunks/{NcAppNavigationSearch-DhpYmUvR.mjs → NcAppNavigationSearch-BbXky-Un.mjs} +3 -3
  38. package/dist/chunks/{NcAppNavigationSearch-DhpYmUvR.mjs.map → NcAppNavigationSearch-BbXky-Un.mjs.map} +1 -1
  39. package/dist/chunks/{NcAppNavigationSettings-C7wCP68k.mjs → NcAppNavigationSettings-CgRg-AbU.mjs} +2 -2
  40. package/dist/chunks/{NcAppNavigationSettings-C7wCP68k.mjs.map → NcAppNavigationSettings-CgRg-AbU.mjs.map} +1 -1
  41. package/dist/chunks/{NcAppSettingsDialog-CAVz10A2.mjs → NcAppSettingsDialog-BZzj8jNU.mjs} +21 -12
  42. package/dist/chunks/NcAppSettingsDialog-BZzj8jNU.mjs.map +1 -0
  43. package/dist/chunks/NcAppSettingsSection-urZiy9aH.mjs +54 -0
  44. package/dist/chunks/NcAppSettingsSection-urZiy9aH.mjs.map +1 -0
  45. package/dist/chunks/NcAppSettingsSectionShortcuts-CK8lXUxx.mjs +38 -0
  46. package/dist/chunks/NcAppSettingsSectionShortcuts-CK8lXUxx.mjs.map +1 -0
  47. package/dist/chunks/{NcAppSidebar-DhIHNv38.mjs → NcAppSidebar-Du9lcG-G.mjs} +108 -68
  48. package/dist/chunks/NcAppSidebar-Du9lcG-G.mjs.map +1 -0
  49. package/dist/chunks/{NcAvatar-np0umB0M.mjs → NcAvatar-CZVJYWdr.mjs} +6 -6
  50. package/dist/chunks/NcAvatar-CZVJYWdr.mjs.map +1 -0
  51. package/dist/chunks/NcBlurHash-BiFktE2N.mjs.map +1 -1
  52. package/dist/chunks/{NcBreadcrumb-Owk00UZe.mjs → NcBreadcrumb-CkUvC1g0.mjs} +2 -2
  53. package/dist/chunks/{NcBreadcrumb-Owk00UZe.mjs.map → NcBreadcrumb-CkUvC1g0.mjs.map} +1 -1
  54. package/dist/chunks/{NcBreadcrumbs-DCC65VBU.mjs → NcBreadcrumbs-Dx6ylWcp.mjs} +3 -3
  55. package/dist/chunks/{NcBreadcrumbs-DCC65VBU.mjs.map → NcBreadcrumbs-Dx6ylWcp.mjs.map} +1 -1
  56. package/dist/chunks/{NcCheckboxRadioSwitch-CrehrqO8.mjs → NcCheckboxRadioSwitch-Da3UT5om.mjs} +2 -2
  57. package/dist/chunks/{NcCheckboxRadioSwitch-CrehrqO8.mjs.map → NcCheckboxRadioSwitch-Da3UT5om.mjs.map} +1 -1
  58. package/dist/chunks/{NcChip-DJYTA-9o.mjs → NcChip-CIjgDRrf.mjs} +5 -5
  59. package/dist/chunks/NcChip-CIjgDRrf.mjs.map +1 -0
  60. package/dist/chunks/{NcCollectionList-C3azs_bD.mjs → NcCollectionList-DqNsOT7P.mjs} +5 -5
  61. package/dist/chunks/{NcCollectionList-C3azs_bD.mjs.map → NcCollectionList-DqNsOT7P.mjs.map} +1 -1
  62. package/dist/chunks/{NcColorPicker-CUgXEX1F.mjs → NcColorPicker-yoZ5ZWC3.mjs} +5 -5
  63. package/dist/chunks/NcColorPicker-yoZ5ZWC3.mjs.map +1 -0
  64. package/dist/chunks/{NcContent-D8hwdcWT.mjs → NcContent-DxKYTMfp.mjs} +2 -2
  65. package/dist/chunks/{NcContent-D8hwdcWT.mjs.map → NcContent-DxKYTMfp.mjs.map} +1 -1
  66. package/dist/chunks/{NcDashboardWidget-BEUtfCxs.mjs → NcDashboardWidget-Bu7bWoUK.mjs} +6 -6
  67. package/dist/chunks/{NcDashboardWidget-BEUtfCxs.mjs.map → NcDashboardWidget-Bu7bWoUK.mjs.map} +1 -1
  68. package/dist/chunks/{NcDashboardWidgetItem-BPw9-irg.mjs → NcDashboardWidgetItem-CJg0lrlx.mjs} +3 -3
  69. package/dist/chunks/{NcDashboardWidgetItem-BPw9-irg.mjs.map → NcDashboardWidgetItem-CJg0lrlx.mjs.map} +1 -1
  70. package/dist/chunks/{NcDateTimePicker-DPFq8Xcd.mjs → NcDateTimePicker-DOwSKf9T.mjs} +3 -3
  71. package/dist/chunks/{NcDateTimePicker-DPFq8Xcd.mjs.map → NcDateTimePicker-DOwSKf9T.mjs.map} +1 -1
  72. package/dist/chunks/{NcDateTimePickerNative-BXcWNyR4.mjs → NcDateTimePickerNative-BSKXbwuA.mjs} +2 -2
  73. package/dist/chunks/{NcDateTimePickerNative-BXcWNyR4.mjs.map → NcDateTimePickerNative-BSKXbwuA.mjs.map} +1 -1
  74. package/dist/chunks/{NcDialog-CdAQQLxt.mjs → NcDialog-BgzJN2XT.mjs} +3 -3
  75. package/dist/chunks/{NcDialog-CdAQQLxt.mjs.map → NcDialog-BgzJN2XT.mjs.map} +1 -1
  76. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-Cibg1sIr.mjs → NcDialogButton.vue_vue_type_script_setup_true_lang-D9ClaBcS.mjs} +2 -2
  77. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-Cibg1sIr.mjs.map → NcDialogButton.vue_vue_type_script_setup_true_lang-D9ClaBcS.mjs.map} +1 -1
  78. package/dist/chunks/{NcEmojiPicker-B7wsWhTp.mjs → NcEmojiPicker-CwR_8bCR.mjs} +6 -6
  79. package/dist/chunks/{NcEmojiPicker-B7wsWhTp.mjs.map → NcEmojiPicker-CwR_8bCR.mjs.map} +1 -1
  80. package/dist/chunks/{NcEmptyContent-BdOezubv.mjs → NcEmptyContent-B8-90BSI.mjs} +25 -19
  81. package/dist/chunks/NcEmptyContent-B8-90BSI.mjs.map +1 -0
  82. package/dist/chunks/NcHotkey-V6s3DXUs.mjs +61 -0
  83. package/dist/chunks/NcHotkey-V6s3DXUs.mjs.map +1 -0
  84. package/dist/chunks/NcHotkeyList-Ck87UwvW.mjs +42 -0
  85. package/dist/chunks/NcHotkeyList-Ck87UwvW.mjs.map +1 -0
  86. package/dist/chunks/{NcInputConfirmCancel-CeWaIZeu.mjs → NcInputConfirmCancel-Zkh97f-3.mjs} +2 -2
  87. package/dist/chunks/{NcInputConfirmCancel-CeWaIZeu.mjs.map → NcInputConfirmCancel-Zkh97f-3.mjs.map} +1 -1
  88. package/dist/chunks/{NcInputField-BYFjEj7Z.mjs → NcInputField-By_D1kDJ.mjs} +12 -4
  89. package/dist/chunks/NcInputField-By_D1kDJ.mjs.map +1 -0
  90. package/dist/chunks/{NcKbd-u-dn94gy.mjs → NcKbd-CyqxbpJJ.mjs} +2 -2
  91. package/dist/chunks/{NcKbd-u-dn94gy.mjs.map → NcKbd-CyqxbpJJ.mjs.map} +1 -1
  92. package/dist/chunks/{NcListItem-DoZ4r5-c.mjs → NcListItem-z4qAtAqe.mjs} +2 -2
  93. package/dist/chunks/{NcListItem-DoZ4r5-c.mjs.map → NcListItem-z4qAtAqe.mjs.map} +1 -1
  94. package/dist/chunks/{NcListItemIcon-CLd5HmTk.mjs → NcListItemIcon-BVr_U7S4.mjs} +2 -2
  95. package/dist/chunks/{NcListItemIcon-CLd5HmTk.mjs.map → NcListItemIcon-BVr_U7S4.mjs.map} +1 -1
  96. package/dist/chunks/{NcModal-B61_8i83.mjs → NcModal-CvHjwuUy.mjs} +4 -4
  97. package/dist/chunks/{NcModal-B61_8i83.mjs.map → NcModal-CvHjwuUy.mjs.map} +1 -1
  98. package/dist/chunks/{NcPasswordField-CXp65fyE.mjs → NcPasswordField-DroBJzYE.mjs} +5 -5
  99. package/dist/chunks/NcPasswordField-DroBJzYE.mjs.map +1 -0
  100. package/dist/chunks/NcPopover-C-MTaPCs.mjs.map +1 -1
  101. package/dist/chunks/{NcRadioGroupButton-C4BDgB0X.mjs → NcRadioGroupButton-BNydXurR.mjs} +7 -7
  102. package/dist/chunks/{NcRadioGroupButton-C4BDgB0X.mjs.map → NcRadioGroupButton-BNydXurR.mjs.map} +1 -1
  103. package/dist/chunks/{NcRelatedResourcesPanel-Kx5Uw_k4.mjs → NcRelatedResourcesPanel-1oVpr5Oh.mjs} +6 -6
  104. package/dist/chunks/NcRelatedResourcesPanel-1oVpr5Oh.mjs.map +1 -0
  105. package/dist/chunks/{NcRichContenteditable-bVKzNfXT.mjs → NcRichContenteditable-D-GPJR9c.mjs} +14 -14
  106. package/dist/chunks/NcRichContenteditable-D-GPJR9c.mjs.map +1 -0
  107. package/dist/chunks/{NcRichText-Dht_wH3t.mjs → NcRichText-CETsOVBU.mjs} +3 -3
  108. package/dist/chunks/{NcRichText-Dht_wH3t.mjs.map → NcRichText-CETsOVBU.mjs.map} +1 -1
  109. package/dist/chunks/{NcSelect-CVm-XUF0.mjs → NcSelect-BUPzYWtk.mjs} +2 -2
  110. package/dist/chunks/{NcSelect-CVm-XUF0.mjs.map → NcSelect-BUPzYWtk.mjs.map} +1 -1
  111. package/dist/chunks/{NcSelectTags-DlEQlAe1.mjs → NcSelectTags-Cu7fqEPC.mjs} +3 -3
  112. package/dist/chunks/NcSelectTags-Cu7fqEPC.mjs.map +1 -0
  113. package/dist/chunks/{NcSelectUsers-DQVO0hcf.mjs → NcSelectUsers-C3w6sjP5.mjs} +3 -3
  114. package/dist/chunks/{NcSelectUsers-DQVO0hcf.mjs.map → NcSelectUsers-C3w6sjP5.mjs.map} +1 -1
  115. package/dist/chunks/{NcSettingsSection-DiUv-jCU.mjs → NcSettingsSection-DFav6ob5.mjs} +2 -2
  116. package/dist/chunks/{NcSettingsSection-DiUv-jCU.mjs.map → NcSettingsSection-DFav6ob5.mjs.map} +1 -1
  117. package/dist/chunks/{NcSettingsSelectGroup-D7QUg85q.mjs → NcSettingsSelectGroup-DOiWF5XH.mjs} +4 -4
  118. package/dist/chunks/{NcSettingsSelectGroup-D7QUg85q.mjs.map → NcSettingsSelectGroup-DOiWF5XH.mjs.map} +1 -1
  119. package/dist/chunks/{NcTextArea-f6VqBxce.mjs → NcTextArea-CKK_gfIE.mjs} +3 -3
  120. package/dist/chunks/NcTextArea-CKK_gfIE.mjs.map +1 -0
  121. package/dist/chunks/{NcTextField.vue_vue_type_script_setup_true_lang-BrVEwz3B.mjs → NcTextField.vue_vue_type_script_setup_true_lang-DVAnIMOA.mjs} +3 -3
  122. package/dist/chunks/{NcTextField.vue_vue_type_script_setup_true_lang-BrVEwz3B.mjs.map → NcTextField.vue_vue_type_script_setup_true_lang-DVAnIMOA.mjs.map} +1 -1
  123. package/dist/chunks/{NcTimezonePicker.vue_vue_type_script_setup_true_lang-6KhkTGnq.mjs → NcTimezonePicker.vue_vue_type_script_setup_true_lang-C2YnFWvf.mjs} +3 -3
  124. package/dist/chunks/{NcTimezonePicker.vue_vue_type_script_setup_true_lang-6KhkTGnq.mjs.map → NcTimezonePicker.vue_vue_type_script_setup_true_lang-C2YnFWvf.mjs.map} +1 -1
  125. package/dist/chunks/{NcUserBubble-ndaFuDRG.mjs → NcUserBubble-CM66IyhS.mjs} +2 -2
  126. package/dist/chunks/{NcUserBubble-ndaFuDRG.mjs.map → NcUserBubble-CM66IyhS.mjs.map} +1 -1
  127. package/dist/chunks/{NcUserStatusIcon-PmjvUVMB.mjs → NcUserStatusIcon-DWB8QUZh.mjs} +4 -4
  128. package/dist/chunks/{NcUserStatusIcon-PmjvUVMB.mjs.map → NcUserStatusIcon-DWB8QUZh.mjs.map} +1 -1
  129. package/dist/chunks/{_l10n-DbErv0fW.mjs → _l10n-YZMLsK4O.mjs} +44 -44
  130. package/dist/chunks/_l10n-YZMLsK4O.mjs.map +1 -0
  131. package/dist/chunks/autolink-U5pBzLgI.mjs.map +1 -1
  132. package/dist/chunks/{colors-C52haAK_.mjs → colors-DhEYXS0_.mjs} +2 -2
  133. package/dist/chunks/{colors-C52haAK_.mjs.map → colors-DhEYXS0_.mjs.map} +1 -1
  134. package/dist/chunks/customPickerElements-4pQTZUnk.mjs.map +1 -1
  135. package/dist/chunks/logger-D3RVzcfQ.mjs.map +1 -1
  136. package/dist/chunks/{referencePickerModal-CWsskZ5O.mjs → referencePickerModal-CseuhGwX.mjs} +11 -11
  137. package/dist/chunks/referencePickerModal-CseuhGwX.mjs.map +1 -0
  138. package/dist/chunks/useAppSettingsDialog-Dn48dw1k.mjs.map +1 -1
  139. package/dist/components/NcActionButtonGroup/index.mjs +1 -1
  140. package/dist/components/NcActionInput/index.mjs +1 -1
  141. package/dist/components/NcActions/index.mjs +1 -1
  142. package/dist/components/NcAppContent/NcAppContent.vue.d.ts +0 -3
  143. package/dist/components/NcAppContent/index.mjs +1 -1
  144. package/dist/components/NcAppNavigation/index.mjs +1 -1
  145. package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
  146. package/dist/components/NcAppNavigationItem/index.mjs +1 -1
  147. package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
  148. package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
  149. package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
  150. package/dist/components/NcAppSettingsDialog/NcAppSettingsDialog.vue.d.ts +1 -0
  151. package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
  152. package/dist/components/NcAppSettingsDialog/useAppSettingsDialog.d.ts +3 -2
  153. package/dist/components/NcAppSettingsSection/NcAppSettingsSection.vue.d.ts +32 -37
  154. package/dist/components/NcAppSettingsSection/index.d.ts +4 -0
  155. package/dist/components/NcAppSettingsSection/index.mjs +1 -1
  156. package/dist/components/NcAppSettingsSectionShortcuts/NcAppSettingsSectionShortcuts.vue.d.ts +26 -0
  157. package/dist/components/NcAppSettingsSectionShortcuts/index.d.ts +1 -0
  158. package/dist/components/NcAppSettingsSectionShortcuts/index.mjs +5 -0
  159. package/dist/components/NcAppSettingsSectionShortcuts/index.mjs.map +1 -0
  160. package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +13 -18
  161. package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +13 -18
  162. package/dist/components/NcAppSidebar/NcAppSidebarTabsButton.vue.d.ts +16 -0
  163. package/dist/components/NcAppSidebar/index.mjs +1 -1
  164. package/dist/components/NcAvatar/index.mjs +1 -1
  165. package/dist/components/NcBreadcrumb/index.mjs +1 -1
  166. package/dist/components/NcBreadcrumbs/index.mjs +1 -1
  167. package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
  168. package/dist/components/NcChip/NcChip.vue.d.ts +2 -2
  169. package/dist/components/NcChip/index.mjs +1 -1
  170. package/dist/components/NcCollectionList/index.mjs +1 -1
  171. package/dist/components/NcColorPicker/index.mjs +1 -1
  172. package/dist/components/NcContent/index.mjs +1 -1
  173. package/dist/components/NcDashboardWidget/index.mjs +1 -1
  174. package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
  175. package/dist/components/NcDateTimePicker/index.mjs +1 -1
  176. package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
  177. package/dist/components/NcDialog/index.mjs +1 -1
  178. package/dist/components/NcDialogButton/index.mjs +1 -1
  179. package/dist/components/NcEmojiPicker/index.mjs +1 -1
  180. package/dist/components/NcEmptyContent/index.mjs +1 -1
  181. package/dist/components/NcHotkey/NcHotkey.vue.d.ts +44 -0
  182. package/dist/components/NcHotkey/index.d.ts +1 -0
  183. package/dist/components/NcHotkey/index.mjs +5 -0
  184. package/dist/components/NcHotkey/index.mjs.map +1 -0
  185. package/dist/components/NcHotkeyList/NcHotkeyList.vue.d.ts +32 -0
  186. package/dist/components/NcHotkeyList/index.d.ts +1 -0
  187. package/dist/components/NcHotkeyList/index.mjs +5 -0
  188. package/dist/components/NcHotkeyList/index.mjs.map +1 -0
  189. package/dist/components/NcInputField/index.mjs +1 -1
  190. package/dist/components/NcKbd/index.mjs +1 -1
  191. package/dist/components/NcListItem/index.mjs +1 -1
  192. package/dist/components/NcListItemIcon/index.mjs +1 -1
  193. package/dist/components/NcModal/index.mjs +1 -1
  194. package/dist/components/NcPasswordField/index.mjs +1 -1
  195. package/dist/components/NcRadioGroupButton/index.mjs +1 -1
  196. package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
  197. package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +1 -1
  198. package/dist/components/NcRichContenteditable/index.mjs +1 -1
  199. package/dist/components/NcRichText/index.mjs +3 -3
  200. package/dist/components/NcSelect/index.mjs +1 -1
  201. package/dist/components/NcSelectTags/index.mjs +1 -1
  202. package/dist/components/NcSelectUsers/index.mjs +1 -1
  203. package/dist/components/NcSettingsSection/index.mjs +1 -1
  204. package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
  205. package/dist/components/NcTextArea/index.mjs +1 -1
  206. package/dist/components/NcTextField/index.mjs +1 -1
  207. package/dist/components/NcTimezonePicker/index.mjs +1 -1
  208. package/dist/components/NcUserBubble/index.mjs +1 -1
  209. package/dist/components/NcUserStatusIcon/index.mjs +1 -1
  210. package/dist/components/index.d.ts +4 -1
  211. package/dist/composables/useFormatDateTime/index.mjs +1 -1
  212. package/dist/functions/contactsMenu/index.mjs.map +1 -1
  213. package/dist/functions/reference/index.mjs +1 -1
  214. package/dist/functions/usernameToColor/index.mjs +3 -3
  215. package/dist/functions/usernameToColor/index.mjs.map +1 -1
  216. package/dist/index.mjs +126 -120
  217. package/dist/index.mjs.map +1 -1
  218. package/dist/utils/logger.d.ts +1 -2
  219. package/package.json +21 -21
  220. package/dist/chunks/NcAppContent-M-ffnIS0.mjs.map +0 -1
  221. package/dist/chunks/NcAppSettingsDialog-CAVz10A2.mjs.map +0 -1
  222. package/dist/chunks/NcAppSettingsSection-BNTUyNUo.mjs +0 -75
  223. package/dist/chunks/NcAppSettingsSection-BNTUyNUo.mjs.map +0 -1
  224. package/dist/chunks/NcAppSidebar-DhIHNv38.mjs.map +0 -1
  225. package/dist/chunks/NcAvatar-np0umB0M.mjs.map +0 -1
  226. package/dist/chunks/NcChip-DJYTA-9o.mjs.map +0 -1
  227. package/dist/chunks/NcColorPicker-CUgXEX1F.mjs.map +0 -1
  228. package/dist/chunks/NcEmptyContent-BdOezubv.mjs.map +0 -1
  229. package/dist/chunks/NcInputField-BYFjEj7Z.mjs.map +0 -1
  230. package/dist/chunks/NcPasswordField-CXp65fyE.mjs.map +0 -1
  231. package/dist/chunks/NcRelatedResourcesPanel-Kx5Uw_k4.mjs.map +0 -1
  232. package/dist/chunks/NcRichContenteditable-bVKzNfXT.mjs.map +0 -1
  233. package/dist/chunks/NcSelectTags-DlEQlAe1.mjs.map +0 -1
  234. package/dist/chunks/NcTextArea-f6VqBxce.mjs.map +0 -1
  235. package/dist/chunks/_l10n-DbErv0fW.mjs.map +0 -1
  236. package/dist/chunks/referencePickerModal-CWsskZ5O.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
- import '../assets/NcAppSettingsDialog-Csh7L4r1.css';
2
- import { defineComponent, mergeModels, useModel, useSlots, provide, useTemplateRef, ref, computed, warn, createBlock, createCommentVNode, openBlock, unref, createSlots, withCtx, createElementVNode, renderSlot, createElementBlock, Fragment, renderList, withKeys, withModifiers, normalizeClass, toDisplayString } from "vue";
1
+ import '../assets/NcAppSettingsDialog-Dcv235GW.css';
2
+ import { defineComponent, mergeModels, useModel, provide, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createCommentVNode, openBlock, unref, createSlots, withCtx, createElementVNode, renderSlot, createElementBlock, Fragment, renderList, withKeys, withModifiers, normalizeClass, toDisplayString } from "vue";
3
3
  import debounce from "debounce";
4
- import { N as NcDialog } from "./NcDialog-CdAQQLxt.mjs";
4
+ import { N as NcDialog } from "./NcDialog-BgzJN2XT.mjs";
5
5
  import { _ as _sfc_main$1 } from "./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs";
6
6
  import { useIsMobile } from "../composables/useIsMobile/index.mjs";
7
- import { r as register, a as t } from "./_l10n-DbErv0fW.mjs";
7
+ import { r as register, a as t } from "./_l10n-YZMLsK4O.mjs";
8
8
  import { A as APP_SETTINGS_REGISTRATION_KEY } from "./useAppSettingsDialog-Dn48dw1k.mjs";
9
9
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
10
10
  register();
@@ -33,7 +33,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  setup(__props) {
34
34
  const open = useModel(__props, "open");
35
35
  const props = __props;
36
- const slots = useSlots();
37
36
  provide(APP_SETTINGS_REGISTRATION_KEY, {
38
37
  registerSection,
39
38
  unregisterSection
@@ -51,6 +50,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
51
50
  document.activeElement.blur();
52
51
  }
53
52
  }, 300);
53
+ const sectionsOrderMap = /* @__PURE__ */ new Map();
54
+ onBeforeUnmount(() => {
55
+ sectionsOrderMap.clear();
56
+ });
54
57
  function handleSettingsNavigationClick(item) {
55
58
  linkClicked.value = true;
56
59
  document.getElementById("settings-section_" + item).scrollIntoView({
@@ -74,17 +77,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
74
77
  unfocusNavigationItem();
75
78
  }
76
79
  }
77
- function registerSection(id, name, icon) {
80
+ function registerSection(id, name, order, icon) {
78
81
  if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {
79
82
  throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);
80
83
  }
81
84
  if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {
82
85
  warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);
83
86
  }
84
- const newSections = [...registeredSections.value, { id, name, icon }];
85
- registeredSections.value = newSections.sort(({ id: idA }, { id: idB }) => {
86
- const indexOf = (id2) => slots.default?.().findIndex((vnode) => vnode?.props?.id === id2) ?? -1;
87
- return indexOf(idA) - indexOf(idB);
87
+ if (order !== void 0) {
88
+ sectionsOrderMap.set(id, order);
89
+ } else if (sectionsOrderMap.has(id)) {
90
+ order = sectionsOrderMap.get(id);
91
+ } else {
92
+ order = Math.max(0, ...sectionsOrderMap.values()) + 1;
93
+ sectionsOrderMap.set(id, order);
94
+ }
95
+ registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {
96
+ return orderA - orderB;
88
97
  });
89
98
  if (registeredSections.value.length === 1) {
90
99
  selectedSection.value = id;
@@ -157,8 +166,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
157
166
  };
158
167
  }
159
168
  });
160
- const NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5f3b5743"]]);
169
+ const NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-69d0fb0e"]]);
161
170
  export {
162
171
  NcAppSettingsDialog as N
163
172
  };
164
- //# sourceMappingURL=NcAppSettingsDialog-CAVz10A2.mjs.map
173
+ //# sourceMappingURL=NcAppSettingsDialog-BZzj8jNU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcAppSettingsDialog-BZzj8jNU.mjs","sources":["../../src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { Slot, VNode } from 'vue'\n\nimport debounce from 'debounce'\nimport { computed, onBeforeUnmount, provide, ref, useTemplateRef, warn } from 'vue'\nimport NcDialog from '../NcDialog/NcDialog.vue'\nimport NcVNodes from '../NcVNodes/NcVNodes.vue'\nimport { useIsMobile } from '../../composables/useIsMobile/index.ts'\nimport { t } from '../../l10n.ts'\nimport { APP_SETTINGS_REGISTRATION_KEY } from './useAppSettingsDialog.ts'\n\nexport interface IAppSettingsSection {\n\tid: string\n\tname: string\n\torder?: number\n\ticon?: VNode[]\n}\n\n/**\n * Determines the open / closed state of the modal\n */\nconst open = defineModel<boolean>('open', { required: true })\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Shows the navigation on desktop if true\n\t */\n\tshowNavigation?: boolean\n\n\t/**\n\t * Selector for the popover container\n\t */\n\tcontainer?: string\n\n\t/**\n\t * Name of the settings\n\t */\n\tname?: string\n\n\t/**\n\t * Additional elements to add to the focus trap\n\t */\n\tadditionalTrapElements?: (string | HTMLElement)[]\n}>(), {\n\tcontainer: 'body',\n\tname: '',\n\tadditionalTrapElements: () => [],\n})\n\ndefineSlots<{\n\t/**\n\t * The NcAppSettingsSections\n\t */\n\tdefault?: Slot\n}>()\n\nprovide(APP_SETTINGS_REGISTRATION_KEY, {\n\tregisterSection,\n\tunregisterSection,\n})\n\nconst settingsScrollerElement = useTemplateRef('settingsScroller')\n\nconst isMobile = useIsMobile()\n\nconst selectedSection = ref('')\nconst linkClicked = ref(false)\nconst registeredSections = ref<IAppSettingsSection[]>([])\n\nconst hasNavigation = computed(() => !isMobile.value && props.showNavigation)\n\n/**\n * Check if one or more navigation entries provide icons\n */\nconst hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon))\n\n/**\n * Remove selected section once the user starts scrolling\n */\nconst unfocusNavigationItem = debounce(() => {\n\tselectedSection.value = ''\n\tif (document.activeElement?.className.includes('navigation-list__link')) {\n\t\t(document.activeElement as HTMLElement).blur()\n\t}\n}, 300)\n\n/**\n * Fallback order map to keep track of section orders if not provided by child components\n */\nconst sectionsOrderMap = new Map()\nonBeforeUnmount(() => {\n\tsectionsOrderMap.clear()\n})\n\n/**\n * Scrolls the content to the selected settings section.absolute\n *\n * @param item - the ID of the section\n */\nfunction handleSettingsNavigationClick(item: string) {\n\tlinkClicked.value = true\n\tdocument.getElementById('settings-section_' + item)!.scrollIntoView({\n\t\tbehavior: 'smooth',\n\t\tinline: 'nearest',\n\t})\n\tselectedSection.value = item\n\tsetTimeout(() => {\n\t\tlinkClicked.value = false\n\t}, 1000)\n}\n\n/**\n * Reset the dialog state when closed to have a clean state if re-opened.\n *\n * @param isOpen - The new modal open state\n */\nfunction handleCloseModal(isOpen: boolean) {\n\tif (isOpen) {\n\t\treturn\n\t}\n\n\topen.value = false\n\t// reset the scrolling state if the modal is just hidden\n\tsettingsScrollerElement.value!.scrollTop = 0\n}\n\n/**\n * When scrolled manually we remove the focus from the navigation item.\n */\nfunction handleScroll() {\n\tif (open.value && !linkClicked.value) {\n\t\tunfocusNavigationItem()\n\t}\n}\n\n/**\n * Called when a new section is registered\n *\n * @param id - The section ID\n * @param name - The section name\n * @param order - Optional section order in navigation list\n * @param icon - Optional icon component\n */\nfunction registerSection(id: string, name: string, order?: number, icon?: VNode[]) {\n\t// Check for the uniqueness of section names\n\tif (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n\t\tthrow new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`)\n\t}\n\tif (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n\t\twarn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`)\n\t}\n\n\t// Ensure tab order is set\n\tif (order !== undefined) {\n\t\tsectionsOrderMap.set(id, order)\n\t} else if (sectionsOrderMap.has(id)) {\n\t\torder = sectionsOrderMap.get(id)\n\t} else {\n\t\t// Fallback to the closest positive number that isn't already taken\n\t\torder = Math.max(0, ...sectionsOrderMap.values()) + 1\n\t\tsectionsOrderMap.set(id, order)\n\t}\n\n\t// Sort sections by order in slots\n\tregisteredSections.value = [...registeredSections.value, { id, name, order, icon }]\n\t\t.sort(({ order: orderA }, { order: orderB }) => {\n\t\t\treturn orderA! - orderB!\n\t\t})\n\n\t// If this is the first section registered, set it as selected\n\tif (registeredSections.value.length === 1) {\n\t\tselectedSection.value = id\n\t}\n}\n\n/**\n * Called when a section is unregistered to remove it from dialog\n *\n * @param id - The section ID\n */\nfunction unregisterSection(id: string) {\n\tregisteredSections.value = registeredSections.value\n\t\t.filter(({ id: otherId }) => id !== otherId)\n\n\t// If the current section is unregistered, set the first section as selected\n\tif (selectedSection.value === id) {\n\t\tselectedSection.value = registeredSections.value[0]?.id ?? ''\n\t}\n}\n</script>\n\n<template>\n\t<NcDialog\n\t\tv-if=\"open\"\n\t\tclass=\"app-settings\"\n\t\tcontent-classes=\"app-settings__content\"\n\t\tnavigation-classes=\"app-settings__navigation\"\n\t\t:additional-trap-elements\n\t\t:container\n\t\tclose-on-click-outside\n\t\t:navigation-aria-label=\"t('Settings navigation')\"\n\t\tsize=\"large\"\n\t\t:name\n\t\t@update:open=\"handleCloseModal\">\n\t\t<template v-if=\"hasNavigation\" #navigation=\"{ isCollapsed }\">\n\t\t\t<ul\n\t\t\t\tv-if=\"!isCollapsed\"\n\t\t\t\tclass=\"navigation-list\">\n\t\t\t\t<li v-for=\"section in registeredSections\" :key=\"section.id\">\n\t\t\t\t\t<a\n\t\t\t\t\t\t:aria-current=\"`${section.id === selectedSection}`\"\n\t\t\t\t\t\tclass=\"navigation-list__link\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'navigation-list__link--active': section.id === selectedSection,\n\t\t\t\t\t\t\t'navigation-list__link--icon': hasNavigationIcons,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:href=\"`#settings-section_${section.id}`\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t@click.prevent=\"handleSettingsNavigationClick(section.id)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSettingsNavigationClick(section.id)\">\n\t\t\t\t\t\t<div v-if=\"hasNavigationIcons\" class=\"navigation-list__link-icon\">\n\t\t\t\t\t\t\t<NcVNodes v-if=\"section.icon\" :vnodes=\"section.icon\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"navigation-list__link-text\">\n\t\t\t\t\t\t\t{{ section.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t\t<div ref=\"settingsScroller\" @scroll=\"handleScroll\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.app-settings {\n\t:deep &__navigation {\n\t\tmin-width: 200px;\n\t\tmargin-inline-end: calc(4 * var(--default-grid-baseline));\n\t\toverflow-x: hidden;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t}\n\t:deep &__content {\n\t\tpadding-inline: calc(4 * var(--default-grid-baseline));\n\t}\n}\n\n.navigation-list {\n\theight: 100%;\n\toverflow-y: auto;\n\tpadding: calc(3 * var(--default-grid-baseline));\n\n\t&__link {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\tfont-size: 16px;\n\t\theight: var(--default-clickable-area);\n\t\tmargin: 4px 0;\n\t\tline-height: var(--default-clickable-area);\n\t\tborder-radius: var(--border-radius-element);\n\t\tfont-weight: bold;\n\t\tpadding: 0 calc(4 * var(--default-grid-baseline));\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\n\t\t&--active {\n\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t}\n\n\t\t&--icon {\n\t\t\tpadding-inline-start: calc(2 * var(--default-grid-baseline));\n\t\t\tgap: var(--default-grid-baseline);\n\t\t}\n\n\t\t&-icon {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-content: center;\n\t\t\twidth: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\n\t\t\tmax-width: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: $breakpoint-small-mobile) {\n\t.app-settings {\n\t\t:deep .dialog__name {\n\t\t\tpadding-inline-start: 16px;\n\t\t}\n\t}\n}\n</style>\n\n<docs>\nJust nest the `AppSettingSections` component into `NcAppSettingsDialog`,\nproviding the section's name prop. You can put your settings within each\n`NcAppSettingsSection` component.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog v-model:open=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-5\" name=\"Example name 5\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-6\" name=\"Example name 6\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-7\" name=\"Example name 7\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-8\" name=\"Example name 8\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-9\" name=\"Example name 9\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-10\" name=\"Example name 10\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nYou can also add icons to the section navigation:\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog v-model:open=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Instagram\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Instagram :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tInstagram setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Mastodon\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Mastodon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tMastodon setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Twitch\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitch :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tTwitch setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Twitter\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitter :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tTwitter setting\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nimport Instagram from 'vue-material-design-icons/Instagram.vue'\nimport Mastodon from 'vue-material-design-icons/Mastodon.vue'\nimport Twitch from 'vue-material-design-icons/Twitch.vue'\nimport Twitter from 'vue-material-design-icons/Twitter.vue'\n\nexport default {\n\tcomponents: {\n\t\tInstagram,\n\t\tMastodon,\n\t\tTwitch,\n\t\tTwitter,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nSections order in navigation list is defined during initial rendering.\nIn case of dynamic/conditional sections rendering explicit `order` prop must be used for ordering.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog v-model:open=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\" :order=\"1\">\n\t\t\t\tSome example content\n\t\t\t\t<NcCheckboxRadioSwitch v-model=\"showExtraSections\">Show section 3</NcCheckboxRadioSwitch>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\" :order=\"2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<template v-if=\"showExtraSections\">\n\t\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\" :order=\"3\">\n\t\t\t\t\tSome example content\n\t\t\t\t</NcAppSettingsSection>\n\t\t\t</template>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\" :order=\"4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tsettingsOpen: false,\n\t\t\t\tshowExtraSections: true,\n\t\t\t}\n\t\t},\n\t}\n</script>\n```\n</docs>\n"],"names":["_useModel","_createBlock","additionalTrapElements","container","_unref","name","_createElementVNode","_renderSlot","_withCtx","_openBlock","_createElementBlock","_Fragment","_renderList","_withModifiers","_withKeys","NcVNodes","_toDisplayString"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import '../assets/NcAppSettingsSection-DIVdlb0g.css';
2
+ import { defineComponent, useSlots, computed, watch, onMounted, onBeforeUnmount, createElementBlock, openBlock, createElementVNode, renderSlot, toDisplayString } from "vue";
3
+ import { l as logger } from "./logger-D3RVzcfQ.mjs";
4
+ import { u as useAppSettingsDialog } from "./useAppSettingsDialog-Dn48dw1k.mjs";
5
+ import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
6
+ const _hoisted_1 = ["id", "aria-labelledby"];
7
+ const _hoisted_2 = ["id"];
8
+ const _sfc_main = /* @__PURE__ */ defineComponent({
9
+ __name: "NcAppSettingsSection",
10
+ props: {
11
+ name: {},
12
+ id: {},
13
+ order: {}
14
+ },
15
+ setup(__props) {
16
+ const props = __props;
17
+ const slots = useSlots();
18
+ const { registerSection, unregisterSection } = useAppSettingsDialog();
19
+ const htmlId = computed(() => "settings-section_" + props.id);
20
+ watch(() => props.id, () => {
21
+ if (!/^[a-z0-9\-_]+$/.test(props.id)) {
22
+ logger.warn(`Invalid id prop: ${props.id}. Only alphanumeric, dash and underscore are allowed.`);
23
+ }
24
+ }, { immediate: true });
25
+ watch([() => props.id, () => props.name, () => props.order], ([newId, newName, newOrder], [oldId, ,]) => {
26
+ unregisterSection(oldId);
27
+ registerSection(newId, newName, newOrder, slots?.icon?.());
28
+ });
29
+ onMounted(() => {
30
+ registerSection(props.id, props.name, props.order, slots?.icon?.());
31
+ });
32
+ onBeforeUnmount(() => {
33
+ unregisterSection(props.id);
34
+ });
35
+ return (_ctx, _cache) => {
36
+ return openBlock(), createElementBlock("section", {
37
+ id: htmlId.value,
38
+ "aria-labelledby": `${htmlId.value}--label`,
39
+ class: "app-settings-section"
40
+ }, [
41
+ createElementVNode("h3", {
42
+ id: `${htmlId.value}--label`,
43
+ class: "app-settings-section__name"
44
+ }, toDisplayString(_ctx.name), 9, _hoisted_2),
45
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
46
+ ], 8, _hoisted_1);
47
+ };
48
+ }
49
+ });
50
+ const NcAppSettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-78ad5bf4"]]);
51
+ export {
52
+ NcAppSettingsSection as N
53
+ };
54
+ //# sourceMappingURL=NcAppSettingsSection-urZiy9aH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcAppSettingsSection-urZiy9aH.mjs","sources":["../../src/components/NcAppSettingsSection/NcAppSettingsSection.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { Slot } from 'vue'\n\nimport { computed, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { logger } from '../../utils/logger.ts'\nimport { useAppSettingsDialog } from '../NcAppSettingsDialog/useAppSettingsDialog.ts'\n\nconst props = defineProps<{\n\t/** Name of the section */\n\tname: string\n\t/** The id of the section */\n\tid: string\n\t/** The id of the section */\n\torder?: number\n}>()\n\nconst slots = defineSlots<{\n\t/** Section content */\n\tdefault?: Slot\n\t/** Optional icon for the section in the navigation */\n\ticon?: Slot\n}>()\n\nconst { registerSection, unregisterSection } = useAppSettingsDialog()\n\nconst htmlId = computed(() => 'settings-section_' + props.id)\n\n// Validate id prop - only alphanumeric, dash and underscore\nwatch(() => props.id, () => {\n\tif (!/^[a-z0-9\\-_]+$/.test(props.id)) {\n\t\tlogger.warn(`Invalid id prop: ${props.id}. Only alphanumeric, dash and underscore are allowed.`)\n\t}\n}, { immediate: true })\n\n// Reactive changes for section navigation\nwatch([() => props.id, () => props.name, () => props.order], (\n\t[newId, newName, newOrder],\n\t[oldId, ,],\n) => {\n\tunregisterSection(oldId)\n\tregisterSection(newId, newName, newOrder, slots?.icon?.())\n})\n\nonMounted(() => {\n\tregisterSection(props.id, props.name, props.order, slots?.icon?.())\n})\n\nonBeforeUnmount(() => {\n\tunregisterSection(props.id)\n})\n</script>\n\n<template>\n\t<section :id=\"htmlId\" :aria-labelledby=\"`${htmlId}--label`\" class=\"app-settings-section\">\n\t\t<h3 :id=\"`${htmlId}--label`\" class=\"app-settings-section__name\">\n\t\t\t{{ name }}\n\t\t</h3>\n\t\t<slot />\n\t</section>\n</template>\n\n<style lang=\"scss\" scoped>\n.app-settings-section {\n\tmargin-bottom: 80px;\n\t&__name {\n\t\tfont-size: 1.6em;\n\t\tmargin: 0;\n\t\tpadding: 20px 0;\n\t\tfont-weight: bold;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n</style>\n"],"names":["_useSlots","_createElementBlock","_createElementVNode","name","_renderSlot"],"mappings":";;;;;;;;;;;;;;AAYA,UAAM,QAAQ;AASd,UAAM,QAAQA,SAAA;AAOd,UAAM,EAAE,iBAAiB,kBAAA,IAAsB,qBAAA;AAE/C,UAAM,SAAS,SAAS,MAAM,sBAAsB,MAAM,EAAE;AAG5D,UAAM,MAAM,MAAM,IAAI,MAAM;AAC3B,UAAI,CAAC,iBAAiB,KAAK,MAAM,EAAE,GAAG;AACrC,eAAO,KAAK,oBAAoB,MAAM,EAAE,uDAAuD;AAAA,MAChG;AAAA,IACD,GAAG,EAAE,WAAW,MAAM;AAGtB,UAAM,CAAC,MAAM,MAAM,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,GAAG,CAC5D,CAAC,OAAO,SAAS,QAAQ,GACzB,CAAC,cACG;AACJ,wBAAkB,KAAK;AACvB,sBAAgB,OAAO,SAAS,UAAU,OAAO,QAAQ;AAAA,IAC1D,CAAC;AAED,cAAU,MAAM;AACf,sBAAgB,MAAM,IAAI,MAAM,MAAM,MAAM,OAAO,OAAO,QAAQ;AAAA,IACnE,CAAC;AAED,oBAAgB,MAAM;AACrB,wBAAkB,MAAM,EAAE;AAAA,IAC3B,CAAC;;0BAIAC,mBAKU,WAAA;AAAA,QALA,IAAI,OAAA;AAAA,QAAS,sBAAoB,OAAA,KAAM;AAAA,QAAW,OAAM;AAAA,MAAA;QACjEC,mBAEK,MAAA;AAAA,UAFA,OAAO,OAAA,KAAM;AAAA,UAAW,OAAM;AAAA,QAAA,mBAC/BC,KAAAA,IAAI,GAAA,GAAA,UAAA;AAAA,QAERC,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,MAAA;;;;;"}
@@ -0,0 +1,38 @@
1
+ import '../assets/NcAppSettingsSectionShortcuts-CRO4RakN.css';
2
+ import { defineComponent, createBlock, openBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from "vue";
3
+ import { N as NcAppSettingsSection } from "./NcAppSettingsSection-urZiy9aH.mjs";
4
+ import { r as register, a as t } from "./_l10n-YZMLsK4O.mjs";
5
+ import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
6
+ register();
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ __name: "NcAppSettingsSectionShortcuts",
9
+ setup(__props) {
10
+ return (_ctx, _cache) => {
11
+ return openBlock(), createBlock(NcAppSettingsSection, {
12
+ id: "keyboard-shortcuts",
13
+ name: unref(t)("Keyboard shortcuts")
14
+ }, {
15
+ default: withCtx(() => [
16
+ createElementVNode("div", {
17
+ class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)
18
+ }, [
19
+ renderSlot(_ctx.$slots, "default")
20
+ ], 2)
21
+ ]),
22
+ _: 3
23
+ }, 8, ["name"]);
24
+ };
25
+ }
26
+ });
27
+ const appSettingsSectionShortcuts = "_appSettingsSectionShortcuts_1trvh_2";
28
+ const style0 = {
29
+ appSettingsSectionShortcuts
30
+ };
31
+ const cssModules = {
32
+ "$style": style0
33
+ };
34
+ const NcAppSettingsSectionShortcuts = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
35
+ export {
36
+ NcAppSettingsSectionShortcuts as N
37
+ };
38
+ //# sourceMappingURL=NcAppSettingsSectionShortcuts-CK8lXUxx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcAppSettingsSectionShortcuts-CK8lXUxx.mjs","sources":["../../src/components/NcAppSettingsSectionShortcuts/NcAppSettingsSectionShortcuts.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { Slot } from 'vue'\n\nimport NcAppSettingsSection from '../NcAppSettingsSection/NcAppSettingsSection.vue'\nimport { t } from '../../l10n.ts'\n\ndefineSlots<{\n\t/**\n\t * Shortcuts described via <NcHotkeyList> components\n\t */\n\tdefault?: Slot\n}>()\n</script>\n\n<template>\n\t<NcAppSettingsSection id=\"keyboard-shortcuts\" :name=\"t('Keyboard shortcuts')\">\n\t\t<div :class=\"$style.appSettingsSectionShortcuts\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcAppSettingsSection>\n</template>\n\n<style module>\n.appSettingsSectionShortcuts {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(4 * var(--default-grid-baseline));\n}\n</style>\n\n<docs>\nA special `NcAppSettingsSection` for listing keyboard shortcuts using `<NcHotkeyList>` and `<NcHotkey>` components with predefined heading and gap between hotkey lists.\n\n```vue\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\topen: false,\n\t\t}\n\t},\n}\n</script>\n\n<template>\n\t<div>\n\t\t<NcButton @click=\"open = true\">App Settings</NcButton>\n\t\t<NcAppSettingsDialog v-model:open=\"open\" name=\"Application settings\" show-navigation>\n\t\t\t<NcAppSettingsSectionShortcuts>\n\t\t\t\t<NcHotkeyList label=\"Actions\">\n\t\t\t\t\t<NcHotkey label=\"File actions\" hotkey=\"A\" />\n\t\t\t\t\t<NcHotkey label=\"Rename\" hotkey=\"F2\" />\n\t\t\t\t\t<NcHotkey label=\"Delete\" hotkey=\"Delete\" />\n\t\t\t\t\t<NcHotkey label=\"Add or remove favorite\" hotkey=\"S\" />\n\t\t\t\t\t<NcHotkey label=\"Manage tags\" hotkey=\"T\" />\n\t\t\t\t</NcHotkeyList>\n\n\t\t\t\t<NcHotkeyList label=\"Selection\">\n\t\t\t\t\t<NcHotkey label=\"Select all files\" hotkey=\"Control A\" />\n\t\t\t\t\t<NcHotkey label=\"Deselect all\" hotkey=\"Escape\" />\n\t\t\t\t\t<NcHotkey label=\"Select or deselect\" hotkey=\"Control Space\" />\n\t\t\t\t\t<NcHotkey label=\"Select a range\" hotkey=\"Control Shift Space\" />\n\t\t\t\t</NcHotkeyList>\n\n\t\t\t\t<NcHotkeyList label=\"Navigation\">\n\t\t\t\t\t<NcHotkey label=\"Go to parent folder\" hotkey=\"Alt ArrowUp\" />\n\t\t\t\t\t<NcHotkey label=\"Go to file above\" hotkey=\"ArrowUp\" />\n\t\t\t\t\t<NcHotkey label=\"Go to file below\" hotkey=\"ArrowDown\" />\n\t\t\t\t\t<NcHotkey label=\"Go left in grid\" hotkey=\"ArrowLeft\" />\n\t\t\t\t\t<NcHotkey label=\"Go right in grid\" hotkey=\"ArrowRight\" />\n\t\t\t\t</NcHotkeyList>\n\n\t\t\t\t<NcHotkeyList label=\"View\">\n\t\t\t\t\t<NcHotkey label=\"Toggle grid view\" hotkey=\"V\" />\n\t\t\t\t\t<NcHotkey label=\"Open file sidebar\" hotkey=\"D\" />\n\t\t\t\t\t<NcHotkey label=\"Show those shortcuts\" hotkey=\"?\" />\n\t\t\t\t</NcHotkeyList>\n\t\t\t</NcAppSettingsSectionShortcuts>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n```\n</docs>\n"],"names":["_createBlock","_unref","_createElementVNode","_normalizeClass","$style","_renderSlot"],"mappings":";;;;;;;;;0BAoBCA,YAIuB,sBAAA;AAAA,QAJD,IAAG;AAAA,QAAsB,MAAMC,MAAA,CAAA,EAAC,oBAAA;AAAA,MAAA;yBACrD,MAEM;AAAA,UAFNC,mBAEM,OAAA;AAAA,YAFA,OAAKC,eAAEC,KAAAA,OAAO,2BAA2B;AAAA,UAAA;YAC9CC,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;;;;;;;;;;;;;;;"}
@@ -1,25 +1,25 @@
1
- import '../assets/NcAppSidebar-RFBRejzg.css';
1
+ import '../assets/NcAppSidebar-aGrIJ9f6.css';
2
2
  import { vOnClickOutside } from "@vueuse/components";
3
3
  import { createFocusTrap } from "focus-trap";
4
- import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, normalizeClass, withCtx, createVNode, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from "vue";
4
+ import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, mergeModels, useModel, normalizeClass, createVNode, withCtx, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from "vue";
5
5
  import { I as IconArrowRight } from "./ArrowRight-DRKHUZMH.mjs";
6
6
  import { I as IconClose } from "./Close-D6ngJ4t9.mjs";
7
7
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
8
- import { N as NcCheckboxRadioSwitch } from "./NcCheckboxRadioSwitch-CrehrqO8.mjs";
9
- import { _ as _sfc_main$5 } from "./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs";
8
+ import { getCanonicalLocale } from "@nextcloud/l10n";
9
+ import { _ as _sfc_main$6 } from "./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs";
10
10
  import { useIsSmallMobile } from "../composables/useIsMobile/index.mjs";
11
11
  import directive from "../directives/Focus/index.mjs";
12
- import { r as register, z as t15, a as t } from "./_l10n-DbErv0fW.mjs";
12
+ import { r as register, D as t15, a as t } from "./_l10n-YZMLsK4O.mjs";
13
13
  import { c as createElementId } from "./createElementId-DhjFt1I9.mjs";
14
14
  import { g as getTrapStack } from "./focusTrap-HJQ4pqHV.mjs";
15
- import { i as isSlotPopulated, N as NcActions } from "./NcActions-DSYz-dfd.mjs";
15
+ import { i as isSlotPopulated, N as NcActions } from "./NcActions-C-E6BGfZ.mjs";
16
16
  import { l as logger } from "./logger-D3RVzcfQ.mjs";
17
- import { _ as _sfc_main$6 } from "./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-0j0aFDeK.mjs";
17
+ import { _ as _sfc_main$7 } from "./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-0j0aFDeK.mjs";
18
18
  import { N as NcButton } from "./NcButton-DkC5k3Lb.mjs";
19
19
  import { C as CONTENT_SELECTOR_KEY } from "./constants-DrSznhwy.mjs";
20
- import { N as NcEmptyContent } from "./NcEmptyContent-BdOezubv.mjs";
20
+ import { N as NcEmptyContent } from "./NcEmptyContent-B8-90BSI.mjs";
21
21
  import { N as NcLoadingIcon } from "./NcLoadingIcon-b_ajZ_nQ.mjs";
22
- const _sfc_main$4 = {
22
+ const _sfc_main$5 = {
23
23
  name: "DockRightIcon",
24
24
  emits: ["click"],
25
25
  props: {
@@ -36,8 +36,8 @@ const _sfc_main$4 = {
36
36
  }
37
37
  }
38
38
  };
39
- const _hoisted_1$4 = ["aria-hidden", "aria-label"];
40
- const _hoisted_2$4 = ["fill", "width", "height"];
39
+ const _hoisted_1$5 = ["aria-hidden", "aria-label"];
40
+ const _hoisted_2$3 = ["fill", "width", "height"];
41
41
  const _hoisted_3$3 = { d: "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z" };
42
42
  const _hoisted_4$3 = { key: 0 };
43
43
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
@@ -58,11 +58,11 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
58
58
  createElementVNode("path", _hoisted_3$3, [
59
59
  $props.title ? (openBlock(), createElementBlock("title", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode("", true)
60
60
  ])
61
- ], 8, _hoisted_2$4))
62
- ], 16, _hoisted_1$4);
61
+ ], 8, _hoisted_2$3))
62
+ ], 16, _hoisted_1$5);
63
63
  }
64
- const IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
65
- const _sfc_main$3 = {
64
+ const IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4]]);
65
+ const _sfc_main$4 = {
66
66
  name: "StarIcon",
67
67
  emits: ["click"],
68
68
  props: {
@@ -79,8 +79,8 @@ const _sfc_main$3 = {
79
79
  }
80
80
  }
81
81
  };
82
- const _hoisted_1$3 = ["aria-hidden", "aria-label"];
83
- const _hoisted_2$3 = ["fill", "width", "height"];
82
+ const _hoisted_1$4 = ["aria-hidden", "aria-label"];
83
+ const _hoisted_2$2 = ["fill", "width", "height"];
84
84
  const _hoisted_3$2 = { d: "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" };
85
85
  const _hoisted_4$2 = { key: 0 };
86
86
  function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
@@ -101,11 +101,11 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
101
101
  createElementVNode("path", _hoisted_3$2, [
102
102
  $props.title ? (openBlock(), createElementBlock("title", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode("", true)
103
103
  ])
104
- ], 8, _hoisted_2$3))
105
- ], 16, _hoisted_1$3);
104
+ ], 8, _hoisted_2$2))
105
+ ], 16, _hoisted_1$4);
106
106
  }
107
- const IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]);
108
- const _sfc_main$2 = {
107
+ const IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3]]);
108
+ const _sfc_main$3 = {
109
109
  name: "StarOutlineIcon",
110
110
  emits: ["click"],
111
111
  props: {
@@ -122,8 +122,8 @@ const _sfc_main$2 = {
122
122
  }
123
123
  }
124
124
  };
125
- const _hoisted_1$2 = ["aria-hidden", "aria-label"];
126
- const _hoisted_2$2 = ["fill", "width", "height"];
125
+ const _hoisted_1$3 = ["aria-hidden", "aria-label"];
126
+ const _hoisted_2$1 = ["fill", "width", "height"];
127
127
  const _hoisted_3$1 = { d: "M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" };
128
128
  const _hoisted_4$1 = { key: 0 };
129
129
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
@@ -144,15 +144,74 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
144
144
  createElementVNode("path", _hoisted_3$1, [
145
145
  $props.title ? (openBlock(), createElementBlock("title", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode("", true)
146
146
  ])
147
- ], 8, _hoisted_2$2))
148
- ], 16, _hoisted_1$2);
147
+ ], 8, _hoisted_2$1))
148
+ ], 16, _hoisted_1$3);
149
149
  }
150
- const IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]);
150
+ const IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2]]);
151
+ const _hoisted_1$2 = ["aria-selected", "tabindex"];
152
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
153
+ __name: "NcAppSidebarTabsButton",
154
+ props: /* @__PURE__ */ mergeModels({
155
+ tab: {}
156
+ }, {
157
+ "selected": { type: Boolean, ...{ required: true } },
158
+ "selectedModifiers": {}
159
+ }),
160
+ emits: ["update:selected"],
161
+ setup(__props) {
162
+ const selected = useModel(__props, "selected");
163
+ return (_ctx, _cache) => {
164
+ return openBlock(), createElementBlock("button", {
165
+ class: normalizeClass(["button-vue", [_ctx.$style.sidebarTabsButton, {
166
+ [_ctx.$style.sidebarTabsButton_selected]: selected.value
167
+ }]]),
168
+ role: "tab",
169
+ "aria-selected": selected.value,
170
+ tabindex: selected.value ? 0 : -1,
171
+ onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)
172
+ }, [
173
+ createElementVNode("span", {
174
+ class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)
175
+ }, [
176
+ createVNode(_sfc_main$6, {
177
+ vnodes: _ctx.tab.renderIcon()
178
+ }, {
179
+ default: withCtx(() => [
180
+ createElementVNode("span", {
181
+ class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, _ctx.tab.icon])
182
+ }, null, 2)
183
+ ]),
184
+ _: 1
185
+ }, 8, ["vnodes"])
186
+ ], 2),
187
+ createElementVNode("span", {
188
+ class: normalizeClass(_ctx.$style.sidebarTabsButton__name)
189
+ }, toDisplayString(_ctx.tab.name), 3)
190
+ ], 10, _hoisted_1$2);
191
+ };
192
+ }
193
+ });
194
+ const sidebarTabsButton = "_sidebarTabsButton_1y2dv_20";
195
+ const sidebarTabsButton_selected = "_sidebarTabsButton_selected_1y2dv_45";
196
+ const sidebarTabsButton__name = "_sidebarTabsButton__name_1y2dv_59";
197
+ const sidebarTabsButton__icon = "_sidebarTabsButton__icon_1y2dv_70";
198
+ const sidebarTabsButton__legacyIcon = "_sidebarTabsButton__legacyIcon_1y2dv_76";
199
+ const style0 = {
200
+ "material-design-icon": "_material-design-icon_1y2dv_12",
201
+ sidebarTabsButton,
202
+ sidebarTabsButton_selected,
203
+ sidebarTabsButton__name,
204
+ sidebarTabsButton__icon,
205
+ sidebarTabsButton__legacyIcon
206
+ };
207
+ const cssModules = {
208
+ "$style": style0
209
+ };
210
+ const NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules]]);
151
211
  const _sfc_main$1 = {
152
212
  name: "NcAppSidebarTabs",
153
213
  components: {
154
- NcCheckboxRadioSwitch,
155
- NcVNodes: _sfc_main$5
214
+ NcAppSidebarTabsButton
156
215
  },
157
216
  provide() {
158
217
  return {
@@ -181,7 +240,7 @@ const _sfc_main$1 = {
181
240
  }
182
241
  },
183
242
  emits: ["update:active"],
184
- data() {
243
+ data(props) {
185
244
  return {
186
245
  /**
187
246
  * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.
@@ -190,7 +249,7 @@ const _sfc_main$1 = {
190
249
  /**
191
250
  * Local active (open) tab's ID. It allows to use component without v-model:active
192
251
  */
193
- activeTab: ""
252
+ activeTab: props.active
194
253
  };
195
254
  },
196
255
  computed: {
@@ -210,6 +269,11 @@ const _sfc_main$1 = {
210
269
  }
211
270
  },
212
271
  watch: {
272
+ tabs() {
273
+ if (this.active) {
274
+ this.updateActive();
275
+ }
276
+ },
213
277
  active(active) {
214
278
  if (active !== this.activeTab) {
215
279
  this.updateActive();
@@ -279,7 +343,7 @@ const _sfc_main$1 = {
279
343
  * Update the current active tab
280
344
  */
281
345
  updateActive() {
282
- this.activeTab = this.active && this.tabs.some((tab) => tab.id === this.active) ? this.active : this.tabs.length > 0 ? this.tabs[0].id : "";
346
+ this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? "";
283
347
  },
284
348
  /**
285
349
  * Register child tab in the tabs
@@ -290,7 +354,7 @@ const _sfc_main$1 = {
290
354
  this.tabs.push(tab);
291
355
  this.tabs.sort((a, b) => {
292
356
  if (a.order === b.order) {
293
- return OC.Util.naturalSortCompare(a.name, b.name);
357
+ return a.name.localeCompare(b.name, [getCanonicalLocale()]);
294
358
  }
295
359
  return a.order - b.order;
296
360
  });
@@ -313,10 +377,8 @@ const _sfc_main$1 = {
313
377
  }
314
378
  };
315
379
  const _hoisted_1$1 = { class: "app-sidebar-tabs" };
316
- const _hoisted_2$1 = { class: "app-sidebar-tabs__tab-caption" };
317
380
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
318
- const _component_NcVNodes = resolveComponent("NcVNodes");
319
- const _component_NcCheckboxRadioSwitch = resolveComponent("NcCheckboxRadioSwitch");
381
+ const _component_NcAppSidebarTabsButton = resolveComponent("NcAppSidebarTabsButton");
320
382
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
321
383
  $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock("div", {
322
384
  key: 0,
@@ -333,37 +395,15 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
333
395
  ]
334
396
  }, [
335
397
  (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {
336
- return openBlock(), createBlock(_component_NcCheckboxRadioSwitch, {
398
+ return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {
399
+ id: `tab-button-${tab.id}`,
337
400
  key: tab.id,
401
+ class: "app-sidebar-tabs__tab",
338
402
  "aria-controls": `tab-${tab.id}`,
339
- "aria-selected": String($data.activeTab === tab.id),
340
- "button-variant": true,
341
- "model-value": $data.activeTab === tab.id,
342
- "wrapper-id": `tab-button-${tab.id}`,
343
- tabindex: $data.activeTab === tab.id ? 0 : -1,
344
- "button-variant-grouped": "horizontal",
345
- class: normalizeClass(["app-sidebar-tabs__tab", { active: tab.id === $data.activeTab }]),
346
- role: "tab",
347
- type: "button",
348
- "onUpdate:modelValue": ($event) => $options.setActive(tab.id)
349
- }, {
350
- icon: withCtx(() => [
351
- createVNode(_component_NcVNodes, {
352
- vnodes: tab.renderIcon()
353
- }, {
354
- default: withCtx(() => [
355
- createElementVNode("span", {
356
- class: normalizeClass(["app-sidebar-tabs__tab-icon", tab.icon])
357
- }, null, 2)
358
- ]),
359
- _: 2
360
- }, 1032, ["vnodes"])
361
- ]),
362
- default: withCtx(() => [
363
- createElementVNode("span", _hoisted_2$1, toDisplayString(tab.name), 1)
364
- ]),
365
- _: 2
366
- }, 1032, ["aria-controls", "aria-selected", "model-value", "wrapper-id", "tabindex", "class", "onUpdate:modelValue"]);
403
+ selected: $data.activeTab === tab.id,
404
+ tab,
405
+ "onUpdate:selected": ($event) => $options.setActive(tab.id)
406
+ }, null, 8, ["id", "aria-controls", "selected", "tab", "onUpdate:selected"]);
367
407
  }), 128))
368
408
  ], 32)) : createCommentVNode("", true),
369
409
  createElementVNode("div", {
@@ -373,13 +413,13 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
373
413
  ], 2)
374
414
  ]);
375
415
  }
376
- const NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-e06df142"]]);
416
+ const NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-1e2d5bfb"]]);
377
417
  register(t15);
378
418
  const _sfc_main = {
379
419
  name: "NcAppSidebar",
380
420
  components: {
381
421
  NcActions,
382
- NcAppSidebarHeader: _sfc_main$6,
422
+ NcAppSidebarHeader: _sfc_main$7,
383
423
  NcAppSidebarTabs,
384
424
  NcButton,
385
425
  NcLoadingIcon,
@@ -999,8 +1039,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
999
1039
  _: 3
1000
1040
  }, 8, ["onAfterEnter", "onAfterLeave"]);
1001
1041
  }
1002
- const NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-3243b41e"]]);
1042
+ const NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-7d816760"]]);
1003
1043
  export {
1004
1044
  NcAppSidebar as N
1005
1045
  };
1006
- //# sourceMappingURL=NcAppSidebar-DhIHNv38.mjs.map
1046
+ //# sourceMappingURL=NcAppSidebar-Du9lcG-G.mjs.map